From 2f47cc9a0576ca5a9f03fce5c0803450dafc4814 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 2 Mar 2026 11:56:27 +1300 Subject: [PATCH 01/11] Update Seqera package --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 11c8208ec..541dfe88a 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.20", + "@seqera/docusaurus-preset-seqera": "^1.0.21", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", From 9306b4ca747a886623ef1ecdb727c1b415715df2 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Mon, 2 Mar 2026 20:41:01 +1300 Subject: [PATCH 02/11] Testing llm --- docusaurus.config.js | 15 + internal/merge-llms-txt.mjs | 64 +++ package-lock.json | 541 +++++++++++++++++--- package.json | 2 + src/theme/DocItem/Content/index.tsx | 82 +++ src/theme/DocItem/Content/styles.module.css | 11 + 6 files changed, 643 insertions(+), 72 deletions(-) create mode 100644 internal/merge-llms-txt.mjs create mode 100644 src/theme/DocItem/Content/index.tsx create mode 100644 src/theme/DocItem/Content/styles.module.css diff --git a/docusaurus.config.js b/docusaurus.config.js index 01a6422ad..6b5197a6c 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -270,6 +270,21 @@ export default async function createConfigAsync() { process.env.EXCLUDE_FUSION ? null : docs_fusion, process.env.EXCLUDE_WAVE ? null : docs_wave, + [ + '@signalwire/docusaurus-plugin-llms-txt', + { + content: { + enableMarkdownFiles: true, + enableLlmsFullTxt: false, + relativePaths: false, + includeBlog: false, + includePages: false, + includeDocs: true, + excludeRoutes: ['/**/tags', '/**/tags/**'], + }, + }, + ], + // Disable expensive bundler options. // https://github.com/facebook/docusaurus/pull/11176 function disableExpensiveBundlerOptimizationPlugin() { diff --git a/internal/merge-llms-txt.mjs b/internal/merge-llms-txt.mjs new file mode 100644 index 000000000..84a843d85 --- /dev/null +++ b/internal/merge-llms-txt.mjs @@ -0,0 +1,64 @@ +import fs from "fs-extra"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const LLMS_TXT_PATH = path.join(__dirname, "..", "build", "llms.txt"); + +// Sub-sites served via Netlify rewrites that are absent from the local build. +// Each site must have the llms-txt plugin installed and generating URLs +// relative to https://docs.seqera.io (not their own Netlify domain). +const REMOTE_ORIGINS = [ + { name: "nextflow", url: "https://docs-migration.netlify.app/llms.txt" }, + { name: "platform-api", url: "https://seqera-docs-api.netlify.app/llms.txt" }, +]; + +/** + * Strips the llms.txt header (title, description, top-level links) and + * returns only the ## section content. + */ +function extractSections(text) { + const lines = text.split("\n"); + const firstSection = lines.findIndex((line) => line.startsWith("## ")); + if (firstSection === -1) return ""; + return lines.slice(firstSection).join("\n"); +} + +async function mergeLlmsTxt() { + if (!(await fs.pathExists(LLMS_TXT_PATH))) { + console.error("❌ merge-llms-txt: build/llms.txt not found. Run the build first."); + process.exit(1); + } + + let base = await fs.readFile(LLMS_TXT_PATH, "utf-8"); + + for (const { name, url } of REMOTE_ORIGINS) { + try { + const response = await fetch(url); + if (!response.ok) { + console.warn(`⚠️ merge-llms-txt: ${name} returned ${response.status} — skipping`); + continue; + } + const sections = extractSections(await response.text()); + if (!sections) { + console.warn(`⚠️ merge-llms-txt: no ## sections found in ${name} llms.txt — skipping`); + continue; + } + base += "\n" + sections; + console.log(`✅ merge-llms-txt: merged ${name}`); + } catch (error) { + console.warn(`⚠️ merge-llms-txt: failed to fetch ${name} — skipping`); + console.warn(` ${error.message}`); + } + } + + await fs.writeFile(LLMS_TXT_PATH, base, "utf-8"); + console.log("✅ merge-llms-txt: build/llms.txt updated"); +} + +mergeLlmsTxt().catch((error) => { + console.error("❌ merge-llms-txt failed:", error); + process.exit(1); +}); diff --git a/package-lock.json b/package-lock.json index 1fbab05f0..dcf85cebc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,8 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.20", + "@seqera/docusaurus-preset-seqera": "^1.0.21", + "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", @@ -5785,9 +5786,9 @@ "license": "MIT" }, "node_modules/@seqera/docusaurus-preset-seqera": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.20.tgz", - "integrity": "sha512-WgQ+GX/9bgLGs2ZVMJa+HsHIkdjFhyzTKdrmz1AygiERyxjdiGqSN8ICR024iH4ghO609kDsasdnJ+qplwSfHA==", + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.21.tgz", + "integrity": "sha512-96J42ws/act5pgzxYB9AWVlR7eSaG486u4MxXGk6AwOP1avytZKsXNP64eQz+6hjKuTRkzY/30lPmNgPqRC2Kw==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5804,7 +5805,7 @@ "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-search-algolia": "3.9.2", "@docusaurus/types": "3.9.2", - "@seqera/docusaurus-theme-seqera": "1.0.20", + "@seqera/docusaurus-theme-seqera": "1.0.21", "@tailwindcss/oxide": "^4.1.17", "docusaurus-plugin-openapi-docs": "^4.5.1", "docusaurus-remark-plugin-tab-blocks": "^3.1.0", @@ -5824,9 +5825,9 @@ } }, "node_modules/@seqera/docusaurus-theme-seqera": { - "version": "1.0.20", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.20.tgz", - "integrity": "sha512-NdnDczNLh1r2e1VbQRPyLouTDpHgT1cq7M60J12cgZgrJWXM0lh1cpZBsHRB9KGIHuCAnlDFTnKWlkORBUCp+A==", + "version": "1.0.21", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.21.tgz", + "integrity": "sha512-b1hzRCe8Te8CT5bjAAzPxpRsEi3qNI94yGQGN7hYt+33UldSfvjbNNaWjCqIa5wCGWscdHwZmSuXPqvSb/1IRw==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5887,6 +5888,59 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "license": "BSD-3-Clause" }, + "node_modules/@signalwire/docusaurus-plugin-llms-txt": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@signalwire/docusaurus-plugin-llms-txt/-/docusaurus-plugin-llms-txt-1.2.2.tgz", + "integrity": "sha512-Qo5ZBDZpyXFlcrWwise77vs6B0R3m3/qjIIm1IHf4VzW6sVYgaR/y46BJwoAxMrV3WJkn0CVGpyYC+pMASFBZw==", + "license": "MIT", + "dependencies": { + "fs-extra": "^11.0.0", + "hast-util-select": "^6.0.4", + "hast-util-to-html": "^9.0.5", + "hast-util-to-string": "^3.0.1", + "p-map": "^7.0.2", + "rehype-parse": "^9", + "rehype-remark": "^10", + "remark-gfm": "^4", + "remark-stringify": "^11", + "string-width": "^5.0.0", + "unified": "^11", + "unist-util-visit": "^5" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@docusaurus/core": "^3.0.0" + } + }, + "node_modules/@signalwire/docusaurus-plugin-llms-txt/node_modules/p-map": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", + "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@signalwire/docusaurus-plugin-llms-txt/node_modules/rehype-parse": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -6608,9 +6662,9 @@ } }, "node_modules/@tailwindcss/node": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.0.tgz", - "integrity": "sha512-Yv+fn/o2OmL5fh/Ir62VXItdShnUxfpkMA4Y7jdeC8O81WPB8Kf6TT6GSHvnqgSwDzlB5iT7kDpeXxLsUS0T6Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.2.1.tgz", + "integrity": "sha512-jlx6sLk4EOwO6hHe1oCGm1Q4AN/s0rSrTTPBGPM0/RQ6Uylwq17FuU8IeJJKEjtc6K6O07zsvP+gDO6MMWo7pg==", "license": "MIT", "dependencies": { "@jridgewell/remapping": "^2.3.5", @@ -6619,7 +6673,7 @@ "lightningcss": "1.31.1", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", - "tailwindcss": "4.2.0" + "tailwindcss": "4.2.1" } }, "node_modules/@tailwindcss/node/node_modules/jiti": { @@ -6632,32 +6686,32 @@ } }, "node_modules/@tailwindcss/oxide": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.0.tgz", - "integrity": "sha512-AZqQzADaj742oqn2xjl5JbIOzZB/DGCYF/7bpvhA8KvjUj9HJkag6bBuwZvH1ps6dfgxNHyuJVlzSr2VpMgdTQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.2.1.tgz", + "integrity": "sha512-yv9jeEFWnjKCI6/T3Oq50yQEOqmpmpfzG1hcZsAOaXFQPfzWprWrlHSdGPEF3WQTi8zu8ohC9Mh9J470nT5pUw==", "license": "MIT", "engines": { "node": ">= 20" }, "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.2.0", - "@tailwindcss/oxide-darwin-arm64": "4.2.0", - "@tailwindcss/oxide-darwin-x64": "4.2.0", - "@tailwindcss/oxide-freebsd-x64": "4.2.0", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.0", - "@tailwindcss/oxide-linux-arm64-gnu": "4.2.0", - "@tailwindcss/oxide-linux-arm64-musl": "4.2.0", - "@tailwindcss/oxide-linux-x64-gnu": "4.2.0", - "@tailwindcss/oxide-linux-x64-musl": "4.2.0", - "@tailwindcss/oxide-wasm32-wasi": "4.2.0", - "@tailwindcss/oxide-win32-arm64-msvc": "4.2.0", - "@tailwindcss/oxide-win32-x64-msvc": "4.2.0" + "@tailwindcss/oxide-android-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-arm64": "4.2.1", + "@tailwindcss/oxide-darwin-x64": "4.2.1", + "@tailwindcss/oxide-freebsd-x64": "4.2.1", + "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.1", + "@tailwindcss/oxide-linux-arm64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-arm64-musl": "4.2.1", + "@tailwindcss/oxide-linux-x64-gnu": "4.2.1", + "@tailwindcss/oxide-linux-x64-musl": "4.2.1", + "@tailwindcss/oxide-wasm32-wasi": "4.2.1", + "@tailwindcss/oxide-win32-arm64-msvc": "4.2.1", + "@tailwindcss/oxide-win32-x64-msvc": "4.2.1" } }, "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.0.tgz", - "integrity": "sha512-F0QkHAVaW/JNBWl4CEKWdZ9PMb0khw5DCELAOnu+RtjAfx5Zgw+gqCHFvqg3AirU1IAd181fwOtJQ5I8Yx5wtw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.2.1.tgz", + "integrity": "sha512-eZ7G1Zm5EC8OOKaesIKuw77jw++QJ2lL9N+dDpdQiAB/c/B2wDh0QPFHbkBVrXnwNugvrbJFk1gK2SsVjwWReg==", "cpu": [ "arm64" ], @@ -6671,9 +6725,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.0.tgz", - "integrity": "sha512-I0QylkXsBsJMZ4nkUNSR04p6+UptjcwhcVo3Zu828ikiEqHjVmQL9RuQ6uT/cVIiKpvtVA25msu/eRV97JeNSA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.2.1.tgz", + "integrity": "sha512-q/LHkOstoJ7pI1J0q6djesLzRvQSIfEto148ppAd+BVQK0JYjQIFSK3JgYZJa+Yzi0DDa52ZsQx2rqytBnf8Hw==", "cpu": [ "arm64" ], @@ -6687,9 +6741,9 @@ } }, "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.0.tgz", - "integrity": "sha512-6TmQIn4p09PBrmnkvbYQ0wbZhLtbaksCDx7Y7R3FYYx0yxNA7xg5KP7dowmQ3d2JVdabIHvs3Hx4K3d5uCf8xg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.2.1.tgz", + "integrity": "sha512-/f/ozlaXGY6QLbpvd/kFTro2l18f7dHKpB+ieXz+Cijl4Mt9AI2rTrpq7V+t04nK+j9XBQHnSMdeQRhbGyt6fw==", "cpu": [ "x64" ], @@ -6703,9 +6757,9 @@ } }, "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.0.tgz", - "integrity": "sha512-qBudxDvAa2QwGlq9y7VIzhTvp2mLJ6nD/G8/tI70DCDoneaUeLWBJaPcbfzqRIWraj+o969aDQKvKW9dvkUizw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.2.1.tgz", + "integrity": "sha512-5e/AkgYJT/cpbkys/OU2Ei2jdETCLlifwm7ogMC7/hksI2fC3iiq6OcXwjibcIjPung0kRtR3TxEITkqgn0TcA==", "cpu": [ "x64" ], @@ -6719,9 +6773,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.0.tgz", - "integrity": "sha512-7XKkitpy5NIjFZNUQPeUyNJNJn1CJeV7rmMR+exHfTuOsg8rxIO9eNV5TSEnqRcaOK77zQpsyUkBWmPy8FgdSg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.2.1.tgz", + "integrity": "sha512-Uny1EcVTTmerCKt/1ZuKTkb0x8ZaiuYucg2/kImO5A5Y/kBz41/+j0gxUZl+hTF3xkWpDmHX+TaWhOtba2Fyuw==", "cpu": [ "arm" ], @@ -6735,9 +6789,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.0.tgz", - "integrity": "sha512-Mff5a5Q3WoQR01pGU1gr29hHM1N93xYrKkGXfPw/aRtK4bOc331Ho4Tgfsm5WDGvpevqMpdlkCojT3qlCQbCpA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.2.1.tgz", + "integrity": "sha512-CTrwomI+c7n6aSSQlsPL0roRiNMDQ/YzMD9EjcR+H4f0I1SQ8QqIuPnsVp7QgMkC1Qi8rtkekLkOFjo7OlEFRQ==", "cpu": [ "arm64" ], @@ -6751,9 +6805,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.0.tgz", - "integrity": "sha512-XKcSStleEVnbH6W/9DHzZv1YhjE4eSS6zOu2eRtYAIh7aV4o3vIBs+t/B15xlqoxt6ef/0uiqJVB6hkHjWD/0A==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.2.1.tgz", + "integrity": "sha512-WZA0CHRL/SP1TRbA5mp9htsppSEkWuQ4KsSUumYQnyl8ZdT39ntwqmz4IUHGN6p4XdSlYfJwM4rRzZLShHsGAQ==", "cpu": [ "arm64" ], @@ -6767,9 +6821,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.0.tgz", - "integrity": "sha512-/hlXCBqn9K6fi7eAM0RsobHwJYa5V/xzWspVTzxnX+Ft9v6n+30Pz8+RxCn7sQL/vRHHLS30iQPrHQunu6/vJA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.2.1.tgz", + "integrity": "sha512-qMFzxI2YlBOLW5PhblzuSWlWfwLHaneBE0xHzLrBgNtqN6mWfs+qYbhryGSXQjFYB1Dzf5w+LN5qbUTPhW7Y5g==", "cpu": [ "x64" ], @@ -6783,9 +6837,9 @@ } }, "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.0.tgz", - "integrity": "sha512-lKUaygq4G7sWkhQbfdRRBkaq4LY39IriqBQ+Gk6l5nKq6Ay2M2ZZb1tlIyRNgZKS8cbErTwuYSor0IIULC0SHw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.2.1.tgz", + "integrity": "sha512-5r1X2FKnCMUPlXTWRYpHdPYUY6a1Ar/t7P24OuiEdEOmms5lyqjDRvVY1yy9Rmioh+AunQ0rWiOTPE8F9A3v5g==", "cpu": [ "x64" ], @@ -6799,9 +6853,9 @@ } }, "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.0.tgz", - "integrity": "sha512-xuDjhAsFdUuFP5W9Ze4k/o4AskUtI8bcAGU4puTYprr89QaYFmhYOPfP+d1pH+k9ets6RoE23BXZM1X1jJqoyw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.2.1.tgz", + "integrity": "sha512-MGFB5cVPvshR85MTJkEvqDUnuNoysrsRxd6vnk1Lf2tbiqNlXpHYZqkqOQalydienEWOHHFyyuTSYRsLfxFJ2Q==", "bundleDependencies": [ "@napi-rs/wasm-runtime", "@emnapi/core", @@ -6828,9 +6882,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.0.tgz", - "integrity": "sha512-2UU/15y1sWDEDNJXxEIrfWKC2Yb4YgIW5Xz2fKFqGzFWfoMHWFlfa1EJlGO2Xzjkq/tvSarh9ZTjvbxqWvLLXA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.2.1.tgz", + "integrity": "sha512-YlUEHRHBGnCMh4Nj4GnqQyBtsshUPdiNroZj8VPkvTZSoHsilRCwXcVKnG9kyi0ZFAS/3u+qKHBdDc81SADTRA==", "cpu": [ "arm64" ], @@ -6844,9 +6898,9 @@ } }, "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.0.tgz", - "integrity": "sha512-CrFadmFoc+z76EV6LPG1jx6XceDsaCG3lFhyLNo/bV9ByPrE+FnBPckXQVP4XRkN76h3Fjt/a+5Er/oA/nCBvQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.2.1.tgz", + "integrity": "sha512-rbO34G5sMWWyrN/idLeVxAZgAKWrn5LiR3/I90Q9MkA67s6T1oB0xtTe+0heoBvHSpbU9Mk7i6uwJnpo4u21XQ==", "cpu": [ "x64" ], @@ -6860,16 +6914,16 @@ } }, "node_modules/@tailwindcss/postcss": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.0.tgz", - "integrity": "sha512-u6YBacGpOm/ixPfKqfgrJEjMfrYmPD7gEFRoygS/hnQaRtV0VCBdpkx5Ouw9pnaLRwwlgGCuJw8xLpaR0hOrQg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/postcss/-/postcss-4.2.1.tgz", + "integrity": "sha512-OEwGIBnXnj7zJeonOh6ZG9woofIjGrd2BORfvE5p9USYKDCZoQmfqLcfNiRWoJlRWLdNPn2IgVZuWAOM4iTYMw==", "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", - "@tailwindcss/node": "4.2.0", - "@tailwindcss/oxide": "4.2.0", + "@tailwindcss/node": "4.2.1", + "@tailwindcss/oxide": "4.2.1", "postcss": "^8.5.6", - "tailwindcss": "4.2.0" + "tailwindcss": "4.2.1" } }, "node_modules/@trysound/sax": { @@ -8338,6 +8392,16 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "license": "MIT" }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -9743,6 +9807,22 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/css-selector-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", + "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", @@ -10269,6 +10349,19 @@ "node": ">=8" } }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -12717,6 +12810,51 @@ "node": ">= 0.4" } }, + "node_modules/hast-util-embedded": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", + "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-embedded/node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -12737,6 +12875,32 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-body-ok-link": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", + "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-is-element": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", @@ -12747,6 +12911,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-minify-whitespace": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", + "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-minify-whitespace/node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", @@ -12760,6 +12954,36 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-embedded": "^3.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-is-body-ok-link": "^3.0.0", + "hast-util-is-element": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-phrasing/node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-raw": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", @@ -12785,6 +13009,33 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-select": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", + "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-estree": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", @@ -12813,6 +13064,29 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", @@ -12840,6 +13114,75 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-mdast": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", + "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-phrasing": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "hast-util-to-text": "^4.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "mdast-util-to-string": "^4.0.0", + "rehype-minify-whitespace": "^6.0.0", + "trim-trailing-lines": "^2.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-mdast/node_modules/hast-util-is-element": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", + "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-mdast/node_modules/hast-util-to-text": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", + "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "hast-util-is-element": "^3.0.0", + "unist-util-find-after": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-mdast/node_modules/unist-util-find-after": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", + "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", + "license": "MIT", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", @@ -12859,6 +13202,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-text": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", @@ -21713,6 +22069,20 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-minify-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", + "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-minify-whitespace": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/rehype-parse": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", @@ -21919,6 +22289,23 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-remark": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-10.0.1.tgz", + "integrity": "sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "hast-util-to-mdast": "^10.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -24533,9 +24920,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.0.tgz", - "integrity": "sha512-yYzTZ4++b7fNYxFfpnberEEKu43w44aqDMNM9MHMmcKuCH7lL8jJ4yJ7LGHv7rSwiqM0nkiobF9I6cLlpS2P7Q==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", + "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", "license": "MIT" }, "node_modules/tapable": { @@ -24888,6 +25275,16 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/trim-trailing-lines": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", + "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", diff --git a/package.json b/package.json index 541dfe88a..8a79f0ed4 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dev": "npm run start", "prebuild": "npm run fetch-docs-oss", "build": "docusaurus build", + "postbuild": "node internal/merge-llms-txt.mjs", "swizzle": "docusaurus swizzle", "deploy": "docusaurus deploy", "clear": "docusaurus clear", @@ -39,6 +40,7 @@ "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", "@seqera/docusaurus-preset-seqera": "^1.0.21", + "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx new file mode 100644 index 000000000..00abe86a7 --- /dev/null +++ b/src/theme/DocItem/Content/index.tsx @@ -0,0 +1,82 @@ +import React, {type ReactNode, useState, useRef, useEffect} from 'react'; +import clsx from 'clsx'; +import {ThemeClassNames} from '@docusaurus/theme-common'; +import {useDoc} from '@docusaurus/plugin-content-docs/client'; +import {useLocation} from '@docusaurus/router'; +import Heading from '@theme/Heading'; +import MDXContent from '@theme/MDXContent'; +import styles from './styles.module.css'; + +function useSyntheticTitle() { + const {metadata, frontMatter, contentTitle} = useDoc(); + const shouldRender = + !frontMatter.hide_title && typeof contentTitle === 'undefined'; + if (!shouldRender) { + return null; + } + return metadata.title; +} + +function MarkdownButtons(): ReactNode { + const {pathname} = useLocation(); + const [copied, setCopied] = useState(false); + const copyBtnRef = useRef(null); + + const mdUrl = `${pathname.replace(/\/$/, '')}.md`; + + // Pin the button width to its natural size so it doesn't shrink when + // the label changes from "Copy markdown" to "Copied!" + useEffect(() => { + if (copyBtnRef.current) { + copyBtnRef.current.style.minWidth = `${copyBtnRef.current.offsetWidth}px`; + } + }, []); + + const handleCopy = async () => { + try { + const response = await fetch(mdUrl); + if (!response.ok) return; + await navigator.clipboard.writeText(await response.text()); + setCopied(true); + setTimeout(() => setCopied(false), 2000); + } catch { + // Silently fail if clipboard or fetch is unavailable + } + }; + + return ( +
+ + + View markdown + +
+ ); +} + +export default function DocItemContent({children}: {children: ReactNode}): ReactNode { + const syntheticTitle = useSyntheticTitle(); + + return ( +
+ {syntheticTitle && ( +
+ {syntheticTitle} +
+ )} + + {children} +
+ ); +} diff --git a/src/theme/DocItem/Content/styles.module.css b/src/theme/DocItem/Content/styles.module.css new file mode 100644 index 000000000..69ec69fa1 --- /dev/null +++ b/src/theme/DocItem/Content/styles.module.css @@ -0,0 +1,11 @@ +.markdownActions { + display: flex; + gap: 0.5rem; + margin-bottom: 1.5rem; +} + +.btnSm { + font-size: 0.75rem !important; + padding: 0.2rem 0.75rem !important; +} + From 3c3fea3f02e856f09b63a99963c0d486b5a3df60 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 11:47:19 +1300 Subject: [PATCH 03/11] Remove buttons for now --- src/theme/DocItem/Content/index.tsx | 82 ----------------------------- 1 file changed, 82 deletions(-) delete mode 100644 src/theme/DocItem/Content/index.tsx diff --git a/src/theme/DocItem/Content/index.tsx b/src/theme/DocItem/Content/index.tsx deleted file mode 100644 index 00abe86a7..000000000 --- a/src/theme/DocItem/Content/index.tsx +++ /dev/null @@ -1,82 +0,0 @@ -import React, {type ReactNode, useState, useRef, useEffect} from 'react'; -import clsx from 'clsx'; -import {ThemeClassNames} from '@docusaurus/theme-common'; -import {useDoc} from '@docusaurus/plugin-content-docs/client'; -import {useLocation} from '@docusaurus/router'; -import Heading from '@theme/Heading'; -import MDXContent from '@theme/MDXContent'; -import styles from './styles.module.css'; - -function useSyntheticTitle() { - const {metadata, frontMatter, contentTitle} = useDoc(); - const shouldRender = - !frontMatter.hide_title && typeof contentTitle === 'undefined'; - if (!shouldRender) { - return null; - } - return metadata.title; -} - -function MarkdownButtons(): ReactNode { - const {pathname} = useLocation(); - const [copied, setCopied] = useState(false); - const copyBtnRef = useRef(null); - - const mdUrl = `${pathname.replace(/\/$/, '')}.md`; - - // Pin the button width to its natural size so it doesn't shrink when - // the label changes from "Copy markdown" to "Copied!" - useEffect(() => { - if (copyBtnRef.current) { - copyBtnRef.current.style.minWidth = `${copyBtnRef.current.offsetWidth}px`; - } - }, []); - - const handleCopy = async () => { - try { - const response = await fetch(mdUrl); - if (!response.ok) return; - await navigator.clipboard.writeText(await response.text()); - setCopied(true); - setTimeout(() => setCopied(false), 2000); - } catch { - // Silently fail if clipboard or fetch is unavailable - } - }; - - return ( -
- - - View markdown - -
- ); -} - -export default function DocItemContent({children}: {children: ReactNode}): ReactNode { - const syntheticTitle = useSyntheticTitle(); - - return ( -
- {syntheticTitle && ( -
- {syntheticTitle} -
- )} - - {children} -
- ); -} From c77e247f1698521973ea0bc97b166a2b73dc74be Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 11:48:27 +1300 Subject: [PATCH 04/11] Remove buttons for now --- src/theme/DocItem/Content/styles.module.css | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 src/theme/DocItem/Content/styles.module.css diff --git a/src/theme/DocItem/Content/styles.module.css b/src/theme/DocItem/Content/styles.module.css deleted file mode 100644 index 69ec69fa1..000000000 --- a/src/theme/DocItem/Content/styles.module.css +++ /dev/null @@ -1,11 +0,0 @@ -.markdownActions { - display: flex; - gap: 0.5rem; - margin-bottom: 1.5rem; -} - -.btnSm { - font-size: 0.75rem !important; - padding: 0.2rem 0.75rem !important; -} - From bea0800f2edfa4735fa3fdf6a46501eeb8f99b5b Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 11:55:54 +1300 Subject: [PATCH 05/11] Updat lock file --- package-lock.json | 85 +++++++++++++++++++++++------------------------ 1 file changed, 42 insertions(+), 43 deletions(-) diff --git a/package-lock.json b/package-lock.json index dcf85cebc..88d4adf15 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4209,9 +4209,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -4298,9 +4298,9 @@ } }, "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -5786,9 +5786,9 @@ "license": "MIT" }, "node_modules/@seqera/docusaurus-preset-seqera": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.21.tgz", - "integrity": "sha512-96J42ws/act5pgzxYB9AWVlR7eSaG486u4MxXGk6AwOP1avytZKsXNP64eQz+6hjKuTRkzY/30lPmNgPqRC2Kw==", + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.22.tgz", + "integrity": "sha512-QxvZ/HGGPMv8eOdxu+GoS7J0ZvmEszS76bHNfS52vGy+PmEGIlCAClgkG45RhX4zPx4B+gA71+gwTcQ9+C5+Ew==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5805,7 +5805,7 @@ "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-search-algolia": "3.9.2", "@docusaurus/types": "3.9.2", - "@seqera/docusaurus-theme-seqera": "1.0.21", + "@seqera/docusaurus-theme-seqera": "1.0.22", "@tailwindcss/oxide": "^4.1.17", "docusaurus-plugin-openapi-docs": "^4.5.1", "docusaurus-remark-plugin-tab-blocks": "^3.1.0", @@ -5825,9 +5825,9 @@ } }, "node_modules/@seqera/docusaurus-theme-seqera": { - "version": "1.0.21", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.21.tgz", - "integrity": "sha512-b1hzRCe8Te8CT5bjAAzPxpRsEi3qNI94yGQGN7hYt+33UldSfvjbNNaWjCqIa5wCGWscdHwZmSuXPqvSb/1IRw==", + "version": "1.0.22", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.22.tgz", + "integrity": "sha512-uwcL2BpbbozSARVaxU0i9O4zaYpxvuqpzJvAYWDoJX9ROasqOthMPZVL6Rf6JTpglexvzaQmmhxDmgSk76/guQ==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -7752,9 +7752,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", @@ -11191,9 +11191,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11271,9 +11271,9 @@ } }, "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -11394,9 +11394,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, "license": "ISC", "dependencies": { @@ -12485,15 +12485,15 @@ } }, "node_modules/glob/node_modules/minimatch": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.1.tgz", - "integrity": "sha512-MClCe8IL5nRRmawL6ib/eT4oLyeKMGCghibcDWK+J0hh0Q8kqSdia6BvbRMVk6mPa6WqUa5uR2oxt6C5jd533A==", + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", + "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", "license": "BlueOak-1.0.0", "dependencies": { "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -18010,9 +18010,9 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", + "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -23844,15 +23844,15 @@ } }, "node_modules/serve-handler": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", - "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", + "version": "6.1.7", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.7.tgz", + "integrity": "sha512-CinAq1xWb0vR3twAv9evEU8cNWkXCb9kd5ePAHUKJBkOsUpR1wt/CvGdeca7vqumL1U5cSaeVQ6zZMxiJ3yWsg==", "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", "mime-types": "2.1.18", - "minimatch": "3.1.2", + "minimatch": "3.1.5", "path-is-inside": "1.0.2", "path-to-regexp": "3.3.0", "range-parser": "1.2.0" @@ -23869,9 +23869,9 @@ } }, "node_modules/serve-handler/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -24957,15 +24957,14 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.16", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz", - "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==", + "version": "5.3.17", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.17.tgz", + "integrity": "sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==", "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", "schema-utils": "^4.3.0", - "serialize-javascript": "^6.0.2", "terser": "^5.31.1" }, "engines": { From 57e75e15b54b690d855bb1024ea081d2ad35e43e Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 14:25:44 +1300 Subject: [PATCH 06/11] Package --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index c13c4c7c7..21d706415 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,7 @@ "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", "@seqera/docusaurus-preset-seqera": "^1.0.22", + "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", From 5180a5a6ca57617c8845589def59947a992ce811 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 14:34:46 +1300 Subject: [PATCH 07/11] Adding log messages --- internal/fetch-docs-oss.mjs | 1 + internal/merge-llms-txt.mjs | 2 ++ 2 files changed, 3 insertions(+) diff --git a/internal/fetch-docs-oss.mjs b/internal/fetch-docs-oss.mjs index de3993ed0..beceba842 100644 --- a/internal/fetch-docs-oss.mjs +++ b/internal/fetch-docs-oss.mjs @@ -54,6 +54,7 @@ async function cloneOrUpdateRepo({ name, url, path: repoPath, branch }) { // Clone/update all repositories async function processRepositories() { + console.log("fetch-docs-oss: Pulling or updating docs from os product repositories..."); for (const repo of repositories) { try { await cloneOrUpdateRepo(repo); diff --git a/internal/merge-llms-txt.mjs b/internal/merge-llms-txt.mjs index 84a843d85..db28315b2 100644 --- a/internal/merge-llms-txt.mjs +++ b/internal/merge-llms-txt.mjs @@ -27,6 +27,8 @@ function extractSections(text) { } async function mergeLlmsTxt() { + console.log("merge-llms-txt: Merging llms.txt files from sub-site rewrites..."); + if (!(await fs.pathExists(LLMS_TXT_PATH))) { console.error("❌ merge-llms-txt: build/llms.txt not found. Run the build first."); process.exit(1); From 8529accc5edeac9f8a19c4b104782c313a7b2cea Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Wed, 4 Mar 2026 20:28:42 +1300 Subject: [PATCH 08/11] Shift to llms from theme --- docusaurus.config.js | 26 +++++++++++--------------- package-lock.json | 18 +++++++++--------- package.json | 3 +-- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 4e9a9ed12..4dd104ef3 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -258,6 +258,17 @@ export default async function createConfigAsync() { googleTagManager: { containerId: "GTM-MBCJKK4", }, + llmsTxt: { + content: { + enableMarkdownFiles: true, + enableLlmsFullTxt: false, + relativePaths: false, + includeBlog: false, + includePages: false, + includeDocs: true, + excludeRoutes: ['/**/tags', '/**/tags/**'], + }, + }, }), ], ], @@ -270,21 +281,6 @@ export default async function createConfigAsync() { process.env.EXCLUDE_FUSION ? null : docs_fusion, process.env.EXCLUDE_WAVE ? null : docs_wave, - [ - '@signalwire/docusaurus-plugin-llms-txt', - { - content: { - enableMarkdownFiles: true, - enableLlmsFullTxt: false, - relativePaths: false, - includeBlog: false, - includePages: false, - includeDocs: true, - excludeRoutes: ['/**/tags', '/**/tags/**'], - }, - }, - ], - // Disable expensive bundler options. // https://github.com/facebook/docusaurus/pull/11176 function disableExpensiveBundlerOptimizationPlugin() { diff --git a/package-lock.json b/package-lock.json index d5e24722c..df3bc560a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,7 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.22", - "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", + "@seqera/docusaurus-preset-seqera": "^1.0.24", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", @@ -5786,9 +5785,9 @@ "license": "MIT" }, "node_modules/@seqera/docusaurus-preset-seqera": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.22.tgz", - "integrity": "sha512-QxvZ/HGGPMv8eOdxu+GoS7J0ZvmEszS76bHNfS52vGy+PmEGIlCAClgkG45RhX4zPx4B+gA71+gwTcQ9+C5+Ew==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.24.tgz", + "integrity": "sha512-Hp1xRbFVVr+M4tlf68AKmYxdWwQkLCl/zaGuq+wrWAhEK6sYwQpNVXArvp6YCB1EW1sEDo+MlGwTP7kuMjTNtg==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5805,7 +5804,8 @@ "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-search-algolia": "3.9.2", "@docusaurus/types": "3.9.2", - "@seqera/docusaurus-theme-seqera": "1.0.22", + "@seqera/docusaurus-theme-seqera": "1.0.24", + "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", "@tailwindcss/oxide": "^4.1.17", "docusaurus-plugin-openapi-docs": "^4.5.1", "docusaurus-remark-plugin-tab-blocks": "^3.1.0", @@ -5825,9 +5825,9 @@ } }, "node_modules/@seqera/docusaurus-theme-seqera": { - "version": "1.0.22", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.22.tgz", - "integrity": "sha512-uwcL2BpbbozSARVaxU0i9O4zaYpxvuqpzJvAYWDoJX9ROasqOthMPZVL6Rf6JTpglexvzaQmmhxDmgSk76/guQ==", + "version": "1.0.24", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.24.tgz", + "integrity": "sha512-D2U4/mB4PJFnBJlua+apESS/lh5jcq2PrUF56YA0TRjXvKunFAnUxLMZvFYlfYnmPwRL2NqisPA9FmRlB3cWNA==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", diff --git a/package.json b/package.json index 21d706415..d57bd3878 100644 --- a/package.json +++ b/package.json @@ -39,8 +39,7 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.22", - "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", + "@seqera/docusaurus-preset-seqera": "^1.0.24", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", From 03802a573d53db0a3f891a65cf988999a121aed9 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Thu, 5 Mar 2026 08:24:04 +1300 Subject: [PATCH 09/11] Fix Nextflow links --- internal/merge-llms-txt.mjs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/merge-llms-txt.mjs b/internal/merge-llms-txt.mjs index db28315b2..524182660 100644 --- a/internal/merge-llms-txt.mjs +++ b/internal/merge-llms-txt.mjs @@ -15,6 +15,13 @@ const REMOTE_ORIGINS = [ { name: "platform-api", url: "https://seqera-docs-api.netlify.app/llms.txt" }, ]; +/** + * Rewrites relative links (e.g. [Title](/path)) to absolute URLs. + */ +function rewriteRelativeLinks(text, baseUrl) { + return text.replace(/\]\(\/([^)]*)\)/g, `](${baseUrl}/$1)`); +} + /** * Strips the llms.txt header (title, description, top-level links) and * returns only the ## section content. @@ -43,11 +50,12 @@ async function mergeLlmsTxt() { console.warn(`⚠️ merge-llms-txt: ${name} returned ${response.status} — skipping`); continue; } - const sections = extractSections(await response.text()); + let sections = extractSections(await response.text()); if (!sections) { console.warn(`⚠️ merge-llms-txt: no ## sections found in ${name} llms.txt — skipping`); continue; } + sections = rewriteRelativeLinks(sections, "https://docs.seqera.io"); base += "\n" + sections; console.log(`✅ merge-llms-txt: merged ${name}`); } catch (error) { From 63e6e3f30b53eb7637127bc93b83e134dac3869c Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Thu, 5 Mar 2026 15:00:27 +1300 Subject: [PATCH 10/11] Update package --- docusaurus.config.js | 127 ++++++++-- internal/merge-llms-txt.mjs | 83 ++----- package-lock.json | 446 ++++-------------------------------- package.json | 2 +- wave_docs/sidebar.json | 8 - 5 files changed, 181 insertions(+), 485 deletions(-) diff --git a/docusaurus.config.js b/docusaurus.config.js index 4dd104ef3..63ca03d91 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -258,17 +258,6 @@ export default async function createConfigAsync() { googleTagManager: { containerId: "GTM-MBCJKK4", }, - llmsTxt: { - content: { - enableMarkdownFiles: true, - enableLlmsFullTxt: false, - relativePaths: false, - includeBlog: false, - includePages: false, - includeDocs: true, - excludeRoutes: ['/**/tags', '/**/tags/**'], - }, - }, }), ], ], @@ -281,8 +270,120 @@ export default async function createConfigAsync() { process.env.EXCLUDE_FUSION ? null : docs_fusion, process.env.EXCLUDE_WAVE ? null : docs_wave, - // Disable expensive bundler options. - // https://github.com/facebook/docusaurus/pull/11176 + ['docusaurus-plugin-llms', { + id: 'llms-enterprise', + docsDir: 'platform-enterprise_docs', + llmsTxtFilename: 'llms-enterprise.txt', + title: 'Seqera Platform Enterprise', + description: 'Documentation for Seqera Platform Enterprise.', + rootContent: 'This file contains links to Seqera Platform Enterprise documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-cloud', + docsDir: 'platform-cloud/docs', + llmsTxtFilename: 'llms-cloud.txt', + title: 'Seqera Platform Cloud', + description: 'Documentation for Seqera Platform Cloud.', + rootContent: 'This file contains links to Seqera Platform Cloud documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-api', + docsDir: 'platform-api-docs/docs', + llmsTxtFilename: 'llms-api.txt', + title: 'Seqera Platform API', + description: 'API reference documentation for the Seqera Platform REST API.', + rootContent: 'This file contains links to Seqera Platform API reference documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-cli', + docsDir: 'platform-cli-docs/docs', + llmsTxtFilename: 'llms-cli.txt', + title: 'Seqera Platform CLI', + description: 'Documentation for the Seqera Platform command-line interface.', + rootContent: 'This file contains links to Seqera Platform CLI documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-multiqc', + docsDir: 'multiqc_docs/multiqc_repo/docs/markdown', + llmsTxtFilename: 'llms-multiqc.txt', + title: 'MultiQC', + description: 'Documentation for MultiQC', + rootContent: 'This file contains links to MultiQC documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-fusion', + docsDir: 'fusion_docs', + llmsTxtFilename: 'llms-fusion.txt', + title: 'Fusion', + description: 'Documentation for Fusion.', + rootContent: 'This file contains links to Fusion documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + ['docusaurus-plugin-llms', { + id: 'llms-wave', + docsDir: 'wave_docs/wave_repo/docs', + llmsTxtFilename: 'llms-wave.txt', + title: 'Wave', + description: 'Documentation for Wave.', + rootContent: 'This file contains links to Wave documentation following the llmstxt.org standard.', + generateLLMsTxt: true, + generateLLMsFullTxt: false, + generateMarkdownFiles: true, + includeBlog: false, + excludeImports: true, + removeDuplicateHeadings: true, + ignoreFiles: ['**/tags', '**/tags/**'], + processingBatchSize: 50, + }], + + // Disable expensive bundler options: https://github.com/facebook/docusaurus/pull/11176 function disableExpensiveBundlerOptimizationPlugin() { return { name: 'disable-expensive-bundler-optimizations', diff --git a/internal/merge-llms-txt.mjs b/internal/merge-llms-txt.mjs index 524182660..83cfbdb47 100644 --- a/internal/merge-llms-txt.mjs +++ b/internal/merge-llms-txt.mjs @@ -5,70 +5,37 @@ import { fileURLToPath } from "url"; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); -const LLMS_TXT_PATH = path.join(__dirname, "..", "build", "llms.txt"); - -// Sub-sites served via Netlify rewrites that are absent from the local build. -// Each site must have the llms-txt plugin installed and generating URLs -// relative to https://docs.seqera.io (not their own Netlify domain). -const REMOTE_ORIGINS = [ - { name: "nextflow", url: "https://docs-migration.netlify.app/llms.txt" }, - { name: "platform-api", url: "https://seqera-docs-api.netlify.app/llms.txt" }, +const buildDir = path.join(__dirname, "..", "build"); +const outputFile = path.join(buildDir, "llms.txt"); + +const files = [ + "llms-enterprise.txt", + "llms-cloud.txt", + "llms-api.txt", + "llms-cli.txt", + "llms-multiqc.txt", + "llms-fusion.txt", + "llms-wave.txt", ]; -/** - * Rewrites relative links (e.g. [Title](/path)) to absolute URLs. - */ -function rewriteRelativeLinks(text, baseUrl) { - return text.replace(/\]\(\/([^)]*)\)/g, `](${baseUrl}/$1)`); -} - -/** - * Strips the llms.txt header (title, description, top-level links) and - * returns only the ## section content. - */ -function extractSections(text) { - const lines = text.split("\n"); - const firstSection = lines.findIndex((line) => line.startsWith("## ")); - if (firstSection === -1) return ""; - return lines.slice(firstSection).join("\n"); -} +const header = `# Seqera Docs -async function mergeLlmsTxt() { - console.log("merge-llms-txt: Merging llms.txt files from sub-site rewrites..."); +> Documentation for Seqera products — Seqera Platform Cloud, Seqera Platform Enterprise, Seqera Platform API, Seqera Platform CLI, Nextflow, MultiQC, Fusion, and Wave. - if (!(await fs.pathExists(LLMS_TXT_PATH))) { - console.error("❌ merge-llms-txt: build/llms.txt not found. Run the build first."); - process.exit(1); - } +This file contains links to all Seqera product documentation following the llmstxt.org standard.`; - let base = await fs.readFile(LLMS_TXT_PATH, "utf-8"); +const parts = [header]; - for (const { name, url } of REMOTE_ORIGINS) { - try { - const response = await fetch(url); - if (!response.ok) { - console.warn(`⚠️ merge-llms-txt: ${name} returned ${response.status} — skipping`); - continue; - } - let sections = extractSections(await response.text()); - if (!sections) { - console.warn(`⚠️ merge-llms-txt: no ## sections found in ${name} llms.txt — skipping`); - continue; - } - sections = rewriteRelativeLinks(sections, "https://docs.seqera.io"); - base += "\n" + sections; - console.log(`✅ merge-llms-txt: merged ${name}`); - } catch (error) { - console.warn(`⚠️ merge-llms-txt: failed to fetch ${name} — skipping`); - console.warn(` ${error.message}`); - } +for (const file of files) { + const filePath = path.join(buildDir, file); + if (await fs.pathExists(filePath)) { + const content = await fs.readFile(filePath, "utf-8"); + parts.push(content.trim()); + console.log(` Merged ${file}`); + } else { + console.warn(` Skipped ${file} (not found)`); } - - await fs.writeFile(LLMS_TXT_PATH, base, "utf-8"); - console.log("✅ merge-llms-txt: build/llms.txt updated"); } -mergeLlmsTxt().catch((error) => { - console.error("❌ merge-llms-txt failed:", error); - process.exit(1); -}); +await fs.writeFile(outputFile, parts.join("\n\n") + "\n"); +console.log(`\nWrote ${outputFile}`); diff --git a/package-lock.json b/package-lock.json index df3bc560a..65f95aafd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.24", + "@seqera/docusaurus-preset-seqera": "^1.0.25", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", @@ -5785,9 +5785,9 @@ "license": "MIT" }, "node_modules/@seqera/docusaurus-preset-seqera": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.24.tgz", - "integrity": "sha512-Hp1xRbFVVr+M4tlf68AKmYxdWwQkLCl/zaGuq+wrWAhEK6sYwQpNVXArvp6YCB1EW1sEDo+MlGwTP7kuMjTNtg==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-preset-seqera/-/docusaurus-preset-seqera-1.0.25.tgz", + "integrity": "sha512-/pt7JRdP2XBCA0lu6f1eUaAIsEMTJ4T0di9VFs2SxhSx8f+FIaAsOPfaSj51qAOuCDZpNu0JyzmdrvWi5yfEkw==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5804,9 +5804,9 @@ "@docusaurus/theme-common": "3.9.2", "@docusaurus/theme-search-algolia": "3.9.2", "@docusaurus/types": "3.9.2", - "@seqera/docusaurus-theme-seqera": "1.0.24", - "@signalwire/docusaurus-plugin-llms-txt": "^1.2.2", + "@seqera/docusaurus-theme-seqera": "1.0.25", "@tailwindcss/oxide": "^4.1.17", + "docusaurus-plugin-llms": "^0.3.0", "docusaurus-plugin-openapi-docs": "^4.5.1", "docusaurus-remark-plugin-tab-blocks": "^3.1.0", "docusaurus-theme-openapi-docs": "^4.5.1", @@ -5825,9 +5825,9 @@ } }, "node_modules/@seqera/docusaurus-theme-seqera": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.24.tgz", - "integrity": "sha512-D2U4/mB4PJFnBJlua+apESS/lh5jcq2PrUF56YA0TRjXvKunFAnUxLMZvFYlfYnmPwRL2NqisPA9FmRlB3cWNA==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/@seqera/docusaurus-theme-seqera/-/docusaurus-theme-seqera-1.0.25.tgz", + "integrity": "sha512-f5mFYeZfP7br3qbCl8mN3H7nr0sGOUqvBeOo/1OIgBr44jWnGb9s1A0Y8cDVUldHuN8f9WszhedO2zKdCTo2oA==", "license": "Apache-2.0", "dependencies": { "@docusaurus/core": "3.9.2", @@ -5888,59 +5888,6 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "license": "BSD-3-Clause" }, - "node_modules/@signalwire/docusaurus-plugin-llms-txt": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@signalwire/docusaurus-plugin-llms-txt/-/docusaurus-plugin-llms-txt-1.2.2.tgz", - "integrity": "sha512-Qo5ZBDZpyXFlcrWwise77vs6B0R3m3/qjIIm1IHf4VzW6sVYgaR/y46BJwoAxMrV3WJkn0CVGpyYC+pMASFBZw==", - "license": "MIT", - "dependencies": { - "fs-extra": "^11.0.0", - "hast-util-select": "^6.0.4", - "hast-util-to-html": "^9.0.5", - "hast-util-to-string": "^3.0.1", - "p-map": "^7.0.2", - "rehype-parse": "^9", - "rehype-remark": "^10", - "remark-gfm": "^4", - "remark-stringify": "^11", - "string-width": "^5.0.0", - "unified": "^11", - "unist-util-visit": "^5" - }, - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "@docusaurus/core": "^3.0.0" - } - }, - "node_modules/@signalwire/docusaurus-plugin-llms-txt/node_modules/p-map": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz", - "integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@signalwire/docusaurus-plugin-llms-txt/node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/@sinclair/typebox": { "version": "0.27.10", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", @@ -8392,16 +8339,6 @@ "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", "license": "MIT" }, - "node_modules/bcp-47-match": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", - "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/big.js": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", @@ -9807,22 +9744,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/css-selector-parser": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz", - "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ], - "license": "MIT" - }, "node_modules/css-tree": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", @@ -10349,19 +10270,6 @@ "node": ">=8" } }, - "node_modules/direction": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", - "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", - "license": "MIT", - "bin": { - "direction": "cli.js" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/dns-packet": { "version": "5.6.1", "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", @@ -10387,6 +10295,38 @@ "node": ">=6.0.0" } }, + "node_modules/docusaurus-plugin-llms": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/docusaurus-plugin-llms/-/docusaurus-plugin-llms-0.3.0.tgz", + "integrity": "sha512-JuADAJA2fjTv1U4XQUoIu1LyjISDzxFhRK5HbCZiHum4HlmdPwyx8NBXsi+LfdUyjK9acbZgazGsHPhdwEZs0g==", + "license": "MIT", + "dependencies": { + "gray-matter": "^4.0.3", + "minimatch": "^9.0.3", + "yaml": "^2.8.1" + }, + "engines": { + "node": ">=18.0" + }, + "peerDependencies": { + "@docusaurus/core": "^3.0.0" + } + }, + "node_modules/docusaurus-plugin-llms/node_modules/minimatch": { + "version": "9.0.9", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", + "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/docusaurus-plugin-openapi-docs": { "version": "4.7.1", "resolved": "https://registry.npmjs.org/docusaurus-plugin-openapi-docs/-/docusaurus-plugin-openapi-docs-4.7.1.tgz", @@ -12810,51 +12750,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-embedded": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-embedded/-/hast-util-embedded-3.0.0.tgz", - "integrity": "sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-is-element": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-embedded/node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-from-parse5": { "version": "8.0.3", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", @@ -12875,32 +12770,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-has-property": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", - "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-body-ok-link": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-is-body-ok-link/-/hast-util-is-body-ok-link-3.0.1.tgz", - "integrity": "sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-is-element": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-1.1.0.tgz", @@ -12911,36 +12780,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-minify-whitespace": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hast-util-minify-whitespace/-/hast-util-minify-whitespace-1.0.1.tgz", - "integrity": "sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-embedded": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-minify-whitespace/node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", @@ -12954,36 +12793,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-phrasing/-/hast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-embedded": "^3.0.0", - "hast-util-has-property": "^3.0.0", - "hast-util-is-body-ok-link": "^3.0.0", - "hast-util-is-element": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-phrasing/node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-raw": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", @@ -13009,33 +12818,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-select": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz", - "integrity": "sha512-RqGS1ZgI0MwxLaKLDxjprynNzINEkRHY2i8ln4DDjgv9ZhcYVIHN9rlpiYsqtFwrgpYU361SyWDQcGNIBVu3lw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "bcp-47-match": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "css-selector-parser": "^3.0.0", - "devlop": "^1.0.0", - "direction": "^2.0.0", - "hast-util-has-property": "^3.0.0", - "hast-util-to-string": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "nth-check": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-estree": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", @@ -13064,29 +12846,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-jsx-runtime": { "version": "2.3.6", "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", @@ -13114,75 +12873,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-mdast": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/hast-util-to-mdast/-/hast-util-to-mdast-10.1.2.tgz", - "integrity": "sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-phrasing": "^3.0.0", - "hast-util-to-html": "^9.0.0", - "hast-util-to-text": "^4.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-hast": "^13.0.0", - "mdast-util-to-string": "^4.0.0", - "rehype-minify-whitespace": "^6.0.0", - "trim-trailing-lines": "^2.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast/node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast/node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-mdast/node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-parse5": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz", @@ -13202,19 +12892,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-text": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-2.0.1.tgz", @@ -22069,20 +21746,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-minify-whitespace": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/rehype-minify-whitespace/-/rehype-minify-whitespace-6.0.2.tgz", - "integrity": "sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-minify-whitespace": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-parse": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-7.0.1.tgz", @@ -22289,23 +21952,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/rehype-remark": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/rehype-remark/-/rehype-remark-10.0.1.tgz", - "integrity": "sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==", - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "hast-util-to-mdast": "^10.0.0", - "unified": "^11.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -25274,16 +24920,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/trim-trailing-lines": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trim-trailing-lines/-/trim-trailing-lines-2.1.0.tgz", - "integrity": "sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", diff --git a/package.json b/package.json index d57bd3878..d54cb438d 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "dependencies": { "@docusaurus/faster": "^3.9.2", "@rspack/core": "^1.4.11", - "@seqera/docusaurus-preset-seqera": "^1.0.24", + "@seqera/docusaurus-preset-seqera": "^1.0.25", "image-size": "^2.0.2", "postcss-import": "^16.1.1", "postcss-loader": "^8.1.1", diff --git a/wave_docs/sidebar.json b/wave_docs/sidebar.json index 3e8e0f3bb..4fc754a93 100644 --- a/wave_docs/sidebar.json +++ b/wave_docs/sidebar.json @@ -91,14 +91,6 @@ "migrations/1-25-0", "migrations/1-24-0", "migrations/1-21-0" - ] - }, - { - "type": "category", - "label": "Guides", - "collapsed": true, - "items": [ - "db-migration" ] } ] From 39ffb9dd4a3946e18d941b4e83487f19ca5af7f7 Mon Sep 17 00:00:00 2001 From: Christopher Hakkaart Date: Thu, 5 Mar 2026 15:34:11 +1300 Subject: [PATCH 11/11] Add Nextflow to llms.txt --- internal/merge-llms-txt.mjs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/internal/merge-llms-txt.mjs b/internal/merge-llms-txt.mjs index 83cfbdb47..7a6e94b44 100644 --- a/internal/merge-llms-txt.mjs +++ b/internal/merge-llms-txt.mjs @@ -8,7 +8,7 @@ const __dirname = path.dirname(__filename); const buildDir = path.join(__dirname, "..", "build"); const outputFile = path.join(buildDir, "llms.txt"); -const files = [ +const localFiles = [ "llms-enterprise.txt", "llms-cloud.txt", "llms-api.txt", @@ -18,6 +18,10 @@ const files = [ "llms-wave.txt", ]; +const remoteFiles = [ + { filename: "llms-nextflow.txt", url: "https://docs-migration.netlify.app/llms-nextflow.txt" }, +]; + const header = `# Seqera Docs > Documentation for Seqera products — Seqera Platform Cloud, Seqera Platform Enterprise, Seqera Platform API, Seqera Platform CLI, Nextflow, MultiQC, Fusion, and Wave. @@ -26,7 +30,7 @@ This file contains links to all Seqera product documentation following the llmst const parts = [header]; -for (const file of files) { +for (const file of localFiles) { const filePath = path.join(buildDir, file); if (await fs.pathExists(filePath)) { const content = await fs.readFile(filePath, "utf-8"); @@ -37,5 +41,20 @@ for (const file of files) { } } +for (const { filename, url } of remoteFiles) { + try { + const response = await fetch(url); + if (response.ok) { + const content = await response.text(); + parts.push(content.trim()); + console.log(` Merged ${filename} (from ${url})`); + } else { + console.warn(` Skipped ${filename} (HTTP ${response.status})`); + } + } catch (err) { + console.warn(` Skipped ${filename} (fetch failed: ${err.message})`); + } +} + await fs.writeFile(outputFile, parts.join("\n\n") + "\n"); console.log(`\nWrote ${outputFile}`);