@farming-labs/docs 0.2.10 → 0.2.13

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,7 +1,7 @@
1
1
  import "./reading-time-DPAazAGu.mjs";
2
2
  import "./agent-B7T4gauS.mjs";
3
3
  import "./robots-CDdD2o-Q.mjs";
4
- import "./sitemap-server-idLUrmmU.mjs";
4
+ import "./sitemap-server-CVSQQszk.mjs";
5
5
  import "./config-rHQQuz98.mjs";
6
6
  import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./codeblocks-BnwZNsYO.mjs";
7
7
 
@@ -1,5 +1,5 @@
1
1
  import { G as renderDocsAgentsDocument, X as resolveDocsAgentFeedbackConfig, a as DEFAULT_AGENT_MD_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, y as DEFAULT_OPENAPI_SCHEMA_ROUTE } from "./agent-B7T4gauS.mjs";
2
- import { S as resolveApiReferenceConfig } from "./sitemap-server-idLUrmmU.mjs";
2
+ import { S as resolveApiReferenceConfig } from "./sitemap-server-CVSQQszk.mjs";
3
3
  import { resolveDocsMcpConfig } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
5
  import { c as readNavTitle, f as readTopLevelStringProperty, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsConfigPath, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-rHQQuz98.mjs";
@@ -131,10 +131,10 @@ async function main() {
131
131
  printCloudHelp();
132
132
  process.exit(1);
133
133
  } else if (parsedCommand.command === "mcp") {
134
- const { runMcp } = await import("../mcp-B_OFsXRH.mjs");
134
+ const { runMcp } = await import("../mcp-Dvy_EkRx.mjs");
135
135
  await runMcp(mcpOptions);
136
136
  } else if (parsedCommand.command === "agent" && subcommand === "compact") {
137
- const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-C_62RAst.mjs");
137
+ const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-BW9TStpq.mjs");
138
138
  const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
139
139
  if (agentCompactOptions.help) {
140
140
  printAgentCompactHelp();
@@ -144,11 +144,11 @@ async function main() {
144
144
  } else if (parsedCommand.command === "agent") {
145
145
  console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
146
146
  console.error();
147
- const { printAgentCompactHelp } = await import("../agent-C_62RAst.mjs");
147
+ const { printAgentCompactHelp } = await import("../agent-BW9TStpq.mjs");
148
148
  printAgentCompactHelp();
149
149
  process.exit(1);
150
150
  } else if (parsedCommand.command === "agents" && subcommand === "generate") {
151
- const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-BbO9u2vP.mjs");
151
+ const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-Bhloif3y.mjs");
152
152
  const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
153
153
  if (agentsOptions.help) {
154
154
  printAgentsGenerateHelp();
@@ -158,11 +158,11 @@ async function main() {
158
158
  } else if (parsedCommand.command === "agents") {
159
159
  console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
160
160
  console.error();
161
- const { printAgentsGenerateHelp } = await import("../agents-BbO9u2vP.mjs");
161
+ const { printAgentsGenerateHelp } = await import("../agents-Bhloif3y.mjs");
162
162
  printAgentsGenerateHelp();
163
163
  process.exit(1);
164
164
  } else if (parsedCommand.command === "doctor") {
165
- const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-BnJYS39i.mjs");
165
+ const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-CRtFloHw.mjs");
166
166
  const doctorOptions = parseDoctorArgs(args.slice(1));
167
167
  if (doctorOptions.help) {
168
168
  printDoctorHelp();
@@ -192,7 +192,7 @@ async function main() {
192
192
  printCodeBlocksValidateHelp();
193
193
  process.exit(1);
194
194
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
195
- const { syncSearch } = await import("../search-DH6NeNJP.mjs");
195
+ const { syncSearch } = await import("../search-BXupn-c-.mjs");
196
196
  await syncSearch(searchSyncOptions);
197
197
  } else if (parsedCommand.command === "search") {
198
198
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
@@ -200,7 +200,7 @@ async function main() {
200
200
  printHelp();
201
201
  process.exit(1);
202
202
  } else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
203
- const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-GEz3BD3H.mjs");
203
+ const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-BfViRvLP.mjs");
204
204
  const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
205
205
  if (sitemapOptions.help) {
206
206
  printSitemapGenerateHelp();
@@ -210,7 +210,7 @@ async function main() {
210
210
  } else if (parsedCommand.command === "sitemap") {
211
211
  console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
212
212
  console.error();
213
- const { printSitemapGenerateHelp } = await import("../sitemap-GEz3BD3H.mjs");
213
+ const { printSitemapGenerateHelp } = await import("../sitemap-BfViRvLP.mjs");
214
214
  printSitemapGenerateHelp();
215
215
  process.exit(1);
216
216
  } else if (parsedCommand.command === "robots" && subcommand === "generate") {
@@ -341,6 +341,7 @@ ${pc.dim("Options for doctor:")}
341
341
  ${pc.cyan("doctor --human")} Alias for ${pc.cyan("doctor --site")}
342
342
  ${pc.cyan("doctor --json")} Print the report as JSON for CI, scripts, and automation
343
343
  ${pc.cyan("doctor --strict")} Exit with failure when any doctor check warns or fails
344
+ ${pc.cyan("doctor --fail-on warn|fail")} Choose whether warnings or only failures fail CI
344
345
  ${pc.cyan("doctor agent")} Subcommand alias for agent scoring
345
346
  ${pc.cyan("doctor site")} Subcommand alias for reader-facing scoring
346
347
  ${pc.cyan("doctor human")} Legacy alias for reader-facing scoring
@@ -2,7 +2,7 @@ import "./reading-time-DPAazAGu.mjs";
2
2
  import { a as DEFAULT_SITEMAP_XML_ROUTE, d as resolveDocsSitemapConfig, i as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, r as DEFAULT_SITEMAP_MD_ROUTE } from "./sitemap-CMNj0Pt3.mjs";
3
3
  import { O as buildDocsMcpEndpointCandidates, b as DEFAULT_SKILL_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, d as DEFAULT_LLMS_FULL_TXT_ROUTE, g as DEFAULT_MCP_PUBLIC_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_LLMS_TXT_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_MCP_WELL_KNOWN_ROUTE, x as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE } from "./agent-B7T4gauS.mjs";
4
4
  import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-CDdD2o-Q.mjs";
5
- import "./sitemap-server-idLUrmmU.mjs";
5
+ import "./sitemap-server-CVSQQszk.mjs";
6
6
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
7
7
  import "./server.mjs";
8
8
  import { a as loadProjectEnv, c as readNavTitle, f as readTopLevelStringProperty, i as loadDocsConfigModule, m as resolveDocsContentDir, o as readBooleanProperty, p as resolveDocsConfigPath, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-rHQQuz98.mjs";
@@ -37,6 +37,15 @@ function parseInlineFlag(arg) {
37
37
  value
38
38
  };
39
39
  }
40
+ function parseDoctorOnlyMode(value) {
41
+ if (value === "agent") return "agent";
42
+ if (value === "site") return "human";
43
+ throw new Error("Invalid value for --only. Expected agent or site.");
44
+ }
45
+ function parseDoctorFailOn(value) {
46
+ if (value === "warn" || value === "fail") return value;
47
+ throw new Error("Invalid value for --fail-on. Expected warn or fail.");
48
+ }
40
49
  function parseDoctorArgs(argv) {
41
50
  const parsed = {};
42
51
  for (let index = 0; index < argv.length; index += 1) {
@@ -57,6 +66,32 @@ function parseDoctorArgs(argv) {
57
66
  parsed.strict = true;
58
67
  continue;
59
68
  }
69
+ if (arg.startsWith("--fail-on=")) {
70
+ const value = parseInlineFlag(arg).value;
71
+ if (!value) throw new Error("Missing value for --fail-on.");
72
+ parsed.failOn = parseDoctorFailOn(value);
73
+ continue;
74
+ }
75
+ if (arg === "--fail-on") {
76
+ const value = argv[index + 1];
77
+ if (!value || value.startsWith("--")) throw new Error("Missing value for --fail-on.");
78
+ parsed.failOn = parseDoctorFailOn(value);
79
+ index += 1;
80
+ continue;
81
+ }
82
+ if (arg.startsWith("--only=")) {
83
+ const value = parseInlineFlag(arg).value;
84
+ if (!value) throw new Error("Missing value for --only.");
85
+ parsed.mode = parseDoctorOnlyMode(value);
86
+ continue;
87
+ }
88
+ if (arg === "--only") {
89
+ const value = argv[index + 1];
90
+ if (!value || value.startsWith("--")) throw new Error("Missing value for --only.");
91
+ parsed.mode = parseDoctorOnlyMode(value);
92
+ index += 1;
93
+ continue;
94
+ }
60
95
  if (arg === "--human" || arg === "human" || arg === "--site" || arg === "site") {
61
96
  parsed.mode = "human";
62
97
  continue;
@@ -102,6 +137,9 @@ ${pc.dim("Usage:")}
102
137
  pnpm exec docs doctor --site
103
138
  pnpm exec docs doctor --agent --json
104
139
  pnpm exec docs doctor --agent --strict
140
+ pnpm exec docs doctor --agent --fail-on fail
141
+ pnpm exec docs doctor --only agent
142
+ pnpm exec docs doctor --only site
105
143
  pnpm exec docs doctor agent
106
144
  pnpm exec docs doctor site
107
145
 
@@ -109,8 +147,10 @@ ${pc.dim("Options:")}
109
147
  ${pc.cyan("--agent")} Score agent-readiness for the current docs app (default)
110
148
  ${pc.cyan("--site")} Score reader-facing docs quality for the current docs app
111
149
  ${pc.cyan("--human")} Alias for ${pc.cyan("--site")}
150
+ ${pc.cyan("--only <mode>")} Run only one doctor suite: ${pc.cyan("agent")} or ${pc.cyan("site")}
112
151
  ${pc.cyan("--json")} Print the report as JSON for CI, scripts, and other agents
113
152
  ${pc.cyan("--strict")} Exit with failure when any check warns or fails
153
+ ${pc.cyan("--fail-on <level>")} Exit with failure on ${pc.cyan("warn")} or only on ${pc.cyan("fail")}
114
154
  ${pc.cyan("--url <url>")} Probe hosted agent surfaces, e.g. ${pc.dim("https://docs.example.com")}
115
155
  ${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
116
156
  ${pc.cyan("-h, --help")} Show this help message
@@ -1465,13 +1505,18 @@ function printDoctorJsonReport(report) {
1465
1505
  function hasNonPassingDoctorCheck(report) {
1466
1506
  return report.checks.some((check) => check.status !== "pass");
1467
1507
  }
1468
- function applyStrictExitCode(report, options) {
1469
- if (options.strict && hasNonPassingDoctorCheck(report)) process.exitCode = 1;
1508
+ function hasFailingDoctorCheck(report) {
1509
+ return report.checks.some((check) => check.status === "fail");
1510
+ }
1511
+ function applyDoctorExitCode(report, options) {
1512
+ const failOn = options.failOn ?? (options.strict ? "warn" : void 0);
1513
+ if (!failOn) return;
1514
+ if (failOn === "warn" ? hasNonPassingDoctorCheck(report) : hasFailingDoctorCheck(report)) process.exitCode = 1;
1470
1515
  }
1471
1516
  async function runDoctor(options = {}) {
1472
1517
  if (options.mode === "human") {
1473
1518
  const report = await inspectHumanReadiness(options);
1474
- applyStrictExitCode(report, options);
1519
+ applyDoctorExitCode(report, options);
1475
1520
  if (options.json) {
1476
1521
  printDoctorJsonReport(report);
1477
1522
  return report;
@@ -1480,7 +1525,7 @@ async function runDoctor(options = {}) {
1480
1525
  return report;
1481
1526
  }
1482
1527
  const report = await inspectAgentReadiness(options);
1483
- applyStrictExitCode(report, options);
1528
+ applyDoctorExitCode(report, options);
1484
1529
  if (options.json) {
1485
1530
  printDoctorJsonReport(report);
1486
1531
  return report;
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as DocsObservabilityEventInput, $t as SimpleDocsSearchConfig, A as DocsCloudApiKeyConfig, At as McpDocsSearchConfig, B as DocsCodeBlocksValidateConfig, Bt as PageFrontmatter, C as DocsAskAIActionData, Ct as FontStyle, D as DocsAskAIFeedbackMessage, Dt as LlmsTxtMaxCharsConfig, E as DocsAskAIFeedbackData, Et as LlmsTxtConfig, F as DocsCodeBlocksConfig, Ft as OpenDocsProviderId, G as DocsFeedbackValue, Gt as ResolvedDocsRelatedLink, H as DocsCodeBlocksValidationPolicy, Ht as PageSidebarFrontmatter, I as DocsCodeBlocksPlannerConfig, It as OpenDocsTarget, J as DocsMcpToolsConfig, Jt as SidebarFolderIndexBehavior, K as DocsI18nConfig, Kt as SidebarComponentProps, L as DocsCodeBlocksPlannerProvider, Lt as OpenGraphImage, M as DocsCloudFeatureConfig, Mt as OpenDocsConfig, N as DocsCloudPreviewConfig, Nt as OpenDocsProvider, O as DocsAskAIFeedbackValue, Ot as LlmsTxtMaxCharsMode, P as DocsCloudPublishConfig, Pt as OpenDocsProviderConfig, Q as DocsObservabilityEvent, Qt as SidebarTree, R as DocsCodeBlocksRunnerConfig, Rt as OrderingItem, S as DocsAnalyticsSource, St as FeedbackConfig, T as DocsAskAIFeedbackConfig, Tt as LastUpdatedConfig, U as DocsConfig, Ut as PageTwitter, V as DocsCodeBlocksValidationMode, Vt as PageOpenGraph, W as DocsFeedbackData, Wt as ReadingTimeConfig, X as DocsNav, Xt as SidebarNode, Y as DocsMetadata, Yt as SidebarFolderNode, Z as DocsObservabilityConfig, Zt as SidebarPageNode, _ as DocsAnalyticsConfig, _t as DocsSearchResult, a as ApiReferenceRenderer, at as DocsReviewScoreConfig, b as DocsAnalyticsEventType, bt as DocsSitemapConfig, c as ChangelogFrontmatter, ct as DocsRobotsRule, d as CustomDocsSearchConfig, dt as DocsSearchAdapterFactory, en as ThemeToggleConfig, et as DocsRelatedItem, f as DocsAgentFeedbackContext, ft as DocsSearchChunkingConfig, g as DocsAgentTraceStatus, gt as DocsSearchQuery, h as DocsAgentTraceEventType, ht as DocsSearchEmbeddingsConfig, i as ApiReferenceConfig, it as DocsReviewRulesConfig, j as DocsCloudConfig, jt as OGConfig, k as DocsAskAIMcpConfig, kt as LlmsTxtSectionConfig, l as CodeBlockCopyData, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, n as AgentFeedbackConfig, nn as TypographyConfig, nt as DocsReviewCiMode, o as BreadcrumbConfig, ot as DocsReviewSeverity, p as DocsAgentFeedbackData, pt as DocsSearchConfig, q as DocsMcpConfig, qt as SidebarConfig, r as AlgoliaDocsSearchConfig, rn as UIConfig, rt as DocsReviewConfig, s as ChangelogConfig, st as DocsRobotsConfig, t as AIConfig, tn as TypesenseDocsSearchConfig, tt as DocsReviewCiConfig, u as CopyMarkdownConfig, ut as DocsSearchAdapterContext, v as DocsAnalyticsEvent, vt as DocsSearchResultType, w as DocsAskAIActionType, wt as GithubConfig, x as DocsAnalyticsInput, xt as DocsTheme, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage, z as DocsCodeBlocksRunnerProvider, zt as PageActionsConfig } from "./types-BGPtO808.mjs";
2
- import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, L as PromptProviderChoice, O as resolveDocsSitemapConfig, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as resolveDocsObservabilityConfig, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsAnalyticsConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, rt as getDocsRequestAnalyticsProperties, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-eMt8hosB.mjs";
1
+ import { $ as DocsObservabilityEventInput, $t as SimpleDocsSearchConfig, A as DocsCloudApiKeyConfig, At as McpDocsSearchConfig, B as DocsCodeBlocksValidateConfig, Bt as PageFrontmatter, C as DocsAskAIActionData, Ct as FontStyle, D as DocsAskAIFeedbackMessage, Dt as LlmsTxtMaxCharsConfig, E as DocsAskAIFeedbackData, Et as LlmsTxtConfig, F as DocsCodeBlocksConfig, Ft as OpenDocsProviderId, G as DocsFeedbackValue, Gt as ResolvedDocsRelatedLink, H as DocsCodeBlocksValidationPolicy, Ht as PageSidebarFrontmatter, I as DocsCodeBlocksPlannerConfig, It as OpenDocsTarget, J as DocsMcpToolsConfig, Jt as SidebarFolderIndexBehavior, K as DocsI18nConfig, Kt as SidebarComponentProps, L as DocsCodeBlocksPlannerProvider, Lt as OpenGraphImage, M as DocsCloudFeatureConfig, Mt as OpenDocsConfig, N as DocsCloudPreviewConfig, Nt as OpenDocsProvider, O as DocsAskAIFeedbackValue, Ot as LlmsTxtMaxCharsMode, P as DocsCloudPublishConfig, Pt as OpenDocsProviderConfig, Q as DocsObservabilityEvent, Qt as SidebarTree, R as DocsCodeBlocksRunnerConfig, Rt as OrderingItem, S as DocsAnalyticsSource, St as FeedbackConfig, T as DocsAskAIFeedbackConfig, Tt as LastUpdatedConfig, U as DocsConfig, Ut as PageTwitter, V as DocsCodeBlocksValidationMode, Vt as PageOpenGraph, W as DocsFeedbackData, Wt as ReadingTimeConfig, X as DocsNav, Xt as SidebarNode, Y as DocsMetadata, Yt as SidebarFolderNode, Z as DocsObservabilityConfig, Zt as SidebarPageNode, _ as DocsAnalyticsConfig, _t as DocsSearchResult, a as ApiReferenceRenderer, at as DocsReviewScoreConfig, b as DocsAnalyticsEventType, bt as DocsSitemapConfig, c as ChangelogFrontmatter, ct as DocsRobotsRule, d as CustomDocsSearchConfig, dt as DocsSearchAdapterFactory, en as ThemeToggleConfig, et as DocsRelatedItem, f as DocsAgentFeedbackContext, ft as DocsSearchChunkingConfig, g as DocsAgentTraceStatus, gt as DocsSearchQuery, h as DocsAgentTraceEventType, ht as DocsSearchEmbeddingsConfig, i as ApiReferenceConfig, it as DocsReviewRulesConfig, j as DocsCloudConfig, jt as OGConfig, k as DocsAskAIMcpConfig, kt as LlmsTxtSectionConfig, l as CodeBlockCopyData, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, n as AgentFeedbackConfig, nn as TypographyConfig, nt as DocsReviewCiMode, o as BreadcrumbConfig, ot as DocsReviewSeverity, p as DocsAgentFeedbackData, pt as DocsSearchConfig, q as DocsMcpConfig, qt as SidebarConfig, r as AlgoliaDocsSearchConfig, rn as UIConfig, rt as DocsReviewConfig, s as ChangelogConfig, st as DocsRobotsConfig, t as AIConfig, tn as TypesenseDocsSearchConfig, tt as DocsReviewCiConfig, u as CopyMarkdownConfig, ut as DocsSearchAdapterContext, v as DocsAnalyticsEvent, vt as DocsSearchResultType, w as DocsAskAIActionType, wt as GithubConfig, x as DocsAnalyticsInput, xt as DocsTheme, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage, z as DocsCodeBlocksRunnerProvider, zt as PageActionsConfig } from "./types-C8N7L5oj.mjs";
2
+ import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, L as PromptProviderChoice, O as resolveDocsSitemapConfig, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as resolveDocsObservabilityConfig, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsAnalyticsConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, rt as getDocsRequestAnalyticsProperties, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-BJ3jR_zY.mjs";
3
3
  import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
4
4
 
5
5
  //#region src/define-docs.d.ts
@@ -1,4 +1,4 @@
1
- import "./sitemap-server-idLUrmmU.mjs";
1
+ import "./sitemap-server-CVSQQszk.mjs";
2
2
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
3
3
  import "./server.mjs";
4
4
  import { c as readNavTitle, m as resolveDocsContentDir, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsConfigPath, u as readStringProperty } from "./config-rHQQuz98.mjs";
package/dist/mcp.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Rt as OrderingItem, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, pt as DocsSearchConfig, q as DocsMcpConfig, yt as DocsSearchSourcePage } from "./types-BGPtO808.mjs";
1
+ import { Rt as OrderingItem, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, pt as DocsSearchConfig, q as DocsMcpConfig, yt as DocsSearchSourcePage } from "./types-C8N7L5oj.mjs";
2
2
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
3
3
 
4
4
  //#region src/mcp.d.ts
@@ -1,4 +1,4 @@
1
- import { $ as DocsObservabilityEventInput, At as McpDocsSearchConfig, Gt as ResolvedDocsRelatedLink, It as OpenDocsTarget, Nt as OpenDocsProvider, Q as DocsObservabilityEvent, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, _t as DocsSearchResult, bt as DocsSitemapConfig, d as CustomDocsSearchConfig, dt as DocsSearchAdapterFactory, ft as DocsSearchChunkingConfig, k as DocsAskAIMcpConfig, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, pt as DocsSearchConfig, r as AlgoliaDocsSearchConfig, tn as TypesenseDocsSearchConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage } from "./types-BGPtO808.mjs";
1
+ import { $ as DocsObservabilityEventInput, At as McpDocsSearchConfig, Gt as ResolvedDocsRelatedLink, It as OpenDocsTarget, Nt as OpenDocsProvider, Q as DocsObservabilityEvent, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, _t as DocsSearchResult, bt as DocsSitemapConfig, d as CustomDocsSearchConfig, dt as DocsSearchAdapterFactory, ft as DocsSearchChunkingConfig, k as DocsAskAIMcpConfig, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, pt as DocsSearchConfig, r as AlgoliaDocsSearchConfig, tn as TypesenseDocsSearchConfig, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage } from "./types-C8N7L5oj.mjs";
2
2
 
3
3
  //#region src/analytics.d.ts
4
4
  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,5 +1,5 @@
1
1
  import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-B3JYx2zk.mjs";
2
- import "./sitemap-server-idLUrmmU.mjs";
2
+ import "./sitemap-server-CVSQQszk.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
5
  import { a as loadProjectEnv, f as readTopLevelStringProperty, m as resolveDocsContentDir, p as resolveDocsConfigPath } from "./config-rHQQuz98.mjs";
package/dist/server.d.mts CHANGED
@@ -1,5 +1,5 @@
1
- import { $ as DocsObservabilityEventInput, At as McpDocsSearchConfig, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, O as DocsAskAIFeedbackValue, Q as DocsObservabilityEvent, T as DocsAskAIFeedbackConfig, U as DocsConfig, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, _t as DocsSearchResult, a as ApiReferenceRenderer, bt as DocsSitemapConfig, dt as DocsSearchAdapterFactory, g as DocsAgentTraceStatus, gt as DocsSearchQuery, h as DocsAgentTraceEventType, it as DocsReviewRulesConfig, k as DocsAskAIMcpConfig, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, nt as DocsReviewCiMode, pt as DocsSearchConfig, rt as DocsReviewConfig, ut as DocsSearchAdapterContext, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage } from "./types-BGPtO808.mjs";
2
- import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, B as normalizePromptProviderName, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, F as DEFAULT_PROMPT_PROVIDER_TEMPLATES, G as serializeDocsIconRegistry, H as resolvePromptProviderChoices, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, K as serializeOpenDocsProvider, L as PromptProviderChoice, M as DEFAULT_OPEN_DOCS_PROMPT, N as DEFAULT_OPEN_DOCS_PROVIDER_IDS, O as resolveDocsSitemapConfig, P as DEFAULT_OPEN_DOCS_TARGET, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, U as sanitizePromptText, V as parsePromptStringArray, W as serializeDocsIcon, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as resolveDocsObservabilityConfig, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsAnalyticsConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, q as serializeOpenDocsProviders, r as createAlgoliaSearchAdapter, rt as getDocsRequestAnalyticsProperties, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-eMt8hosB.mjs";
1
+ import { $ as DocsObservabilityEventInput, At as McpDocsSearchConfig, D as DocsAskAIFeedbackMessage, E as DocsAskAIFeedbackData, O as DocsAskAIFeedbackValue, Q as DocsObservabilityEvent, T as DocsAskAIFeedbackConfig, U as DocsConfig, Z as DocsObservabilityConfig, _ as DocsAnalyticsConfig, _t as DocsSearchResult, a as ApiReferenceRenderer, bt as DocsSitemapConfig, dt as DocsSearchAdapterFactory, g as DocsAgentTraceStatus, gt as DocsSearchQuery, h as DocsAgentTraceEventType, it as DocsReviewRulesConfig, k as DocsAskAIMcpConfig, lt as DocsSearchAdapter, m as DocsAgentTraceEventInput, mt as DocsSearchDocument, nt as DocsReviewCiMode, pt as DocsSearchConfig, rt as DocsReviewConfig, ut as DocsSearchAdapterContext, v as DocsAnalyticsEvent, y as DocsAnalyticsEventInput, yt as DocsSearchSourcePage } from "./types-C8N7L5oj.mjs";
2
+ import { $ as createDocsAgentTraceId, A as resolveDocsSitemapRequest, B as normalizePromptProviderName, C as buildDocsSitemapManifest, D as renderDocsSitemapXml, E as renderDocsSitemapMarkdown, F as DEFAULT_PROMPT_PROVIDER_TEMPLATES, G as serializeDocsIconRegistry, H as resolvePromptProviderChoices, I as PromptAction, J as DOCS_AGENT_TRACE_EVENT_TYPES, K as serializeOpenDocsProvider, L as PromptProviderChoice, M as DEFAULT_OPEN_DOCS_PROMPT, N as DEFAULT_OPEN_DOCS_PROVIDER_IDS, O as resolveDocsSitemapConfig, P as DEFAULT_OPEN_DOCS_TARGET, Q as createDocsAgentTraceContext, R as SerializeOpenDocsProviderOptions, S as DocsSitemapResolvedConfig, T as readDocsSitemapManifestFromContentMap, U as sanitizePromptText, V as parsePromptStringArray, W as serializeDocsIcon, X as ResolvedDocsAnalyticsConfig, Y as DocsAgentTraceContext, Z as ResolvedDocsObservabilityConfig, _ as DEFAULT_SITEMAP_XML_ROUTE, a as createMcpSearchAdapter, at as resolveDocsObservabilityConfig, b as DocsSitemapManifestPage, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, et as emitDocsAgentTraceEvent, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, h as DEFAULT_SITEMAP_MD_ROUTE, i as createCustomSearchAdapter, it as resolveDocsAnalyticsConfig, j as toDocsSitemapMarkdownUrl, k as resolveDocsSitemapPageLastmod, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_DOCS_ROUTE, n as buildDocsSearchDocuments, nt as emitDocsObservabilityEvent, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, q as serializeOpenDocsProviders, r as createAlgoliaSearchAdapter, rt as getDocsRequestAnalyticsProperties, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, tt as emitDocsAnalyticsEvent, u as performDocsSearch, v as DocsSitemapFormat, w as createDocsSitemapResponse, x as DocsSitemapPageInput, y as DocsSitemapManifest, z as SerializedOpenDocsProvider } from "./search-BJ3jR_zY.mjs";
3
3
  import { DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
4
4
 
5
5
  //#region src/code-group-mdx.d.ts
package/dist/server.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { A as getDocsRequestAnalyticsProperties, D as emitDocsAgentTraceEvent, E as createDocsAgentTraceId, M as resolveDocsObservabilityConfig, O as emitDocsAnalyticsEvent, T as createDocsAgentTraceContext, a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, i as createCustomSearchAdapter, j as resolveDocsAnalyticsConfig, k as emitDocsObservabilityEvent, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, w as DOCS_AGENT_TRACE_EVENT_TYPES } from "./search-B3JYx2zk.mjs";
2
2
  import { a as DEFAULT_SITEMAP_XML_ROUTE, c as readDocsSitemapManifestFromContentMap, d as resolveDocsSitemapConfig, f as resolveDocsSitemapPageLastmod, i as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as renderDocsSitemapMarkdown, m as toDocsSitemapMarkdownUrl, n as DEFAULT_SITEMAP_MD_DOCS_ROUTE, o as buildDocsSitemapManifest, p as resolveDocsSitemapRequest, r as DEFAULT_SITEMAP_MD_ROUTE, s as createDocsSitemapResponse, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as renderDocsSitemapXml } from "./sitemap-CMNj0Pt3.mjs";
3
- import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, T as remarkCodeGroup, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-idLUrmmU.mjs";
3
+ import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, T as remarkCodeGroup, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-CVSQQszk.mjs";
4
4
  import { a as ensureDocsReviewWorkflow, i as buildDocsReviewWorkflowPathFilters, n as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, o as readDocsReviewConfigFromSource, r as buildDocsReviewWorkflow, s as resolveDocsReviewConfig, t as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD } from "./review-B7goPYUb.mjs";
5
5
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
6
6
 
@@ -1,5 +1,5 @@
1
1
  import { d as resolveDocsSitemapConfig, l as renderDocsSitemapMarkdown, o as buildDocsSitemapManifest, u as renderDocsSitemapXml } from "./sitemap-CMNj0Pt3.mjs";
2
- import "./sitemap-server-idLUrmmU.mjs";
2
+ import "./sitemap-server-CVSQQszk.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
4
  import "./server.mjs";
5
5
  import { c as readNavTitle, f as readTopLevelStringProperty, i as loadDocsConfigModule, m as resolveDocsContentDir, o as readBooleanProperty, p as resolveDocsConfigPath, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-rHQQuz98.mjs";
@@ -966,7 +966,8 @@ const DEFAULT_PROMPT_PROVIDER_TEMPLATES = {
966
966
  claude: "https://claude.ai/new?q={prompt}",
967
967
  cursor: "https://cursor.com/link/prompt?text={prompt}",
968
968
  gemini: "https://gemini.google.com/app?q={prompt}",
969
- copilot: "https://github.com/copilot?prompt={prompt}"
969
+ copilot: "https://github.com/copilot?prompt={prompt}",
970
+ perplexity: "https://www.perplexity.ai/search/?q={prompt}"
970
971
  };
971
972
  const DEFAULT_OPEN_DOCS_TARGET = "markdown";
972
973
  const DEFAULT_OPEN_DOCS_PROMPT = "Read this documentation: {url}";
@@ -997,6 +998,11 @@ const DEFAULT_OPEN_DOCS_PROVIDER_PRESETS = {
997
998
  urlTemplate: "https://github.com/copilot?prompt={prompt}",
998
999
  promptUrlTemplate: DEFAULT_PROMPT_PROVIDER_TEMPLATES.copilot
999
1000
  },
1001
+ perplexity: {
1002
+ name: "Perplexity",
1003
+ urlTemplate: "https://www.perplexity.ai/search/?q={prompt}",
1004
+ promptUrlTemplate: DEFAULT_PROMPT_PROVIDER_TEMPLATES.perplexity
1005
+ },
1000
1006
  github: {
1001
1007
  name: "GitHub",
1002
1008
  urlTemplate: "{githubUrl}",
@@ -520,7 +520,7 @@ interface SidebarConfig {
520
520
  folderIndexBehaviorOverrides?: SidebarFolderIndexBehaviorOverrides;
521
521
  }
522
522
  type OpenDocsTarget = "markdown" | "page" | "source" | "github";
523
- type OpenDocsProviderId = "chatgpt" | "claude" | "cursor" | "gemini" | "copilot" | "github";
523
+ type OpenDocsProviderId = "chatgpt" | "claude" | "cursor" | "gemini" | "copilot" | "perplexity" | "github";
524
524
  /**
525
525
  * A single "Open in …" provider shown in the Open dropdown.
526
526
  *
@@ -582,7 +582,7 @@ interface OpenDocsProviderConfig {
582
582
  /**
583
583
  * Optional URL template used by the built-in `Prompt` MDX component.
584
584
  * When omitted, known providers such as ChatGPT, Claude, Cursor, Gemini,
585
- * and Copilot fall back to a built-in `{prompt}` template by provider name.
585
+ * Copilot, and Perplexity fall back to a built-in `{prompt}` template by provider name.
586
586
  *
587
587
  * Placeholders:
588
588
  * - `{prompt}` — prompt text (encoded).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.2.10",
3
+ "version": "0.2.13",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",