@farming-labs/docs 0.1.81 → 0.1.83
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.
- package/dist/{agent-C1EGa9Ot.mjs → agent-D97eZuWH.mjs} +5 -4
- package/dist/cli/index.mjs +33 -10
- package/dist/{dev-zn7AkGBT.mjs → dev-D4aVZkZl.mjs} +2 -2
- package/dist/{doctor-BBiL70Ec.mjs → doctor-DHUZK-iX.mjs} +86 -8
- package/dist/index.d.mts +38 -3
- package/dist/index.mjs +6 -4
- package/dist/{init-BBdFgtTm.mjs → init-Bt-RwmSW.mjs} +2 -2
- package/dist/{mcp-BPW62uf-.mjs → mcp-OVgCyHrR.mjs} +3 -3
- package/dist/mcp.d.mts +1 -1
- package/dist/mcp.mjs +2 -1
- package/dist/reading-time-pKUeloSI.mjs +315 -0
- package/dist/related-BNj_NdHq.mjs +50 -0
- package/dist/{agent-BbhLbeC7.mjs → robots-DCR-ZFLO.mjs} +166 -315
- package/dist/robots-Div3kkxI.mjs +177 -0
- package/dist/{search-kP0mAXCp.mjs → search-B5ze-heM.mjs} +1 -50
- package/dist/{search-D6uAGmiH.d.mts → search-BH07-Otd.d.mts} +1 -1
- package/dist/{search-DD2SP_hD.mjs → search-BIL0Zap1.mjs} +3 -3
- package/dist/server.d.mts +2 -2
- package/dist/server.mjs +3 -3
- package/dist/{sitemap-DCR8tuA7.mjs → sitemap-C2ocmew_.mjs} +5 -5
- package/dist/{sitemap-server-B370zkEo.mjs → sitemap-server-C8Ppk29g.mjs} +1 -1
- package/dist/{types-OAHZJ7NI.d.mts → types-Ch0kE7uS.d.mts} +57 -1
- package/dist/{upgrade-upRj5Fw-.mjs → upgrade-D9c60phM.mjs} +1 -1
- package/package.json +1 -1
- /package/dist/{config-C7sUsMkm.mjs → config-BR6CcCfr.mjs} +0 -0
- /package/dist/{sitemap-Buobvabq.mjs → sitemap-Ccfh6GXO.mjs} +0 -0
- /package/dist/{templates-BIk7zhQ3.mjs → templates-CtPtjNu5.mjs} +0 -0
- /package/dist/{utils-l0lcezN8.mjs → utils-AmYxHDoz.mjs} +0 -0
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { _ as parseGeneratedAgentDocument, h as hashGeneratedAgentContent, m as GENERATED_AGENT_PROVENANCE_VERSION, v as serializeGeneratedAgentDocument } from "./search-
|
|
1
|
+
import "./reading-time-pKUeloSI.mjs";
|
|
2
|
+
import { _ as parseGeneratedAgentDocument, h as hashGeneratedAgentContent, m as GENERATED_AGENT_PROVENANCE_VERSION, v as serializeGeneratedAgentDocument } from "./search-B5ze-heM.mjs";
|
|
3
|
+
import { D as findDocsMarkdownPage, I as renderDocsMarkdownDocument } from "./robots-DCR-ZFLO.mjs";
|
|
3
4
|
import "./index.mjs";
|
|
4
|
-
import "./sitemap-server-
|
|
5
|
+
import "./sitemap-server-C8Ppk29g.mjs";
|
|
5
6
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
6
7
|
import "./server.mjs";
|
|
7
|
-
import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, l as readNumberProperty, o as readBooleanProperty, p as resolveDocsContentDir, s as readEnvReferenceProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-
|
|
8
|
+
import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, l as readNumberProperty, o as readBooleanProperty, p as resolveDocsContentDir, s as readEnvReferenceProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-BR6CcCfr.mjs";
|
|
8
9
|
import matter from "gray-matter";
|
|
9
10
|
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
10
11
|
import path from "node:path";
|
package/dist/cli/index.mjs
CHANGED
|
@@ -77,16 +77,16 @@ async function main() {
|
|
|
77
77
|
searchApiKey: typeof flags["search-api-key"] === "string" ? flags["search-api-key"] : void 0
|
|
78
78
|
};
|
|
79
79
|
if (!parsedCommand.command || parsedCommand.command === "init") {
|
|
80
|
-
const { init } = await import("../init-
|
|
80
|
+
const { init } = await import("../init-Bt-RwmSW.mjs");
|
|
81
81
|
await init(initOptions);
|
|
82
82
|
} else if (parsedCommand.command === "dev") {
|
|
83
|
-
const { dev } = await import("../dev-
|
|
83
|
+
const { dev } = await import("../dev-D4aVZkZl.mjs");
|
|
84
84
|
await dev(devOptions);
|
|
85
85
|
} else if (parsedCommand.command === "mcp") {
|
|
86
|
-
const { runMcp } = await import("../mcp-
|
|
86
|
+
const { runMcp } = await import("../mcp-OVgCyHrR.mjs");
|
|
87
87
|
await runMcp(mcpOptions);
|
|
88
88
|
} else if (parsedCommand.command === "agent" && subcommand === "compact") {
|
|
89
|
-
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-
|
|
89
|
+
const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-D97eZuWH.mjs");
|
|
90
90
|
const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
|
|
91
91
|
if (agentCompactOptions.help) {
|
|
92
92
|
printAgentCompactHelp();
|
|
@@ -96,11 +96,11 @@ async function main() {
|
|
|
96
96
|
} else if (parsedCommand.command === "agent") {
|
|
97
97
|
console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
|
|
98
98
|
console.error();
|
|
99
|
-
const { printAgentCompactHelp } = await import("../agent-
|
|
99
|
+
const { printAgentCompactHelp } = await import("../agent-D97eZuWH.mjs");
|
|
100
100
|
printAgentCompactHelp();
|
|
101
101
|
process.exit(1);
|
|
102
102
|
} else if (parsedCommand.command === "doctor") {
|
|
103
|
-
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-
|
|
103
|
+
const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-DHUZK-iX.mjs");
|
|
104
104
|
const doctorOptions = parseDoctorArgs(args.slice(1));
|
|
105
105
|
if (doctorOptions.help) {
|
|
106
106
|
printDoctorHelp();
|
|
@@ -108,7 +108,7 @@ async function main() {
|
|
|
108
108
|
}
|
|
109
109
|
await runDoctor(doctorOptions);
|
|
110
110
|
} else if (parsedCommand.command === "search" && subcommand === "sync") {
|
|
111
|
-
const { syncSearch } = await import("../search-
|
|
111
|
+
const { syncSearch } = await import("../search-BIL0Zap1.mjs");
|
|
112
112
|
await syncSearch(searchSyncOptions);
|
|
113
113
|
} else if (parsedCommand.command === "search") {
|
|
114
114
|
console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
|
|
@@ -116,7 +116,7 @@ async function main() {
|
|
|
116
116
|
printHelp();
|
|
117
117
|
process.exit(1);
|
|
118
118
|
} else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
|
|
119
|
-
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-
|
|
119
|
+
const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-C2ocmew_.mjs");
|
|
120
120
|
const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
|
|
121
121
|
if (sitemapOptions.help) {
|
|
122
122
|
printSitemapGenerateHelp();
|
|
@@ -126,11 +126,25 @@ async function main() {
|
|
|
126
126
|
} else if (parsedCommand.command === "sitemap") {
|
|
127
127
|
console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
|
|
128
128
|
console.error();
|
|
129
|
-
const { printSitemapGenerateHelp } = await import("../sitemap-
|
|
129
|
+
const { printSitemapGenerateHelp } = await import("../sitemap-C2ocmew_.mjs");
|
|
130
130
|
printSitemapGenerateHelp();
|
|
131
131
|
process.exit(1);
|
|
132
|
+
} else if (parsedCommand.command === "robots" && subcommand === "generate") {
|
|
133
|
+
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-Div3kkxI.mjs");
|
|
134
|
+
const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
|
|
135
|
+
if (robotsOptions.help) {
|
|
136
|
+
printRobotsGenerateHelp();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
await generateRobots(robotsOptions);
|
|
140
|
+
} else if (parsedCommand.command === "robots") {
|
|
141
|
+
console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
|
|
142
|
+
console.error();
|
|
143
|
+
const { printRobotsGenerateHelp } = await import("../robots-Div3kkxI.mjs");
|
|
144
|
+
printRobotsGenerateHelp();
|
|
145
|
+
process.exit(1);
|
|
132
146
|
} else if (parsedCommand.command === "upgrade") {
|
|
133
|
-
const { upgrade } = await import("../upgrade-
|
|
147
|
+
const { upgrade } = await import("../upgrade-D9c60phM.mjs");
|
|
134
148
|
await upgrade({
|
|
135
149
|
framework: (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0),
|
|
136
150
|
tag: args.includes("--beta") ? "beta" : args.includes("--latest") ? "latest" : parsedCommand.tag ?? "latest"
|
|
@@ -157,6 +171,7 @@ ${pc.dim("Commands:")}
|
|
|
157
171
|
${pc.cyan("agent")} Agent utilities (${pc.dim("compact")} to generate sibling agent.md files)
|
|
158
172
|
${pc.cyan("doctor")} Inspect and score agent or reader-facing docs quality
|
|
159
173
|
${pc.cyan("mcp")} Run the built-in docs MCP server over stdio
|
|
174
|
+
${pc.cyan("robots")} Robots.txt utilities (${pc.dim("generate")} for agent access policy)
|
|
160
175
|
${pc.cyan("search")} Search utilities (${pc.dim("sync")} for external indexes)
|
|
161
176
|
${pc.cyan("sitemap")} Sitemap utilities (${pc.dim("generate")} for sitemap XML/Markdown data)
|
|
162
177
|
${pc.cyan("upgrade")} Upgrade @farming-labs/* packages to latest (auto-detect or use --framework)
|
|
@@ -231,6 +246,14 @@ ${pc.dim("Options for sitemap generate:")}
|
|
|
231
246
|
${pc.cyan("--check")} Fail if generated sitemap output is stale
|
|
232
247
|
${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
|
|
233
248
|
|
|
249
|
+
${pc.dim("Options for robots generate:")}
|
|
250
|
+
${pc.cyan("robots generate [path]")} Generate a static ${pc.dim("robots.txt")} agent access policy
|
|
251
|
+
${pc.cyan("--path <path>")} Write to a specific file; defaults to ${pc.dim("public/robots.txt")} or ${pc.dim("static/robots.txt")}
|
|
252
|
+
${pc.cyan("--append")} Add/update a generated block inside an existing file
|
|
253
|
+
${pc.cyan("--force")} Replace the target file with the generated policy
|
|
254
|
+
${pc.cyan("--check")} Fail if generated robots output is stale
|
|
255
|
+
${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
|
|
256
|
+
|
|
234
257
|
${pc.dim("Options for upgrade:")}
|
|
235
258
|
${pc.cyan("--framework <name>")} Explicit framework (${pc.dim("next")}, ${pc.dim("tanstack-start")}, ${pc.dim("nuxt")}, ${pc.dim("sveltekit")}, ${pc.dim("astro")}); omit to auto-detect
|
|
236
259
|
${pc.cyan("--latest")} Install latest stable (default)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { K as rootLayoutTemplate, W as postcssConfigTemplate, g as docsLayoutTemplate, v as globalCssTemplate, yt as tsconfigTemplate } from "./templates-
|
|
2
|
-
import { i as detectPackageManagerFromLockfile } from "./utils-
|
|
1
|
+
import { K as rootLayoutTemplate, W as postcssConfigTemplate, g as docsLayoutTemplate, v as globalCssTemplate, yt as tsconfigTemplate } from "./templates-CtPtjNu5.mjs";
|
|
2
|
+
import { i as detectPackageManagerFromLockfile } from "./utils-AmYxHDoz.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import pc from "picocolors";
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import
|
|
2
|
-
import "./search-
|
|
3
|
-
import { i as DEFAULT_SITEMAP_XML_ROUTE, n as DEFAULT_SITEMAP_MD_ROUTE, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, u as resolveDocsSitemapConfig } from "./sitemap-
|
|
4
|
-
import "./
|
|
1
|
+
import "./reading-time-pKUeloSI.mjs";
|
|
2
|
+
import "./search-B5ze-heM.mjs";
|
|
3
|
+
import { i as DEFAULT_SITEMAP_XML_ROUTE, n as DEFAULT_SITEMAP_MD_ROUTE, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, u as resolveDocsSitemapConfig } from "./sitemap-Ccfh6GXO.mjs";
|
|
4
|
+
import { C as DEFAULT_SKILL_MD_ROUTE, S as DEFAULT_MCP_WELL_KNOWN_ROUTE, a as analyzeDocsRobotsTxt, b as DEFAULT_MCP_PUBLIC_ROUTE, d as DEFAULT_AGENT_FEEDBACK_ROUTE, g as DEFAULT_LLMS_FULL_TXT_ROUTE, l as resolveDocsRobotsConfig, m as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_ROBOTS_TXT_ROUTE, p as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, w as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE } from "./robots-DCR-ZFLO.mjs";
|
|
5
|
+
import "./sitemap-server-C8Ppk29g.mjs";
|
|
5
6
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
6
7
|
import "./server.mjs";
|
|
7
|
-
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-
|
|
8
|
-
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-
|
|
9
|
-
import { t as detectFramework } from "./utils-
|
|
8
|
+
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-BR6CcCfr.mjs";
|
|
9
|
+
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-D97eZuWH.mjs";
|
|
10
|
+
import { t as detectFramework } from "./utils-AmYxHDoz.mjs";
|
|
10
11
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
11
12
|
import path from "node:path";
|
|
13
|
+
import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types.js";
|
|
12
14
|
import pc from "picocolors";
|
|
13
|
-
import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types";
|
|
14
15
|
|
|
15
16
|
//#region src/cli/doctor.ts
|
|
16
17
|
const NEXT_CONFIG_PATTERN = /^next\.config\.(?:[cm]?js|[cm]?ts)$/;
|
|
@@ -212,6 +213,32 @@ function readSitemapConfigFromStatic(content) {
|
|
|
212
213
|
if (manifestPath) config.manifestPath = manifestPath;
|
|
213
214
|
return config;
|
|
214
215
|
}
|
|
216
|
+
function readRobotsConfigFromStatic(content) {
|
|
217
|
+
const topLevelBoolean = readTopLevelBooleanProperty(content, "robots");
|
|
218
|
+
if (typeof topLevelBoolean === "boolean") return topLevelBoolean;
|
|
219
|
+
const block = extractNestedObjectLiteral(content, ["robots"]);
|
|
220
|
+
if (!block) return void 0;
|
|
221
|
+
const config = {};
|
|
222
|
+
const enabled = readObjectBooleanProperty(block, "enabled");
|
|
223
|
+
const pathValue = block.match(/\bpath\s*:\s*["'`]([^"'`]+)["'`]/)?.[1];
|
|
224
|
+
const baseUrl = block.match(/\bbaseUrl\s*:\s*["'`]([^"'`]+)["'`]/)?.[1];
|
|
225
|
+
const aiString = block.match(/\bai\s*:\s*["'`](allow|disallow)["'`]/)?.[1];
|
|
226
|
+
const aiBoolean = readObjectBooleanProperty(block, "ai");
|
|
227
|
+
if (typeof enabled === "boolean") config.enabled = enabled;
|
|
228
|
+
if (pathValue) config.path = pathValue;
|
|
229
|
+
if (baseUrl) config.baseUrl = baseUrl;
|
|
230
|
+
if (aiString) config.ai = aiString;
|
|
231
|
+
else if (typeof aiBoolean === "boolean") config.ai = aiBoolean;
|
|
232
|
+
return config;
|
|
233
|
+
}
|
|
234
|
+
function resolvePublicDir(rootDir, framework) {
|
|
235
|
+
if (framework === "sveltekit") return path.join(rootDir, "static");
|
|
236
|
+
return path.join(rootDir, "public");
|
|
237
|
+
}
|
|
238
|
+
function resolveRobotsFilePath(rootDir, framework, robots) {
|
|
239
|
+
if (robots?.path) return path.isAbsolute(robots.path) ? robots.path : path.resolve(rootDir, robots.path);
|
|
240
|
+
return path.join(resolvePublicDir(rootDir, framework), "robots.txt");
|
|
241
|
+
}
|
|
215
242
|
function resolveStaticExport(config, content) {
|
|
216
243
|
if (typeof config?.staticExport === "boolean") return config.staticExport;
|
|
217
244
|
return readTopLevelBooleanProperty(content, "staticExport") ?? false;
|
|
@@ -712,6 +739,35 @@ async function probeTextRoute(baseUrl, route) {
|
|
|
712
739
|
};
|
|
713
740
|
}
|
|
714
741
|
}
|
|
742
|
+
async function probeRobotsRoute(baseUrl) {
|
|
743
|
+
const route = DEFAULT_ROBOTS_TXT_ROUTE;
|
|
744
|
+
const url = joinDoctorUrl(baseUrl, route);
|
|
745
|
+
try {
|
|
746
|
+
const response = await fetchWithTimeout(url, { headers: { Accept: "text/plain, */*" } });
|
|
747
|
+
const body = await response.text().catch(() => "");
|
|
748
|
+
if (!response.ok) return {
|
|
749
|
+
ok: false,
|
|
750
|
+
status: response.status,
|
|
751
|
+
detail: `${route} returned HTTP ${response.status}.`
|
|
752
|
+
};
|
|
753
|
+
if (body.trim().length === 0) return {
|
|
754
|
+
ok: false,
|
|
755
|
+
status: response.status,
|
|
756
|
+
detail: `${route} returned an empty body.`
|
|
757
|
+
};
|
|
758
|
+
return {
|
|
759
|
+
ok: true,
|
|
760
|
+
status: response.status,
|
|
761
|
+
body,
|
|
762
|
+
detail: `${route} returned HTTP ${response.status} with ${body.length} characters.`
|
|
763
|
+
};
|
|
764
|
+
} catch (error) {
|
|
765
|
+
return {
|
|
766
|
+
ok: false,
|
|
767
|
+
detail: `${route} failed: ${error instanceof Error ? error.message : String(error)}.`
|
|
768
|
+
};
|
|
769
|
+
}
|
|
770
|
+
}
|
|
715
771
|
async function probeJsonRoute(baseUrl, route) {
|
|
716
772
|
const url = joinDoctorUrl(baseUrl, route);
|
|
717
773
|
try {
|
|
@@ -879,6 +935,11 @@ async function buildHostedAgentChecks(url, pages) {
|
|
|
879
935
|
checks.push(makeCheck("hosted-sitemap", "Hosted sitemap", sitemapPassed === sitemap.length ? "pass" : sitemapPassed > 0 ? "warn" : "fail", sitemapPassed === sitemap.length ? 5 : sitemapPassed > 0 ? 3 : 0, 5, sitemap.map((result) => result.detail).join(" "), sitemapPassed === sitemap.length ? void 0 : `Verify deployed sitemap routes return non-empty text: ${sitemapRoutes.routes.join(", ")}.`));
|
|
880
936
|
} else if (sitemapRoutes.enabled) checks.push(makeCheck("hosted-sitemap", "Hosted sitemap", "warn", 0, 5, "The hosted discovery spec reports sitemap support but did not expose sitemap routes.", "Check sitemap.xml and sitemap.markdown config so at least one sitemap route is enabled."));
|
|
881
937
|
else checks.push(makeCheck("hosted-sitemap", "Hosted sitemap", "warn", 0, 5, "The hosted discovery spec reports sitemap routes as disabled.", "Enable sitemap in docs.config when agents and crawlers should discover canonical URLs and freshness metadata."));
|
|
938
|
+
const robots = await probeRobotsRoute(baseUrl);
|
|
939
|
+
const robotsAnalysis = robots.body ? analyzeDocsRobotsTxt(robots.body) : void 0;
|
|
940
|
+
const robotsBlocked = robotsAnalysis?.blocksAgentRoutes || robotsAnalysis?.blocksAiAgents;
|
|
941
|
+
const robotsComplete = robotsAnalysis?.hasAgentRoutes && robotsAnalysis?.hasAiPolicy;
|
|
942
|
+
checks.push(makeCheck("hosted-robots", "Hosted robots.txt", robots.ok && !robotsBlocked && robotsComplete ? "pass" : robots.ok && !robotsBlocked ? "warn" : "fail", robots.ok && !robotsBlocked && robotsComplete ? 5 : robots.ok && !robotsBlocked ? 3 : 0, 5, robots.ok ? robotsBlocked ? `${DEFAULT_ROBOTS_TXT_ROUTE} is reachable but blocks ${robotsAnalysis?.blocksAiAgents ? "common AI crawlers" : "agent-readable docs routes"}.` : robotsComplete ? `${robots.detail} It advertises agent-readable routes and common AI crawler policy.` : `${robots.detail} It is missing ${robotsAnalysis?.missingRoutes.length ? `agent routes (${robotsAnalysis.missingRoutes.join(", ")})` : "common AI crawler policy"}.` : robots.detail, robots.ok && !robotsBlocked && robotsComplete ? void 0 : "Publish an agent-friendly robots.txt with `docs robots generate`, or append the generated block to the existing file."));
|
|
882
943
|
const skill = await Promise.all([probeTextRoute(baseUrl, DEFAULT_SKILL_MD_ROUTE), probeTextRoute(baseUrl, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE)]);
|
|
883
944
|
const skillPassed = skill.filter((result) => result.ok).length;
|
|
884
945
|
checks.push(makeCheck("hosted-skill", "Hosted skill.md", skillPassed === skill.length ? "pass" : skillPassed > 0 ? "warn" : "fail", skillPassed === skill.length ? 5 : skillPassed > 0 ? 3 : 0, 5, skill.map((result) => result.detail).join(" "), skillPassed === skill.length ? void 0 : "Verify deployed /skill.md and /.well-known/skill.md routes return non-empty markdown."));
|
|
@@ -984,6 +1045,9 @@ async function inspectAgentReadiness(options = {}) {
|
|
|
984
1045
|
const routeSurface = detectRouteSurface(rootDir, framework, staticExport, files);
|
|
985
1046
|
const mcpConfig = resolveDocsMcpConfig(config?.mcp ?? void 0, { defaultName: siteTitle });
|
|
986
1047
|
const sitemapConfig = resolveDocsSitemapConfig(config?.sitemap ?? readSitemapConfigFromStatic(configContent) ?? false);
|
|
1048
|
+
const robotsInput = config?.robots ?? readRobotsConfigFromStatic(configContent) ?? true;
|
|
1049
|
+
const robotsConfig = robotsInput === false ? resolveDocsRobotsConfig(false) : resolveDocsRobotsConfig(robotsInput, { baseUrl: (typeof robotsInput === "object" ? robotsInput.baseUrl : void 0) ?? sitemapConfig.baseUrl });
|
|
1050
|
+
const robotsPath = resolveRobotsFilePath(rootDir, framework, typeof robotsInput === "object" ? robotsInput : void 0);
|
|
987
1051
|
const feedbackRoute = DEFAULT_AGENT_FEEDBACK_ROUTE;
|
|
988
1052
|
const feedbackSchemaRoute = `${feedbackRoute}/schema`;
|
|
989
1053
|
const checks = [];
|
|
@@ -995,6 +1059,20 @@ async function inspectAgentReadiness(options = {}) {
|
|
|
995
1059
|
checks.push(makeCheck("agent-discovery", "Agent discovery spec", routeSurface.apiMounted && routeSurface.publicMounted ? "pass" : "fail", routeSurface.apiMounted && routeSurface.publicMounted ? 5 : 0, 5, routeSurface.apiMounted && routeSurface.publicMounted ? `Expected discovery endpoints are available through ${DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE}, ${DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE}, and /api/docs?agent=spec.` : "Could not verify the shared agent discovery spec endpoints because docs API/public route wiring is incomplete.", routeSurface.apiMounted && routeSurface.publicMounted ? void 0 : "Make sure both the docs API handler and the public docs forwarder are mounted so agents can discover the site through the well-known agent spec."));
|
|
996
1060
|
checks.push(llmsEnabled ? makeCheck("llms", "llms.txt discovery", "pass", 5, 5, `Enabled via ${DEFAULT_LLMS_TXT_ROUTE} and ${DEFAULT_LLMS_FULL_TXT_ROUTE}.`) : makeCheck("llms", "llms.txt discovery", "warn", 0, 5, `${DEFAULT_LLMS_TXT_ROUTE} and ${DEFAULT_LLMS_FULL_TXT_ROUTE} are disabled in docs config.`, "Enable llmsTxt so agents and GEO crawlers can discover the docs index and full context surfaces."));
|
|
997
1061
|
checks.push(sitemapConfig.enabled ? makeCheck("sitemap", "Sitemap discovery", "pass", 5, 5, `Enabled via ${sitemapConfig.xml.route}, ${sitemapConfig.markdown.route}, and ${sitemapConfig.markdown.wellKnownRoute}.`) : makeCheck("sitemap", "Sitemap discovery", "warn", 0, 5, "Generated sitemap routes are disabled in docs config.", "Enable sitemap so crawlers and agents can discover canonical docs URLs, semantic sections, and lastmod freshness metadata."));
|
|
1062
|
+
const relativeRobotsPath = path.relative(rootDir, robotsPath).replace(/\\/g, "/");
|
|
1063
|
+
if (!robotsConfig.enabled) checks.push(makeCheck("robots", "Robots agent policy", "warn", 0, 5, "Robots generation is disabled in docs config.", "Enable robots and run `docs robots generate` so crawlers can discover agent-readable docs routes."));
|
|
1064
|
+
else if (!existsSync(robotsPath)) checks.push(makeCheck("robots", "Robots agent policy", "warn", 0, 5, `No robots.txt found at ${relativeRobotsPath}.`, `Run docs robots generate --path ${relativeRobotsPath} to publish an agent-friendly crawl policy.`));
|
|
1065
|
+
else {
|
|
1066
|
+
const analysis = analyzeDocsRobotsTxt(readFileSync(robotsPath, "utf-8"), {
|
|
1067
|
+
entry,
|
|
1068
|
+
sitemap: sitemapConfig,
|
|
1069
|
+
baseUrl: robotsConfig.baseUrl,
|
|
1070
|
+
robots: robotsConfig
|
|
1071
|
+
});
|
|
1072
|
+
const blocked = analysis.blocksAgentRoutes || analysis.blocksAiAgents;
|
|
1073
|
+
const complete = analysis.hasAgentRoutes && analysis.hasAiPolicy;
|
|
1074
|
+
checks.push(makeCheck("robots", "Robots agent policy", blocked ? "fail" : complete ? "pass" : "warn", blocked ? 0 : complete ? 5 : 3, 5, blocked ? `${relativeRobotsPath} blocks ${analysis.blocksAiAgents ? "common AI crawlers" : "agent-readable docs routes"}.` : complete ? `${relativeRobotsPath} advertises agent-readable routes and common AI crawler policy.` : `${relativeRobotsPath} exists, but is missing ${analysis.missingRoutes.length > 0 ? `agent routes (${analysis.missingRoutes.join(", ")})` : "common AI crawler policy"}.`, blocked || !complete ? `Run docs robots generate --append --path ${relativeRobotsPath} to add the generated agent policy without replacing the existing file.` : void 0));
|
|
1075
|
+
}
|
|
998
1076
|
checks.push(skillFileExists ? makeCheck("skill", "Skill document", "pass", 5, 5, `Found root skill.md for ${DEFAULT_SKILL_MD_ROUTE} and ${DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE}.`) : makeCheck("skill", "Skill document", "warn", 3, 5, `No root skill.md found; the framework will serve the generated fallback at ${DEFAULT_SKILL_MD_ROUTE}.`, "Add a root skill.md if you want a custom site-specific bootstrap document instead of the generated fallback."));
|
|
999
1077
|
checks.push(mcpEnabled ? makeCheck("mcp", "MCP access", "pass", 10, 10, `Enabled with public aliases ${DEFAULT_MCP_PUBLIC_ROUTE} and ${DEFAULT_MCP_WELL_KNOWN_ROUTE} (canonical route ${mcpConfig.route}).`) : makeCheck("mcp", "MCP access", "warn", 0, 10, "MCP is disabled in docs config.", "Enable mcp so agents can use list/search/read tools directly instead of only scraping markdown routes."));
|
|
1000
1078
|
checks.push(searchEnabled ? makeCheck("search", "Search surface", "pass", 5, 5, "Search is enabled for the shared docs API and agent flows.") : makeCheck("search", "Search surface", "warn", 0, 5, "Search is disabled in docs config.", "Enable search so agents can narrow retrieval before reading whole markdown pages."));
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import { A as DOCS_AGENT_TRACE_EVENT_TYPES, B as resolveDocsObservabilityConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceId, H as createDocsCloudAnalytics, I as emitDocsAgentTraceEvent, L as emitDocsAnalyticsEvent, M as ResolvedDocsAnalyticsConfig, N as ResolvedDocsObservabilityConfig, O as resolveDocsSitemapRequest, P as createDocsAgentTraceContext, R as emitDocsObservabilityEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, V as DocsCloudAnalyticsOptions, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DocsAgentTraceContext, k as toDocsSitemapMarkdownUrl, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as resolveDocsAnalyticsConfig } from "./search-
|
|
1
|
+
import { $ as DocsSearchResultType, A as DocsConfig, At as TypesenseDocsSearchConfig, B as DocsObservabilityEventInput, C as DocsAskAIActionData, Ct as SidebarFolderIndexBehavior, D as DocsAskAIFeedbackMessage, Dt as SidebarTree, E as DocsAskAIFeedbackData, Et as SidebarPageNode, F as DocsMcpToolsConfig, G as DocsSearchAdapterContext, H as DocsRobotsConfig, I as DocsMetadata, J as DocsSearchConfig, K as DocsSearchAdapterFactory, L as DocsNav, M as DocsFeedbackValue, Mt as UIConfig, N as DocsI18nConfig, O as DocsAskAIFeedbackValue, Ot as SimpleDocsSearchConfig, P as DocsMcpConfig, Q as DocsSearchResult, R as DocsObservabilityConfig, S as DocsAnalyticsSource, St as SidebarConfig, T as DocsAskAIFeedbackConfig, Tt as SidebarNode, U as DocsRobotsRule, V as DocsRelatedItem, W as DocsSearchAdapter, X as DocsSearchEmbeddingsConfig, Y as DocsSearchDocument, Z as DocsSearchQuery, _ as DocsAnalyticsConfig, _t as PageSidebarFrontmatter, a as ApiReferenceRenderer, at as GithubConfig, b as DocsAnalyticsEventType, bt as ResolvedDocsRelatedLink, c as ChangelogFrontmatter, ct as McpDocsSearchConfig, d as CustomDocsSearchConfig, dt as OpenDocsProvider, et as DocsSearchSourcePage, f as DocsAgentFeedbackContext, ft as OpenGraphImage, g as DocsAgentTraceStatus, gt as PageOpenGraph, h as DocsAgentTraceEventType, ht as PageFrontmatter, i as ApiReferenceConfig, it as FontStyle, j as DocsFeedbackData, jt as TypographyConfig, k as DocsAskAIMcpConfig, kt as ThemeToggleConfig, l as CodeBlockCopyData, lt as OGConfig, m as DocsAgentTraceEventInput, mt as PageActionsConfig, n as AgentFeedbackConfig, nt as DocsTheme, o as BreadcrumbConfig, ot as LastUpdatedConfig, p as DocsAgentFeedbackData, pt as OrderingItem, q as DocsSearchChunkingConfig, r as AlgoliaDocsSearchConfig, rt as FeedbackConfig, s as ChangelogConfig, st as LlmsTxtConfig, t as AIConfig, tt as DocsSitemapConfig, u as CopyMarkdownConfig, ut as OpenDocsConfig, v as DocsAnalyticsEvent, vt as PageTwitter, w as DocsAskAIActionType, wt as SidebarFolderNode, x as DocsAnalyticsInput, xt as SidebarComponentProps, y as DocsAnalyticsEventInput, yt as ReadingTimeConfig, z as DocsObservabilityEvent } from "./types-Ch0kE7uS.mjs";
|
|
2
|
+
import { A as DOCS_AGENT_TRACE_EVENT_TYPES, B as resolveDocsObservabilityConfig, C as createDocsSitemapResponse, D as resolveDocsSitemapConfig, E as renderDocsSitemapXml, F as createDocsAgentTraceId, H as createDocsCloudAnalytics, I as emitDocsAgentTraceEvent, L as emitDocsAnalyticsEvent, M as ResolvedDocsAnalyticsConfig, N as ResolvedDocsObservabilityConfig, O as resolveDocsSitemapRequest, P as createDocsAgentTraceContext, R as emitDocsObservabilityEvent, S as buildDocsSitemapManifest, T as renderDocsSitemapMarkdown, V as DocsCloudAnalyticsOptions, _ as DocsSitemapFormat, a as createMcpSearchAdapter, b as DocsSitemapPageInput, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as DEFAULT_SITEMAP_XML_ROUTE, h as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, i as createCustomSearchAdapter, j as DocsAgentTraceContext, k as toDocsSitemapMarkdownUrl, l as inferDocsAskAIPackageHints, m as DEFAULT_SITEMAP_MD_ROUTE, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as DEFAULT_SITEMAP_MANIFEST_PATH, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as DocsSitemapManifest, w as readDocsSitemapManifestFromContentMap, x as DocsSitemapResolvedConfig, y as DocsSitemapManifestPage, z as resolveDocsAnalyticsConfig } from "./search-BH07-Otd.mjs";
|
|
3
3
|
import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/define-docs.d.ts
|
|
@@ -415,4 +415,39 @@ declare function buildDocsAgentDiscoverySpec({
|
|
|
415
415
|
};
|
|
416
416
|
};
|
|
417
417
|
//#endregion
|
|
418
|
-
|
|
418
|
+
//#region src/robots.d.ts
|
|
419
|
+
declare const DEFAULT_ROBOTS_TXT_ROUTE = "/robots.txt";
|
|
420
|
+
declare const DOCS_ROBOTS_GENERATED_BLOCK_START = "# BEGIN @farming-labs/docs robots";
|
|
421
|
+
declare const DOCS_ROBOTS_GENERATED_BLOCK_END = "# END @farming-labs/docs robots";
|
|
422
|
+
declare const DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS: readonly ["GPTBot", "ChatGPT-User", "OAI-SearchBot", "ClaudeBot", "Claude-User", "anthropic-ai", "CCBot", "Google-Extended"];
|
|
423
|
+
interface DocsRobotsResolvedConfig {
|
|
424
|
+
enabled: boolean;
|
|
425
|
+
path?: string;
|
|
426
|
+
baseUrl?: string;
|
|
427
|
+
ai: "allow" | "disallow";
|
|
428
|
+
userAgents: string[];
|
|
429
|
+
extraRules: DocsRobotsRule[];
|
|
430
|
+
}
|
|
431
|
+
interface DocsRobotsRenderOptions {
|
|
432
|
+
entry?: string;
|
|
433
|
+
sitemap?: boolean | DocsSitemapConfig;
|
|
434
|
+
baseUrl?: string;
|
|
435
|
+
robots?: boolean | DocsRobotsConfig;
|
|
436
|
+
}
|
|
437
|
+
interface DocsRobotsAnalysis {
|
|
438
|
+
blocksAgentRoutes: boolean;
|
|
439
|
+
blocksAiAgents: boolean;
|
|
440
|
+
hasAgentRoutes: boolean;
|
|
441
|
+
hasAiPolicy: boolean;
|
|
442
|
+
missingRoutes: string[];
|
|
443
|
+
}
|
|
444
|
+
declare function resolveDocsRobotsConfig(input: boolean | DocsRobotsConfig | undefined, options?: {
|
|
445
|
+
baseUrl?: string;
|
|
446
|
+
}): DocsRobotsResolvedConfig;
|
|
447
|
+
declare function getDocsRobotsAllowRoutes(options?: DocsRobotsRenderOptions): string[];
|
|
448
|
+
declare function renderDocsRobotsTxt(options?: DocsRobotsRenderOptions): string;
|
|
449
|
+
declare function renderDocsRobotsGeneratedBlock(options?: DocsRobotsRenderOptions): string;
|
|
450
|
+
declare function upsertDocsRobotsGeneratedBlock(existing: string, block: string): string;
|
|
451
|
+
declare function analyzeDocsRobotsTxt(content: string, options?: DocsRobotsRenderOptions): DocsRobotsAnalysis;
|
|
452
|
+
//#endregion
|
|
453
|
+
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_AI_ROBOTS_USER_AGENTS, 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_ROBOTS_TXT_ROUTE, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER, DOCS_ROBOTS_GENERATED_BLOCK_END, DOCS_ROBOTS_GENERATED_BLOCK_START, type DocsAgentDiscoverySpecOptions, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsAgentFeedbackDiscoveryConfig, type DocsAgentTraceContext, type DocsAgentTraceEventInput, type DocsAgentTraceEventType, type DocsAgentTraceStatus, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAnalyticsEventType, type DocsAnalyticsInput, type DocsAnalyticsSource, type DocsAskAIActionData, type DocsAskAIActionType, type DocsAskAIFeedbackConfig, type DocsAskAIFeedbackData, type DocsAskAIFeedbackMessage, type DocsAskAIFeedbackValue, type DocsAskAIMcpConfig, type DocsCloudAnalyticsOptions, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsLlmsDiscoveryConfig, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsPathMatch, type DocsRelatedItem, type DocsRobotsConfig, type DocsRobotsRenderOptions, type DocsRobotsResolvedConfig, type DocsRobotsRule, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsSitemapConfig, type DocsSitemapFormat, type DocsSitemapManifest, type DocsSitemapManifestPage, type DocsSitemapPageInput, type DocsSitemapResolvedConfig, 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 PageSidebarFrontmatter, type PageTwitter, type ReadingTimeConfig, type ResolvedChangelogConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsI18n, type ResolvedDocsObservabilityConfig, type ResolvedDocsRelatedLink, type SidebarComponentProps, type SidebarConfig, type SidebarFolderIndexBehavior, type SidebarFolderNode, type SidebarNode, type SidebarPageNode, type SidebarTree, type SimpleDocsSearchConfig, type ThemeToggleConfig, type TypesenseDocsSearchConfig, type TypographyConfig, type UIConfig, analyzeDocsRobotsTxt, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsAskAIContext, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
package/dist/index.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { A as
|
|
3
|
-
import {
|
|
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-pKUeloSI.mjs";
|
|
2
|
+
import { A as resolveDocsAnalyticsConfig, C as resolveSidebarFolderIndexBehaviorForPath, D as emitDocsAgentTraceEvent, E as createDocsAgentTraceId, M as createDocsCloudAnalytics, O as emitDocsAnalyticsEvent, S as resolveSidebarFolderIndexBehavior, T as createDocsAgentTraceContext, _ as parseGeneratedAgentDocument, a as createMcpSearchAdapter, b as applySidebarFolderIndexBehavior, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveSearchRequestConfig, g as normalizeGeneratedAgentContent, h as hashGeneratedAgentContent, i as createCustomSearchAdapter, j as resolveDocsObservabilityConfig, k as emitDocsObservabilityEvent, l as inferDocsAskAIPackageHints, m as GENERATED_AGENT_PROVENANCE_VERSION, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as GENERATED_AGENT_PROVENANCE_MARKER, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch, v as serializeGeneratedAgentDocument, w as DOCS_AGENT_TRACE_EVENT_TYPES, x as resolvePageSidebarFolderIndexBehavior, y as stripGeneratedAgentProvenance } from "./search-B5ze-heM.mjs";
|
|
3
|
+
import { n as renderDocsRelatedMarkdownLines, t as normalizeDocsRelated } from "./related-BNj_NdHq.mjs";
|
|
4
|
+
import { a as buildDocsSitemapManifest, c as renderDocsSitemapMarkdown, d as resolveDocsSitemapRequest, f as toDocsSitemapMarkdownUrl, i as DEFAULT_SITEMAP_XML_ROUTE, l as renderDocsSitemapXml, n as DEFAULT_SITEMAP_MD_ROUTE, o as createDocsSitemapResponse, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, s as readDocsSitemapManifestFromContentMap, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as resolveDocsSitemapConfig } from "./sitemap-Ccfh6GXO.mjs";
|
|
5
|
+
import { A as isDocsAgentDiscoveryRequest, B as resolveDocsLlmsTxtFormat, C as DEFAULT_SKILL_MD_ROUTE, D as findDocsMarkdownPage, E as buildDocsAgentDiscoverySpec, F as normalizeDocsUrlPath, H as resolveDocsSkillFormat, I as renderDocsMarkdownDocument, L as renderDocsMarkdownNotFound, M as isDocsPublicGetRequest, N as isDocsSkillRequest, O as getDocsMarkdownVaryHeader, P as normalizeDocsPathSegment, R as renderDocsSkillDocument, S as DEFAULT_MCP_WELL_KNOWN_ROUTE, T as DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER, U as toDocsMarkdownUrl, V as resolveDocsMarkdownRequest, _ as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, a as analyzeDocsRobotsTxt, b as DEFAULT_MCP_PUBLIC_ROUTE, c as renderDocsRobotsTxt, d as DEFAULT_AGENT_FEEDBACK_ROUTE, f as DEFAULT_AGENT_SPEC_ROUTE, g as DEFAULT_LLMS_FULL_TXT_ROUTE, h as DEFAULT_DOCS_API_ROUTE, i as DOCS_ROBOTS_GENERATED_BLOCK_START, j as isDocsMcpRequest, k as hasDocsMarkdownSignatureAgent, l as resolveDocsRobotsConfig, m as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_ROBOTS_TXT_ROUTE, o as getDocsRobotsAllowRoutes, p as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, r as DOCS_ROBOTS_GENERATED_BLOCK_END, s as renderDocsRobotsGeneratedBlock, t as DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS, u as upsertDocsRobotsGeneratedBlock, v as DEFAULT_LLMS_TXT_ROUTE, w as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, x as DEFAULT_MCP_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, z as resolveDocsAgentMdxContent } from "./robots-DCR-ZFLO.mjs";
|
|
4
6
|
|
|
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_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsAskAIContext, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsMarkdownVaryHeader, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsRelatedMarkdownLines, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsSitemapConfig, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl };
|
|
7
|
+
export { DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS, 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_ROBOTS_TXT_ROUTE, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER, DOCS_ROBOTS_GENERATED_BLOCK_END, DOCS_ROBOTS_GENERATED_BLOCK_START, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, analyzeDocsRobotsTxt, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsAskAIContext, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as svelteDocsPublicHookTemplate, A as nextConfigMergedTemplate, B as nuxtServerApiDocsRouteTemplate, C as injectRootProviderIntoLayout, D as injectTanstackVitePlugins, E as injectTanstackRootProviderIntoRoute, F as nuxtDocsConfigTemplate, G as quickstartPageTemplate, H as nuxtServerDocsPublicMiddlewareTemplate, I as nuxtDocsPageTemplate, J as svelteDocsApiRouteTemplate, K as rootLayoutTemplate, L as nuxtGlobalCssTemplate, M as nextLocaleDocPageTemplate, N as nextLocalizedPageTemplate, O as installationPageTemplate, P as nuxtConfigTemplate, Q as svelteDocsPageTemplate, R as nuxtInstallationPageTemplate, S as injectNuxtCssImport, T as injectSvelteDocsPublicHook, U as nuxtWelcomePageTemplate, V as nuxtServerApiReferenceRouteTemplate, W as postcssConfigTemplate, X as svelteDocsLayoutServerTemplate, Y as svelteDocsConfigTemplate, Z as svelteDocsLayoutTemplate, _ as getAstroAdapterPkg, _t as tanstackViteConfigTemplate, a as astroDocsIndexTemplate, at as svelteWelcomePageTemplate, b as injectAstroDocsMiddleware, bt as welcomePageTemplate, c as astroDocsServerTemplate, ct as tanstackDocsCatchAllRouteTemplate, d as astroQuickstartPageTemplate, dt as tanstackDocsIndexRouteTemplate, et as svelteDocsServerTemplate, f as astroWelcomePageTemplate, ft as tanstackDocsPublicRouteTemplate, g as docsLayoutTemplate, gt as tanstackRootRouteTemplate, h as docsConfigTemplate, ht as tanstackQuickstartPageTemplate, i as astroDocsConfigTemplate, it as svelteRootLayoutTemplate, j as nextConfigTemplate, k as nextApiReferencePageTemplate, l as astroGlobalCssTemplate, lt as tanstackDocsConfigTemplate, m as customThemeTsTemplate, mt as tanstackInstallationPageTemplate, n as astroApiRouteTemplate, nt as svelteInstallationPageTemplate, o as astroDocsMiddlewareTemplate, ot as tanstackApiDocsRouteTemplate, p as customThemeCssTemplate, pt as tanstackDocsServerTemplate, q as svelteApiReferenceRouteTemplate, r as astroConfigTemplate, rt as svelteQuickstartPageTemplate, s as astroDocsPageTemplate, st as tanstackApiReferenceRouteTemplate, t as astroApiReferenceRouteTemplate, tt as svelteGlobalCssTemplate, u as astroInstallationPageTemplate, ut as tanstackDocsFunctionsTemplate, v as globalCssTemplate, vt as tanstackWelcomePageTemplate, w as injectSvelteCssImport, x as injectCssImport, y as injectAstroCssImport, yt as tsconfigTemplate, z as nuxtQuickstartPageTemplate } from "./templates-
|
|
2
|
-
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-
|
|
1
|
+
import { $ as svelteDocsPublicHookTemplate, A as nextConfigMergedTemplate, B as nuxtServerApiDocsRouteTemplate, C as injectRootProviderIntoLayout, D as injectTanstackVitePlugins, E as injectTanstackRootProviderIntoRoute, F as nuxtDocsConfigTemplate, G as quickstartPageTemplate, H as nuxtServerDocsPublicMiddlewareTemplate, I as nuxtDocsPageTemplate, J as svelteDocsApiRouteTemplate, K as rootLayoutTemplate, L as nuxtGlobalCssTemplate, M as nextLocaleDocPageTemplate, N as nextLocalizedPageTemplate, O as installationPageTemplate, P as nuxtConfigTemplate, Q as svelteDocsPageTemplate, R as nuxtInstallationPageTemplate, S as injectNuxtCssImport, T as injectSvelteDocsPublicHook, U as nuxtWelcomePageTemplate, V as nuxtServerApiReferenceRouteTemplate, W as postcssConfigTemplate, X as svelteDocsLayoutServerTemplate, Y as svelteDocsConfigTemplate, Z as svelteDocsLayoutTemplate, _ as getAstroAdapterPkg, _t as tanstackViteConfigTemplate, a as astroDocsIndexTemplate, at as svelteWelcomePageTemplate, b as injectAstroDocsMiddleware, bt as welcomePageTemplate, c as astroDocsServerTemplate, ct as tanstackDocsCatchAllRouteTemplate, d as astroQuickstartPageTemplate, dt as tanstackDocsIndexRouteTemplate, et as svelteDocsServerTemplate, f as astroWelcomePageTemplate, ft as tanstackDocsPublicRouteTemplate, g as docsLayoutTemplate, gt as tanstackRootRouteTemplate, h as docsConfigTemplate, ht as tanstackQuickstartPageTemplate, i as astroDocsConfigTemplate, it as svelteRootLayoutTemplate, j as nextConfigTemplate, k as nextApiReferencePageTemplate, l as astroGlobalCssTemplate, lt as tanstackDocsConfigTemplate, m as customThemeTsTemplate, mt as tanstackInstallationPageTemplate, n as astroApiRouteTemplate, nt as svelteInstallationPageTemplate, o as astroDocsMiddlewareTemplate, ot as tanstackApiDocsRouteTemplate, p as customThemeCssTemplate, pt as tanstackDocsServerTemplate, q as svelteApiReferenceRouteTemplate, r as astroConfigTemplate, rt as svelteQuickstartPageTemplate, s as astroDocsPageTemplate, st as tanstackApiReferenceRouteTemplate, t as astroApiReferenceRouteTemplate, tt as svelteGlobalCssTemplate, u as astroInstallationPageTemplate, ut as tanstackDocsFunctionsTemplate, v as globalCssTemplate, vt as tanstackWelcomePageTemplate, w as injectSvelteCssImport, x as injectCssImport, y as injectAstroCssImport, yt as tsconfigTemplate, z as nuxtQuickstartPageTemplate } from "./templates-CtPtjNu5.mjs";
|
|
2
|
+
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-AmYxHDoz.mjs";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import pc from "picocolors";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import "./search-
|
|
2
|
-
import "./sitemap-server-
|
|
1
|
+
import "./search-B5ze-heM.mjs";
|
|
2
|
+
import "./sitemap-server-C8Ppk29g.mjs";
|
|
3
3
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
4
4
|
import "./server.mjs";
|
|
5
|
-
import { c as readNavTitle, f as resolveDocsConfigPath, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsContentDir, u as readStringProperty } from "./config-
|
|
5
|
+
import { c as readNavTitle, f as resolveDocsConfigPath, n as extractObjectLiteral, o as readBooleanProperty, p as resolveDocsContentDir, u as readStringProperty } from "./config-BR6CcCfr.mjs";
|
|
6
6
|
import { readFileSync } from "node:fs";
|
|
7
7
|
|
|
8
8
|
//#region src/cli/mcp.ts
|
package/dist/mcp.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { J as DocsSearchConfig, P as DocsMcpConfig, R as DocsObservabilityConfig, _ as DocsAnalyticsConfig, et as DocsSearchSourcePage, pt as OrderingItem } from "./types-Ch0kE7uS.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,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { D as emitDocsAgentTraceEvent, E as createDocsAgentTraceId, O as emitDocsAnalyticsEvent, T as createDocsAgentTraceContext, u as performDocsSearch, x as resolvePageSidebarFolderIndexBehavior, y as stripGeneratedAgentProvenance } from "./search-B5ze-heM.mjs";
|
|
2
|
+
import { n as renderDocsRelatedMarkdownLines, t as normalizeDocsRelated } from "./related-BNj_NdHq.mjs";
|
|
2
3
|
import matter from "gray-matter";
|
|
3
4
|
import fs from "node:fs";
|
|
4
5
|
import path from "node:path";
|