@farming-labs/docs 0.1.49 → 0.1.51

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.
@@ -1,9 +1,10 @@
1
- import { c as DEFAULT_LLMS_TXT_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE } from "./agent-CbAtuZAc.mjs";
2
- import "./api-reference-y7cqtq4w.mjs";
1
+ import { c as DEFAULT_LLMS_TXT_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE } from "./agent-Xh0UaY5I.mjs";
2
+ import "./api-reference-GDAEzQn1.mjs";
3
3
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
- import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-C7sUsMkm.mjs";
6
- import { t as detectFramework } from "./utils-DSMXVnEu.mjs";
5
+ import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-Si-yUfM_.mjs";
6
+ import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-C3rj3o1l.mjs";
7
+ import { t as detectFramework } from "./utils-CpTFbAiS.mjs";
7
8
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
8
9
  import path from "node:path";
9
10
  import pc from "picocolors";
@@ -473,7 +474,82 @@ function buildCoverage(pages) {
473
474
  pagesWithAgentFiles,
474
475
  pagesWithAgentBlocks,
475
476
  explicitPages,
476
- explicitCoverage: totalPages === 0 ? 0 : Math.round(explicitPages / Math.max(totalPages, 1) * 100)
477
+ explicitCoverage: totalPages === 0 ? 0 : Math.round(explicitPages / Math.max(totalPages, 1) * 100),
478
+ compaction: {
479
+ freshGeneratedPages: 0,
480
+ staleGeneratedPages: 0,
481
+ modifiedGeneratedPages: 0,
482
+ unknownGeneratedPages: 0,
483
+ tokenBudgetMissingPages: 0,
484
+ otherMissingPages: 0
485
+ }
486
+ };
487
+ }
488
+ function buildCompactionCoverage(rootDir, contentDir, entry, pages, defaults) {
489
+ const targets = scanDocsPageTargets(rootDir, contentDir, entry);
490
+ const targetsBySlug = new Map(targets.map((target) => [target.slug, target]));
491
+ const coverage = {
492
+ freshGeneratedPages: 0,
493
+ staleGeneratedPages: 0,
494
+ modifiedGeneratedPages: 0,
495
+ unknownGeneratedPages: 0,
496
+ tokenBudgetMissingPages: 0,
497
+ otherMissingPages: 0
498
+ };
499
+ for (const page of pages) {
500
+ const target = targetsBySlug.get(page.slug);
501
+ if (!target) continue;
502
+ const state = inspectAgentCompactionState(page, target, defaults);
503
+ switch (state.status) {
504
+ case "fresh":
505
+ coverage.freshGeneratedPages += 1;
506
+ break;
507
+ case "stale":
508
+ coverage.staleGeneratedPages += 1;
509
+ break;
510
+ case "modified":
511
+ case "stale-modified":
512
+ coverage.modifiedGeneratedPages += 1;
513
+ break;
514
+ case "unknown":
515
+ coverage.unknownGeneratedPages += 1;
516
+ break;
517
+ case "missing":
518
+ if (state.tokenBudget !== void 0) coverage.tokenBudgetMissingPages += 1;
519
+ else coverage.otherMissingPages += 1;
520
+ break;
521
+ }
522
+ }
523
+ return coverage;
524
+ }
525
+ function compactionFreshnessScore(coverage, compactConfigured) {
526
+ if (coverage.staleGeneratedPages > 0 || coverage.modifiedGeneratedPages > 0 || coverage.tokenBudgetMissingPages > 0) {
527
+ const recommendations = [];
528
+ if (coverage.staleGeneratedPages > 0) recommendations.push("Run docs agent compact --stale to refresh stale generated agent.md files.");
529
+ if (coverage.modifiedGeneratedPages > 0) recommendations.push("Review modified generated agent.md files before overwriting them; --stale skips manual edits on purpose.");
530
+ if (coverage.tokenBudgetMissingPages > 0) recommendations.push("Run docs agent compact --stale --include-missing to create generated agent.md files for pages that opted into agent.tokenBudget.");
531
+ return {
532
+ status: "warn",
533
+ score: compactConfigured ? 2 : 0,
534
+ recommendation: recommendations.join(" ")
535
+ };
536
+ }
537
+ if (coverage.unknownGeneratedPages > 0) return {
538
+ status: "pass",
539
+ score: compactConfigured ? 4 : 3
540
+ };
541
+ if (coverage.freshGeneratedPages > 0) return {
542
+ status: "pass",
543
+ score: compactConfigured ? 5 : 4
544
+ };
545
+ if (compactConfigured) return {
546
+ status: "pass",
547
+ score: 5
548
+ };
549
+ return {
550
+ status: "warn",
551
+ score: 0,
552
+ recommendation: "Add agent.compact defaults if you want docs agent compact and stale detection to run without repeating model and key settings."
477
553
  };
478
554
  }
