diff --git a/apps/docs/docusaurus.config.js b/apps/docs/docusaurus.config.js
index 9362be65..856a891c 100644
--- a/apps/docs/docusaurus.config.js
+++ b/apps/docs/docusaurus.config.js
@@ -158,6 +158,10 @@ const config = {
copyright: `Docs theme & components by the amazing medusajs.com
© ${new Date().getFullYear()} Zerops s.r.o..`,
},
socialLinks: [
+ {
+ type: "model",
+ href: "https://docs.zerops.io/llms.txt",
+ },
{
type: "discord",
href: "https://docs.zerops.io/discord",
diff --git a/apps/docs/src/components/Footer/SocialLinks/index.tsx b/apps/docs/src/components/Footer/SocialLinks/index.tsx
index 8c9d659f..c660b193 100644
--- a/apps/docs/src/components/Footer/SocialLinks/index.tsx
+++ b/apps/docs/src/components/Footer/SocialLinks/index.tsx
@@ -3,6 +3,7 @@ import IconTwitter from '@site/src/theme/Icon/Twitter';
import IconGitHub from '@site/src/theme/Icon/GitHub';
import IconDiscord from '@site/src/theme/Icon/Discord';
import IconLinkedIn from '@site/src/theme/Icon/LinkedIn';
+import IconModel from '@site/src/theme/Icon/Model';
import { SocialLink } from '@medusajs/docs';
import Link from '@docusaurus/Link';
@@ -12,6 +13,9 @@ type SocialLinksProps = {
const SocialLinks: React.FC = ({ links = [] }) => {
const socialIcons = {
+ model: (
+
+ ),
twitter: (
),
@@ -37,6 +41,7 @@ const SocialLinks: React.FC = ({ links = [] }) => {
{socialIcons[link.type]}
))}
+
);
};
diff --git a/apps/docs/src/theme/Icon/Model/index.tsx b/apps/docs/src/theme/Icon/Model/index.tsx
new file mode 100644
index 00000000..c033f315
--- /dev/null
+++ b/apps/docs/src/theme/Icon/Model/index.tsx
@@ -0,0 +1,22 @@
+import { IconProps } from '@medusajs/icons/dist/types';
+import clsx from 'clsx';
+import React from 'react';
+
+const IconModel = (props: IconProps) => {
+ return (
+
+ );
+};
+
+export default IconModel;
\ No newline at end of file
diff --git a/package.json b/package.json
index 03d5fa01..0c341376 100644
--- a/package.json
+++ b/package.json
@@ -8,6 +8,7 @@
]
},
"scripts": {
+ "prebuild": "tsx zerops-llm-script.ts",
"build": "turbo run build --env-mode=loose",
"build:docs": "turbo run build --filter=docs --env-mode=loose",
"start": "turbo run start:monorepo --env-mode=loose",
@@ -24,10 +25,15 @@
"prettier": "3.3.3",
"tailwindcss": "3.3.3",
"tsconfig": "*",
- "turbo": "latest"
+ "turbo": "latest",
+ "typescript": "^5.8.2"
},
"engines": {
"node": ">=18.17.0"
},
- "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
-}
\ No newline at end of file
+ "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610",
+ "devDependencies": {
+ "@types/glob": "^8.1.0",
+ "tsx": "^4.19.3"
+ }
+}
diff --git a/yarn.lock b/yarn.lock
index 89fcd4a3..f679ca4e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1785,11 +1785,136 @@
dependencies:
tslib "^2.4.0"
+"@esbuild/aix-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz#b87036f644f572efb2b3c75746c97d1d2d87ace8"
+ integrity sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==
+
+"@esbuild/android-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz#5ca7dc20a18f18960ad8d5e6ef5cf7b0a256e196"
+ integrity sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==
+
+"@esbuild/android-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.2.tgz#3c49f607b7082cde70c6ce0c011c362c57a194ee"
+ integrity sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==
+
+"@esbuild/android-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.2.tgz#8a00147780016aff59e04f1036e7cb1b683859e2"
+ integrity sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==
+
+"@esbuild/darwin-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz#486efe7599a8d90a27780f2bb0318d9a85c6c423"
+ integrity sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==
+
+"@esbuild/darwin-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz#95ee222aacf668c7a4f3d7ee87b3240a51baf374"
+ integrity sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==
+
+"@esbuild/freebsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz#67efceda8554b6fc6a43476feba068fb37fa2ef6"
+ integrity sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==
+
+"@esbuild/freebsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz#88a9d7ecdd3adadbfe5227c2122d24816959b809"
+ integrity sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==
+
+"@esbuild/linux-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz#87be1099b2bbe61282333b084737d46bc8308058"
+ integrity sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==
+
+"@esbuild/linux-arm@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz#72a285b0fe64496e191fcad222185d7bf9f816f6"
+ integrity sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==
+
+"@esbuild/linux-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz#337a87a4c4dd48a832baed5cbb022be20809d737"
+ integrity sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==
+
"@esbuild/linux-loong64@0.14.54":
version "0.14.54"
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.14.54.tgz#de2a4be678bd4d0d1ffbb86e6de779cde5999028"
integrity sha512-bZBrLAIX1kpWelV0XemxBZllyRmM6vgFQQG2GdNb+r3Fkp0FOh1NJSvekXDs7jq70k4euu1cryLMfU+mTXlEpw==
+"@esbuild/linux-loong64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz#1b81aa77103d6b8a8cfa7c094ed3d25c7579ba2a"
+ integrity sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==
+
+"@esbuild/linux-mips64el@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz#afbe380b6992e7459bf7c2c3b9556633b2e47f30"
+ integrity sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==
+
+"@esbuild/linux-ppc64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz#6bf8695cab8a2b135cca1aa555226dc932d52067"
+ integrity sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==
+
+"@esbuild/linux-riscv64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz#43c2d67a1a39199fb06ba978aebb44992d7becc3"
+ integrity sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==
+
+"@esbuild/linux-s390x@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz#419e25737ec815c6dce2cd20d026e347cbb7a602"
+ integrity sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==
+
+"@esbuild/linux-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz#22451f6edbba84abe754a8cbd8528ff6e28d9bcb"
+ integrity sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==
+
+"@esbuild/netbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz#744affd3b8d8236b08c5210d828b0698a62c58ac"
+ integrity sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==
+
+"@esbuild/netbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz#dbbe7521fd6d7352f34328d676af923fc0f8a78f"
+ integrity sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==
+
+"@esbuild/openbsd-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz#f9caf987e3e0570500832b487ce3039ca648ce9f"
+ integrity sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==
+
+"@esbuild/openbsd-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz#d2bb6a0f8ffea7b394bb43dfccbb07cabd89f768"
+ integrity sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==
+
+"@esbuild/sunos-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz#49b437ed63fe333b92137b7a0c65a65852031afb"
+ integrity sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==
+
+"@esbuild/win32-arm64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz#081424168463c7d6c7fb78f631aede0c104373cf"
+ integrity sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==
+
+"@esbuild/win32-ia32@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz#3f9e87143ddd003133d21384944a6c6cadf9693f"
+ integrity sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==
+
+"@esbuild/win32-x64@0.25.2":
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz#839f72c2decd378f86b8f525e1979a97b920c67d"
+ integrity sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==
+
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz#a23514e8fb9af1269d5f7788aa556798d61c6b59"
@@ -4533,6 +4658,14 @@
"@types/qs" "*"
"@types/serve-static" "*"
+"@types/glob@^8.1.0":
+ version "8.1.0"
+ resolved "https://registry.yarnpkg.com/@types/glob/-/glob-8.1.0.tgz#b63e70155391b0584dce44e7ea25190bbc38f2fc"
+ integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==
+ dependencies:
+ "@types/minimatch" "^5.1.2"
+ "@types/node" "*"
+
"@types/google.maps@^3.45.3":
version "3.55.10"
resolved "https://registry.yarnpkg.com/@types/google.maps/-/google.maps-3.55.10.tgz#ce4a8c375b84990a0e9eec9f151c3494cbe5bf2c"
@@ -4661,6 +4794,11 @@
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==
+"@types/minimatch@^5.1.2":
+ version "5.1.2"
+ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca"
+ integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
+
"@types/ms@*":
version "0.7.34"
resolved "https://registry.yarnpkg.com/@types/ms/-/ms-0.7.34.tgz#10964ba0dee6ac4cd462e2795b6bebd407303433"
@@ -7594,6 +7732,37 @@ esbuild@^0.14.25:
esbuild-windows-64 "0.14.54"
esbuild-windows-arm64 "0.14.54"
+esbuild@~0.25.0:
+ version "0.25.2"
+ resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.2.tgz#55a1d9ebcb3aa2f95e8bba9e900c1a5061bc168b"
+ integrity sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==
+ optionalDependencies:
+ "@esbuild/aix-ppc64" "0.25.2"
+ "@esbuild/android-arm" "0.25.2"
+ "@esbuild/android-arm64" "0.25.2"
+ "@esbuild/android-x64" "0.25.2"
+ "@esbuild/darwin-arm64" "0.25.2"
+ "@esbuild/darwin-x64" "0.25.2"
+ "@esbuild/freebsd-arm64" "0.25.2"
+ "@esbuild/freebsd-x64" "0.25.2"
+ "@esbuild/linux-arm" "0.25.2"
+ "@esbuild/linux-arm64" "0.25.2"
+ "@esbuild/linux-ia32" "0.25.2"
+ "@esbuild/linux-loong64" "0.25.2"
+ "@esbuild/linux-mips64el" "0.25.2"
+ "@esbuild/linux-ppc64" "0.25.2"
+ "@esbuild/linux-riscv64" "0.25.2"
+ "@esbuild/linux-s390x" "0.25.2"
+ "@esbuild/linux-x64" "0.25.2"
+ "@esbuild/netbsd-arm64" "0.25.2"
+ "@esbuild/netbsd-x64" "0.25.2"
+ "@esbuild/openbsd-arm64" "0.25.2"
+ "@esbuild/openbsd-x64" "0.25.2"
+ "@esbuild/sunos-x64" "0.25.2"
+ "@esbuild/win32-arm64" "0.25.2"
+ "@esbuild/win32-ia32" "0.25.2"
+ "@esbuild/win32-x64" "0.25.2"
+
escalade@^3.1.1, escalade@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
@@ -8300,7 +8469,7 @@ fs.realpath@^1.0.0:
resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@~2.3.2:
+fsevents@~2.3.2, fsevents@~2.3.3:
version "2.3.3"
resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
@@ -8372,6 +8541,13 @@ get-tsconfig@^4.5.0:
dependencies:
resolve-pkg-maps "^1.0.0"
+get-tsconfig@^4.7.5:
+ version "4.10.0"
+ resolved "https://registry.yarnpkg.com/get-tsconfig/-/get-tsconfig-4.10.0.tgz#403a682b373a823612475a4c2928c7326fc0f6bb"
+ integrity sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==
+ dependencies:
+ resolve-pkg-maps "^1.0.0"
+
github-slugger@^1.5.0:
version "1.5.0"
resolved "https://registry.yarnpkg.com/github-slugger/-/github-slugger-1.5.0.tgz#17891bbc73232051474d68bd867a34625c955f7d"
@@ -13936,6 +14112,16 @@ tsutils@^3.21.0:
dependencies:
tslib "^1.8.1"
+tsx@^4.19.3:
+ version "4.19.3"
+ resolved "https://registry.yarnpkg.com/tsx/-/tsx-4.19.3.tgz#2bdbcb87089374d933596f8645615142ed727666"
+ integrity sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==
+ dependencies:
+ esbuild "~0.25.0"
+ get-tsconfig "^4.7.5"
+ optionalDependencies:
+ fsevents "~2.3.3"
+
turbo-darwin-64@2.0.5:
version "2.0.5"
resolved "https://registry.yarnpkg.com/turbo-darwin-64/-/turbo-darwin-64-2.0.5.tgz#23c711370911d66e4589928243ec086c453709df"
@@ -14069,6 +14255,11 @@ typescript@^5.1.6, typescript@^5.3.3:
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.5.2.tgz#c26f023cb0054e657ce04f72583ea2d85f8d0507"
integrity sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==
+typescript@^5.8.2:
+ version "5.8.2"
+ resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.8.2.tgz#8170b3702f74b79db2e5a96207c15e65807999e4"
+ integrity sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==
+
typescript@~5.2.2:
version "5.2.2"
resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.2.2.tgz#5ebb5e5a5b75f085f22bc3f8460fba308310fa78"
diff --git a/zerops-llm-script.ts b/zerops-llm-script.ts
new file mode 100644
index 00000000..db460e28
--- /dev/null
+++ b/zerops-llm-script.ts
@@ -0,0 +1,110 @@
+import * as fs from 'node:fs'
+import * as path from 'node:path'
+import * as globModule from 'glob'
+
+const frontmatterRegex = /^\n*---(\n.+)*?\n---\n/
+
+const contentDir = path.resolve('apps/docs/content')
+
+const sliceExt = (file: string) => {
+ return file.split('.').slice(0, -1).join('.')
+}
+
+const extractLabel = (file: string) => {
+ return sliceExt(file.split('/').pop() || '')
+}
+
+function capitalizeDelimiter(str: string): string {
+ return str
+ .split('-')
+ .map((s: string) => s.charAt(0).toUpperCase() + s.slice(1))
+ .join('-')
+}
+
+async function generateContent(
+ files: string[],
+ contentDir: string,
+ header: string
+): Promise {
+ let content = header + '# Start of Zerops documentation\n'
+ for (const file of files) {
+ console.log(`> Writing '${file}' `)
+ const fileContent = fs.readFileSync(
+ path.resolve(contentDir, file),
+ 'utf-8'
+ )
+ const contentWithoutFrontmatter = fileContent.replace(frontmatterRegex, '')
+ const lines = contentWithoutFrontmatter.split('\n')
+ const filteredLines = lines.filter(line => !line.trim().startsWith('import '))
+ content += filteredLines.join('\n') + '\n\n'
+ }
+ return content
+}
+
+async function generateLLMDocs() {
+ const publicDir = path.resolve('apps/docs/static')
+
+ if (!fs.existsSync(publicDir)) {
+ fs.mkdirSync(publicDir, { recursive: true })
+ }
+
+ const outputListFile = path.resolve(publicDir, 'llms.txt')
+
+ const optionalFiles = globModule.sync('**/*.mdx', { cwd: contentDir })
+
+ const optionals: string[] = []
+
+ for (const file of optionalFiles) {
+ optionals.push(
+ `- [${capitalizeDelimiter(extractLabel(file)).replace(/-/, ' ')}](https://docs.zerops.io/${sliceExt(file)})`
+ )
+ }
+
+ fs.writeFileSync(
+ outputListFile,
+ [
+ '# Zerops',
+ '',
+ '> Zerops is a developer-first Platform-as-a-Service, running on bare metal, with every part built from scratch. Zerops aims to be the perfect mix of developer experience, flexibility, scalability and affordability, making it a great fit for applications of any size, complexity and traffic.',
+ '',
+ '## Docs',
+ '',
+ '- [Full Docs](https://docs.zerops.io/llms-full.txt) Full documentation of Zerops. (without examples)',
+ '- [Tiny Docs](https://docs.zerops.io/llms-small.txt): Tiny documentation of Zerops. (includes only description of core)',
+ '',
+ '## Optional',
+ '',
+ ...optionals,
+ ].join('\n'),
+ 'utf-8'
+ )
+ console.log(`< Output '${outputListFile}' `)
+
+ const outputFullFile = path.resolve(publicDir, 'llms-full.txt')
+ const files = globModule.sync('**/*.mdx', { cwd: contentDir })
+
+ const fullContent = await generateContent(
+ files,
+ contentDir,
+ 'This is the full developer documentation for Zerops.\n\n'
+ )
+
+ fs.writeFileSync(outputFullFile, fullContent, 'utf-8')
+ console.log(`< Output '${outputFullFile}' `)
+
+ const outputTinyFile = path.resolve(publicDir, 'llms-small.txt')
+
+ const tinyExclude = ['references', 'company', 'help']
+ const tinyFiles = files.filter((filename: string) => !tinyExclude.some(exclude => filename.includes(exclude)))
+
+ const tinyContent = await generateContent(
+ tinyFiles,
+ contentDir,
+ 'This is the tiny developer documentation for Zerops.\n\n'
+ )
+
+ fs.writeFileSync(outputTinyFile, tinyContent, 'utf-8')
+ console.log(`< Output '${outputTinyFile}' `)
+}
+
+generateLLMDocs().catch(console.error)
\ No newline at end of file
diff --git a/zerops.yml b/zerops.yml
index b5d86732..90103da6 100644
--- a/zerops.yml
+++ b/zerops.yml
@@ -9,6 +9,7 @@ zerops:
MEILISEARCH_INDEX_UID: docs
buildCommands:
- yarn
+ - yarn prebuild
- yarn build
deployFiles:
- apps/docs/build/~