@farming-labs/docs 0.2.36 → 0.2.38

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.
@@ -2,7 +2,7 @@ import "./reading-time-CPAy1SWO.mjs";
2
2
  import "./search-CCLIVI86.mjs";
3
3
  import "./agent-B6szuz_8.mjs";
4
4
  import "./robots-CVoC0w0i.mjs";
5
- import "./sitemap-server-BKS8ZcqC.mjs";
5
+ import "./sitemap-server--TxO6rGi.mjs";
6
6
  import "./config-De5z-2LK.mjs";
7
7
  import { a as readPageTokenBudget, i as printAgentCompactHelp, n as inspectAgentCompactionState, o as scanDocsPageTargets, r as parseAgentCompactArgs, t as compactAgentDocs } from "./codeblocks-CZ4ksbeK.mjs";
8
8
 
@@ -1,6 +1,6 @@
1
1
  import "./search-CCLIVI86.mjs";
2
2
  import { $ as renderDocsAgentsDocument, C as DEFAULT_OPENAPI_SCHEMA_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, it as resolveDocsAgentFeedbackConfig, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE } from "./agent-B6szuz_8.mjs";
3
- import { w as resolveApiReferenceConfig } from "./sitemap-server-BKS8ZcqC.mjs";
3
+ import { w as resolveApiReferenceConfig } from "./sitemap-server--TxO6rGi.mjs";
4
4
  import { resolveDocsMcpConfig } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  import { c as readNavTitle, f as readTopLevelStringProperty, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsConfigPath, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-De5z-2LK.mjs";
@@ -138,10 +138,10 @@ async function main() {
138
138
  printCloudHelp();
139
139
  process.exit(1);
140
140
  } else if (parsedCommand.command === "mcp") {
141
- const { runMcp } = await import("../mcp-ZHerPGdA.mjs");
141
+ const { runMcp } = await import("../mcp-IzaAkFGS.mjs");
142
142
  await runMcp(mcpOptions);
143
143
  } else if (parsedCommand.command === "agent" && subcommand === "compact") {
144
- const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-ClpV1v42.mjs");
144
+ const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-BjlgUwmW.mjs");
145
145
  const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
146
146
  if (agentCompactOptions.help) {
147
147
  printAgentCompactHelp();
@@ -151,11 +151,11 @@ async function main() {
151
151
  } else if (parsedCommand.command === "agent") {
152
152
  console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
153
153
  console.error();
154
- const { printAgentCompactHelp } = await import("../agent-ClpV1v42.mjs");
154
+ const { printAgentCompactHelp } = await import("../agent-BjlgUwmW.mjs");
155
155
  printAgentCompactHelp();
156
156
  process.exit(1);
157
157
  } else if (parsedCommand.command === "agents" && subcommand === "generate") {
158
- const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-DYapIiBa.mjs");
158
+ const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-C3O0I2iR.mjs");
159
159
  const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
160
160
  if (agentsOptions.help) {
161
161
  printAgentsGenerateHelp();
@@ -165,11 +165,11 @@ async function main() {
165
165
  } else if (parsedCommand.command === "agents") {
166
166
  console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
167
167
  console.error();
168
- const { printAgentsGenerateHelp } = await import("../agents-DYapIiBa.mjs");
168
+ const { printAgentsGenerateHelp } = await import("../agents-C3O0I2iR.mjs");
169
169
  printAgentsGenerateHelp();
170
170
  process.exit(1);
171
171
  } else if (parsedCommand.command === "doctor") {
172
- const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-UyXx1j5A.mjs");
172
+ const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-B5HXAHzl.mjs");
173
173
  const doctorOptions = parseDoctorArgs(args.slice(1));
174
174
  if (doctorOptions.help) {
175
175
  printDoctorHelp();
@@ -199,7 +199,7 @@ async function main() {
199
199
  printCodeBlocksValidateHelp();
200
200
  process.exit(1);
201
201
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
202
- const { syncSearch } = await import("../search-COEZQr_e.mjs");
202
+ const { syncSearch } = await import("../search-BaoPusEb.mjs");
203
203
  await syncSearch(searchSyncOptions);
204
204
  } else if (parsedCommand.command === "search") {
205
205
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
@@ -207,7 +207,7 @@ async function main() {
207
207
  printHelp();
208
208
  process.exit(1);
209
209
  } else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
210
- const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-ErRkKP-K.mjs");
210
+ const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-BzumWs0b.mjs");
211
211
  const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
212
212
  if (sitemapOptions.help) {
213
213
  printSitemapGenerateHelp();
@@ -217,7 +217,7 @@ async function main() {
217
217
  } else if (parsedCommand.command === "sitemap") {
218
218
  console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
219
219
  console.error();
220
- const { printSitemapGenerateHelp } = await import("../sitemap-ErRkKP-K.mjs");
220
+ const { printSitemapGenerateHelp } = await import("../sitemap-BzumWs0b.mjs");
221
221
  printSitemapGenerateHelp();
222
222
  process.exit(1);
223
223
  } else if (parsedCommand.command === "robots" && subcommand === "generate") {
@@ -2,7 +2,7 @@ import "./reading-time-CPAy1SWO.mjs";
2
2
  import "./search-CCLIVI86.mjs";
3
3
  import { Ct as DEFAULT_SITEMAP_XML_ROUTE, P as buildDocsMcpEndpointCandidates, S as DEFAULT_MCP_WELL_KNOWN_ROUTE, St as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, T as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, b as DEFAULT_MCP_PUBLIC_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as resolveDocsSitemapConfig, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, w as DEFAULT_SKILL_MD_ROUTE, xt as DEFAULT_SITEMAP_MD_ROUTE } from "./agent-B6szuz_8.mjs";
4
4
  import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-CVoC0w0i.mjs";
5
- import "./sitemap-server-BKS8ZcqC.mjs";
5
+ import "./sitemap-server--TxO6rGi.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-De5z-2LK.mjs";
@@ -1,6 +1,6 @@
1
1
  import "./search-CCLIVI86.mjs";
2
2
  import "./agent-B6szuz_8.mjs";
3
- import "./sitemap-server-BKS8ZcqC.mjs";
3
+ import "./sitemap-server--TxO6rGi.mjs";
4
4
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  import { c as readNavTitle, m as resolveDocsContentDir, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsConfigPath, u as readStringProperty } from "./config-De5z-2LK.mjs";
@@ -1,6 +1,6 @@
1
1
  import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-CCLIVI86.mjs";
2
2
  import "./agent-B6szuz_8.mjs";
3
- import "./sitemap-server-BKS8ZcqC.mjs";
3
+ import "./sitemap-server--TxO6rGi.mjs";
4
4
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  import { a as loadProjectEnv, f as readTopLevelStringProperty, m as resolveDocsContentDir, p as resolveDocsConfigPath } from "./config-De5z-2LK.mjs";
package/dist/server.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { F as emitDocsAnalyticsEvent, I as emitDocsObservabilityEvent, L as getDocsRequestAnalyticsProperties, M as createDocsAgentTraceContext, N as createDocsAgentTraceId, P as emitDocsAgentTraceEvent, R as resolveDocsAnalyticsConfig, a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, i as createCustomSearchAdapter, j as DOCS_AGENT_TRACE_EVENT_TYPES, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, z as resolveDocsObservabilityConfig } from "./search-CCLIVI86.mjs";
2
2
  import { At as resolveDocsSitemapPageLastmod, Ct as DEFAULT_SITEMAP_XML_ROUTE, Dt as renderDocsSitemapMarkdown, Et as readDocsSitemapManifestFromContentMap, Mt as toDocsSitemapMarkdownUrl, Ot as renderDocsSitemapXml, St as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, Tt as createDocsSitemapResponse, bt as DEFAULT_SITEMAP_MD_DOCS_ROUTE, jt as resolveDocsSitemapRequest, kt as resolveDocsSitemapConfig, wt as buildDocsSitemapManifest, xt as DEFAULT_SITEMAP_MD_ROUTE, yt as DEFAULT_SITEMAP_MANIFEST_PATH } from "./agent-B6szuz_8.mjs";
3
- import { C as isApiReferenceOpenApiRequest, D as remarkCodeGroup, E as resolveApiReferenceRenderer, S as buildApiReferenceScalarCss, T as resolveApiReferenceOpenApiDiscovery, _ as buildApiReferenceHtmlDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceOpenApiDocumentAsync, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, h as isDocsCloudAskAIProvider, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as createDocsCloudAskAIResponse, 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 buildApiReferenceHtmlDocumentAsync, w as resolveApiReferenceConfig, x as buildApiReferencePageTitle, y as buildApiReferenceOpenApiDocument } from "./sitemap-server-BKS8ZcqC.mjs";
3
+ import { C as isApiReferenceOpenApiRequest, D as remarkCodeGroup, E as resolveApiReferenceRenderer, S as buildApiReferenceScalarCss, T as resolveApiReferenceOpenApiDiscovery, _ as buildApiReferenceHtmlDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceOpenApiDocumentAsync, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, h as isDocsCloudAskAIProvider, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as createDocsCloudAskAIResponse, 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 buildApiReferenceHtmlDocumentAsync, w as resolveApiReferenceConfig, x as buildApiReferencePageTitle, y as buildApiReferenceOpenApiDocument } from "./sitemap-server--TxO6rGi.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-CJD85JTm.mjs";
5
5
  import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
6
6
 
@@ -1,6 +1,6 @@
1
1
  import "./search-CCLIVI86.mjs";
2
2
  import { Dt as renderDocsSitemapMarkdown, Ot as renderDocsSitemapXml, kt as resolveDocsSitemapConfig, wt as buildDocsSitemapManifest } from "./agent-B6szuz_8.mjs";
3
- import "./sitemap-server-BKS8ZcqC.mjs";
3
+ import "./sitemap-server--TxO6rGi.mjs";
4
4
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
5
5
  import "./server.mjs";
6
6
  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-De5z-2LK.mjs";
@@ -975,7 +975,8 @@ const DOCS_CLOUD_API_BASE_URL_ENVS = [
975
975
  "NEXT_PUBLIC_DOCS_CLOUD_URL"
976
976
  ];
977
977
  const DOCS_CLOUD_FOOTER_GUARD_CHARS = 256;
978
- const docsCloudRelevantDocsPattern = /\n{2,}(?:-{3,}|\*{3,}|_{3,})[ \t]*\n{1,3}(?:\*\*)?Relevant docs(?:\*\*)?[ \t]*/i;
978
+ const docsCloudRelevantDocsPattern = /\n{2,}(?:-{3,}|\*{3,}|_{3,})[ \t]*\n{1,3}(?:#{1,6}[ \t]+)?(?:\*\*)?Relevant docs(?:\*\*)?[ \t]*/i;
979
+ const docsCloudThematicBreakPattern = /^[ \t]*(?:-{3,}|\*{3,}|_{3,})[ \t]*$/gm;
979
980
  function isPlainObject(value) {
980
981
  return typeof value === "object" && value !== null && !Array.isArray(value);
981
982
  }
@@ -1032,11 +1033,17 @@ function shouldStreamResponse(request, body, aiConfig) {
1032
1033
  function stripRelevantDocsFooter(content) {
1033
1034
  return content.replace(new RegExp(`${docsCloudRelevantDocsPattern.source}[\\s\\S]*$`, "i"), "").trimEnd();
1034
1035
  }
1036
+ function stripMarkdownThematicBreaks(content) {
1037
+ return content.replace(docsCloudThematicBreakPattern, "").replace(/\n{3,}/g, "\n\n").trimEnd();
1038
+ }
1039
+ function cleanDocsCloudAnswer(content) {
1040
+ return stripMarkdownThematicBreaks(stripRelevantDocsFooter(content));
1041
+ }
1035
1042
  function safeDocsCloudContent(content, final = false) {
1036
1043
  const footerStart = content.search(docsCloudRelevantDocsPattern);
1037
- if (footerStart >= 0) return content.slice(0, footerStart).trimEnd();
1038
- if (final) return stripRelevantDocsFooter(content);
1039
- return content.slice(0, Math.max(0, content.length - DOCS_CLOUD_FOOTER_GUARD_CHARS));
1044
+ if (footerStart >= 0) return stripMarkdownThematicBreaks(content.slice(0, footerStart));
1045
+ if (final) return cleanDocsCloudAnswer(content);
1046
+ return stripMarkdownThematicBreaks(content.slice(0, Math.max(0, content.length - DOCS_CLOUD_FOOTER_GUARD_CHARS)));
1040
1047
  }
1041
1048
  function createOpenAICompatibleSseChunk(content) {
1042
1049
  return `data: ${JSON.stringify({ choices: [{ delta: { content } }] })}\n\n`;
@@ -1323,7 +1330,7 @@ async function createDocsCloudAskAIResponse(request, options = {}) {
1323
1330
  payload = JSON.parse(upstreamBody);
1324
1331
  answer = docsCloudAnswerFromPayload(payload) || answer;
1325
1332
  } catch {}
1326
- const cleanAnswer = stripRelevantDocsFooter(answer);
1333
+ const cleanAnswer = cleanDocsCloudAnswer(answer);
1327
1334
  if (stream) return createOpenAICompatibleSseResponse(cleanAnswer);
1328
1335
  return Response.json(isPlainObject(payload) ? {
1329
1336
  ...payload,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/docs",
3
- "version": "0.2.36",
3
+ "version": "0.2.38",
4
4
  "description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
5
5
  "keywords": [
6
6
  "docs",