@farming-labs/docs 0.2.60 → 0.2.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/{agent-DlxriaTs.mjs → agent-DFHlw_JC.mjs} +3 -3
  3. package/dist/{agent-BFqyqEnC.mjs → agent-Fl0pjVNF.mjs} +136 -331
  4. package/dist/{agent-evals-kJs2Y9xR.mjs → agent-evals-f4_OL10T.mjs} +3 -3
  5. package/dist/{agent-export-BgUaiW8f.mjs → agent-export-D0zQhasD.mjs} +87 -46
  6. package/dist/agent-skills-bundle.d.mts +13 -0
  7. package/dist/agent-skills-bundle.mjs +12 -0
  8. package/dist/agent-skills-server-CIeBszxp.mjs +263 -0
  9. package/dist/agent-skills-server-CKq3_jMj.d.mts +12 -0
  10. package/dist/agent-skills-vite.d.mts +31 -0
  11. package/dist/agent-skills-vite.mjs +70 -0
  12. package/dist/{agents-Djh-HXih.mjs → agents-ibnXrWyp.mjs} +9 -7
  13. package/dist/cli/index.mjs +29 -29
  14. package/dist/client/react.d.mts +1 -1
  15. package/dist/{cloud-ask-ai-B2WnG4fF.d.mts → cloud-ask-ai-D7ZgF47y.d.mts} +1 -1
  16. package/dist/{cloud-BH_sHX64.mjs → cloud-pdNC-tyj.mjs} +3 -3
  17. package/dist/{codeblocks-Bq67u32v.mjs → codeblocks-CFuurVIH.mjs} +2 -2
  18. package/dist/{config-DASewQ0x.mjs → config-Wcdj-D0a.mjs} +7 -1
  19. package/dist/{dev-DgY5xGl9.mjs → dev-Cmy6DtdF.mjs} +2 -2
  20. package/dist/docs-cloud-server.d.mts +2 -2
  21. package/dist/docs-cloud-server.mjs +1 -1
  22. package/dist/{doctor-CO1VMcF_.mjs → doctor-CXostbsI.mjs} +151 -21
  23. package/dist/{downgrade-BZs86NVr.mjs → downgrade-w7e6Se0L.mjs} +2 -2
  24. package/dist/{golden-evaluations-BN9u2wxw.mjs → golden-evaluations-CBZ_JZjf.mjs} +19 -4
  25. package/dist/index.d.mts +52 -10
  26. package/dist/index.mjs +8 -7
  27. package/dist/{init-Bd_k06bR.mjs → init-CQY0Woe3.mjs} +36 -5
  28. package/dist/{mcp-B_yXL5G5.mjs → mcp-DyPcoLwm.mjs} +33 -14
  29. package/dist/mcp.d.mts +13 -2
  30. package/dist/mcp.mjs +699 -408
  31. package/dist/{metadata-BDuewuzq.mjs → metadata-Dv1ah0Aj.mjs} +1 -1
  32. package/dist/{package-version-qik_4J6C.mjs → package-version-n5AFur8a.mjs} +1 -1
  33. package/dist/{reading-time-BkEft6SD.mjs → reading-time-C-SAhQT9.mjs} +10 -9
  34. package/dist/{review-NC-sOdXn.mjs → review-D2UBrxFq.mjs} +18 -10
  35. package/dist/{robots-DskPvGPw.mjs → robots-5Yqz9mz7.mjs} +5 -4
  36. package/dist/{robots-ltltiLJF.mjs → robots-C08kDLsz.mjs} +6 -2
  37. package/dist/{search-D57JXQLj.mjs → search-9OnMGMvt.mjs} +1 -1
  38. package/dist/{search-C1JitPwi.d.mts → search-C6heDO8h.d.mts} +3 -126
  39. package/dist/{search-o4Ud6OXv.mjs → search-CNsRpz90.mjs} +8 -6
  40. package/dist/server.d.mts +6 -5
  41. package/dist/server.mjs +9 -7
  42. package/dist/{sitemap-Cq-Yj_iA.mjs → sitemap-BpYnSsfJ.mjs} +9 -7
  43. package/dist/{sitemap-server-C1ibVKOy.mjs → sitemap-server-D_0Kzanj.mjs} +1 -1
  44. package/dist/standards-discovery-C4HUqMd2.d.mts +227 -0
  45. package/dist/standards-discovery-C54V_aJH.mjs +510 -0
  46. package/dist/{templates-DNw15P-x.mjs → templates-Bq_P7ctv.mjs} +101 -9
  47. package/dist/{types-XHABMh_f.d.mts → types-EhFhYGfr.d.mts} +58 -1
  48. package/dist/{upgrade-BCJTCW3O.mjs → upgrade-oz-GChgt.mjs} +2 -2
  49. package/package.json +11 -1
  50. /package/dist/{agent-scope-CCaIY1aK.mjs → agent-scope-C_U--OZ7.mjs} +0 -0
  51. /package/dist/{cloud-ask-ai-hnJfj8-X.mjs → cloud-ask-ai-sbpjOR2K.mjs} +0 -0
  52. /package/dist/{code-blocks-qe0T8-xe.mjs → code-blocks-DnNVNK2M.mjs} +0 -0
  53. /package/dist/{errors-CVqZ3kOO.mjs → errors-DbOhkE1h.mjs} +0 -0
  54. /package/dist/{i18n-CAlj1ADU.mjs → i18n-CCaFUnAN.mjs} +0 -0
  55. /package/dist/{utils-6UCLxv4B.mjs → utils-DpiIioYb.mjs} +0 -0