479
555
  function buildMetadataCoverage(pages) {
@@ -573,7 +649,15 @@ async function inspectAgentReadiness(options = {}) {
573
649
  pagesWithAgentFiles: 0,
574
650
  pagesWithAgentBlocks: 0,
575
651
  explicitPages: 0,
576
- explicitCoverage: 0
652
+ explicitCoverage: 0,
653
+ compaction: {
654
+ freshGeneratedPages: 0,
655
+ staleGeneratedPages: 0,
656
+ modifiedGeneratedPages: 0,
657
+ unknownGeneratedPages: 0,
658
+ tokenBudgetMissingPages: 0,
659
+ otherMissingPages: 0
660
+ }
577
661
  },
578
662
  recommendations: checks.map((check) => check.recommendation).filter(Boolean)
579
663
  };
@@ -601,8 +685,11 @@ async function inspectAgentReadiness(options = {}) {
601
685
  });
602
686
  const pages = await Promise.resolve(source.getPages());
603
687
  const coverage = buildCoverage(pages);
688
+ const compactionCoverage = buildCompactionCoverage(rootDir, contentDir, entry, pages, config?.agent?.compact ?? {});
689
+ coverage.compaction = compactionCoverage;
604
690
  const metadataCoverage = buildMetadataCoverage(pages);
605
691
  const metadataResult = metadataScore(metadataCoverage.descriptionCoverage, metadataCoverage.relatedCoverage);
692
+ const compactionResult = compactionFreshnessScore(compactionCoverage, compactConfigured);
606
693
  const routeSurface = detectRouteSurface(rootDir, framework, staticExport, files);
607
694
  const mcpConfig = resolveDocsMcpConfig(config?.mcp ?? void 0, { defaultName: siteTitle });
608
695
  const feedbackRoute = DEFAULT_AGENT_FEEDBACK_ROUTE;
