From 040bd083fe09aca9227bb81dc0e47698a9163e96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guilherme=20Ara=C3=BAjo?= Date: Fri, 27 Feb 2026 09:45:48 -0300 Subject: [PATCH] feat: expose llms.txt --- scripts/build-r2-symlinks.mjs | 9 ++++++--- src/constants/fileSymlinks.json | 3 ++- src/middleware/r2Middleware.ts | 3 ++- src/routes/index.ts | 3 +++ 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/scripts/build-r2-symlinks.mjs b/scripts/build-r2-symlinks.mjs index 0c9783d0..a0e7cf20 100644 --- a/scripts/build-r2-symlinks.mjs +++ b/scripts/build-r2-symlinks.mjs @@ -133,8 +133,9 @@ const cachedDirectories = { // Let's add these to our cached directories. const fileSymlinks = JSON.parse(await readFile(FILE_SYMLINKS, 'utf8')); -// Delete this for now, we'll add it back again later +// Delete these for now, we'll add them back again later delete fileSymlinks['node-config-schema.json']; +delete fileSymlinks['llms.txt']; for (const file of Object.keys(fileSymlinks)) { // Stat the actual file so we can get it's size, last modified @@ -163,10 +164,12 @@ for (const file of Object.keys(fileSymlinks)) { await writeFile(CACHED_DIRECTORIES_OUT, JSON.stringify(cachedDirectories)); -// Update the node-config-schema.json file symlink to point to the latest -// version +// Update the node-config-schema.json and llms.txt file symlinks to point to +// the latest version fileSymlinks['node-config-schema.json'] = `${RELEASE_DIR}${latestVersions['latest']}/docs/node-config-schema.json`; +fileSymlinks['llms.txt'] = + `${RELEASE_DIR}${latestVersions['latest']}/docs/llms.txt`; await writeFile(FILE_SYMLINKS, JSON.stringify(fileSymlinks)); diff --git a/src/constants/fileSymlinks.json b/src/constants/fileSymlinks.json index 841bcc26..8afa7e56 100644 --- a/src/constants/fileSymlinks.json +++ b/src/constants/fileSymlinks.json @@ -68,5 +68,6 @@ "nodejs/release/v0.1.15/node-v0.1.15.tar.gz": "nodejs/release/node-v0.1.15.tar.gz", "nodejs/release/v0.4.12/node-v0.4.12.tar.gz": "nodejs/release/node-v0.4.12.tar.gz", "nodejs/release/v0.1.32/node-v0.1.32.tar.gz": "nodejs/release/node-v0.1.32.tar.gz", - "node-config-schema.json": "nodejs/release/v25.7.0/docs/node-config-schema.json" + "node-config-schema.json": "nodejs/release/v25.7.0/docs/node-config-schema.json", + "llms.txt": "nodejs/release/v25.7.0/docs/llms.txt" } diff --git a/src/middleware/r2Middleware.ts b/src/middleware/r2Middleware.ts index d26000f3..1b81912c 100644 --- a/src/middleware/r2Middleware.ts +++ b/src/middleware/r2Middleware.ts @@ -170,7 +170,8 @@ function getR2Path({ } } else if ( pathname.startsWith('/metrics') || - pathname === '/node-config-schema.json' + pathname === '/node-config-schema.json' || + pathname === '/llms.txt' ) { // Substring to cut off the leading / return pathname.substring(1); diff --git a/src/routes/index.ts b/src/routes/index.ts index 882ba646..253b20ac 100644 --- a/src/routes/index.ts +++ b/src/routes/index.ts @@ -49,6 +49,9 @@ export function registerRoutes(router: Router): void { router.head('/node-config-schema.json', r2Middleware); router.get('/node-config-schema.json', r2Middleware); + router.head('/llms.txt', r2Middleware); + router.get('/llms.txt', r2Middleware); + router.head('/dist/?:filePath+', r2Middleware, originMiddleware); router.get('/dist/?:filePath+', cachedR2Middleware, originMiddleware);