@farming-labs/docs 0.2.80 → 0.2.82

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 (40) hide show
  1. package/dist/{agent-aWl_O6xn.mjs → agent-Biyd8A98.mjs} +2 -2
  2. package/dist/{agent-Cj50nyeV.mjs → agent-Dze2Cy5B.mjs} +1 -1
  3. package/dist/{agent-DGALg9hQ.d.mts → agent-WS4GXGh6.d.mts} +88 -3
  4. package/dist/{agent-evals-DvQQtN62.mjs → agent-evals-Burrzyam.mjs} +19 -4
  5. package/dist/{agent-export-BISSb83U.mjs → agent-export-whKAZQUI.mjs} +8 -8
  6. package/dist/agent-skills-bundle.d.mts +1 -1
  7. package/dist/{agent-skills-server-B2EXn2QD.mjs → agent-skills-server-D5qYU19g.mjs} +16 -7
  8. package/dist/{agent-skills-server-Daq-FOay.d.mts → agent-skills-server-q4B9kRGg.d.mts} +2 -2
  9. package/dist/agent-skills-vite.d.mts +3 -3
  10. package/dist/agent-skills-vite.mjs +1 -1
  11. package/dist/{agents-DLNUgcgU.mjs → agents-B_980VCs.mjs} +6 -6
  12. package/dist/cli/index.mjs +16 -16
  13. package/dist/client/react.d.mts +1 -1
  14. package/dist/{cloud-ask-ai-o41WfOTk.d.mts → cloud-ask-ai-BQAeHkpZ.d.mts} +1 -1
  15. package/dist/{codeblocks-CFuurVIH.mjs → codeblocks-CPA6Ae5r.mjs} +1 -1
  16. package/dist/{agent-provenance-C_jgqNTW.mjs → content-change-hydration-DpQ0KdAD.mjs} +218 -2
  17. package/dist/docs-cloud-server.d.mts +2 -2
  18. package/dist/docs-cloud-server.mjs +1 -1
  19. package/dist/{doctor-BxP-UHaE.mjs → doctor-WjuyRWYT.mjs} +32 -15
  20. package/dist/{golden-evaluations-Bk8MBi3Z.mjs → golden-evaluations-B2GHnoFa.mjs} +307 -3
  21. package/dist/index.d.mts +5 -5
  22. package/dist/index.mjs +5 -5
  23. package/dist/{mcp-BU63wzaM.mjs → mcp-bhIsgqxy.mjs} +6 -6
  24. package/dist/mcp.d.mts +6 -5
  25. package/dist/mcp.mjs +199 -25
  26. package/dist/{prompt-references-CMMoF6AY.mjs → prompt-references-embiJdYt.mjs} +2 -2
  27. package/dist/{retrieval-digest-DIbiu0TW.d.mts → retrieval-digest-DRRHA1B3.d.mts} +2 -2
  28. package/dist/{review-D14mUw5D.mjs → review-2e4TXoGS.mjs} +71 -10
  29. package/dist/{robots-DmczzidR.mjs → robots-BIySk2gE.mjs} +2 -2
  30. package/dist/{robots-BukukxNm.mjs → robots-D96X6eVX.mjs} +1 -1
  31. package/dist/{search-DP96dV3e.mjs → search-DfB3LQ4s.mjs} +6 -6
  32. package/dist/server.d.mts +6 -6
  33. package/dist/server.mjs +8 -8
  34. package/dist/{sitemap-DuosRvmn.mjs → sitemap-AcwP8jIo.mjs} +6 -6
  35. package/dist/{sitemap-server-DzlV1NOB.mjs → sitemap-server-BefXEox6.mjs} +1 -1
  36. package/dist/{standards-discovery-C2cUIQzW.d.mts → standards-discovery-DPUEcUmb.d.mts} +1 -1
  37. package/dist/{types-o-ULHPK6.d.mts → types-lGEHcx_6.d.mts} +44 -1
  38. package/package.json +1 -1
  39. /package/dist/{cloud-ask-ai-sbpjOR2K.mjs → cloud-ask-ai-BRBK4RBG.mjs} +0 -0
  40. /package/dist/{code-blocks-DnNVNK2M.mjs → code-blocks-0wjOsqdJ.mjs} +0 -0
package/dist/mcp.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { Bn as DocsTelemetryConfig, F as DocsAgentContentChangesConfig, Fn as DocsSearchSourcePage, Gn as DocsTelemetryFramework, Ht as DocsMcpAllowedOrigins, Ut as DocsMcpAuthPrincipal, Wt as DocsMcpAuthenticate, it as DocsAnalyticsConfig, lr as OrderingItem, mr as PageAgentFrontmatter, on as DocsRetrievalSourceProvenance, qt as DocsMcpConfig, tn as DocsObservabilityConfig, xn as DocsSearchConfig } from "./types-o-ULHPK6.mjs";
2
- import { z as DocsPublishedAgentSkill } from "./standards-discovery-C2cUIQzW.mjs";
3
- import { it as DocsMarkdownSectionIndex, wn as DocsContentChangeFeed } from "./agent-DGALg9hQ.mjs";
1
+ import { Cn as DocsSearchConfig, F as DocsAgentContentChangesConfig, Gt as DocsMcpAuthPrincipal, Hn as DocsTelemetryConfig, Kt as DocsMcpAuthenticate, Ln as DocsSearchSourcePage, Wt as DocsMcpAllowedOrigins, Yt as DocsMcpConfig, cn as DocsRetrievalSourceProvenance, dr as OrderingItem, gr as PageAgentFrontmatter, ot as DocsAnalyticsConfig, qn as DocsTelemetryFramework, rn as DocsObservabilityConfig } from "./types-lGEHcx_6.mjs";
2
+ import { z as DocsPublishedAgentSkill } from "./standards-discovery-DPUEcUmb.mjs";
3
+ import { An as MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, Cn as DocsContentChangeHydrationBudget, Dn as DocsContentChangeHydrationTombstone, En as DocsContentChangeHydrationSection, Fn as DocsContentChangeFeed, On as HydrateDocsContentChangesOptions, Sn as DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, Tn as DocsContentChangeHydrationResponse, it as DocsMarkdownSectionIndex, jn as hydrateDocsContentChanges, kn as MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, wn as DocsContentChangeHydrationContent, xn as DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET } from "./agent-WS4GXGh6.mjs";
4
4
  import { McpServer } from "@modelcontextprotocol/server";
