@farming-labs/docs 0.1.50 → 0.1.52

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";
@@ -44,6 +45,10 @@ function parseDoctorArgs(argv) {
44
45
  parsed.mode = "agent";
45
46
  continue;
46
47
  }
48
+ if (arg === "--json") {
49
+ parsed.json = true;
50
+ continue;
51
+ }
47
52
  if (arg === "--human" || arg === "human" || arg === "--site" || arg === "site") {
48
53
  parsed.mode = "human";
49
54
  continue;
@@ -74,6 +79,7 @@ ${pc.dim("Usage:")}
74
79
  pnpm exec docs doctor
75
80
  pnpm exec docs doctor --agent
76
81
  pnpm exec docs doctor --site
82
+ pnpm exec docs doctor --agent --json
77
83
  pnpm exec docs doctor agent
78
84
  pnpm exec docs doctor site
79
85
 
@@ -81,6 +87,7 @@ ${pc.dim("Options:")}
81
87
  ${pc.cyan("--agent")} Score agent-readiness for the current docs app (default)
82
88
  ${pc.cyan("--site")} Score reader-facing docs quality for the current docs app
83
89
  ${pc.cyan("--human")} Alias for ${pc.cyan("--site")}
90
+ ${pc.cyan("--json")} Print the report as JSON for CI, scripts, and other agents
84
91
  ${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
85
92
  ${pc.cyan("-h, --help")} Show this help message
86
93
  `);
@@ -473,7 +480,82 @@ function buildCoverage(pages) {
473
480
  pagesWithAgentFiles,
474
481
  pagesWithAgentBlocks,
475
482
  explicitPages,
476
- explicitCoverage: totalPages === 0 ? 0 : Math.round(explicitPages / Math.max(totalPages, 1) * 100)
483
+ explicitCoverage: totalPages === 0 ? 0 : Math.round(explicitPages / Math.max(totalPages, 1) * 100),
484
+ compaction: {
485
+ freshGeneratedPages: 0,
486
+ staleGeneratedPages: 0,
487
+ modifiedGeneratedPages: 0,
488
+ unknownGeneratedPages: 0,
489
+ tokenBudgetMissingPages: 0,
490
+ otherMissingPages: 0
491
+ }
492
+ };
493
+ }
494
+ function buildCompactionCoverage(rootDir, contentDir, entry, pages, defaults) {
495
+ const targets = scanDocsPageTargets(rootDir, contentDir, entry);
496
+ const targetsBySlug = new Map(targets.map((target) => [target.slug, target]));
497
+ const coverage = {
498
+ freshGeneratedPages: 0,
499
+ staleGeneratedPages: 0,
500
+ modifiedGeneratedPages: 0,
501
+ unknownGeneratedPages: 0,
502
+ tokenBudgetMissingPages: 0,
503
+ otherMissingPages: 0
504
+ };
505
+ for (const page of pages) {
506
+ const target = targetsBySlug.get(page.slug);
507
+ if (!target) continue;
508
+ const state = inspectAgentCompactionState(page, target, defaults);
509
+ switch (state.status) {
510
+ case "fresh":
511
+ coverage.freshGeneratedPages += 1;
512
+ break;
513
+ case "stale":
514
+ coverage.staleGeneratedPages += 1;
515
+ break;
516
+ case "modified":
517
+ case "stale-modified":
518
+ coverage.modifiedGeneratedPages += 1;
519
+ break;
520
+ case "unknown":
521
+ coverage.unknownGeneratedPages += 1;
522
+ break;
523
+ case "missing":
524
+ if (state.tokenBudget !== void 0) coverage.tokenBudgetMissingPages += 1;
525
+ else coverage.otherMissingPages += 1;
526
+ break;
527
+ }
528
+ }
529
+ return coverage;
530
+ }
531
+ function compactionFreshnessScore(coverage, compactConfigured) {
532
+ if (coverage.staleGeneratedPages > 0 || coverage.modifiedGeneratedPages > 0 || coverage.tokenBudgetMissingPages > 0) {
533
+ const recommendations = [];
534
+ if (coverage.staleGeneratedPages > 0) recommendations.push("Run docs agent compact --stale to refresh stale generated agent.md files.");
535
+ if (coverage.modifiedGeneratedPages > 0) recommendations.push("Review modified generated agent.md files before overwriting them; --stale skips manual edits on purpose.");
536
+ 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.");
537
+ return {
538
+ status: "warn",
539
+ score: compactConfigured ? 2 : 0,
540
+ recommendation: recommendations.join(" ")
541
+ };
542
+ }
543
+ if (coverage.unknownGeneratedPages > 0) return {
544
+ status: "pass",
545
+ score: compactConfigured ? 4 : 3
546
+ };
547
+ if (coverage.freshGeneratedPages > 0) return {
548
+ status: "pass",
549
+ score: compactConfigured ? 5 : 4
550
+ };
551
+ if (compactConfigured) return {
552
+ status: "pass",
553
+ score: 5
554
+ };
555
+ return {
556
+ status: "warn",
557
+ score: 0,
558
+ recommendation: "Add agent.compact defaults if you want docs agent compact and stale detection to run without repeating model and key settings."
477
559
  };
478
560
  }
479
561
  function buildMetadataCoverage(pages) {
@@ -573,7 +655,15 @@ async function inspectAgentReadiness(options = {}) {
573
655
  pagesWithAgentFiles: 0,
574
656
  pagesWithAgentBlocks: 0,
575
657
  explicitPages: 0,
576
- explicitCoverage: 0
658
+ explicitCoverage: 0,
659
+ compaction: {
660
+ freshGeneratedPages: 0,
661
+ staleGeneratedPages: 0,
662
+ modifiedGeneratedPages: 0,
663
+ unknownGeneratedPages: 0,
664
+ tokenBudgetMissingPages: 0,
665
+ otherMissingPages: 0
666
+ }
577
667
  },
578
668
  recommendations: checks.map((check) => check.recommendation).filter(Boolean)
579
669
  };
@@ -601,8 +691,11 @@ async function inspectAgentReadiness(options = {}) {
601
691
  });
602
692
  const pages = await Promise.resolve(source.getPages());
603
693
  const coverage = buildCoverage(pages);
694
+ const compactionCoverage = buildCompactionCoverage(rootDir, contentDir, entry, pages, config?.agent?.compact ?? {});
695
+ coverage.compaction = compactionCoverage;
604
696
  const metadataCoverage = buildMetadataCoverage(pages);
605
697
  const metadataResult = metadataScore(metadataCoverage.descriptionCoverage, metadataCoverage.relatedCoverage);
698
+ const compactionResult = compactionFreshnessScore(compactionCoverage, compactConfigured);
606
699
  const routeSurface = detectRouteSurface(rootDir, framework, staticExport, files);
607
700
  const mcpConfig = resolveDocsMcpConfig(config?.mcp ?? void 0, { defaultName: siteTitle });
608
701
  const feedbackRoute = DEFAULT_AGENT_FEEDBACK_ROUTE;
@@ -622,7 +715,7 @@ async function inspectAgentReadiness(options = {}) {
622
715
  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
716
  const coverageResult = coverageScore(coverage.explicitCoverage);
624
717
  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."));
718
+ 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
719
  const score = checks.reduce((total, check) => total + check.score, 0);
627
720
  const maxScore = checks.reduce((total, check) => total + check.maxScore, 0);
628
721
  return {
@@ -726,6 +819,7 @@ function printAgentDoctorReport(report) {
726
819
  console.log(`${pc.bold("Score:")} ${pc.cyan(`${report.score}/${report.maxScore}`)} ${pc.dim(`(${report.grade})`)}`);
727
820
  console.log(`${pc.bold("Framework:")} ${report.framework} ${pc.dim("•")} ${pc.bold("Entry:")} ${report.entry ?? "docs"} ${pc.dim("•")} ${pc.bold("Content:")} ${report.contentDir ?? "-"}`);
728
821
  console.log(`${pc.bold("Explicit agent-friendly pages:")} ${report.coverage.explicitPages}/${report.coverage.totalPages} pages ${pc.dim(`(${report.coverage.explicitCoverage}%)`)}`);
822
+ 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
823
  console.log();
730
824
  for (const check of report.checks) {
731
825
  console.log(`${formatStatus(check.status)} ${check.title} ${pc.dim(`(${check.score}/${check.maxScore})`)}`);
@@ -756,13 +850,31 @@ function printHumanDoctorReport(report) {
756
850
  for (const recommendation of report.recommendations) console.log(`- ${recommendation}`);
757
851
  }
758
852
  }
853
+ function serializeDoctorJsonReport(report) {
854
+ if (report.mode === "human") return {
855
+ ...report,
856
+ mode: "site"
857
+ };
858
+ return report;
859
+ }
860
+ function printDoctorJsonReport(report) {
861
+ console.log(JSON.stringify(serializeDoctorJsonReport(report), null, 2));
862
+ }
759
863
  async function runDoctor(options = {}) {
760
864
  if (options.mode === "human") {
761
865
  const report = await inspectHumanReadiness(options);
866
+ if (options.json) {
867
+ printDoctorJsonReport(report);
868
+ return report;
869
+ }
762
870
  printHumanDoctorReport(report);
763
871
  return report;
764
872
  }
765
873
  const report = await inspectAgentReadiness(options);
874
+ if (options.json) {
875
+ printDoctorJsonReport(report);
876
+ return report;
877
+ }
766
878
  printAgentDoctorReport(report);
767
879
  return report;
768
880
  }
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-Agkn2EQE.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-DcI00OQT.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-Agkn2EQE.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-Agkn2EQE.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-Agkn2EQE.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-DcI00OQT.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 };
@@ -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.50",
3
+ "version": "0.1.52",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",