@@ -622,7 +709,7 @@ async function inspectAgentReadiness(options = {}) {
622
709
  checks.push(makeCheck("metadata", "Page metadata", metadataResult.status, metadataResult.score, 5, coverage.totalPages > 0 ? `${metadataCoverage.describedPages}/${coverage.totalPages} pages include descriptions and ${metadataCoverage.relatedPages}/${coverage.totalPages} pages include related links (${metadataCoverage.descriptionCoverage}% described, ${metadataCoverage.relatedCoverage}% related).` : "No docs pages were available to score page metadata.", metadataCoverage.descriptionCoverage >= 75 ? void 0 : "Add page descriptions and related links to more docs pages so agent markdown output carries better context and navigation hints."));
623
710
  const coverageResult = coverageScore(coverage.explicitCoverage);
624
711
  checks.push(makeCheck("coverage", "Explicit page optimization", coverageResult.status, coverageResult.score, 10, coverage.totalPages > 0 ? `${coverage.explicitPages}/${coverage.totalPages} pages define explicit machine-only context (${coverage.pagesWithAgentFiles} agent.md, ${coverage.pagesWithAgentBlocks} Agent blocks, ${coverage.explicitCoverage}% of pages).` : "No docs pages were available to score explicit page optimization.", coverage.explicitCoverage >= 50 ? void 0 : "Add agent.md files or <Agent> blocks to more pages, or run docs agent compact to create page-level machine docs."));
625
- checks.push(compactConfigured ? makeCheck("compact", "Compaction defaults", "pass", 5, 5, "agent.compact defaults are configured in docs.config for repeatable page compaction.") : makeCheck("compact", "Compaction defaults", "warn", 0, 5, "No agent.compact defaults were found in docs config.", "Add agent.compact defaults if you want docs agent compact to run without repeating model and key settings."));
712
+ checks.push(makeCheck("compact", "Agent compaction freshness", compactionResult.status, compactionResult.score, 5, `${compactionCoverage.freshGeneratedPages} fresh, ${compactionCoverage.staleGeneratedPages} stale, ${compactionCoverage.modifiedGeneratedPages} modified, ${compactionCoverage.unknownGeneratedPages} unknown, ${compactionCoverage.tokenBudgetMissingPages} token-budget missing, and ${compactionCoverage.otherMissingPages} other missing page${compactionCoverage.otherMissingPages === 1 ? "" : "s"} across compactable docs pages.` + (compactConfigured ? " agent.compact defaults are configured." : " No agent.compact defaults were found in docs config."), compactionResult.recommendation));
626
713
  const score = checks.reduce((total, check) => total + check.score, 0);
627
714
  const maxScore = checks.reduce((total, check) => total + check.maxScore, 0);
628
715
  return {
@@ -726,6 +813,7 @@ function printAgentDoctorReport(report) {
726
813
  console.log(`${pc.bold("Score:")} ${pc.cyan(`${report.score}/${report.maxScore}`)} ${pc.dim(`(${report.grade})`)}`);
727
814
  console.log(`${pc.bold("Framework:")} ${report.framework} ${pc.dim("•")} ${pc.bold("Entry:")} ${report.entry ?? "docs"} ${pc.dim("•")} ${pc.bold("Content:")} ${report.contentDir ?? "-"}`);
728
815
  console.log(`${pc.bold("Explicit agent-friendly pages:")} ${report.coverage.explicitPages}/${report.coverage.totalPages} pages ${pc.dim(`(${report.coverage.explicitCoverage}%)`)}`);
816
+ console.log(`${pc.bold("Generated agent.md freshness:")} ${report.coverage.compaction.freshGeneratedPages} fresh ${pc.dim("•")} ${report.coverage.compaction.staleGeneratedPages} stale ${pc.dim("•")} ${report.coverage.compaction.modifiedGeneratedPages} modified ${pc.dim("•")} ${report.coverage.compaction.tokenBudgetMissingPages} token-budget missing`);
729
817
  console.log();
730
818
  for (const check of report.checks) {
731
819
  console.log(`${formatStatus(check.status)} ${check.title} ${pc.dim(`(${check.score}/${check.maxScore})`)}`);
package/dist/index.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as SidebarConfig, A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, F as FeedbackConfig, G as OrderingItem, H as OpenDocsConfig, I as FontStyle, J as PageOpenGraph, K as PageActionsConfig, L as GithubConfig, M as DocsSearchResultType, N as DocsSearchSourcePage, O as DocsSearchDocument, P as DocsTheme, Q as SidebarComponentProps, R as LastUpdatedConfig, S as DocsRelatedItem, T as DocsSearchAdapterFactory, U as OpenDocsProvider, V as OGConfig, W as OpenGraphImage, X as ReadingTimeConfig, Y as PageTwitter, Z as ResolvedDocsRelatedLink, _ as DocsI18nConfig, a as ApiReferenceRenderer, at as ThemeToggleConfig, b as DocsMetadata, c as ChangelogFrontmatter, ct as UIConfig, d as CustomDocsSearchConfig, et as SidebarFolderNode, f as DocsAgentFeedbackContext, g as DocsFeedbackValue, h as DocsFeedbackData, i as ApiReferenceConfig, it as SimpleDocsSearchConfig, j as DocsSearchResult, k as DocsSearchEmbeddingsConfig, l as CodeBlockCopyData, m as DocsConfig, n as AgentFeedbackConfig, nt as SidebarPageNode, o as BreadcrumbConfig, ot as TypesenseDocsSearchConfig, p as DocsAgentFeedbackData, q as PageFrontmatter, r as AlgoliaDocsSearchConfig, rt as SidebarTree, s as ChangelogConfig, st as TypographyConfig, t as AIConfig, tt as SidebarNode, u as CopyMarkdownConfig, v as DocsMcpConfig, w as DocsSearchAdapterContext, x as DocsNav, y as DocsMcpToolsConfig, z as LlmsTxtConfig } from "./types-Boobvv2I.mjs";
1
+ import { $ as SidebarConfig, A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, F as FeedbackConfig, G as OrderingItem, H as OpenDocsConfig, I as FontStyle, J as PageOpenGraph, K as PageActionsConfig, L as GithubConfig, M as DocsSearchResultType, N as DocsSearchSourcePage, O as DocsSearchDocument, P as DocsTheme, Q as SidebarComponentProps, R as LastUpdatedConfig, S as DocsRelatedItem, T as DocsSearchAdapterFactory, U as OpenDocsProvider, V as OGConfig, W as OpenGraphImage, X as ReadingTimeConfig, Y as PageTwitter, Z as ResolvedDocsRelatedLink, _ as DocsI18nConfig, a as ApiReferenceRenderer, at as ThemeToggleConfig, b as DocsMetadata, c as ChangelogFrontmatter, ct as UIConfig, d as CustomDocsSearchConfig, et as SidebarFolderNode, f as DocsAgentFeedbackContext, g as DocsFeedbackValue, h as DocsFeedbackData, i as ApiReferenceConfig, it as SimpleDocsSearchConfig, j as DocsSearchResult, k as DocsSearchEmbeddingsConfig, l as CodeBlockCopyData, m as DocsConfig, n as AgentFeedbackConfig, nt as SidebarPageNode, o as BreadcrumbConfig, ot as TypesenseDocsSearchConfig, p as DocsAgentFeedbackData, q as PageFrontmatter, r as AlgoliaDocsSearchConfig, rt as SidebarTree, s as ChangelogConfig, st as TypographyConfig, t as AIConfig, tt as SidebarNode, u as CopyMarkdownConfig, v as DocsMcpConfig, w as DocsSearchAdapterContext, x as DocsNav, y as DocsMcpToolsConfig, z as LlmsTxtConfig } from "./types-Cl6WPIHa.mjs";
2
2
  import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
3
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-BxJywXXB.mjs";
3
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-KMMtXPTi.mjs";
4
4
 
5
5
  //#region src/define-docs.d.ts
6
6
  /**
@@ -134,6 +134,28 @@ declare function resolveReadingTimeFromSource(source: string, wordsPerMinute?: n
134
134
  declare function normalizeDocsRelated(value: unknown): ResolvedDocsRelatedLink[];
135
135
  declare function renderDocsRelatedMarkdownLines(related: ResolvedDocsRelatedLink[] | undefined): string[];
136
136
  //#endregion
137
+ //#region src/agent-provenance.d.ts
138
+ declare const GENERATED_AGENT_PROVENANCE_MARKER = "@farming-labs/docs:generated";
139
+ declare const GENERATED_AGENT_PROVENANCE_VERSION = 1;
140
+ type GeneratedAgentSourceKind = "resolved-page" | "agent-md";
141
+ interface GeneratedAgentProvenance {
142
+ version: number;
143
+ sourceKind: GeneratedAgentSourceKind;
144
+ sourceHash: string;
145
+ settingsHash: string;
146
+ outputHash: string;
147
+ generatedAt: string;
148
+ }
149
+ interface ParsedGeneratedAgentDocument {
150
+ provenance?: GeneratedAgentProvenance;
151
+ content: string;
152
+ }
153
+ declare function normalizeGeneratedAgentContent(value: string): string;
154
+ declare function hashGeneratedAgentContent(value: string): string;
155
+ declare function parseGeneratedAgentDocument(raw: string): ParsedGeneratedAgentDocument;
156
+ declare function stripGeneratedAgentProvenance(raw: string): string;
157
+ declare function serializeGeneratedAgentDocument(content: string, provenance: GeneratedAgentProvenance): string;
158
+ //#endregion
137
159
  //#region src/agent.d.ts
138
160
  declare const DEFAULT_DOCS_API_ROUTE = "/api/docs";
139
161
  declare const DEFAULT_AGENT_SPEC_ROUTE = "/api/docs/agent/spec";
@@ -338,4 +360,4 @@ declare function buildDocsAgentDiscoverySpec({
338
360
  };
339
361
  };
340
362
  //#endregion
341
- export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, type DocsAgentDiscoverySpecOptions, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsAgentFeedbackDiscoveryConfig, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsLlmsDiscoveryConfig, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsRelatedItem, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsSkillDocumentOptions, type DocsTheme, type FeedbackConfig, type FontStyle, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageTwitter, type ReadingTimeConfig, type ResolvedChangelogConfig, type ResolvedDocsI18n, type ResolvedDocsRelatedLink, type SidebarComponentProps, type SidebarConfig, type SidebarFolderNode, type SidebarNode, type SidebarPageNode, type SidebarTree, type SimpleDocsSearchConfig, type ThemeToggleConfig, type TypesenseDocsSearchConfig, type TypographyConfig, type UIConfig, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveTitle };
363
+ export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, type DocsAgentDiscoverySpecOptions, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsAgentFeedbackDiscoveryConfig, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsLlmsDiscoveryConfig, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsRelatedItem, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsSkillDocumentOptions, type DocsTheme, type FeedbackConfig, type FontStyle, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, type GeneratedAgentProvenance, type GeneratedAgentSourceKind, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageTwitter, type ReadingTimeConfig, type ResolvedChangelogConfig, type ResolvedDocsI18n, type ResolvedDocsRelatedLink, type SidebarComponentProps, type SidebarConfig, type SidebarFolderNode, type SidebarNode, type SidebarPageNode, type SidebarTree, type SimpleDocsSearchConfig, type ThemeToggleConfig, type TypesenseDocsSearchConfig, type TypographyConfig, type UIConfig, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
package/dist/index.mjs CHANGED
@@ -1,5 +1,4 @@
1
- import { _ as defineDocs, a as resolveReadingTimeOptions, c as resolveOGImage, d as resolveDocsLocale, f as resolveDocsPath, g as resolveChangelogConfig, h as deepMerge, i as resolveReadingTimeFromSource, l as resolveTitle, m as extendTheme, n as resolvePageReadingTime, o as buildPageOpenGraph, p as createTheme, r as resolveReadingTimeFromContent, s as buildPageTwitter, t as estimateReadingTimeMinutes, u as resolveDocsI18n } from "./reading-time-DCZXC6-3.mjs";
2
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, l as normalizeDocsRelated, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as renderDocsRelatedMarkdownLines } from "./search-8oEskRtz.mjs";
3
- import { C as renderDocsMarkdownDocument, D as resolveDocsMarkdownRequest, E as resolveDocsLlmsTxtFormat, O as resolveDocsSkillFormat, S as normalizeDocsUrlPath, T as resolveDocsAgentMdxContent, _ as isDocsAgentDiscoveryRequest, a as DEFAULT_DOCS_API_ROUTE, b as isDocsSkillRequest, c as DEFAULT_LLMS_TXT_ROUTE, d as DEFAULT_MCP_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, g as findDocsMarkdownPage, h as buildDocsAgentDiscoverySpec, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, l as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, n as DEFAULT_AGENT_SPEC_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, s as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE, v as isDocsMcpRequest, w as renderDocsSkillDocument, x as normalizeDocsPathSegment, y as isDocsPublicGetRequest } from "./agent-CbAtuZAc.mjs";
1
+ import { A as resolvePageReadingTime, B as resolveDocsPath, C as renderDocsMarkdownDocument, D as resolveDocsMarkdownRequest, E as resolveDocsLlmsTxtFormat, F as buildPageTwitter, G as defineDocs, H as extendTheme, I as resolveOGImage, L as resolveTitle, M as resolveReadingTimeFromSource, N as resolveReadingTimeOptions, O as resolveDocsSkillFormat, P as buildPageOpenGraph, R as resolveDocsI18n, S as normalizeDocsUrlPath, T as resolveDocsAgentMdxContent, U as deepMerge, V as createTheme, W as resolveChangelogConfig, _ as isDocsAgentDiscoveryRequest, a as DEFAULT_DOCS_API_ROUTE, b as isDocsSkillRequest, c as DEFAULT_LLMS_TXT_ROUTE, d as DEFAULT_MCP_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, g as findDocsMarkdownPage, h as buildDocsAgentDiscoverySpec, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, j as resolveReadingTimeFromContent, k as estimateReadingTimeMinutes, l as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, n as DEFAULT_AGENT_SPEC_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, s as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE, v as isDocsMcpRequest, w as renderDocsSkillDocument, x as normalizeDocsPathSegment, y as isDocsPublicGetRequest, z as resolveDocsLocale } from "./agent-Xh0UaY5I.mjs";
2
+ import { _ as renderDocsRelatedMarkdownLines, a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as hashGeneratedAgentContent, f as normalizeGeneratedAgentContent, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, i as createMcpSearchAdapter, l as GENERATED_AGENT_PROVENANCE_MARKER, m as serializeGeneratedAgentDocument, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, p as parseGeneratedAgentDocument, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as GENERATED_AGENT_PROVENANCE_VERSION } from "./search-Cu_pxL8o.mjs";
4
3
 
5
- export { DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveTitle };
4
+ export { DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
@@ -1,4 +1,4 @@
1
- import { a as devInstallCommand, c as installCommand, d as writeFileSafe, i as detectPackageManagerFromLockfile, l as readFileSafe, n as detectGlobalCssFiles, o as exec, r as detectNextAppDir, s as fileExists, t as detectFramework, u as spawnAndWaitFor } from "./utils-DSMXVnEu.mjs";
1
+ import { a as devInstallCommand, c as installCommand, d as writeFileSafe, i as detectPackageManagerFromLockfile, l as readFileSafe, n as detectGlobalCssFiles, o as exec, r as detectNextAppDir, s as fileExists, t as detectFramework, u as spawnAndWaitFor } from "./utils-CpTFbAiS.mjs";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import pc from "picocolors";
@@ -1,7 +1,7 @@
1
- import "./api-reference-y7cqtq4w.mjs";
1
+ import "./api-reference-GDAEzQn1.mjs";
2
2
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
3
3
  import "./server.mjs";
4
- import { c as readNavTitle, f as resolveDocsConfigPath, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsContentDir, u as readStringProperty } from "./config-C7sUsMkm.mjs";
4
+ import { c as readNavTitle, f as resolveDocsConfigPath, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsContentDir, u as readStringProperty } from "./config-Si-yUfM_.mjs";
5
5
  import { readFileSync } from "node:fs";
6
6
 
7
7
  //#region src/cli/mcp.ts
package/dist/mcp.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { D as DocsSearchConfig, G as OrderingItem, N as DocsSearchSourcePage, v as DocsMcpConfig } from "./types-Boobvv2I.mjs";
1
+ import { D as DocsSearchConfig, G as OrderingItem, N as DocsSearchSourcePage, v as DocsMcpConfig } from "./types-Cl6WPIHa.mjs";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
 
4
4
  //#region src/mcp.d.ts
package/dist/mcp.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { l as normalizeDocsRelated, s as performDocsSearch, u as renderDocsRelatedMarkdownLines } from "./search-8oEskRtz.mjs";
1
+ import { _ as renderDocsRelatedMarkdownLines, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, s as performDocsSearch } from "./search-Cu_pxL8o.mjs";
2
2
  import matter from "gray-matter";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
@@ -347,7 +347,7 @@ function scanFilesystemDocsPages(contentDirAbs, entry) {
347
347
  function readFilesystemAgentDoc(dir) {
348
348
  const agentPath = path.join(dir, "agent.md");
349
349
  if (!fs.existsSync(agentPath)) return void 0;
350
- const { content } = matter(fs.readFileSync(agentPath, "utf-8"));
350
+ const { content } = matter(stripGeneratedAgentProvenance(fs.readFileSync(agentPath, "utf-8")));
351
351
  return {
352
352
  agentContent: stripMarkdownForMcp(content),
353
353
  agentRawContent: content
@@ -1,8 +1,8 @@
1
- import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-8oEskRtz.mjs";
2
- import "./api-reference-y7cqtq4w.mjs";
1
+ import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-Cu_pxL8o.mjs";
2
+ import "./api-reference-GDAEzQn1.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
- import { a as loadProjectEnv, d as readTopLevelStringProperty, f as resolveDocsConfigPath, p as resolveDocsContentDir } from "./config-C7sUsMkm.mjs";
5
+ import { a as loadProjectEnv, d as readTopLevelStringProperty, f as resolveDocsConfigPath, p as resolveDocsContentDir } from "./config-Si-yUfM_.mjs";
6
6
  import { readFileSync } from "node:fs";
7
7
  import pc from "picocolors";
8
8
 
@@ -46,6 +46,82 @@ function normalizeInlineText(value) {
46
46
  return value.replace(/\s+/g, " ").trim();
47
47
  }
48
48
 
49
+ //#endregion
50
+ //#region src/agent-provenance.ts
51
+ const GENERATED_AGENT_PROVENANCE_MARKER = "@farming-labs/docs:generated";
52
+ const GENERATED_AGENT_PROVENANCE_VERSION = 1;
53
+ function normalizeLineEndings(value) {
54
+ return value.replace(/\r\n?/g, "\n").replace(/^\uFEFF/, "");
55
+ }
56
+ function normalizeGeneratedAgentContent(value) {
57
+ return normalizeLineEndings(value).trimEnd();
58
+ }
59
+ function hashGeneratedAgentContent(value) {
60
+ const normalized = normalizeGeneratedAgentContent(value);
61
+ const bytes = new TextEncoder().encode(normalized);
62
+ let hash = 14695981039346656037n;
63
+ for (const byte of bytes) {
64
+ hash ^= BigInt(byte);
65
+ hash = BigInt.asUintN(64, hash * 1099511628211n);
66
+ }
67
+ return `fnv1a64:${hash.toString(16).padStart(16, "0")}`;
68
+ }
69
+ function parseProvenanceBlock(rawBlock) {
70
+ const entries = /* @__PURE__ */ new Map();
71
+ for (const line of rawBlock.split("\n")) {
72
+ const trimmed = line.trim();
73
+ if (!trimmed) continue;
74
+ const separatorIndex = trimmed.indexOf("=");
75
+ if (separatorIndex <= 0) continue;
76
+ const key = trimmed.slice(0, separatorIndex).trim();
77
+ const value = trimmed.slice(separatorIndex + 1).trim();
78
+ if (!key || !value) continue;
79
+ entries.set(key, value);
80
+ }
81
+ const version = Number.parseInt(entries.get("version") ?? "", 10);
82
+ const sourceKind = entries.get("sourceKind");
83
+ const sourceHash = entries.get("sourceHash");
84
+ const settingsHash = entries.get("settingsHash");
85
+ const outputHash = entries.get("outputHash");
86
+ const generatedAt = entries.get("generatedAt");
87
+ if (!Number.isFinite(version) || sourceKind !== "resolved-page" && sourceKind !== "agent-md" || !sourceHash || !settingsHash || !outputHash || !generatedAt) return;
88
+ return {
89
+ version,
90
+ sourceKind,
91
+ sourceHash,
92
+ settingsHash,
93
+ outputHash,
94
+ generatedAt
95
+ };
96
+ }
97
+ function parseGeneratedAgentDocument(raw) {
98
+ const normalized = normalizeLineEndings(raw);
99
+ const headerPattern = new RegExp(`^<!-- ${GENERATED_AGENT_PROVENANCE_MARKER}\\n([\\s\\S]*?)\\n-->\\n?`);
100
+ const match = normalized.match(headerPattern);
101
+ if (!match) return { content: normalized };
102
+ return {
103
+ provenance: parseProvenanceBlock(match[1]),
104
+ content: normalized.slice(match[0].length)
105
+ };
106
+ }
107
+ function stripGeneratedAgentProvenance(raw) {
108
+ return parseGeneratedAgentDocument(raw).content;
109
+ }
110
+ function serializeGeneratedAgentDocument(content, provenance) {
111
+ const normalizedContent = normalizeGeneratedAgentContent(content);
112
+ return `${[
113
+ `<!-- ${GENERATED_AGENT_PROVENANCE_MARKER}`,
114
+ `version=${provenance.version}`,
115
+ `sourceKind=${provenance.sourceKind}`,
116
+ `sourceHash=${provenance.sourceHash}`,
117
+ `settingsHash=${provenance.settingsHash}`,
118
+ `outputHash=${provenance.outputHash}`,
119
+ `generatedAt=${provenance.generatedAt}`,
120
+ "-->",
121
+ normalizedContent
122
+ ].join("\n")}\n`;
123
+ }
124
+
49
125
  //#endregion
50
126
  //#region src/search.ts
51
127
  const DEFAULT_SEARCH_LIMIT = 10;
@@ -717,4 +793,4 @@ function createCustomSearchAdapter(adapter) {
717
793
  }
718
794
 
719
795
  //#endregion
720
- export { createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, createMcpSearchAdapter as i, normalizeDocsRelated as l, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, renderDocsRelatedMarkdownLines as u };
796
+ export { renderDocsRelatedMarkdownLines as _, createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, hashGeneratedAgentContent as d, normalizeGeneratedAgentContent as f, normalizeDocsRelated as g, stripGeneratedAgentProvenance as h, createMcpSearchAdapter as i, GENERATED_AGENT_PROVENANCE_MARKER as l, serializeGeneratedAgentDocument as m, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, parseGeneratedAgentDocument as p, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, GENERATED_AGENT_PROVENANCE_VERSION as u };
@@ -1,4 +1,4 @@
1
- import { B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, d as CustomDocsSearchConfig, j as DocsSearchResult, ot as TypesenseDocsSearchConfig, r as AlgoliaDocsSearchConfig } from "./types-Boobvv2I.mjs";
1
+ import { B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, E as DocsSearchChunkingConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, d as CustomDocsSearchConfig, j as DocsSearchResult, ot as TypesenseDocsSearchConfig, r as AlgoliaDocsSearchConfig } from "./types-Cl6WPIHa.mjs";
2
2
 
3
3
  //#region src/search.d.ts
4
4
  declare function buildDocsSearchDocuments(pages: DocsSearchSourcePage[], chunking?: DocsSearchChunkingConfig): DocsSearchDocument[];
package/dist/server.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, a as ApiReferenceRenderer, j as DocsSearchResult, m as DocsConfig, w as DocsSearchAdapterContext } from "./types-Boobvv2I.mjs";
1
+ import { A as DocsSearchQuery, B as McpDocsSearchConfig, C as DocsSearchAdapter, D as DocsSearchConfig, N as DocsSearchSourcePage, O as DocsSearchDocument, T as DocsSearchAdapterFactory, a as ApiReferenceRenderer, j as DocsSearchResult, m as DocsConfig, w as DocsSearchAdapterContext } from "./types-Cl6WPIHa.mjs";
2
2
  import { DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
3
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-BxJywXXB.mjs";
3
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-KMMtXPTi.mjs";
4
4
 
5
5
  //#region src/api-reference.d.ts
6
6
  type HttpMethod = "GET" | "POST" | "PUT" | "PATCH" | "DELETE" | "OPTIONS" | "HEAD";
package/dist/server.mjs CHANGED
@@ -1,5 +1,5 @@
1
- import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-8oEskRtz.mjs";
2
- import { a as buildApiReferencePageTitle, c as resolveApiReferenceRenderer, i as buildApiReferenceOpenApiDocumentAsync, n as buildApiReferenceHtmlDocumentAsync, o as buildApiReferenceScalarCss, r as buildApiReferenceOpenApiDocument, s as resolveApiReferenceConfig, t as buildApiReferenceHtmlDocument } from "./api-reference-y7cqtq4w.mjs";
1
+ import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments } from "./search-Cu_pxL8o.mjs";
2
+ import { a as buildApiReferencePageTitle, c as resolveApiReferenceRenderer, i as buildApiReferenceOpenApiDocumentAsync, n as buildApiReferenceHtmlDocumentAsync, o as buildApiReferenceScalarCss, r as buildApiReferenceOpenApiDocument, s as resolveApiReferenceConfig, t as buildApiReferenceHtmlDocument } from "./api-reference-GDAEzQn1.mjs";
3
3
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
 
5
5
  export { buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, normalizeDocsMcpRoute, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveDocsMcpConfig, resolveSearchRequestConfig, runDocsMcpStdio };
@@ -246,11 +246,20 @@ type DocsRelatedItem = string;
246
246
  interface ResolvedDocsRelatedLink {
247
247
  href: string;
248
248
  }
249
+ interface PageAgentFrontmatter {
250
+ /**
251
+ * Approximate output token target for machine-readable compaction on this page.
252
+ * Used by `docs agent compact` as a per-page override.
253
+ */
254
+ tokenBudget?: number;
255
+ }
249
256
  interface PageFrontmatter {
250
257
  title: string;
251
258
  description?: string;
252
259
  /** Related doc URLs rendered into machine-readable markdown routes and MCP page output. */
253
260
  related?: DocsRelatedItem[];
261
+ /** Per-page agent-oriented metadata used by machine-readable docs features. */
262
+ agent?: PageAgentFrontmatter;
254
263
  /** Override or disable the estimated reading time for this page. */
255
264
  readingTime?: boolean | number;
256
265
  tags?: string[];
@@ -1,4 +1,4 @@
1
- import { c as installCommand, i as detectPackageManagerFromLockfile, o as exec, s as fileExists, t as detectFramework } from "./utils-DSMXVnEu.mjs";
1
+ import { c as installCommand, i as detectPackageManagerFromLockfile, o as exec, s as fileExists, t as detectFramework } from "./utils-CpTFbAiS.mjs";
2
2
  import path from "node:path";
3
3
  import pc from "picocolors";
4
4
  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.1.49",
3
+ "version": "0.1.51",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",