@@ -752,11 +752,13 @@ export default defineDocs({
752
752
  function tanstackDocsServerTemplate() {
753
753
  return `\
754
754
  import { createDocsServer } from "@farming-labs/tanstack-start/server";
755
+ import { bundledAgentSkills } from "@farming-labs/docs/agent-skills-bundle";
755
756
  import docsConfig from "../../docs.config";
756
757
 
757
758
  export const docsServer = createDocsServer({
758
759
  ...docsConfig,
759
760
  rootDir: process.cwd(),
761
+ _preloadedAgentSkills: bundledAgentSkills,
760
762
  });
761
763
  `;
762
764
  }
@@ -894,7 +896,7 @@ async function handlePublicDocsRequest(request: Request) {
894
896
  const url = new URL(request.url);
895
897
  const method = request.method.toUpperCase();
896
898
 
897
- if (isDocsMcpRequest(url)) {
899
+ if (isDocsMcpRequest(url, docsConfig.mcp)) {
898
900
  if (method === "OPTIONS") return docsServer.MCP.OPTIONS({ request });
899
901
  if (method === "POST") return docsServer.MCP.POST({ request });
900
902
  if (method === "DELETE") return docsServer.MCP.DELETE({ request });
@@ -990,22 +992,55 @@ function tanstackViteConfigTemplate(useAlias) {
990
992
  import { defineConfig } from "vite";
991
993
  import tailwindcss from "@tailwindcss/vite";
992
994
  ${useAlias ? "import tsconfigPaths from \"vite-tsconfig-paths\";\n" : ""}import { tanstackStart } from "@tanstack/react-start/plugin/vite";
995
+ import { docsAgentSkills } from "@farming-labs/docs/vite";
993
996
  import { docsMdx } from "@farming-labs/tanstack-start/vite";
997
+ import docsConfig from "./docs.config";
994
998
 
995
999
  export default defineConfig({
996
- plugins: [tailwindcss(), docsMdx(), ${useAlias ? "tsconfigPaths({ ignoreConfigErrors: true }), " : ""}tanstackStart()],
1000
+ plugins: [tailwindcss(), docsMdx(), docsAgentSkills(docsConfig), ${useAlias ? "tsconfigPaths({ ignoreConfigErrors: true }), " : ""}tanstackStart()],
997
1001
  });
998
1002
  `;
999
1003
  }
1004
+ function svelteViteConfigTemplate() {
1005
+ return `\
1006
+ import { sveltekit } from "@sveltejs/kit/vite";
1007
+ import { defineConfig } from "vite";
1008
+ import { docsAgentSkills } from "@farming-labs/docs/vite";
1009
+ import docsConfig from "./src/lib/docs.config";
1010
+
1011
+ export default defineConfig({
1012
+ plugins: [sveltekit(), docsAgentSkills(docsConfig)],
1013
+ });
1014
+ `;
1015
+ }
1016
+ /** Add the Agent Skills snapshot plugin to an existing Vite config. */
1017
+ function injectDocsAgentSkillsVitePlugin(content, configImportPath) {
1018
+ if (!content) return null;
1019
+ let out = addImportLine(content, "import { docsAgentSkills } from \"@farming-labs/docs/vite\";");
1020
+ out = addImportLine(out, `import docsConfig from ${JSON.stringify(configImportPath)};`);
1021
+ if (out.includes("docsAgentSkills(docsConfig)")) return out === content ? null : out;
1022
+ const pluginsMatch = out.match(/plugins\s*:\s*\[([\s\S]*?)\]/m);
1023
+ if (pluginsMatch) {
1024
+ const current = pluginsMatch[1].trim();
1025
+ const existing = current ? `${current}${current.endsWith(",") ? "" : ","}` : "";
1026
+ return out.replace(pluginsMatch[0], `plugins: [${existing}${existing ? " " : ""}docsAgentSkills(docsConfig)]`);
1027
+ }
1028
+ const configMatch = out.match(/defineConfig\(\s*\{/);
1029
+ if (!configMatch) return null;
1030
+ return out.replace(configMatch[0], "defineConfig({\n plugins: [docsAgentSkills(docsConfig)],");
1031
+ }
1000
1032
  function injectTanstackVitePlugins(content, useAlias) {
1001
1033
  if (!content) return null;
1002
1034
  let out = content;
1003
1035
  out = addImportLine(out, "import tailwindcss from \"@tailwindcss/vite\";");
1004
1036
  if (useAlias) out = addImportLine(out, "import tsconfigPaths from \"vite-tsconfig-paths\";");
1005
1037
  out = addImportLine(out, "import { docsMdx } from \"@farming-labs/tanstack-start/vite\";");
1038
+ out = addImportLine(out, "import { docsAgentSkills } from \"@farming-labs/docs/vite\";");
1039
+ out = addImportLine(out, "import docsConfig from \"./docs.config\";");
1006
1040
  const additions = [];
1007
1041
  if (!out.includes("tailwindcss()")) additions.push("tailwindcss()");
1008
1042
  if (!out.includes("docsMdx()")) additions.push("docsMdx()");
1043
+ if (!out.includes("docsAgentSkills(")) additions.push("docsAgentSkills(docsConfig)");
1009
1044
  if (useAlias && !out.includes("tsconfigPaths(")) additions.push("tsconfigPaths({ ignoreConfigErrors: true })");
1010
1045
  if (additions.length === 0) return out === content ? null : out;
1011
1046
  const pluginsMatch = out.match(/plugins\s*:\s*\[([\s\S]*?)\]/m);
@@ -1243,6 +1278,7 @@ export default defineDocs({
1243
1278
  function svelteDocsServerTemplate(cfg) {
1244
1279
  return `\
1245
1280
  import { createDocsServer } from "@farming-labs/svelte/server";
1281
+ import { bundledAgentSkills } from "@farming-labs/docs/agent-skills-bundle";
1246
1282
  import config from "${svelteServerConfigImport(cfg.useAlias)}";
1247
1283
 
1248
1284
  // preload for production
@@ -1255,6 +1291,7 @@ const contentFiles = import.meta.glob(["/${cfg.entry ?? "docs"}/**/*.{md,mdx,svx
1255
1291
  export const { load, GET, POST, MCP } = createDocsServer({
1256
1292
  ...config,
1257
1293
  _preloadedContent: contentFiles,
1294
+ _preloadedAgentSkills: bundledAgentSkills,
1258
1295
  });
1259
1296
  `;
1260
1297
  }
@@ -1315,7 +1352,7 @@ const docsEntry = config.entry ?? "docs";
1315
1352
  export const handle: Handle = async ({ event, resolve }) => {
1316
1353
  const method = event.request.method.toUpperCase();
1317
1354
 
1318
- if (isDocsMcpRequest(event.url)) {
1355
+ if (isDocsMcpRequest(event.url, config.mcp)) {
1319
1356
  if (method === "OPTIONS") return MCP.OPTIONS({ request: event.request });
1320
1357
  if (method === "POST") return MCP.POST({ request: event.request });
1321
1358
  if (method === "DELETE") return MCP.DELETE({ request: event.request });
@@ -1369,7 +1406,7 @@ const docsEntry = docsConfig.entry ?? "docs";
1369
1406
  const docsPublicHandle: Handle = async ({ event, resolve }) => {
1370
1407
  const method = event.request.method.toUpperCase();
1371
1408
 
1372
- if (isDocsMcpRequest(event.url)) {
1409
+ if (isDocsMcpRequest(event.url, docsConfig.mcp)) {
1373
1410
  if (method === "OPTIONS") return docsMCP.OPTIONS({ request: event.request });
1374
1411
  if (method === "POST") return docsMCP.POST({ request: event.request });
1375
1412
  if (method === "DELETE") return docsMCP.DELETE({ request: event.request });
@@ -1660,6 +1697,7 @@ export default defineDocs({
1660
1697
  function astroDocsServerTemplate(cfg) {
1661
1698
  return `\
1662
1699
  import { createDocsServer } from "@farming-labs/astro/server";
1700
+ import { bundledAgentSkills } from "@farming-labs/docs/agent-skills-bundle";
1663
1701
  import config from "${astroServerConfigImport(cfg.useAlias)}";
1664
1702
 
1665
1703
  const contentFiles = import.meta.glob(["/${cfg.entry ?? "docs"}/**/*.{md,mdx}", "/AGENTS.md", "/AGENT.md", "/skill.md", "/.farming-labs/sitemap-manifest.json"], {
@@ -1671,6 +1709,7 @@ const contentFiles = import.meta.glob(["/${cfg.entry ?? "docs"}/**/*.{md,mdx}",
1671
1709
  export const { load, GET, POST, MCP } = createDocsServer({
1672
1710
  ...config,
1673
1711
  _preloadedContent: contentFiles,
1712
+ _preloadedAgentSkills: bundledAgentSkills,
1674
1713
  });
1675
1714
  `;
1676
1715
  }
@@ -1701,13 +1740,34 @@ function astroConfigTemplate(adapter = "vercel") {
1701
1740
  return `\
1702
1741
  import { defineConfig } from "astro/config";
1703
1742
  import ${adapter} from "${info.import}";
1743
+ import { docsAgentSkills } from "@farming-labs/docs/vite";
1744
+ import docsConfig from "./src/lib/docs.config";
1704
1745
 
1705
1746
  export default defineConfig({
1706
1747
  output: "server",
1707
1748
  adapter: ${adapterCall},
1749
+ vite: { plugins: [docsAgentSkills(docsConfig)] },
1708
1750
  });
1709
1751
  `;
1710
1752
  }
1753
+ /** Add the Agent Skills snapshot plugin to an existing Astro config. */
1754
+ function injectAstroAgentSkillsPlugin(content) {
1755
+ if (!content) return null;
1756
+ let out = addImportLine(content, "import { docsAgentSkills } from \"@farming-labs/docs/vite\";");
1757
+ out = addImportLine(out, "import docsConfig from \"./src/lib/docs.config\";");
1758
+ if (out.includes("docsAgentSkills(docsConfig)")) return out === content ? null : out;
1759
+ const vitePlugins = out.match(/(vite\s*:\s*\{[\s\S]*?plugins\s*:\s*\[)([\s\S]*?)(\])/m);
1760
+ if (vitePlugins) {
1761
+ const current = vitePlugins[2].trim();
1762
+ const next = `${current}${current && !current.endsWith(",") ? "," : ""}${current ? " " : ""}docsAgentSkills(docsConfig)`;
1763
+ return out.replace(vitePlugins[0], `${vitePlugins[1]}${next}${vitePlugins[3]}`);
1764
+ }
1765
+ const viteBlock = out.match(/vite\s*:\s*\{/);
1766
+ if (viteBlock) return out.replace(viteBlock[0], `${viteBlock[0]}\n plugins: [docsAgentSkills(docsConfig)],`);
1767
+ const configMatch = out.match(/defineConfig\(\s*\{/);
1768
+ if (!configMatch) return null;
1769
+ return out.replace(configMatch[0], "defineConfig({\n vite: { plugins: [docsAgentSkills(docsConfig)] },");
1770
+ }
1711
1771
  function astroDocsPageTemplate(cfg) {
1712
1772
  return `\
1713
1773
  ---
@@ -1791,7 +1851,7 @@ const docsEntry = config.entry ?? "docs";
1791
1851
  export const onRequest: MiddlewareHandler = async (context, next) => {
1792
1852
  const method = context.request.method.toUpperCase();
1793
1853
 
1794
- if (isDocsMcpRequest(context.url)) {
1854
+ if (isDocsMcpRequest(context.url, config.mcp)) {
1795
1855
  if (method === "OPTIONS") return MCP.OPTIONS({ request: context.request });
1796
1856
  if (method === "POST") return MCP.POST({ request: context.request });
1797
1857
  if (method === "DELETE") return MCP.DELETE({ request: context.request });
@@ -1845,7 +1905,7 @@ const docsEntry = docsConfig.entry ?? "docs";
1845
1905
  const docsPublicMiddleware: MiddlewareHandler = async (context, next) => {
1846
1906
  const method = context.request.method.toUpperCase();
1847
1907
 
1848
- if (isDocsMcpRequest(context.url)) {
1908
+ if (isDocsMcpRequest(context.url, docsConfig.mcp)) {
1849
1909
  if (method === "OPTIONS") return docsMCP.OPTIONS({ request: context.request });
1850
1910
  if (method === "POST") return docsMCP.POST({ request: context.request });
1851
1911
  if (method === "DELETE") return docsMCP.DELETE({ request: context.request });
@@ -2117,17 +2177,25 @@ export default defineDocs({
2117
2177
  function nuxtServerApiDocsRouteTemplate(cfg) {
2118
2178
  return `\
2119
2179
  import { defineDocsHandler } from "@farming-labs/nuxt/server";
2180
+ import { bundledAgentSkills } from "@farming-labs/docs/agent-skills-bundle";
2120
2181
  import config from "${cfg.useAlias ? "~/docs.config" : "../../docs.config"}";
2121
2182
 
2122
- export default defineDocsHandler(config, useStorage);
2183
+ export default defineDocsHandler(
2184
+ { ...config, _preloadedAgentSkills: bundledAgentSkills },
2185
+ useStorage,
2186
+ );
2123
2187
  `;
2124
2188
  }
2125
2189
  function nuxtServerDocsPublicMiddlewareTemplate(cfg) {
2126
2190
  return `\
2127
2191
  import { defineDocsPublicHandler } from "@farming-labs/nuxt/server";
2192
+ import { bundledAgentSkills } from "@farming-labs/docs/agent-skills-bundle";
2128
2193
  import config from "${cfg.useAlias ? "~/docs.config" : "../../docs.config"}";
2129
2194
 
2130
- export default defineDocsPublicHandler(config, useStorage);
2195
+ export default defineDocsPublicHandler(
2196
+ { ...config, _preloadedAgentSkills: bundledAgentSkills },
2197
+ useStorage,
2198
+ );
2131
2199
  `;
2132
2200
  }
2133
2201
  function nuxtServerApiReferenceRouteTemplate(filePath, useAlias) {
@@ -2172,6 +2240,9 @@ if (error.value) {
2172
2240
  }
2173
2241
  function nuxtConfigTemplate(cfg) {
2174
2242
  return `\
2243
+ import { docsAgentSkills } from "@farming-labs/docs/vite";
2244
+ import docsConfig from "./docs.config";
2245
+
2175
2246
  export default defineNuxtConfig({
2176
2247
  compatibilityDate: "2024-11-01",
2177
2248
 
@@ -2186,10 +2257,31 @@ export default defineNuxtConfig({
2186
2257
  nitro: {
2187
2258
  moduleSideEffects: ["@farming-labs/nuxt/server"],
2188
2259
  serverAssets: [{ baseName: "${cfg.entry}", dir: "${cfg.entry}" }],
2260
+ rollupConfig: { plugins: [docsAgentSkills(docsConfig)] },
2189
2261
  },
2190
2262
  });
2191
2263
  `;
2192
2264
  }
2265
+ /** Add the Agent Skills snapshot plugin to Nitro's server Rollup build. */
2266
+ function injectNuxtAgentSkillsPlugin(content) {
2267
+ if (!content) return null;
2268
+ let out = addImportLine(content, "import { docsAgentSkills } from \"@farming-labs/docs/vite\";");
2269
+ out = addImportLine(out, "import docsConfig from \"./docs.config\";");
2270
+ if (out.includes("docsAgentSkills(docsConfig)")) return out === content ? null : out;
2271
+ const rollupPlugins = out.match(/(rollupConfig\s*:\s*\{[\s\S]*?plugins\s*:\s*\[)([\s\S]*?)(\])/m);
2272
+ if (rollupPlugins) {
2273
+ const current = rollupPlugins[2].trim();
2274
+ const next = `${current}${current && !current.endsWith(",") ? "," : ""}${current ? " " : ""}docsAgentSkills(docsConfig)`;
2275
+ return out.replace(rollupPlugins[0], `${rollupPlugins[1]}${next}${rollupPlugins[3]}`);
2276
+ }
2277
+ const rollupBlock = out.match(/rollupConfig\s*:\s*\{/);
2278
+ if (rollupBlock) return out.replace(rollupBlock[0], `${rollupBlock[0]}\n plugins: [docsAgentSkills(docsConfig)],`);
2279
+ const nitroBlock = out.match(/nitro\s*:\s*\{/);
2280
+ if (nitroBlock) return out.replace(nitroBlock[0], `${nitroBlock[0]}\n rollupConfig: { plugins: [docsAgentSkills(docsConfig)] },`);
2281
+ const configMatch = out.match(/defineNuxtConfig\(\s*\{/);
2282
+ if (!configMatch) return null;
2283
+ return out.replace(configMatch[0], "defineNuxtConfig({\n nitro: { rollupConfig: { plugins: [docsAgentSkills(docsConfig)] } },");
2284
+ }
2193
2285
  function nuxtWelcomePageTemplate(cfg) {
2194
2286
  return `\
2195
2287
  ---
@@ -2370,4 +2462,4 @@ function injectNuxtCssImport(existingContent, theme, customThemeName, globalCssR
2370
2462
  }
2371
2463
 
2372
2464
  //#endregion
2373
- export { svelteDocsPublicHookTemplate as $, nextConfigMergedTemplate as A, nuxtServerApiDocsRouteTemplate as B, injectRootProviderIntoLayout as C, injectTanstackVitePlugins as D, injectTanstackRootProviderIntoRoute as E, nuxtDocsConfigTemplate as F, quickstartPageTemplate as G, nuxtServerDocsPublicMiddlewareTemplate as H, nuxtDocsPageTemplate as I, svelteDocsApiRouteTemplate as J, rootLayoutTemplate as K, nuxtGlobalCssTemplate as L, nextLocaleDocPageTemplate as M, nextLocalizedPageTemplate as N, installationPageTemplate as O, nuxtConfigTemplate as P, svelteDocsPageTemplate as Q, nuxtInstallationPageTemplate as R, injectNuxtCssImport as S, injectSvelteDocsPublicHook as T, nuxtWelcomePageTemplate as U, nuxtServerApiReferenceRouteTemplate as V, postcssConfigTemplate as W, svelteDocsLayoutServerTemplate as X, svelteDocsConfigTemplate as Y, svelteDocsLayoutTemplate as Z, getAstroAdapterPkg as _, tanstackViteConfigTemplate as _t, astroDocsIndexTemplate as a, svelteWelcomePageTemplate as at, injectAstroDocsMiddleware as b, welcomePageTemplate as bt, astroDocsServerTemplate as c, tanstackDocsCatchAllRouteTemplate as ct, astroQuickstartPageTemplate as d, tanstackDocsIndexRouteTemplate as dt, svelteDocsServerTemplate as et, astroWelcomePageTemplate as f, tanstackDocsPublicRouteTemplate as ft, docsLayoutTemplate as g, tanstackRootRouteTemplate as gt, docsConfigTemplate as h, tanstackQuickstartPageTemplate as ht, astroDocsConfigTemplate as i, svelteRootLayoutTemplate as it, nextConfigTemplate as j, nextApiReferencePageTemplate as k, astroGlobalCssTemplate as l, tanstackDocsConfigTemplate as lt, customThemeTsTemplate as m, tanstackInstallationPageTemplate as mt, astroApiRouteTemplate as n, svelteInstallationPageTemplate as nt, astroDocsMiddlewareTemplate as o, tanstackApiDocsRouteTemplate as ot, customThemeCssTemplate as p, tanstackDocsServerTemplate as pt, svelteApiReferenceRouteTemplate as q, astroConfigTemplate as r, svelteQuickstartPageTemplate as rt, astroDocsPageTemplate as s, tanstackApiReferenceRouteTemplate as st, astroApiReferenceRouteTemplate as t, svelteGlobalCssTemplate as tt, astroInstallationPageTemplate as u, tanstackDocsFunctionsTemplate as ut, globalCssTemplate as v, tanstackWelcomePageTemplate as vt, injectSvelteCssImport as w, injectCssImport as x, injectAstroCssImport as y, tsconfigTemplate as yt, nuxtQuickstartPageTemplate as z };
2465
+ export { svelteDocsLayoutServerTemplate as $, injectTanstackVitePlugins as A, nuxtGlobalCssTemplate as B, injectDocsAgentSkillsVitePlugin as C, tsconfigTemplate as Ct, injectSvelteCssImport as D, injectRootProviderIntoLayout as E, nextLocaleDocPageTemplate as F, nuxtServerDocsPublicMiddlewareTemplate as G, nuxtQuickstartPageTemplate as H, nextLocalizedPageTemplate as I, quickstartPageTemplate as J, nuxtWelcomePageTemplate as K, nuxtConfigTemplate as L, nextApiReferencePageTemplate as M, nextConfigMergedTemplate as N, injectSvelteDocsPublicHook as O, nextConfigTemplate as P, svelteDocsConfigTemplate as Q, nuxtDocsConfigTemplate as R, injectCssImport as S, tanstackWelcomePageTemplate as St, injectNuxtCssImport as T, nuxtServerApiDocsRouteTemplate as U, nuxtInstallationPageTemplate as V, nuxtServerApiReferenceRouteTemplate as W, svelteApiReferenceRouteTemplate as X, rootLayoutTemplate as Y, svelteDocsApiRouteTemplate as Z, getAstroAdapterPkg as _, tanstackDocsServerTemplate as _t, astroDocsIndexTemplate as a, svelteInstallationPageTemplate as at, injectAstroCssImport as b, tanstackRootRouteTemplate as bt, astroDocsServerTemplate as c, svelteViteConfigTemplate as ct, astroQuickstartPageTemplate as d, tanstackApiReferenceRouteTemplate as dt, svelteDocsLayoutTemplate as et, astroWelcomePageTemplate as f, tanstackDocsCatchAllRouteTemplate as ft, docsLayoutTemplate as g, tanstackDocsPublicRouteTemplate as gt, docsConfigTemplate as h, tanstackDocsIndexRouteTemplate as ht, astroDocsConfigTemplate as i, svelteGlobalCssTemplate as it, installationPageTemplate as j, injectTanstackRootProviderIntoRoute as k, astroGlobalCssTemplate as l, svelteWelcomePageTemplate as lt, customThemeTsTemplate as m, tanstackDocsFunctionsTemplate as mt, astroApiRouteTemplate as n, svelteDocsPublicHookTemplate as nt, astroDocsMiddlewareTemplate as o, svelteQuickstartPageTemplate as ot, customThemeCssTemplate as p, tanstackDocsConfigTemplate as pt, postcssConfigTemplate as q, astroConfigTemplate as r, svelteDocsServerTemplate as rt, astroDocsPageTemplate as s, svelteRootLayoutTemplate as st, astroApiReferenceRouteTemplate as t, svelteDocsPageTemplate as tt, astroInstallationPageTemplate as u, tanstackApiDocsRouteTemplate as ut, globalCssTemplate as v, tanstackInstallationPageTemplate as vt, injectNuxtAgentSkillsPlugin as w, welcomePageTemplate as wt, injectAstroDocsMiddleware as x, tanstackViteConfigTemplate as xt, injectAstroAgentSkillsPlugin as y, tanstackQuickstartPageTemplate as yt, nuxtDocsPageTemplate as z };
@@ -1227,6 +1227,8 @@ interface DocsMcpAuthenticateContext {
1227
1227
  request: Request;
1228
1228
  /** Normalized pathname of the MCP endpoint being requested. */
1229
1229
  pathname: string;
1230
+ /** Canonical OAuth resource identifier for exact token audience validation. */
1231
+ resource: string;
1230
1232
  }
1231
1233
  type DocsMcpAllowedOrigins = "same-origin" | readonly string[] | ((context: DocsMcpOriginContext) => boolean | Promise<boolean>);
1232
1234
  type DocsMcpAuthenticateResult = DocsMcpAuthPrincipal | null | Response;
@@ -1242,6 +1244,22 @@ interface DocsMcpCorsConfig {
1242
1244
  /** Browser preflight cache lifetime in seconds. Defaults to 600. */
1243
1245
  maxAgeSeconds?: number;
1244
1246
  }
1247
+ /** RFC 9728 discovery and endpoint-wide OAuth scope requirements for protected HTTP MCP. */
1248
+ interface DocsMcpProtectedResourceConfig {
1249
+ /**
1250
+ * OAuth authorization server issuer identifiers advertised to MCP clients.
1251
+ * Requires at least one HTTPS URL without query or fragment; loopback HTTP is accepted for development.
1252
+ */
1253
+ authorizationServers: readonly string[];
1254
+ /** OAuth scopes advertised through RFC 9728 `scopes_supported` metadata. */
1255
+ scopesSupported?: readonly string[];
1256
+ /** Scopes every authenticated HTTP MCP principal must have. */
1257
+ requiredScopes?: readonly string[];
1258
+ /** Human-readable protected-resource name. Defaults to the resolved MCP server name. */
1259
+ resourceName?: string;
1260
+ /** Absolute HTTP(S) URL of human-readable authentication guidance for this MCP resource. */
1261
+ resourceDocumentation?: string;
1262
+ }
1245
1263
  /** Security controls for the Streamable HTTP MCP transport. */
1246
1264
  interface DocsMcpSecurityConfig {
1247
1265
  /**
@@ -1254,6 +1272,11 @@ interface DocsMcpSecurityConfig {
1254
1272
  * returning `null` rejects the request with 401 and returning a Response passes it through.
1255
1273
  */
1256
1274
  authenticate?: DocsMcpAuthenticate;
1275
+ /**
1276
+ * Opt-in OAuth protected-resource discovery. Requires `authenticate` to protect HTTP MCP.
1277
+ * When active, adapters publish RFC 9728 metadata and framework-generated Bearer challenges.
1278
+ */
1279
+ protectedResource?: DocsMcpProtectedResourceConfig;
1257
1280
  /** Maximum POST body size in bytes. Defaults to 1 MiB. */
1258
1281
  maxBodyBytes?: number;
1259
1282
  /**
@@ -2506,6 +2529,36 @@ interface DocsAgentEvaluationsConfig {
2506
2529
  /** Golden tasks evaluated by `docs doctor` and `docs review`. */
2507
2530
  tasks?: DocsAgentGoldenTask[];
2508
2531
  }
2532
+ /**
2533
+ * Project-local Agent Skills published by the runtime, static Agent Bundle, and MCP server.
2534
+ *
2535
+ * Each path may point at a `SKILL.md`, a skill directory containing `SKILL.md`, or a
2536
+ * collection directory whose descendants contain `SKILL.md` files. Paths are resolved
2537
+ * inside the current project/workspace boundary. Only `SKILL.md` and files below the
2538
+ * standard `references/`, `scripts/`, and `assets/` directories are published.
2539
+ */
2540
+ interface DocsAgentSkillsConfig {
2541
+ /** Project-relative skill file, skill directory, or collection directory paths. */
2542
+ paths: string | readonly string[];
2543
+ }
2544
+ /** Concise array shorthand for `agent.skills.paths`. */
2545
+ type DocsAgentSkillsInput = string | readonly string[] | DocsAgentSkillsConfig;
2546
+ /** Explicit A2A service metadata. Configure this only when the URL implements A2A. */
2547
+ interface DocsAgentA2AConfig {
2548
+ interfaceUrl: string;
2549
+ name: string;
2550
+ description: string;
2551
+ documentationUrl: string;
2552
+ provider: {
2553
+ organization: string;
2554
+ url: string;
2555
+ };
2556
+ version?: string;
2557
+ /** A2A protocol version exposed by the interface. @default "0.3" */
2558
+ protocolVersion?: string;
2559
+ /** Transport binding exposed by the interface. @default "HTTP+JSON" */
2560
+ protocolBinding?: string;
2561
+ }
2509
2562
  interface DocsAgentConfig {
2510
2563
  /**
2511
2564
  * Defaults for `docs agent compact`.
@@ -2516,6 +2569,10 @@ interface DocsAgentConfig {
2516
2569
  * External providers and runtime execution require explicit opt-in.
2517
2570
  */
2518
2571
  evaluations?: boolean | DocsAgentEvaluationsConfig;
2572
+ /** Publish reusable Agent Skills through standards discovery, static exports, and MCP. */
2573
+ skills?: DocsAgentSkillsInput;
2574
+ /** Opt in to an A2A Agent Card for a separately implemented A2A service. */
2575
+ a2a?: DocsAgentA2AConfig;
2519
2576
  }
2520
2577
  type DocsReviewSeverity = "off" | "suggestion" | "warn" | "error";
2521
2578
  type DocsReviewCiMode = "off" | "warn" | "block";
@@ -3245,4 +3302,4 @@ interface DocsConfig {
3245
3302
  og?: OGConfig;
3246
3303
  }
3247
3304
  //#endregion
3248
- export { DocsCodeBlocksConfig as $, DocsTelemetryFramework as $t, DocsAgentGoldenTaskExpectation as A, ResolvedDocsRelatedLink as An, DocsReviewRulesConfig as At, DocsAnalyticsSource as B, TypesenseDocsSearchConfig as Bn, DocsSearchDocument as Bt, DocsAgentEvaluationsConfig as C, PageAgentVerification as Cn, DocsObservabilityConfig as Ct, DocsAgentGoldenExampleVerification as D, PageTwitter as Dn, DocsReviewCiConfig as Dt, DocsAgentGoldenAnswerExpectation as E, PageSidebarFrontmatter as En, DocsRelatedItem as Et, DocsAnalyticsConfig as F, SidebarNode as Fn, DocsSearchAdapter as Ft, DocsAskAIFeedbackMessage as G, DocsSearchSourcePage as Gt, DocsAskAIActionType as H, UIConfig as Hn, DocsSearchQuery as Ht, DocsAnalyticsEvent as I, SidebarPageNode as In, DocsSearchAdapterContext as It, DocsCloudApiKeyConfig as J, DocsTelemetryConfig as Jt, DocsAskAIFeedbackValue as K, DocsSitemapConfig as Kt, DocsAnalyticsEventInput as L, SidebarTree as Ln, DocsSearchAdapterFactory as Lt, DocsAgentTraceEventInput as M, SidebarConfig as Mn, DocsReviewSeverity as Mt, DocsAgentTraceEventType as N, SidebarFolderIndexBehavior as Nn, DocsRobotsConfig as Nt, DocsAgentGoldenExpectedExample as O, ReadingTimeConfig as On, DocsReviewCiMode as Ot, DocsAgentTraceStatus as P, SidebarFolderNode as Pn, DocsRobotsRule as Pt, DocsCloudPublishConfig as Q, DocsTelemetryFeatures as Qt, DocsAnalyticsEventType as R, SimpleDocsSearchConfig as Rn, DocsSearchChunkingConfig as Rt, DocsAgentEvaluationTaskInput as S, PageAgentFrontmatter as Sn, DocsNav as St, DocsAgentFeedbackData as T, PageOpenGraph as Tn, DocsObservabilityEventInput as Tt, DocsAskAIFeedbackConfig as U, DocsSearchResult as Ut, DocsAskAIActionData as V, TypographyConfig as Vn, DocsSearchEmbeddingsConfig as Vt, DocsAskAIFeedbackData as W, DocsSearchResultType as Wt, DocsCloudFeatureConfig as X, DocsTelemetryEventInput as Xt, DocsCloudConfig as Y, DocsTelemetryEvent as Yt, DocsCloudPreviewConfig as Z, DocsTelemetryEventType as Zt, DocsAgentEvaluationAnswerRequest as _, OrderingItem as _n, DocsMcpCorsConfig as _t, ApiReferenceRenderer as a, LlmsTxtConfig as an, DocsCodeBlocksValidationMode as at, DocsAgentEvaluationSourceReference as b, PageAgentCommand as bn, DocsMcpToolsConfig as bt, ChangelogFrontmatter as c, LlmsTxtSectionConfig as cn, DocsFeedbackData as ct, CopyMarkdownFormat as d, OpenDocsConfig as dn, DocsMcpAllowedOrigins as dt, DocsTheme as en, DocsCodeBlocksPlannerConfig as et, CustomDocsSearchConfig as f, OpenDocsProvider as fn, DocsMcpAuthPrincipal as ft, DocsAgentEvaluationAnswerProvider as g, OpenGraphImage as gn, DocsMcpConfig as gt, DocsAgentEvaluationAnswerInput as h, OpenDocsTarget as hn, DocsMcpAuthenticateResult as ht, ApiReferenceConfig as i, LastUpdatedConfig as in, DocsCodeBlocksValidateConfig as it, DocsAgentGoldenTaskFilters as j, SidebarComponentProps as jn, DocsReviewScoreConfig as jt, DocsAgentGoldenTask as k, ReadingTimeFormat as kn, DocsReviewConfig as kt, CodeBlockCopyData as l, McpDocsSearchConfig as ln, DocsFeedbackValue as lt, DocsAgentConfig as m, OpenDocsProviderId as mn, DocsMcpAuthenticateContext as mt, AgentFeedbackConfig as n, FontStyle as nn, DocsCodeBlocksRunnerConfig as nt, BreadcrumbConfig as o, LlmsTxtMaxCharsConfig as on, DocsCodeBlocksValidationPolicy as ot, DocsAgentCompactConfig as p, OpenDocsProviderConfig as pn, DocsMcpAuthenticate as pt, DocsAskAIMcpConfig as q, DocsTelemetryAgentSurface as qt, AlgoliaDocsSearchConfig as r, GithubConfig as rn, DocsCodeBlocksRunnerProvider as rt, ChangelogConfig as s, LlmsTxtMaxCharsMode as sn, DocsConfig as st, AIConfig as t, FeedbackConfig as tn, DocsCodeBlocksPlannerProvider as tt, CopyMarkdownConfig as u, OGConfig as un, DocsI18nConfig as ut, DocsAgentEvaluationAnswerResult as v, PageActionsConfig as vn, DocsMcpOriginContext as vt, DocsAgentFeedbackContext as w, PageFrontmatter as wn, DocsObservabilityEvent as wt, DocsAgentEvaluationSurface as x, PageAgentFailureMode as xn, DocsMetadata as xt, DocsAgentEvaluationAnswerRunner as y, PageAgentAppliesTo as yn, DocsMcpSecurityConfig as yt, DocsAnalyticsInput as z, ThemeToggleConfig as zn, DocsSearchConfig as zt };
3305
+ export { DocsCloudFeatureConfig as $, DocsTelemetryEvent as $t, DocsAgentGoldenTask as A, PageSidebarFrontmatter as An, DocsRelatedItem as At, DocsAnalyticsEventInput as B, SidebarPageNode as Bn, DocsSearchAdapterContext as Bt, DocsAgentEvaluationTaskInput as C, PageAgentAppliesTo as Cn, DocsMcpSecurityConfig as Ct, DocsAgentGoldenAnswerExpectation as D, PageAgentVerification as Dn, DocsObservabilityConfig as Dt, DocsAgentFeedbackData as E, PageAgentFrontmatter as En, DocsNav as Et, DocsAgentTraceEventInput as F, SidebarComponentProps as Fn, DocsReviewScoreConfig as Ft, DocsAskAIActionType as G, TypographyConfig as Gn, DocsSearchEmbeddingsConfig as Gt, DocsAnalyticsInput as H, SimpleDocsSearchConfig as Hn, DocsSearchChunkingConfig as Ht, DocsAgentTraceEventType as I, SidebarConfig as In, DocsReviewSeverity as It, DocsAskAIFeedbackMessage as J, DocsSearchResultType as Jt, DocsAskAIFeedbackConfig as K, UIConfig as Kn, DocsSearchQuery as Kt, DocsAgentTraceStatus as L, SidebarFolderIndexBehavior as Ln, DocsRobotsConfig as Lt, DocsAgentGoldenTaskFilters as M, ReadingTimeConfig as Mn, DocsReviewCiMode as Mt, DocsAgentSkillsConfig as N, ReadingTimeFormat as Nn, DocsReviewConfig as Nt, DocsAgentGoldenExampleVerification as O, PageFrontmatter as On, DocsObservabilityEvent as Ot, DocsAgentSkillsInput as P, ResolvedDocsRelatedLink as Pn, DocsReviewRulesConfig as Pt, DocsCloudConfig as Q, DocsTelemetryConfig as Qt, DocsAnalyticsConfig as R, SidebarFolderNode as Rn, DocsRobotsRule as Rt, DocsAgentEvaluationSurface as S, PageActionsConfig as Sn, DocsMcpProtectedResourceConfig as St, DocsAgentFeedbackContext as T, PageAgentFailureMode as Tn, DocsMetadata as Tt, DocsAnalyticsSource as U, ThemeToggleConfig as Un, DocsSearchConfig as Ut, DocsAnalyticsEventType as V, SidebarTree as Vn, DocsSearchAdapterFactory as Vt, DocsAskAIActionData as W, TypesenseDocsSearchConfig as Wn, DocsSearchDocument as Wt, DocsAskAIMcpConfig as X, DocsSitemapConfig as Xt, DocsAskAIFeedbackValue as Y, DocsSearchSourcePage as Yt, DocsCloudApiKeyConfig as Z, DocsTelemetryAgentSurface as Zt, DocsAgentEvaluationAnswerProvider as _, OpenDocsProviderConfig as _n, DocsMcpAuthenticateContext as _t, ApiReferenceRenderer as a, FeedbackConfig as an, DocsCodeBlocksRunnerConfig as at, DocsAgentEvaluationAnswerRunner as b, OpenGraphImage as bn, DocsMcpCorsConfig as bt, ChangelogFrontmatter as c, LastUpdatedConfig as cn, DocsCodeBlocksValidationMode as ct, CopyMarkdownFormat as d, LlmsTxtMaxCharsMode as dn, DocsFeedbackData as dt, DocsTelemetryEventInput as en, DocsCloudPreviewConfig as et, CustomDocsSearchConfig as f, LlmsTxtSectionConfig as fn, DocsFeedbackValue as ft, DocsAgentEvaluationAnswerInput as g, OpenDocsProvider as gn, DocsMcpAuthenticate as gt, DocsAgentConfig as h, OpenDocsConfig as hn, DocsMcpAuthPrincipal as ht, ApiReferenceConfig as i, DocsTheme as in, DocsCodeBlocksPlannerProvider as it, DocsAgentGoldenTaskExpectation as j, PageTwitter as jn, DocsReviewCiConfig as jt, DocsAgentGoldenExpectedExample as k, PageOpenGraph as kn, DocsObservabilityEventInput as kt, CodeBlockCopyData as l, LlmsTxtConfig as ln, DocsCodeBlocksValidationPolicy as lt, DocsAgentCompactConfig as m, OGConfig as mn, DocsMcpAllowedOrigins as mt, AgentFeedbackConfig as n, DocsTelemetryFeatures as nn, DocsCodeBlocksConfig as nt, BreadcrumbConfig as o, FontStyle as on, DocsCodeBlocksRunnerProvider as ot, DocsAgentA2AConfig as p, McpDocsSearchConfig as pn, DocsI18nConfig as pt, DocsAskAIFeedbackData as q, DocsSearchResult as qt, AlgoliaDocsSearchConfig as r, DocsTelemetryFramework as rn, DocsCodeBlocksPlannerConfig as rt, ChangelogConfig as s, GithubConfig as sn, DocsCodeBlocksValidateConfig as st, AIConfig as t, DocsTelemetryEventType as tn, DocsCloudPublishConfig as tt, CopyMarkdownConfig as u, LlmsTxtMaxCharsConfig as un, DocsConfig as ut, DocsAgentEvaluationAnswerRequest as v, OpenDocsProviderId as vn, DocsMcpAuthenticateResult as vt, DocsAgentEvaluationsConfig as w, PageAgentCommand as wn, DocsMcpToolsConfig as wt, DocsAgentEvaluationSourceReference as x, OrderingItem as xn, DocsMcpOriginContext as xt, DocsAgentEvaluationAnswerResult as y, OpenDocsTarget as yn, DocsMcpConfig as yt, DocsAnalyticsEvent as z, SidebarNode as zn, DocsSearchAdapter as zt };
@@ -1,5 +1,5 @@
1
- import { c as fileExists, o as exec } from "./utils-6UCLxv4B.mjs";
2
- import { a as getPackagesForFramework, c as resolveDocsPackageManager, i as frameworkFromPreset, l as validateUpgradeVersion, n as PRESETS, o as presetFromFramework, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework, t as PACKAGES_BY_FRAMEWORK } from "./package-version-qik_4J6C.mjs";
1
+ import { c as fileExists, o as exec } from "./utils-DpiIioYb.mjs";
2
+ import { a as getPackagesForFramework, c as resolveDocsPackageManager, i as frameworkFromPreset, l as validateUpgradeVersion, n as PRESETS, o as presetFromFramework, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework, t as PACKAGES_BY_FRAMEWORK } from "./package-version-n5AFur8a.mjs";
3
3
  import path from "node:path";
4
4
  import pc from "picocolors";
5
5
  import * as p from "@clack/prompts";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.2.60",
3
+ "version": "0.2.61",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",
@@ -30,6 +30,16 @@
30
30
  "import": "./dist/server.mjs",
31
31
  "default": "./dist/server.mjs"
32
32
  },
33
+ "./agent-skills-bundle": {
34
+ "types": "./dist/agent-skills-bundle.d.mts",
35
+ "import": "./dist/agent-skills-bundle.mjs",
36
+ "default": "./dist/agent-skills-bundle.mjs"
37
+ },
38
+ "./vite": {
39
+ "types": "./dist/agent-skills-vite.d.mts",
40
+ "import": "./dist/agent-skills-vite.mjs",
41
+ "default": "./dist/agent-skills-vite.mjs"
42
+ },
33
43
  "./cloud/server": {
34
44
  "types": "./dist/docs-cloud-server.d.mts",
35
45
  "import": "./dist/docs-cloud-server.mjs",
File without changes
File without changes