5
5
 
6
6
  //#region src/mcp.d.ts
@@ -273,7 +273,8 @@ interface DocsMcpResolvedConfig {
273
273
  readTask?: boolean;
274
274
  searchDocs: boolean; /** Optional so manually constructed resolved configs from older releases remain assignable. */
275
275
  searchFacets?: boolean; /** Optional so manually constructed resolved configs from older releases remain assignable. */
276
- listContentChanges?: boolean;
276
+ listContentChanges?: boolean; /** Optional so manually constructed resolved configs from older releases remain assignable. */
277
+ hydrateContentChanges?: boolean;
277
278
  getNavigation: boolean;
278
279
  getCodeExamples: boolean;
279
280
  getConfigSchema: boolean;
@@ -349,4 +350,4 @@ declare function getDocsConfigSchema(filters?: {
349
350
  }): DocsMcpConfigSchema;
350
351
  declare function buildDocsMcpContext(options: DocsMcpContextOptions): Promise<DocsMcpContextResult>;
351
352
  //#endregion
352
- export { CreateDocsMcpServerOptions, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, DocsMcpAgentContractSummary, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextOptions, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpFolderNode, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpPageNode, DocsMcpPageSectionIndex, DocsMcpPageSectionList, DocsMcpPaginatedDocsList, DocsMcpPagination, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedProtectedResourceConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio };
353
+ export { CreateDocsMcpServerOptions, DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, type DocsContentChangeHydrationBudget, type DocsContentChangeHydrationContent, type DocsContentChangeHydrationResponse, type DocsContentChangeHydrationSection, type DocsContentChangeHydrationTombstone, DocsMcpAgentContractSummary, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextOptions, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpFolderNode, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpPageNode, DocsMcpPageSectionIndex, DocsMcpPageSectionList, DocsMcpPaginatedDocsList, DocsMcpPagination, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedProtectedResourceConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, type HydrateDocsContentChangesOptions, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio };
package/dist/mcp.mjs CHANGED
@@ -1,8 +1,8 @@
1
1
  import { a as emitDocsAnalyticsEvent, i as emitDocsAgentTraceEvent, n as createDocsAgentTraceContext, r as createDocsAgentTraceId } from "./analytics-Bx44lg6d.mjs";
2
- import { $n as normalizeDocsMcpEndpointPath, An as normalizeAgentFramework, E as DOCS_MARKDOWN_SECTION_INDEX_FORMAT, En as resolveDocsAudienceMdxContent, Fn as paginateDocsItems, Jn as isDocsMcpOAuthScopeToken, Jt as resolveDocsContentChangesConfig, Kt as isDocsContentChangeGeneration, Ln as isDocsRetrievalCanonicalUrl, Mn as normalizeAgentScopeValues, On as agentVersionConstraintMatches, P as buildDocsMarkdownSectionIndex, Pn as DocsPaginationCursorError, Qn as normalizeDocsMcpAuthorizationServerUrls, Rn as normalizeDocsRelated, Ut as DocsContentChangesRequestError, Wt as createDocsContentChangeFeed, Yn as isDocsMcpProtectedResourceMetadataPath, Zn as isDocsMcpResourcePath, dn as performDocsSearch, er as resolveDocsMcpProtectedResourceMetadataLocation, fn as performDocsSearchWithMetadata, jn as normalizeAgentLocale, kn as agentVersionConstraintsOverlap, tn as buildDocsSearchFacets, tr as resolveDocsMcpResourceLocation, un as normalizeDocsSearchFilters, wt as toDocsMarkdownUrl, yn as resolveLocalDocsMcpSearchConfig, zn as renderDocsRelatedMarkdownLines } from "./agent-Cj50nyeV.mjs";
2
+ import { $n as isDocsMcpResourcePath, An as normalizeAgentFramework, Bn as normalizeDocsRelated, E as DOCS_MARKDOWN_SECTION_INDEX_FORMAT, En as resolveDocsAudienceMdxContent, In as paginateDocsItems, Jt as resolveDocsContentChangesConfig, Kt as isDocsContentChangeGeneration, Mn as normalizeAgentScopeValues, On as agentVersionConstraintMatches, P as buildDocsMarkdownSectionIndex, Pn as DocsPaginationCursorError, Ut as DocsContentChangesRequestError, Vn as renderDocsRelatedMarkdownLines, Wt as createDocsContentChangeFeed, Xn as isDocsMcpOAuthScopeToken, Zn as isDocsMcpProtectedResourceMetadataPath, dn as performDocsSearch, er as normalizeDocsMcpAuthorizationServerUrls, fn as performDocsSearchWithMetadata, jn as normalizeAgentLocale, kn as agentVersionConstraintsOverlap, nr as resolveDocsMcpProtectedResourceMetadataLocation, rr as resolveDocsMcpResourceLocation, tn as buildDocsSearchFacets, tr as normalizeDocsMcpEndpointPath, un as normalizeDocsSearchFilters, wt as toDocsMarkdownUrl, yn as resolveLocalDocsMcpSearchConfig, zn as isDocsRetrievalCanonicalUrl } from "./agent-Dze2Cy5B.mjs";
3
3
  import { S as upsertPageAgentContractMarkdown, _ as hasStructuredPageAgentContract, o as findDocsMarkdownSection, s as parseDocsMarkdownSections, v as normalizePageAgentFrontmatter } from "./markdown-sections-7OoA7ylx.mjs";
4
4
  import "./standards-discovery-BKlEnK_H.mjs";
5
- import { f as emitDocsTelemetryAgentSurfaceEvent, h as emitDocsTelemetryProjectEvent, l as resolvePageSidebarFolderIndexBehavior, m as emitDocsTelemetryMcpToolEvent, s as stripGeneratedAgentProvenance } from "./agent-provenance-C_jgqNTW.mjs";
5
+ import { _ as emitDocsTelemetryAgentSurfaceEvent, a as hydrateDocsContentChanges, b as emitDocsTelemetryProjectEvent, f as stripGeneratedAgentProvenance, i as MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, m as resolvePageSidebarFolderIndexBehavior, n as DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, r as MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, t as DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, y as emitDocsTelemetryMcpToolEvent } from "./content-change-hydration-DpQ0KdAD.mjs";
6
6
  import matter from "gray-matter";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
@@ -269,17 +269,68 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
269
269
  name: "skills",
270
270
  type: "string | readonly string[] | DocsAgentSkillsConfig",
271
271
  description: "Project skill files or collection directories published through discovery, static export, and MCP.",
272
- children: [{
273
- path: "agent.skills.paths",
274
- name: "paths",
275
- type: "string | readonly string[]",
276
- description: "Workspace-contained SKILL.md file, skill directory, or collection directory paths."
277
- }, {
278
- path: "agent.skills.paths[]",
279
- name: "path",
280
- type: "string",
281
- description: "One workspace-contained Agent Skill path."
282
- }]
272
+ children: [
273
+ {
274
+ path: "agent.skills.paths",
275
+ name: "paths",
276
+ type: "string | readonly string[]",
277
+ description: "Workspace-contained SKILL.md file, skill directory, or collection directory paths."
278
+ },
279
+ {
280
+ path: "agent.skills.paths[]",
281
+ name: "path",
282
+ type: "string",
283
+ description: "One workspace-contained Agent Skill path."
284
+ },
285
+ {
286
+ path: "agent.skills.progressiveDisclosure",
287
+ name: "progressiveDisclosure",
288
+ type: "DocsAgentSkillsProgressiveDisclosureConfig",
289
+ description: "Thresholds used by doctor and review to keep SKILL.md instructions compact, references shallow, and scripts documented.",
290
+ children: [
291
+ {
292
+ path: "agent.skills.progressiveDisclosure.maxSkillLines",
293
+ name: "maxSkillLines",
294
+ type: "number",
295
+ default: 500,
296
+ description: "Maximum recommended line count for the complete SKILL.md document."
297
+ },
298
+ {
299
+ path: "agent.skills.progressiveDisclosure.instructionTokenBudget",
300
+ name: "instructionTokenBudget",
301
+ type: "number",
302
+ default: 5e3,
303
+ description: "Approximate token budget for SKILL.md instructions after frontmatter."
304
+ },
305
+ {
306
+ path: "agent.skills.progressiveDisclosure.maxReferenceDepth",
307
+ name: "maxReferenceDepth",
308
+ type: "number",
309
+ default: 1,
310
+ description: "Maximum local Markdown reference hops from SKILL.md before doctor and review warn."
311
+ },
312
+ {
313
+ path: "agent.skills.progressiveDisclosure.compatibility",
314
+ name: "compatibility",
315
+ type: "\"when-needed\" | \"always\" | \"off\"",
316
+ default: "when-needed",
317
+ values: [
318
+ "when-needed",
319
+ "always",
320
+ "off"
321
+ ],
322
+ description: "Whether compatibility frontmatter is expected only for environment-dependent skills, always, or never."
323
+ },
324
+ {
325
+ path: "agent.skills.progressiveDisclosure.checkScripts",
326
+ name: "checkScripts",
327
+ type: "boolean",
328
+ default: true,
329
+ description: "Diagnose bundled scripts without dependency and validation guidance."
330
+ }
331
+ ]
332
+ }
333
+ ]
283
334
  },
284
335
  {
285
336
  path: "agent.a2a",
@@ -1193,7 +1244,8 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
1193
1244
  ["relatedCoverage", "suggestion"],
1194
1245
  ["configConfidence", "warn"],
1195
1246
  ["agentSurfaceDrift", "error"],
1196
- ["goldenTasks", "warn"]
1247
+ ["goldenTasks", "warn"],
1248
+ ["agentSkills", "warn"]
1197
1249
  ].map(([name, defaultValue]) => ({
1198
1250
  path: `review.rules.${name}`,
1199
1251
  name,
@@ -1578,6 +1630,13 @@ const DOCS_CONFIG_SCHEMA_OPTIONS_TEMPLATE = [
1578
1630
  default: true,
1579
1631
  description: "Expose list_content_changes polling and docs://changes resources when agent.contentChanges is enabled."
1580
1632
  },
1633
+ {
1634
+ path: "mcp.tools.hydrateContentChanges",
1635
+ name: "hydrateContentChanges",
1636
+ type: "boolean",
1637
+ default: true,
1638
+ description: "Expose hydrate_content_changes for budget-aware changed section bodies, deletion tombstones, digests, and continuation cursors."
1639
+ },
1581
1640
  {
1582
1641
  path: "mcp.tools.readPage",
1583
1642
  name: "readPage",
@@ -1894,6 +1953,12 @@ const listContentChangesInputSchema = z.object({
1894
1953
  since: z.string().refine(isDocsContentChangeGeneration, "Expected a SHA-256 index generation").optional(),
1895
1954
  locale: z.string().trim().min(1).max(128).optional()
1896
1955
  });
1956
+ const hydrateContentChangesInputSchema = z.object({
1957
+ since: z.string().refine(isDocsContentChangeGeneration, "Expected a SHA-256 index generation"),
1958
+ tokenBudget: z.number().int().min(MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET).max(MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET).default(DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET),
1959
+ cursor: paginationCursorInputSchema,
1960
+ locale: z.string().trim().min(1).max(128).optional()
1961
+ });
1897
1962
  const getConfigSchemaInputSchema = z.object({
1898
1963
  option: z.string().trim().min(1).optional(),
1899
1964
  query: z.string().trim().min(1).optional()
@@ -2032,6 +2097,59 @@ const contentChangesOutputSchema = z.object({
2032
2097
  })),
2033
2098
  deleted: z.array(contentChangeDocumentOutputSchema)
2034
2099
  });
2100
+ const contentChangeHydrationContentOutputSchema = contentChangeDocumentOutputSchema.extend({
2101
+ type: z.literal("content"),
2102
+ change: z.enum(["added", "changed"]),
2103
+ previousDigest: retrievalSourceDigestOutputSchema.optional(),
2104
+ previousLastModified: z.string().optional(),
2105
+ section: z.object({
2106
+ id: z.string(),
2107
+ heading: z.string(),
2108
+ level: z.number().int().positive()
2109
+ }),
2110
+ sectionDigest: retrievalSourceDigestOutputSchema,
2111
+ chunkDigest: retrievalSourceDigestOutputSchema,
2112
+ chunk: z.object({
2113
+ index: z.number().int().nonnegative(),
2114
+ count: z.number().int().positive()
2115
+ }),
2116
+ content: z.string(),
2117
+ utf8Bytes: z.number().int().nonnegative()
2118
+ });
2119
+ const contentChangeHydrationTombstoneOutputSchema = contentChangeDocumentOutputSchema.extend({
2120
+ type: z.literal("tombstone"),
2121
+ change: z.literal("deleted")
2122
+ });
2123
+ const contentChangeHydrationOutputSchema = z.object({
2124
+ format: z.literal(DOCS_CONTENT_CHANGE_HYDRATION_FORMAT),
2125
+ audience: z.literal("agent"),
2126
+ locale: z.string().optional(),
2127
+ since: retrievalSourceDigestOutputSchema,
2128
+ indexGeneration: retrievalSourceDigestOutputSchema,
2129
+ mode: z.enum([
2130
+ "snapshot",
2131
+ "delta",
2132
+ "reset"
2133
+ ]),
2134
+ resetRequired: z.boolean(),
2135
+ documentCount: z.number().int().nonnegative(),
2136
+ counts: z.object({
2137
+ added: z.number().int().nonnegative(),
2138
+ changed: z.number().int().nonnegative(),
2139
+ deleted: z.number().int().nonnegative()
2140
+ }),
2141
+ budget: z.object({
2142
+ requestedTokens: z.number().int().positive(),
2143
+ strategy: z.literal("utf8-bytes"),
2144
+ maxUtf8Bytes: z.number().int().positive(),
2145
+ usedUtf8Bytes: z.number().int().nonnegative(),
2146
+ conservativeTokenUpperBound: z.number().int().nonnegative(),
2147
+ remainingUtf8Bytes: z.number().int().nonnegative()
2148
+ }),
2149
+ ...paginationOutputShape,
2150
+ content: z.array(contentChangeHydrationContentOutputSchema),
2151
+ tombstones: z.array(contentChangeHydrationTombstoneOutputSchema)
2152
+ });
2035
2153
  const retrievalSourceOutputSchema = z.object({
2036
2154
  canonicalUrl: z.string().max(4096).refine(isDocsRetrievalCanonicalUrl, "Expected a safe HTTP(S) URL or root-relative path"),
2037
2155
  scope: retrievalSourceScopeOutputSchema,
@@ -2274,6 +2392,7 @@ function resolveDocsMcpConfig(mcp, defaults = {}) {
2274
2392
  searchDocs: true,
2275
2393
  searchFacets: true,
2276
2394
  listContentChanges: true,
2395
+ hydrateContentChanges: true,
2277
2396
  getNavigation: true,
2278
2397
  getCodeExamples: true,
2279
2398
  getConfigSchema: true,
@@ -2297,6 +2416,7 @@ function resolveDocsMcpConfig(mcp, defaults = {}) {
2297
2416
  searchDocs: config.tools?.searchDocs ?? true,
2298
2417
  searchFacets: config.tools?.searchFacets ?? true,
2299
2418
  listContentChanges: config.tools?.listContentChanges ?? true,
2419
+ hydrateContentChanges: config.tools?.hydrateContentChanges ?? true,
2300
2420
  getNavigation: config.tools?.getNavigation ?? true,
2301
2421
  getCodeExamples: config.tools?.getCodeExamples ?? true,
2302
2422
  getConfigSchema: config.tools?.getConfigSchema ?? true,
@@ -2608,6 +2728,7 @@ async function createDocsMcpServer(options) {
2608
2728
  version: resolved.version
2609
2729
  });
2610
2730
  const contentChangesEnabled = resolveDocsContentChangesConfig(options.contentChanges).enabled && resolved.tools.listContentChanges !== false;
2731
+ const contentChangeHydrationEnabled = contentChangesEnabled && resolved.tools.hydrateContentChanges !== false;
2611
2732
  const server = new McpServer({
2612
2733
  name: resolved.name,
2613
2734
  version: resolved.version
@@ -2651,25 +2772,33 @@ async function createDocsMcpServer(options) {
2651
2772
  const defaultTree = await getSourceNavigation();
2652
2773
  const defaultSkills = await getSourceSkills();
2653
2774
  const contentChangeFeed = options.contentChangeFeed ?? createDocsContentChangeFeed(options.contentChanges);
2654
- async function resolveContentChanges(since, locale) {
2775
+ async function resolveContentChangeState(since, locale) {
2655
2776
  if (!contentChangesEnabled) throw new ProtocolError(ProtocolErrorCode.MethodNotFound, "Content changes are disabled.");
2656
2777
  if (since && !isDocsContentChangeGeneration(since)) throw new ProtocolError(ProtocolErrorCode.InvalidParams, "Content-change `since` must be a SHA-256 index generation.");
2657
2778
  const resolvedLocale = resolveSourceLocale(locale);
2779
+ const pages = dedupePages(await options.source.getPages(resolvedLocale, options.requestContext));
2658
2780
  try {
2659
- return await contentChangeFeed.resolve({
2660
- pages: toSearchSourcePages(dedupePages(await options.source.getPages(resolvedLocale, options.requestContext))),
2661
- search: options.search,
2662
- audience: "agent",
2663
- locale: resolvedLocale,
2664
- baseUrl: options.source.baseUrl ?? (options.requestContext?.request ? new URL(options.requestContext.request.url).origin : void 0),
2665
- ...since ? { since } : {},
2666
- ...options.requestContext?.request ? { request: options.requestContext.request.clone() } : {}
2667
- });
2781
+ return {
2782
+ result: await contentChangeFeed.resolve({
2783
+ pages: toSearchSourcePages(pages),
2784
+ search: options.search,
2785
+ audience: "agent",
2786
+ locale: resolvedLocale,
2787
+ baseUrl: options.source.baseUrl ?? (options.requestContext?.request ? new URL(options.requestContext.request.url).origin : void 0),
2788
+ ...since ? { since } : {},
2789
+ ...options.requestContext?.request ? { request: options.requestContext.request.clone() } : {}
2790
+ }),
2791
+ pages,
2792
+ ...resolvedLocale ? { resolvedLocale } : {}
2793
+ };
2668
2794
  } catch (error) {
2669
2795
  if (error instanceof DocsContentChangesRequestError) throw new ProtocolError(ProtocolErrorCode.InvalidParams, error.message);
2670
2796
  throw error;
2671
2797
  }
2672
2798
  }
2799
+ async function resolveContentChanges(since, locale) {
2800
+ return (await resolveContentChangeState(since, locale)).result;
2801
+ }
2673
2802
  registerResource("docs-navigation", "docs://navigation", {
2674
2803
  title: "Docs Navigation",
2675
2804
  description: "Structured navigation tree for the documentation site.",
@@ -2737,6 +2866,51 @@ async function createDocsMcpServer(options) {
2737
2866
  });
2738
2867
  return createStructuredTextResult(result);
2739
2868
  });
2869
+ if (contentChangeHydrationEnabled) registerTool("hydrate_content_changes", {
2870
+ title: "Hydrate docs content changes",
2871
+ description: "Fetch only added and changed agent-facing sections after list_content_changes. Returns deletion tombstones and digest-bound continuation cursors under a conservative token budget.",
2872
+ inputSchema: hydrateContentChangesInputSchema,
2873
+ outputSchema: contentChangeHydrationOutputSchema,
2874
+ annotations: { readOnlyHint: true }
2875
+ }, async ({ since, tokenBudget, cursor, locale }) => {
2876
+ const startedAt = nowMs();
2877
+ const state = await resolveContentChangeState(since, locale);
2878
+ let result;
2879
+ try {
2880
+ result = hydrateDocsContentChanges({
2881
+ changes: state.result,
2882
+ pages: state.pages,
2883
+ since,
2884
+ tokenBudget,
2885
+ cursor,
2886
+ cursorScope: protocolScope
2887
+ });
2888
+ } catch (error) {
2889
+ if (error instanceof DocsPaginationCursorError) throw new ProtocolError(ProtocolErrorCode.InvalidParams, error.message);
2890
+ throw error;
2891
+ }
2892
+ trackMcpTool("hydrate_content_changes", {
2893
+ locale: state.resolvedLocale,
2894
+ resultCount: result.resultCount
2895
+ });
2896
+ await emitDocsAnalyticsEvent(options.analytics, {
2897
+ type: "mcp_tool",
2898
+ source: "mcp",
2899
+ locale: state.resolvedLocale,
2900
+ properties: {
2901
+ tool: "hydrate_content_changes",
2902
+ mode: result.mode,
2903
+ resetRequired: result.resetRequired,
2904
+ resultCount: result.resultCount,
2905
+ total: result.total,
2906
+ hasMore: result.hasMore,
2907
+ tokenBudget,
2908
+ usedUtf8Bytes: result.budget.usedUtf8Bytes,
2909
+ durationMs: durationMs(startedAt)
2910
+ }
2911
+ });
2912
+ return createStructuredTextResult(result);
2913
+ });
2740
2914
  }
2741
2915
  for (const page of defaultPages) {
2742
2916
  const resourceUri = toPageResourceUri(page.url);
@@ -5843,4 +6017,4 @@ function toPageResourceUri(url) {
5843
6017
  }
5844
6018
 
5845
6019
  //#endregion
5846
- export { DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio };
6020
+ export { DEFAULT_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, DEFAULT_DOCS_MCP_CONTENT_CHANGE_POLL_INTERVAL_MS, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DOCS_CONTENT_CHANGE_HYDRATION_FORMAT, DOCS_MCP_CONTENT_CHANGES_CURRENT_URI, DOCS_MCP_CONTENT_CHANGES_URI_TEMPLATE, MAX_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, MIN_DOCS_CONTENT_CHANGE_HYDRATION_TOKEN_BUDGET, buildDocsMcpContext, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, hydrateDocsContentChanges, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio };
@@ -1,7 +1,7 @@
1
- import { At as DEFAULT_SITEMAP_XML_ROUTE, Ot as DEFAULT_SITEMAP_MD_ROUTE, Un as DEFAULT_MCP_WELL_KNOWN_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-Cj50nyeV.mjs";
1
+ import { At as DEFAULT_SITEMAP_XML_ROUTE, Gn as DEFAULT_MCP_WELL_KNOWN_ROUTE, Ot as DEFAULT_SITEMAP_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-Dze2Cy5B.mjs";
2
2
  import { isDocsAgentSkillName, validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
3
3
  import { C as DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE, S as DOCS_AGENT_MANIFEST_FORMAT, T as DOCS_AGENT_MANIFEST_VERSION, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, w as DOCS_AGENT_MANIFEST_SCHEMA_URI } from "./standards-discovery-BKlEnK_H.mjs";
4
- import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-BukukxNm.mjs";
4
+ import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-D96X6eVX.mjs";
5
5
  import matter from "gray-matter";
6
6
 
7
7
  //#region src/define-docs.ts
@@ -1,5 +1,5 @@
1
- import { Rn as DocsSitemapConfig, Sr as ResolvedDocsRelatedLink, at as DocsAnalyticsEvent, ir as OpenDocsProvider, it as DocsAnalyticsConfig, nn as DocsObservabilityEvent, ot as DocsAnalyticsEventInput, rn as DocsObservabilityEventInput, sr as OpenDocsTarget, tn as DocsObservabilityConfig, tt as DocsAgentTraceEventInput } from "./types-o-ULHPK6.mjs";
2
- import { R as DocsDiscoveryApiRouteOptions } from "./standards-discovery-C2cUIQzW.mjs";
1
+ import { Bn as DocsSitemapConfig, an as DocsObservabilityEventInput, ct as DocsAnalyticsEventInput, in as DocsObservabilityEvent, lr as OpenDocsTarget, or as OpenDocsProvider, ot as DocsAnalyticsConfig, rn as DocsObservabilityConfig, rt as DocsAgentTraceEventInput, st as DocsAnalyticsEvent, wr as ResolvedDocsRelatedLink } from "./types-lGEHcx_6.mjs";
2
+ import { R as DocsDiscoveryApiRouteOptions } from "./standards-discovery-DPUEcUmb.mjs";
3
3
 
4
4
  //#region src/analytics.d.ts
5
5
  declare const DOCS_AGENT_TRACE_EVENT_TYPES: readonly ["run.start", "run.end", "run.error", "user.input", "prompt.build", "retrieval.query", "retrieval.result", "retrieval.error", "model.call", "model.response", "model.stream", "model.error", "tool.call", "tool.result", "tool.error", "retry", "timeout", "error", "agent.final"];
@@ -1,14 +1,15 @@
1
- import { A as buildDocsAgentDiscoverySpec, Gn as getDocsMcpProtectedResourceMetadataRoutes, M as buildDocsConfigMap, Sn as findDocsAudienceMdxIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, pn as resolveAskAISearchRequestConfig } from "./agent-Cj50nyeV.mjs";
1
+ import { A as buildDocsAgentDiscoverySpec, M as buildDocsConfigMap, Sn as findDocsAudienceMdxIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, pn as resolveAskAISearchRequestConfig, qn as getDocsMcpProtectedResourceMetadataRoutes } from "./agent-Dze2Cy5B.mjs";
2
2
  import { _ as hasStructuredPageAgentContract, f as PAGE_AGENT_CONTRACT_FIELDS, g as getPageAgentFrontmatterIssues, v as normalizePageAgentFrontmatter } from "./markdown-sections-7OoA7ylx.mjs";
3
3
  import { I as resolveDocsDiscoveryApiRoute, _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, h as DEFAULT_AGENT_SKILL_FORMAT, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-BKlEnK_H.mjs";
4
- import "./agent-provenance-C_jgqNTW.mjs";
4
+ import "./content-change-hydration-DpQ0KdAD.mjs";
5
5
  import { a as resolveDocsMetadataBaseUrl } from "./metadata-N252j5_a.mjs";
6
- import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-DvQQtN62.mjs";
6
+ import "./agent-skills-server-D5qYU19g.mjs";
7
+ import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-Burrzyam.mjs";
7
8
  import { createFilesystemDocsMcpSource, getDocsConfigSchema, resolveDocsMcpConfig } from "./mcp.mjs";
8
- import "./code-blocks-DnNVNK2M.mjs";
9
+ import "./code-blocks-0wjOsqdJ.mjs";
9
10
  import { _ as resolveDocsContentDir, g as resolveDocsConfigPath, h as readTopLevelStringProperty, s as loadDocsConfigModuleResultWithProjectEnv } from "./config-Wcdj-D0a.mjs";
10
11
  import { t as detectFramework } from "./utils-DpiIioYb.mjs";
11
- import { a as extractAgentBlocks, i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-Bk8MBi3Z.mjs";
12
+ import { a as createAgentUsefulnessPagesFromMcp, i as analyzeAgentUsefulness, n as analyzeConfiguredAgentSkillsProgressiveDisclosure, o as extractAgentBlocks, r as analyzeAgentSurfaceDrift, t as resolveGoldenEvaluationInput } from "./golden-evaluations-B2GHnoFa.mjs";
12
13
  import matter from "gray-matter";
13
14
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
14
15
  import path from "node:path";
@@ -133,6 +134,20 @@ async function runReview(options = {}) {
133
134
  rootDir,
134
135
  contentDir
135
136
  });
137
+ let skillDisclosure;
138
+ let skillDisclosureError;
139
+ if (config?.agent?.skills) try {
140
+ skillDisclosure = analyzeConfiguredAgentSkillsProgressiveDisclosure(config.agent.skills, { rootDir });
141
+ } catch (error) {
142
+ skillDisclosureError = error instanceof Error ? error.message : String(error);
143
+ }
144
+ const relevantSkillFiles = selectReviewSkillFiles({
145
+ rootDir,
146
+ configPath: path.relative(rootDir, configPath),
147
+ changedFiles,
148
+ report: skillDisclosure
149
+ });
150
+ const reviewedFiles = [...new Set([...relevantFiles, ...relevantSkillFiles])].sort();
136
151
  const mcpSource = createFilesystemDocsMcpSource({
137
152
  rootDir,
138
153
  entry,
@@ -152,6 +167,30 @@ async function runReview(options = {}) {
152
167
  files: relevantFiles,
153
168
  review
154
169
  });
170
+ if (skillDisclosureError) pushFinding(findings, review, {
171
+ rule: "agentSkills",
172
+ code: "agent-skills-analysis-failed",
173
+ severity: "error",
174
+ file: toPosixPath(path.relative(rootDir, configPath)),
175
+ line: 1,
176
+ message: `Configured Agent Skills could not be analyzed: ${skillDisclosureError}`
177
+ });
178
+ if (skillDisclosure) {
179
+ const relevantSkillSet = new Set(relevantSkillFiles);
180
+ for (const issue of skillDisclosure.issues) {
181
+ const file = toPosixPath(path.relative(rootDir, issue.filePath));
182
+ const skillFile = toPosixPath(path.relative(rootDir, issue.skillPath));
183
+ if (!relevantSkillSet.has(file) && !relevantSkillSet.has(skillFile)) continue;
184
+ pushFinding(findings, review, {
185
+ rule: "agentSkills",
186
+ code: issue.code,
187
+ severity: issue.severity === "error" ? "error" : issue.severity === "warning" ? "warn" : "suggestion",
188
+ file,
189
+ line: issue.line,
190
+ message: issue.message
191
+ });
192
+ }
193
+ }
155
194
  const relevantSet = new Set(relevantFiles);
156
195
  for (const issue of usefulness.findings) {
157
196
  if (!relevantSet.has(issue.file)) continue;
@@ -274,7 +313,7 @@ async function runReview(options = {}) {
274
313
  score,
275
314
  threshold: review.score.threshold,
276
315
  mode,
277
- reviewedFiles: relevantFiles,
316
+ reviewedFiles,
278
317
  changedFiles,
279
318
  findings,
280
319
  usefulness: usefulness.metrics,
@@ -513,7 +552,7 @@ function printReviewReport(report) {
513
552
  console.log(`Threshold: ${report.threshold}`);
514
553
  console.log(`Mode: ${modeLabel}`);
515
554
  console.log(`Changed files: ${report.changedFiles.length}`);
516
- console.log(`Reviewed docs files: ${report.reviewedFiles.length}`);
555
+ console.log(`Reviewed docs and skill files: ${report.reviewedFiles.length}`);
517
556
  console.log(`Findings: ${counts.error} error${counts.error === 1 ? "" : "s"}, ${counts.warn} warning${counts.warn === 1 ? "" : "s"}, ${counts.suggestion} suggestion${counts.suggestion === 1 ? "" : "s"}`);
518
557
  if (report.usefulness) console.log(`Useful agent-only blocks: ${report.usefulness.agentBlocks.useful}/${report.usefulness.agentBlocks.total}; task-complete pages: ${report.usefulness.taskCompleteness.completePages}/${report.usefulness.actionablePages}`);
519
558
  if (report.evaluations) console.log(`Golden tasks: ${report.evaluations.status === "unmeasured" ? "unmeasured" : `${report.evaluations.passedTaskCount}/${report.evaluations.taskCount} passed (${report.evaluations.score}/100)`}`);
@@ -577,6 +616,25 @@ function selectReviewFiles(options) {
577
616
  }
578
617
  return Array.from(selected).sort();
579
618
  }
619
+ function selectReviewSkillFiles(options) {
620
+ if (!options.report) return [];
621
+ const normalizedConfigPath = toPosixPath(options.configPath);
622
+ const configChanged = options.changedFiles.includes(normalizedConfigPath);
623
+ const changed = new Set(options.changedFiles.map(toPosixPath));
624
+ const selected = /* @__PURE__ */ new Set();
625
+ for (const skill of options.report.skills) {
626
+ const skillPath = toPosixPath(path.relative(options.rootDir, skill.skillPath));
627
+ const skillDir = `${toPosixPath(path.dirname(skillPath)).replace(/\/+$/u, "")}/`;
628
+ if (!(configChanged || changed.has(skillPath) || [...changed].some((file) => file.startsWith(skillDir)))) continue;
629
+ selected.add(skillPath);
630
+ for (const file of changed) if (file.startsWith(skillDir)) selected.add(file);
631
+ for (const issue of options.report.issues) {
632
+ if (issue.skillPath !== skill.skillPath) continue;
633
+ selected.add(toPosixPath(path.relative(options.rootDir, issue.filePath)));
634
+ }
635
+ }
636
+ return [...selected].sort();
637
+ }
580
638
  function getChangedFiles(rootDir, options) {
581
639
  const ranges = [
582
640
  options.base && options.head ? `${options.base}...${options.head}` : void 0,
@@ -585,17 +643,20 @@ function getChangedFiles(rootDir, options) {
585
643
  void 0
586
644
  ].filter((range, index, allRanges) => range !== void 0 || index === allRanges.length - 1);
587
645
  for (const range of ranges) try {
646
+ const repoRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], {
647
+ cwd: rootDir,
648
+ encoding: "utf-8"
649
+ }).trim();
588
650
  const args = [
589
651
  "diff",
590
- "--relative",
591
652
  "--name-only",
592
653
  "--diff-filter=ACMRTUXB"
593
654
  ];
594
655
  if (range) args.push(range);
595
656
  const files = execFileSync("git", args, {
596
- cwd: rootDir,
657
+ cwd: repoRoot,
597
658
  encoding: "utf-8"
598
- }).split(/\r?\n/).map((file) => file.trim()).filter(Boolean).map(toPosixPath);
659
+ }).split(/\r?\n/).map((file) => file.trim()).filter(Boolean).map((file) => toPosixPath(path.relative(rootDir, path.resolve(repoRoot, file))));
599
660
  if (files.length > 0 || range === void 0) return files;
600
661
  } catch {}
601
662
  return [];
@@ -1,7 +1,7 @@
1
- import "./agent-Cj50nyeV.mjs";
1
+ import "./agent-Dze2Cy5B.mjs";
2
2
  import "./markdown-sections-7OoA7ylx.mjs";
3
3
  import "./standards-discovery-BKlEnK_H.mjs";
4
- import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-BukukxNm.mjs";
4
+ import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-D96X6eVX.mjs";
5
5
  import { a as loadDocsConfigModule, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, m as readTopLevelBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
6
6
  import { t as detectFramework } from "./utils-DpiIioYb.mjs";
7
7
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
@@ -1,4 +1,4 @@
1
- import { It as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, Un as DEFAULT_MCP_WELL_KNOWN_ROUTE, Vn as DEFAULT_MCP_PUBLIC_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, et as normalizeDocsPathSegment, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-Cj50nyeV.mjs";
1
+ import { Gn as DEFAULT_MCP_WELL_KNOWN_ROUTE, It as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, Un as DEFAULT_MCP_PUBLIC_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, et as normalizeDocsPathSegment, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-Dze2Cy5B.mjs";
2
2
  import { a as DEFAULT_A2A_AGENT_CARD_ROUTE, b as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-BKlEnK_H.mjs";
3
3
 
4
4
  //#region src/robots.ts
@@ -1,14 +1,14 @@
1
- import { en as buildDocsSearchDocuments, nn as createAlgoliaSearchAdapter, on as createTypesenseSearchAdapter } from "./agent-Cj50nyeV.mjs";
1
+ import { en as buildDocsSearchDocuments, nn as createAlgoliaSearchAdapter, on as createTypesenseSearchAdapter } from "./agent-Dze2Cy5B.mjs";
2
2
  import "./markdown-sections-7OoA7ylx.mjs";
3
3
  import "./standards-discovery-BKlEnK_H.mjs";
4
- import "./agent-provenance-C_jgqNTW.mjs";
4
+ import "./content-change-hydration-DpQ0KdAD.mjs";
5
5
  import { t as resolveDocsI18n } from "./i18n-hHVWcflJ.mjs";
6
6
  import { a as resolveDocsMetadataBaseUrl } from "./metadata-N252j5_a.mjs";
7
- import "./sitemap-server-DzlV1NOB.mjs";
8
- import "./agent-evals-DvQQtN62.mjs";
7
+ import "./sitemap-server-BefXEox6.mjs";
8
+ import "./agent-skills-server-D5qYU19g.mjs";
9
+ import "./agent-evals-Burrzyam.mjs";
9
10
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
10
- import "./code-blocks-DnNVNK2M.mjs";
11
- import "./agent-skills-server-B2EXn2QD.mjs";
11
+ import "./code-blocks-0wjOsqdJ.mjs";
12
12
  import "./server.mjs";
13
13
  import { _ as resolveDocsContentDir, c as loadProjectEnv, g as resolveDocsConfigPath, h as readTopLevelStringProperty, s as loadDocsConfigModuleResultWithProjectEnv } from "./config-Wcdj-D0a.mjs";
14
14
  import { readFileSync } from "node:fs";