@farming-labs/docs 0.1.67 → 0.1.69
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-COwO6Q6N.mjs → agent-3gq3PEVa.mjs} +1 -1
- package/dist/{agent-LSYzB5MK.mjs → agent-ChUBdqLo.mjs} +2 -2
- package/dist/cli/index.mjs +6 -6
- package/dist/{dev-DkMu-1UW.mjs → dev-BQIDeAoL.mjs} +1 -1
- package/dist/{doctor-CfGThtMI.mjs → doctor-B2uu7zsB.mjs} +238 -4
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +3 -3
- package/dist/{mcp-BANLcwQ0.mjs → mcp-vNQt0NUC.mjs} +1 -0
- package/dist/mcp.mjs +1 -1
- package/dist/{search-HlwTDHCK.d.mts → search-6P9iaMYq.d.mts} +11 -1
- package/dist/{search-Ds3jiS2n.mjs → search-BhXicuww.mjs} +94 -9
- package/dist/{search-DVyHOFlo.mjs → search-DcXwu_8y.mjs} +1 -1
- package/dist/server.d.mts +2 -2
- package/dist/server.mjs +2 -2
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { C as renderDocsMarkdownDocument, g as findDocsMarkdownPage } from "./agent-
|
|
2
|
-
import { d as hashGeneratedAgentContent, m as serializeGeneratedAgentDocument, p as parseGeneratedAgentDocument, u as GENERATED_AGENT_PROVENANCE_VERSION } from "./search-
|
|
1
|
+
import { C as renderDocsMarkdownDocument, g as findDocsMarkdownPage } from "./agent-3gq3PEVa.mjs";
|
|
2
|
+
import { d as hashGeneratedAgentContent, m as serializeGeneratedAgentDocument, p as parseGeneratedAgentDocument, u as GENERATED_AGENT_PROVENANCE_VERSION } from "./search-BhXicuww.mjs";
|
|
3
3
|
import "./index.mjs";
|
|
4
4
|
import "./prompt-utils-8nmFLQVH.mjs";
|
|
5
5
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
package/dist/cli/index.mjs
CHANGED
|
@@ -80,13 +80,13 @@ async function main() {
|
|
|
80
80
|
const { init } = await import("../init-BFhnsS7P.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-BQIDeAoL.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-vNQt0NUC.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-ChUBdqLo.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-ChUBdqLo.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-B2uu7zsB.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-DcXwu_8y.mjs");
|
|
112
112
|
await syncSearch(searchSyncOptions);
|
|
113
113
|
} else if (parsedCommand.command === "search") {
|
|
114
114
|
console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
|
|
@@ -493,7 +493,7 @@ function readManagedDocsProject(projectRoot) {
|
|
|
493
493
|
titleTemplate: parsed.data.site?.titleTemplate ?? `%s | ${siteName}`,
|
|
494
494
|
description: parsed.data.site?.description ?? `Documentation for ${siteName}.`,
|
|
495
495
|
theme,
|
|
496
|
-
analytics: parsed.data.cloud?.analytics
|
|
496
|
+
analytics: typeof parsed.data.cloud?.analytics !== "undefined" ? parsed.data.cloud.analytics : parsed.data.cloud?.enabled ? { console: false } : void 0
|
|
497
497
|
};
|
|
498
498
|
}
|
|
499
499
|
function resolveLocalPackageSpec(projectRoot, runtimeDir) {
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
-
import { c as DEFAULT_LLMS_TXT_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE } from "./agent-
|
|
1
|
+
import { c as DEFAULT_LLMS_TXT_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE } from "./agent-3gq3PEVa.mjs";
|
|
2
|
+
import "./search-BhXicuww.mjs";
|
|
2
3
|
import "./prompt-utils-8nmFLQVH.mjs";
|
|
3
4
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
4
5
|
import "./server.mjs";
|
|
5
6
|
import { a as loadProjectEnv, c as readNavTitle, d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, p as resolveDocsContentDir, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-Si-yUfM_.mjs";
|
|
6
|
-
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-
|
|
7
|
+
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-ChUBdqLo.mjs";
|
|
7
8
|
import { t as detectFramework } from "./utils-DSMXVnEu.mjs";
|
|
8
9
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
9
10
|
import path from "node:path";
|
|
10
11
|
import pc from "picocolors";
|
|
12
|
+
import { LATEST_PROTOCOL_VERSION } from "@modelcontextprotocol/sdk/types";
|
|
11
13
|
|
|
12
14
|
//#region src/cli/doctor.ts
|
|
13
15
|
const NEXT_CONFIG_PATTERN = /^next\.config\.(?:[cm]?js|[cm]?ts)$/;
|
|
@@ -59,6 +61,19 @@ function parseDoctorArgs(argv) {
|
|
|
59
61
|
parsed.configPath = value;
|
|
60
62
|
continue;
|
|
61
63
|
}
|
|
64
|
+
if (arg.startsWith("--url=")) {
|
|
65
|
+
const value = parseInlineFlag(arg).value;
|
|
66
|
+
if (!value) throw new Error("Missing value for --url.");
|
|
67
|
+
parsed.url = value;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (arg === "--url") {
|
|
71
|
+
const value = argv[index + 1];
|
|
72
|
+
if (!value || value.startsWith("--")) throw new Error("Missing value for --url.");
|
|
73
|
+
parsed.url = value;
|
|
74
|
+
index += 1;
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
62
77
|
if (arg === "--config") {
|
|
63
78
|
const value = argv[index + 1];
|
|
64
79
|
if (!value || value.startsWith("--")) throw new Error("Missing value for --config.");
|
|
@@ -88,6 +103,7 @@ ${pc.dim("Options:")}
|
|
|
88
103
|
${pc.cyan("--site")} Score reader-facing docs quality for the current docs app
|
|
89
104
|
${pc.cyan("--human")} Alias for ${pc.cyan("--site")}
|
|
90
105
|
${pc.cyan("--json")} Print the report as JSON for CI, scripts, and other agents
|
|
106
|
+
${pc.cyan("--url <url>")} Probe hosted agent surfaces, e.g. ${pc.dim("https://docs.example.com")}
|
|
91
107
|
${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
|
|
92
108
|
${pc.cyan("-h, --help")} Show this help message
|
|
93
109
|
`);
|
|
@@ -465,6 +481,10 @@ function gradeForHumanScore(score) {
|
|
|
465
481
|
if (score >= 60) return "Promising";
|
|
466
482
|
return "Needs work";
|
|
467
483
|
}
|
|
484
|
+
function percentageScore(score, maxScore) {
|
|
485
|
+
if (maxScore <= 0) return 0;
|
|
486
|
+
return Math.round(score / maxScore * 100);
|
|
487
|
+
}
|
|
468
488
|
function formatStatus(status) {
|
|
469
489
|
if (status === "pass") return pc.green("PASS");
|
|
470
490
|
if (status === "warn") return pc.yellow("WARN");
|
|
@@ -610,6 +630,216 @@ function buildHumanCoverage(pages, navigationPages) {
|
|
|
610
630
|
navigationPages
|
|
611
631
|
};
|
|
612
632
|
}
|
|
633
|
+
function normalizeDoctorBaseUrl(value) {
|
|
634
|
+
const url = new URL(value);
|
|
635
|
+
if (url.protocol !== "http:" && url.protocol !== "https:") throw new Error("URL must use http or https.");
|
|
636
|
+
url.hash = "";
|
|
637
|
+
url.search = "";
|
|
638
|
+
url.pathname = url.pathname.replace(/\/+$/, "");
|
|
639
|
+
return url.toString().replace(/\/+$/, "");
|
|
640
|
+
}
|
|
641
|
+
function joinDoctorUrl(baseUrl, route) {
|
|
642
|
+
const base = new URL(baseUrl);
|
|
643
|
+
const basePath = base.pathname.replace(/\/+$/, "");
|
|
644
|
+
const routePath = route.startsWith("/") ? route : `/${route}`;
|
|
645
|
+
return new URL(`${basePath}${routePath}`, base.origin).toString();
|
|
646
|
+
}
|
|
647
|
+
function toMarkdownRoute(pageUrl) {
|
|
648
|
+
if (!pageUrl) return void 0;
|
|
649
|
+
const normalized = pageUrl === "/" ? "/index" : pageUrl.replace(/\/+$/, "");
|
|
650
|
+
return normalized.endsWith(".md") ? normalized : `${normalized}.md`;
|
|
651
|
+
}
|
|
652
|
+
async function fetchWithTimeout(url, init = {}, timeoutMs = 8e3) {
|
|
653
|
+
const controller = new AbortController();
|
|
654
|
+
const timeout = setTimeout(() => controller.abort(), timeoutMs);
|
|
655
|
+
try {
|
|
656
|
+
return await fetch(url, {
|
|
657
|
+
...init,
|
|
658
|
+
signal: controller.signal
|
|
659
|
+
});
|
|
660
|
+
} finally {
|
|
661
|
+
clearTimeout(timeout);
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
async function probeTextRoute(baseUrl, route) {
|
|
665
|
+
const url = joinDoctorUrl(baseUrl, route);
|
|
666
|
+
try {
|
|
667
|
+
const response = await fetchWithTimeout(url, { headers: { Accept: "text/plain, text/markdown, */*" } });
|
|
668
|
+
const body = await response.text().catch(() => "");
|
|
669
|
+
if (!response.ok) return {
|
|
670
|
+
ok: false,
|
|
671
|
+
status: response.status,
|
|
672
|
+
detail: `${route} returned HTTP ${response.status}.`
|
|
673
|
+
};
|
|
674
|
+
if (body.trim().length === 0) return {
|
|
675
|
+
ok: false,
|
|
676
|
+
status: response.status,
|
|
677
|
+
detail: `${route} returned an empty body.`
|
|
678
|
+
};
|
|
679
|
+
return {
|
|
680
|
+
ok: true,
|
|
681
|
+
status: response.status,
|
|
682
|
+
detail: `${route} returned HTTP ${response.status} with ${body.length} characters.`
|
|
683
|
+
};
|
|
684
|
+
} catch (error) {
|
|
685
|
+
return {
|
|
686
|
+
ok: false,
|
|
687
|
+
detail: `${route} failed: ${error instanceof Error ? error.message : String(error)}.`
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
async function probeJsonRoute(baseUrl, route) {
|
|
692
|
+
const url = joinDoctorUrl(baseUrl, route);
|
|
693
|
+
try {
|
|
694
|
+
const response = await fetchWithTimeout(url, { headers: { Accept: "application/json" } });
|
|
695
|
+
const text = await response.text().catch(() => "");
|
|
696
|
+
if (!response.ok) return {
|
|
697
|
+
ok: false,
|
|
698
|
+
status: response.status,
|
|
699
|
+
detail: `${route} returned HTTP ${response.status}.`
|
|
700
|
+
};
|
|
701
|
+
try {
|
|
702
|
+
const body = JSON.parse(text);
|
|
703
|
+
return {
|
|
704
|
+
ok: true,
|
|
705
|
+
status: response.status,
|
|
706
|
+
detail: `${route} returned valid JSON.`,
|
|
707
|
+
body
|
|
708
|
+
};
|
|
709
|
+
} catch {
|
|
710
|
+
return {
|
|
711
|
+
ok: false,
|
|
712
|
+
status: response.status,
|
|
713
|
+
detail: `${route} did not return valid JSON.`
|
|
714
|
+
};
|
|
715
|
+
}
|
|
716
|
+
} catch (error) {
|
|
717
|
+
return {
|
|
718
|
+
ok: false,
|
|
719
|
+
detail: `${route} failed: ${error instanceof Error ? error.message : String(error)}.`
|
|
720
|
+
};
|
|
721
|
+
}
|
|
722
|
+
}
|
|
723
|
+
async function parseMcpResponse(response) {
|
|
724
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
725
|
+
const body = await response.text();
|
|
726
|
+
if (contentType.includes("application/json")) return JSON.parse(body);
|
|
727
|
+
const data = body.split("\n").map((line) => line.trim()).filter((line) => line.startsWith("data:")).map((line) => line.slice(5).trimStart()).filter(Boolean).at(-1);
|
|
728
|
+
if (!data) throw new Error(`Expected MCP JSON-RPC payload, got ${body.slice(0, 120) || "empty body"}.`);
|
|
729
|
+
return JSON.parse(data);
|
|
730
|
+
}
|
|
731
|
+
async function postMcpJson(baseUrl, route, body, sessionId) {
|
|
732
|
+
return fetchWithTimeout(joinDoctorUrl(baseUrl, route), {
|
|
733
|
+
method: "POST",
|
|
734
|
+
headers: {
|
|
735
|
+
"Content-Type": "application/json",
|
|
736
|
+
Accept: "application/json, text/event-stream",
|
|
737
|
+
"mcp-protocol-version": LATEST_PROTOCOL_VERSION,
|
|
738
|
+
...sessionId ? { "mcp-session-id": sessionId } : {}
|
|
739
|
+
},
|
|
740
|
+
body: JSON.stringify(body)
|
|
741
|
+
});
|
|
742
|
+
}
|
|
743
|
+
async function probeMcpRoute(baseUrl, route) {
|
|
744
|
+
try {
|
|
745
|
+
const initializeResponse = await postMcpJson(baseUrl, route, {
|
|
746
|
+
jsonrpc: "2.0",
|
|
747
|
+
id: "doctor-initialize",
|
|
748
|
+
method: "initialize",
|
|
749
|
+
params: {
|
|
750
|
+
protocolVersion: LATEST_PROTOCOL_VERSION,
|
|
751
|
+
capabilities: {},
|
|
752
|
+
clientInfo: {
|
|
753
|
+
name: "@farming-labs/docs doctor",
|
|
754
|
+
version: "0.0.0"
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
});
|
|
758
|
+
const initializePayload = await parseMcpResponse(initializeResponse);
|
|
759
|
+
if (!initializeResponse.ok || initializePayload.error) return {
|
|
760
|
+
ok: false,
|
|
761
|
+
detail: `${route} initialize returned HTTP ${initializeResponse.status}: ${String(initializePayload.error?.message ?? "unknown MCP error")}.`
|
|
762
|
+
};
|
|
763
|
+
const sessionId = initializeResponse.headers.get("mcp-session-id");
|
|
764
|
+
if (!sessionId) return {
|
|
765
|
+
ok: false,
|
|
766
|
+
detail: `${route} initialize did not return mcp-session-id.`
|
|
767
|
+
};
|
|
768
|
+
await postMcpJson(baseUrl, route, {
|
|
769
|
+
jsonrpc: "2.0",
|
|
770
|
+
method: "notifications/initialized",
|
|
771
|
+
params: {}
|
|
772
|
+
}, sessionId).catch(() => void 0);
|
|
773
|
+
const toolsResponse = await postMcpJson(baseUrl, route, {
|
|
774
|
+
jsonrpc: "2.0",
|
|
775
|
+
id: "doctor-tools-list",
|
|
776
|
+
method: "tools/list",
|
|
777
|
+
params: {}
|
|
778
|
+
}, sessionId);
|
|
779
|
+
const toolsPayload = await parseMcpResponse(toolsResponse);
|
|
780
|
+
await fetchWithTimeout(joinDoctorUrl(baseUrl, route), {
|
|
781
|
+
method: "DELETE",
|
|
782
|
+
headers: {
|
|
783
|
+
"mcp-protocol-version": LATEST_PROTOCOL_VERSION,
|
|
784
|
+
"mcp-session-id": sessionId
|
|
785
|
+
}
|
|
786
|
+
}).catch(() => void 0);
|
|
787
|
+
if (!toolsResponse.ok || toolsPayload.error) return {
|
|
788
|
+
ok: false,
|
|
789
|
+
detail: `${route} tools/list returned HTTP ${toolsResponse.status}: ${String(toolsPayload.error?.message ?? "unknown MCP error")}.`
|
|
790
|
+
};
|
|
791
|
+
const tools = toolsPayload.result?.tools;
|
|
792
|
+
const toolNames = Array.isArray(tools) ? tools.map((tool) => tool.name).filter((name) => typeof name === "string") : [];
|
|
793
|
+
const missingTools = [
|
|
794
|
+
"list_pages",
|
|
795
|
+
"get_navigation",
|
|
796
|
+
"search_docs",
|
|
797
|
+
"read_page"
|
|
798
|
+
].filter((tool) => !toolNames.includes(tool));
|
|
799
|
+
if (missingTools.length > 0) return {
|
|
800
|
+
ok: false,
|
|
801
|
+
detail: `${route} connected but is missing tools: ${missingTools.join(", ")}.`
|
|
802
|
+
};
|
|
803
|
+
return {
|
|
804
|
+
ok: true,
|
|
805
|
+
detail: `${route} initialized and exposed ${toolNames.length} MCP tool${toolNames.length === 1 ? "" : "s"}.`
|
|
806
|
+
};
|
|
807
|
+
} catch (error) {
|
|
808
|
+
return {
|
|
809
|
+
ok: false,
|
|
810
|
+
detail: `${route} failed: ${error instanceof Error ? error.message : String(error)}.`
|
|
811
|
+
};
|
|
812
|
+
}
|
|
813
|
+
}
|
|
814
|
+
async function buildHostedAgentChecks(url, pages) {
|
|
815
|
+
let baseUrl;
|
|
816
|
+
try {
|
|
817
|
+
baseUrl = normalizeDoctorBaseUrl(url);
|
|
818
|
+
} catch (error) {
|
|
819
|
+
return { checks: [makeCheck("hosted-url", "Hosted URL", "fail", 0, 5, `Could not parse --url "${url}": ${error instanceof Error ? error.message : String(error)}`, "Pass a full hosted URL such as https://docs.example.com.")] };
|
|
820
|
+
}
|
|
821
|
+
const checks = [];
|
|
822
|
+
const discovery = await probeJsonRoute(baseUrl, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE);
|
|
823
|
+
checks.push(makeCheck("hosted-agent-discovery", "Hosted agent discovery", discovery.ok ? "pass" : "fail", discovery.ok ? 5 : 0, 5, `${baseUrl}: ${discovery.detail}`, discovery.ok ? void 0 : `Make sure ${DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE} is routed to the shared docs API on the deployed site.`));
|
|
824
|
+
const llms = await Promise.all([probeTextRoute(baseUrl, DEFAULT_LLMS_TXT_ROUTE), probeTextRoute(baseUrl, DEFAULT_LLMS_FULL_TXT_ROUTE)]);
|
|
825
|
+
const llmsPassed = llms.filter((result) => result.ok).length;
|
|
826
|
+
checks.push(makeCheck("hosted-llms", "Hosted llms.txt", llmsPassed === llms.length ? "pass" : llmsPassed > 0 ? "warn" : "fail", llmsPassed === llms.length ? 5 : llmsPassed > 0 ? 3 : 0, 5, llms.map((result) => result.detail).join(" "), llmsPassed === llms.length ? void 0 : "Verify deployed /llms.txt and /llms-full.txt routes return non-empty text."));
|
|
827
|
+
const skill = await Promise.all([probeTextRoute(baseUrl, DEFAULT_SKILL_MD_ROUTE), probeTextRoute(baseUrl, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE)]);
|
|
828
|
+
const skillPassed = skill.filter((result) => result.ok).length;
|
|
829
|
+
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."));
|
|
830
|
+
const markdownRoute = toMarkdownRoute(pages[0]?.url);
|
|
831
|
+
if (markdownRoute) {
|
|
832
|
+
const markdown = await probeTextRoute(baseUrl, markdownRoute);
|
|
833
|
+
checks.push(makeCheck("hosted-markdown", "Hosted markdown route", markdown.ok ? "pass" : "fail", markdown.ok ? 5 : 0, 5, markdown.detail, markdown.ok ? void 0 : `Verify deployed markdown routes are forwarded, starting with ${markdownRoute}.`));
|
|
834
|
+
} else checks.push(makeCheck("hosted-markdown", "Hosted markdown route", "warn", 0, 5, "No local docs page was available to choose a sample .md route.", "Add docs pages so the hosted doctor can probe a representative .md route."));
|
|
835
|
+
const mcp = await Promise.all([probeMcpRoute(baseUrl, DEFAULT_MCP_PUBLIC_ROUTE), probeMcpRoute(baseUrl, DEFAULT_MCP_WELL_KNOWN_ROUTE)]);
|
|
836
|
+
const mcpPassed = mcp.filter((result) => result.ok).length;
|
|
837
|
+
checks.push(makeCheck("hosted-mcp", "Hosted MCP handshake", mcpPassed === mcp.length ? "pass" : mcpPassed > 0 ? "warn" : "fail", mcpPassed === mcp.length ? 10 : mcpPassed > 0 ? 5 : 0, 10, mcp.map((result) => result.detail).join(" "), mcpPassed === mcp.length ? void 0 : `Verify deployed ${DEFAULT_MCP_PUBLIC_ROUTE} and ${DEFAULT_MCP_WELL_KNOWN_ROUTE} support Streamable HTTP initialize and tools/list.`));
|
|
838
|
+
return {
|
|
839
|
+
baseUrl,
|
|
840
|
+
checks
|
|
841
|
+
};
|
|
842
|
+
}
|
|
613
843
|
async function loadDocsConfigModuleWithProjectEnv(rootDir, explicitPath) {
|
|
614
844
|
const env = loadProjectEnv(rootDir);
|
|
615
845
|
const injectedKeys = Object.entries(env).filter(([key]) => process.env[key] === void 0).map(([key, value]) => {
|
|
@@ -716,6 +946,8 @@ async function inspectAgentReadiness(options = {}) {
|
|
|
716
946
|
const coverageResult = coverageScore(coverage.explicitCoverage);
|
|
717
947
|
checks.push(makeCheck("coverage", "Explicit page optimization", coverageResult.status, coverageResult.score, 10, coverage.totalPages > 0 ? `${coverage.explicitPages}/${coverage.totalPages} pages define explicit machine-only context (${coverage.pagesWithAgentFiles} agent.md, ${coverage.pagesWithAgentBlocks} Agent blocks, ${coverage.explicitCoverage}% of pages).` : "No docs pages were available to score explicit page optimization.", coverage.explicitCoverage >= 50 ? void 0 : "Add agent.md files or <Agent> blocks to more pages, or run docs agent compact to create page-level machine docs."));
|
|
718
948
|
checks.push(makeCheck("compact", "Agent compaction freshness", compactionResult.status, compactionResult.score, 5, `${compactionCoverage.freshGeneratedPages} fresh, ${compactionCoverage.staleGeneratedPages} stale, ${compactionCoverage.modifiedGeneratedPages} modified, ${compactionCoverage.unknownGeneratedPages} unknown, ${compactionCoverage.tokenBudgetMissingPages} token-budget missing, and ${compactionCoverage.otherMissingPages} other missing page${compactionCoverage.otherMissingPages === 1 ? "" : "s"} across compactable docs pages.` + (compactConfigured ? " agent.compact defaults are configured." : " No agent.compact defaults were found in docs config."), compactionResult.recommendation));
|
|
949
|
+
const hosted = options.url ? await buildHostedAgentChecks(options.url, pages) : void 0;
|
|
950
|
+
if (hosted) checks.push(...hosted.checks);
|
|
719
951
|
const score = checks.reduce((total, check) => total + check.score, 0);
|
|
720
952
|
const maxScore = checks.reduce((total, check) => total + check.maxScore, 0);
|
|
721
953
|
return {
|
|
@@ -724,9 +956,10 @@ async function inspectAgentReadiness(options = {}) {
|
|
|
724
956
|
configPath: path.relative(rootDir, configPath).replace(/\\/g, "/"),
|
|
725
957
|
entry,
|
|
726
958
|
contentDir,
|
|
959
|
+
url: hosted?.baseUrl,
|
|
727
960
|
score,
|
|
728
961
|
maxScore,
|
|
729
|
-
grade: gradeForAgentScore(score),
|
|
962
|
+
grade: gradeForAgentScore(percentageScore(score, maxScore)),
|
|
730
963
|
checks,
|
|
731
964
|
coverage,
|
|
732
965
|
recommendations: checks.map((check) => check.recommendation).filter((recommendation) => Boolean(recommendation)).slice(0, 3)
|
|
@@ -807,7 +1040,7 @@ async function inspectHumanReadiness(options = {}) {
|
|
|
807
1040
|
contentDir,
|
|
808
1041
|
score,
|
|
809
1042
|
maxScore,
|
|
810
|
-
grade: gradeForHumanScore(score),
|
|
1043
|
+
grade: gradeForHumanScore(percentageScore(score, maxScore)),
|
|
811
1044
|
checks,
|
|
812
1045
|
coverage,
|
|
813
1046
|
recommendations: checks.map((check) => check.recommendation).filter((recommendation) => Boolean(recommendation)).slice(0, 3)
|
|
@@ -818,6 +1051,7 @@ function printAgentDoctorReport(report) {
|
|
|
818
1051
|
console.log();
|
|
819
1052
|
console.log(`${pc.bold("Score:")} ${pc.cyan(`${report.score}/${report.maxScore}`)} ${pc.dim(`(${report.grade})`)}`);
|
|
820
1053
|
console.log(`${pc.bold("Framework:")} ${report.framework} ${pc.dim("•")} ${pc.bold("Entry:")} ${report.entry ?? "docs"} ${pc.dim("•")} ${pc.bold("Content:")} ${report.contentDir ?? "-"}`);
|
|
1054
|
+
if (report.url) console.log(`${pc.bold("Hosted URL:")} ${report.url}`);
|
|
821
1055
|
console.log(`${pc.bold("Explicit agent-friendly pages:")} ${report.coverage.explicitPages}/${report.coverage.totalPages} pages ${pc.dim(`(${report.coverage.explicitCoverage}%)`)}`);
|
|
822
1056
|
console.log(`${pc.bold("Generated agent.md freshness:")} ${report.coverage.compaction.freshGeneratedPages} fresh ${pc.dim("•")} ${report.coverage.compaction.staleGeneratedPages} stale ${pc.dim("•")} ${report.coverage.compaction.modifiedGeneratedPages} modified ${pc.dim("•")} ${report.coverage.compaction.tokenBudgetMissingPages} token-budget missing`);
|
|
823
1057
|
console.log();
|
package/dist/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $ as PageFrontmatter, A as DocsSearchAdapterContext, B as DocsTheme, C as DocsI18nConfig, D as DocsNav, E as DocsMetadata, F as DocsSearchEmbeddingsConfig, G as LlmsTxtConfig, H as FontStyle, I as DocsSearchQuery, J as OpenDocsConfig, K as McpDocsSearchConfig, L as DocsSearchResult, M as DocsSearchChunkingConfig, N as DocsSearchConfig, O as DocsRelatedItem, P as DocsSearchDocument, Q as PageActionsConfig, R as DocsSearchResultType, S as DocsFeedbackValue, T as DocsMcpToolsConfig, U as GithubConfig, V as FeedbackConfig, W as LastUpdatedConfig, X as OpenGraphImage, Y as OpenDocsProvider, Z as OrderingItem, _ as DocsAnalyticsEventType, a as ApiReferenceRenderer, at as SidebarComponentProps, b as DocsConfig, c as ChangelogFrontmatter, ct as SidebarFolderNode, d as CustomDocsSearchConfig, dt as SidebarTree, et as PageOpenGraph, f as DocsAgentFeedbackContext, ft as SimpleDocsSearchConfig, g as DocsAnalyticsEventInput, gt as UIConfig, h as DocsAnalyticsEvent, ht as TypographyConfig, i as ApiReferenceConfig, it as ResolvedDocsRelatedLink, j as DocsSearchAdapterFactory, k as DocsSearchAdapter, l as CodeBlockCopyData, lt as SidebarNode, m as DocsAnalyticsConfig, mt as TypesenseDocsSearchConfig, n as AgentFeedbackConfig, nt as PageTwitter, o as BreadcrumbConfig, ot as SidebarConfig, p as DocsAgentFeedbackData, pt as ThemeToggleConfig, q as OGConfig, r as AlgoliaDocsSearchConfig, rt as ReadingTimeConfig, s as ChangelogConfig, st as SidebarFolderIndexBehavior, t as AIConfig, tt as PageSidebarFrontmatter, u as CopyMarkdownConfig, ut as SidebarPageNode, v as DocsAnalyticsInput, w as DocsMcpConfig, x as DocsFeedbackData, y as DocsAnalyticsSource, z as DocsSearchSourcePage } from "./types-DfiAeeHu.mjs";
|
|
2
|
-
import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as resolveDocsAnalyticsConfig, i as createMcpSearchAdapter, l as ResolvedDocsAnalyticsConfig, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as emitDocsAnalyticsEvent } from "./search-
|
|
2
|
+
import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as resolveDocsAnalyticsConfig, f as DocsCloudAnalyticsOptions, i as createMcpSearchAdapter, l as ResolvedDocsAnalyticsConfig, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, p as createDocsCloudAnalytics, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as emitDocsAnalyticsEvent } from "./search-6P9iaMYq.mjs";
|
|
3
3
|
import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/define-docs.d.ts
|
|
@@ -372,4 +372,4 @@ declare function buildDocsAgentDiscoverySpec({
|
|
|
372
372
|
};
|
|
373
373
|
};
|
|
374
374
|
//#endregion
|
|
375
|
-
export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, type DocsAgentDiscoverySpecOptions, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsAgentFeedbackDiscoveryConfig, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAnalyticsEventType, type DocsAnalyticsInput, type DocsAnalyticsSource, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsLlmsDiscoveryConfig, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsRelatedItem, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsSkillDocumentOptions, type DocsTheme, type FeedbackConfig, type FontStyle, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, type GeneratedAgentProvenance, type GeneratedAgentSourceKind, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageSidebarFrontmatter, type PageTwitter, type ReadingTimeConfig, type ResolvedChangelogConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsI18n, 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, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAnalyticsEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
|
|
375
|
+
export { type AIConfig, type AgentFeedbackConfig, type AlgoliaDocsSearchConfig, type ApiReferenceConfig, type ApiReferenceRenderer, type BreadcrumbConfig, type ChangelogConfig, type ChangelogEntrySummary, type ChangelogFrontmatter, type CodeBlockCopyData, type CopyMarkdownConfig, type CustomDocsSearchConfig, DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, type DocsAgentDiscoverySpecOptions, type DocsAgentFeedbackContext, type DocsAgentFeedbackData, type DocsAgentFeedbackDiscoveryConfig, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsAnalyticsEventType, type DocsAnalyticsInput, type DocsAnalyticsSource, type DocsCloudAnalyticsOptions, type DocsConfig, type DocsFeedbackData, type DocsFeedbackValue, type DocsI18nConfig, type DocsLlmsDiscoveryConfig, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsPathMatch, type DocsRelatedItem, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchChunkingConfig, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchEmbeddingsConfig, type DocsSearchQuery, type DocsSearchResult, type DocsSearchResultType, type DocsSearchSourcePage, type DocsSkillDocumentOptions, type DocsTheme, type FeedbackConfig, type FontStyle, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, type GeneratedAgentProvenance, type GeneratedAgentSourceKind, type GithubConfig, type LastUpdatedConfig, type LlmsTxtConfig, type McpDocsSearchConfig, type OGConfig, type OpenDocsConfig, type OpenDocsProvider, type OpenGraphImage, type OrderingItem, type PageActionsConfig, type PageFrontmatter, type PageOpenGraph, type PageSidebarFrontmatter, type PageTwitter, type ReadingTimeConfig, type ResolvedChangelogConfig, type ResolvedDocsAnalyticsConfig, type ResolvedDocsI18n, 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, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsCloudAnalytics, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAnalyticsEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
|
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as resolvePageSidebarFolderIndexBehavior, B as resolveOGImage, C as renderDocsMarkdownDocument, D as resolveDocsMarkdownRequest, E as resolveDocsLlmsTxtFormat, F as resolveReadingTimeFromContent, G as createTheme, H as resolveDocsI18n, I as resolveReadingTimeFromSource, J as resolveChangelogConfig, K as extendTheme, L as resolveReadingTimeOptions, M as resolveSidebarFolderIndexBehaviorForPath, N as estimateReadingTimeMinutes, O as resolveDocsSkillFormat, P as resolvePageReadingTime, R as buildPageOpenGraph, S as normalizeDocsUrlPath, T as resolveDocsAgentMdxContent, U as resolveDocsLocale, V as resolveTitle, W as resolveDocsPath, Y as defineDocs, _ as isDocsAgentDiscoveryRequest, a as DEFAULT_DOCS_API_ROUTE, b as isDocsSkillRequest, c as DEFAULT_LLMS_TXT_ROUTE, d as DEFAULT_MCP_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, g as findDocsMarkdownPage, h as buildDocsAgentDiscoverySpec, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, j as resolveSidebarFolderIndexBehavior, k as applySidebarFolderIndexBehavior, l as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, n as DEFAULT_AGENT_SPEC_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, q as deepMerge, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, s as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE, v as isDocsMcpRequest, w as renderDocsSkillDocument, x as normalizeDocsPathSegment, y as isDocsPublicGetRequest, z as buildPageTwitter } from "./agent-
|
|
2
|
-
import { _ as renderDocsRelatedMarkdownLines, a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as hashGeneratedAgentContent, f as normalizeGeneratedAgentContent, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, i as createMcpSearchAdapter, l as GENERATED_AGENT_PROVENANCE_MARKER, m as serializeGeneratedAgentDocument, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, p as parseGeneratedAgentDocument, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as GENERATED_AGENT_PROVENANCE_VERSION, v as emitDocsAnalyticsEvent, y as resolveDocsAnalyticsConfig } from "./search-
|
|
1
|
+
import { A as resolvePageSidebarFolderIndexBehavior, B as resolveOGImage, C as renderDocsMarkdownDocument, D as resolveDocsMarkdownRequest, E as resolveDocsLlmsTxtFormat, F as resolveReadingTimeFromContent, G as createTheme, H as resolveDocsI18n, I as resolveReadingTimeFromSource, J as resolveChangelogConfig, K as extendTheme, L as resolveReadingTimeOptions, M as resolveSidebarFolderIndexBehaviorForPath, N as estimateReadingTimeMinutes, O as resolveDocsSkillFormat, P as resolvePageReadingTime, R as buildPageOpenGraph, S as normalizeDocsUrlPath, T as resolveDocsAgentMdxContent, U as resolveDocsLocale, V as resolveTitle, W as resolveDocsPath, Y as defineDocs, _ as isDocsAgentDiscoveryRequest, a as DEFAULT_DOCS_API_ROUTE, b as isDocsSkillRequest, c as DEFAULT_LLMS_TXT_ROUTE, d as DEFAULT_MCP_ROUTE, f as DEFAULT_MCP_WELL_KNOWN_ROUTE, g as findDocsMarkdownPage, h as buildDocsAgentDiscoverySpec, i as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, j as resolveSidebarFolderIndexBehavior, k as applySidebarFolderIndexBehavior, l as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, m as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, n as DEFAULT_AGENT_SPEC_ROUTE, o as DEFAULT_LLMS_FULL_TXT_ROUTE, p as DEFAULT_SKILL_MD_ROUTE, q as deepMerge, r as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, s as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, t as DEFAULT_AGENT_FEEDBACK_ROUTE, u as DEFAULT_MCP_PUBLIC_ROUTE, v as isDocsMcpRequest, w as renderDocsSkillDocument, x as normalizeDocsPathSegment, y as isDocsPublicGetRequest, z as buildPageTwitter } from "./agent-3gq3PEVa.mjs";
|
|
2
|
+
import { _ as renderDocsRelatedMarkdownLines, a as createSimpleSearchAdapter, b as createDocsCloudAnalytics, c as resolveSearchRequestConfig, d as hashGeneratedAgentContent, f as normalizeGeneratedAgentContent, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, i as createMcpSearchAdapter, l as GENERATED_AGENT_PROVENANCE_MARKER, m as serializeGeneratedAgentDocument, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, p as parseGeneratedAgentDocument, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as GENERATED_AGENT_PROVENANCE_VERSION, v as emitDocsAnalyticsEvent, y as resolveDocsAnalyticsConfig } from "./search-BhXicuww.mjs";
|
|
3
3
|
|
|
4
|
-
export { DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAnalyticsEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
|
|
4
|
+
export { DEFAULT_AGENT_FEEDBACK_ROUTE, DEFAULT_AGENT_SPEC_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, DEFAULT_DOCS_API_ROUTE, DEFAULT_LLMS_FULL_TXT_ROUTE, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, DEFAULT_LLMS_TXT_ROUTE, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE, DEFAULT_MCP_PUBLIC_ROUTE, DEFAULT_MCP_ROUTE, DEFAULT_MCP_WELL_KNOWN_ROUTE, DEFAULT_SKILL_MD_ROUTE, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, GENERATED_AGENT_PROVENANCE_MARKER, GENERATED_AGENT_PROVENANCE_VERSION, applySidebarFolderIndexBehavior, buildDocsAgentDiscoverySpec, buildDocsSearchDocuments, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsCloudAnalytics, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAnalyticsEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, hashGeneratedAgentContent, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, renderDocsMarkdownDocument, renderDocsRelatedMarkdownLines, renderDocsSkillDocument, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsPath, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance };
|
package/dist/mcp.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as renderDocsRelatedMarkdownLines, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, s as performDocsSearch, v as emitDocsAnalyticsEvent } from "./search-
|
|
1
|
+
import { _ as renderDocsRelatedMarkdownLines, g as normalizeDocsRelated, h as stripGeneratedAgentProvenance, s as performDocsSearch, v as emitDocsAnalyticsEvent } from "./search-BhXicuww.mjs";
|
|
2
2
|
import matter from "gray-matter";
|
|
3
3
|
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
import { K as McpDocsSearchConfig, L as DocsSearchResult, M as DocsSearchChunkingConfig, N as DocsSearchConfig, P as DocsSearchDocument, d as CustomDocsSearchConfig, g as DocsAnalyticsEventInput, h as DocsAnalyticsEvent, j as DocsSearchAdapterFactory, k as DocsSearchAdapter, m as DocsAnalyticsConfig, mt as TypesenseDocsSearchConfig, r as AlgoliaDocsSearchConfig, z as DocsSearchSourcePage } from "./types-DfiAeeHu.mjs";
|
|
2
2
|
|
|
3
|
+
//#region src/cloud-analytics.d.ts
|
|
4
|
+
interface DocsCloudAnalyticsOptions {
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
console?: DocsAnalyticsConfig["console"];
|
|
7
|
+
includeInputs?: boolean;
|
|
8
|
+
projectId?: string;
|
|
9
|
+
apiKey?: string;
|
|
10
|
+
}
|
|
11
|
+
declare function createDocsCloudAnalytics(options?: DocsCloudAnalyticsOptions): DocsAnalyticsConfig;
|
|
12
|
+
//#endregion
|
|
3
13
|
//#region src/analytics.d.ts
|
|
4
14
|
interface ResolvedDocsAnalyticsConfig {
|
|
5
15
|
enabled: boolean;
|
|
@@ -28,4 +38,4 @@ declare function performDocsSearch(options: {
|
|
|
28
38
|
}): Promise<DocsSearchResult[]>;
|
|
29
39
|
declare function createCustomSearchAdapter(adapter: DocsSearchAdapter | DocsSearchAdapterFactory): CustomDocsSearchConfig;
|
|
30
40
|
//#endregion
|
|
31
|
-
export { createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, resolveDocsAnalyticsConfig as d, createMcpSearchAdapter as i, ResolvedDocsAnalyticsConfig as l, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, emitDocsAnalyticsEvent as u };
|
|
41
|
+
export { createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, resolveDocsAnalyticsConfig as d, DocsCloudAnalyticsOptions as f, createMcpSearchAdapter as i, ResolvedDocsAnalyticsConfig as l, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, createDocsCloudAnalytics as p, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, emitDocsAnalyticsEvent as u };
|
|
@@ -1,4 +1,74 @@
|
|
|
1
|
+
//#region src/cloud-analytics.ts
|
|
2
|
+
const DOCS_CLOUD_ANALYTICS_OPTIONS = Symbol.for("@farming-labs/docs/cloud-analytics");
|
|
3
|
+
const DOCS_CLOUD_ANALYTICS_ENDPOINT = "https://docs.farming-labs.dev/api/analytics/events";
|
|
4
|
+
function readRuntimeEnv(name) {
|
|
5
|
+
if (typeof process !== "undefined" && process.env && typeof process.env[name] === "string" && process.env[name].trim().length > 0) return process.env[name].trim();
|
|
6
|
+
}
|
|
7
|
+
function isTruthyEnv(value) {
|
|
8
|
+
if (!value) return false;
|
|
9
|
+
return /^(1|true|yes|on)$/i.test(value);
|
|
10
|
+
}
|
|
11
|
+
function resolveDocsCloudAnalyticsOptions(analytics) {
|
|
12
|
+
if (analytics && typeof analytics === "object") {
|
|
13
|
+
const explicit = analytics[DOCS_CLOUD_ANALYTICS_OPTIONS];
|
|
14
|
+
if (explicit) return explicit;
|
|
15
|
+
}
|
|
16
|
+
if (!isTruthyEnv(readRuntimeEnv("NEXT_PUBLIC_DOCS_CLOUD_ANALYTICS_ENABLED") ?? readRuntimeEnv("DOCS_CLOUD_ANALYTICS_ENABLED"))) return null;
|
|
17
|
+
const projectId = readRuntimeEnv("NEXT_PUBLIC_DOCS_CLOUD_PROJECT_ID") ?? readRuntimeEnv("DOCS_CLOUD_PROJECT_ID");
|
|
18
|
+
const apiKey = readRuntimeEnv("NEXT_PUBLIC_DOCS_CLOUD_ANALYTICS_KEY") ?? readRuntimeEnv("DOCS_CLOUD_ANALYTICS_KEY");
|
|
19
|
+
if (!projectId) return null;
|
|
20
|
+
return {
|
|
21
|
+
projectId,
|
|
22
|
+
apiKey
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async function sendDocsCloudAnalyticsEvent(options, event) {
|
|
26
|
+
if (typeof fetch !== "function") return;
|
|
27
|
+
const endpoint = DOCS_CLOUD_ANALYTICS_ENDPOINT;
|
|
28
|
+
const projectId = options.projectId?.trim();
|
|
29
|
+
if (!projectId) return;
|
|
30
|
+
try {
|
|
31
|
+
await fetch(endpoint, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: {
|
|
34
|
+
"content-type": "application/json",
|
|
35
|
+
...options.apiKey ? { authorization: `Bearer ${options.apiKey}` } : {}
|
|
36
|
+
},
|
|
37
|
+
body: JSON.stringify({
|
|
38
|
+
projectId,
|
|
39
|
+
event
|
|
40
|
+
}),
|
|
41
|
+
keepalive: true
|
|
42
|
+
});
|
|
43
|
+
} catch {}
|
|
44
|
+
}
|
|
45
|
+
function createDocsCloudAnalytics(options = {}) {
|
|
46
|
+
const analytics = {
|
|
47
|
+
enabled: options.enabled,
|
|
48
|
+
console: options.console,
|
|
49
|
+
includeInputs: options.includeInputs
|
|
50
|
+
};
|
|
51
|
+
analytics[DOCS_CLOUD_ANALYTICS_OPTIONS] = options;
|
|
52
|
+
return analytics;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
//#endregion
|
|
1
56
|
//#region src/analytics.ts
|
|
57
|
+
function composeAnalyticsHandlers(userOnEvent, cloudOnEvent) {
|
|
58
|
+
if (typeof userOnEvent !== "function" && !cloudOnEvent) return;
|
|
59
|
+
return async (event) => {
|
|
60
|
+
let userError;
|
|
61
|
+
if (typeof userOnEvent === "function") try {
|
|
62
|
+
await userOnEvent(event);
|
|
63
|
+
} catch (error) {
|
|
64
|
+
userError = error;
|
|
65
|
+
}
|
|
66
|
+
if (cloudOnEvent) try {
|
|
67
|
+
await cloudOnEvent(event);
|
|
68
|
+
} catch {}
|
|
69
|
+
if (typeof userError !== "undefined") throw userError;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
2
72
|
function resolveConsoleLevel(value, hasEventHandler) {
|
|
3
73
|
if (value === false) return false;
|
|
4
74
|
if (value === true) return "info";
|
|
@@ -6,22 +76,37 @@ function resolveConsoleLevel(value, hasEventHandler) {
|
|
|
6
76
|
return hasEventHandler ? false : "info";
|
|
7
77
|
}
|
|
8
78
|
function resolveDocsAnalyticsConfig(analytics) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
79
|
+
const cloudOptions = resolveDocsCloudAnalyticsOptions(analytics);
|
|
80
|
+
const cloudOnEvent = cloudOptions ? async (event) => {
|
|
81
|
+
await sendDocsCloudAnalyticsEvent(cloudOptions, event);
|
|
82
|
+
} : void 0;
|
|
83
|
+
if (!analytics) {
|
|
84
|
+
if (!cloudOnEvent) return {
|
|
85
|
+
enabled: false,
|
|
86
|
+
console: false,
|
|
87
|
+
includeInputs: false
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
enabled: true,
|
|
91
|
+
console: false,
|
|
92
|
+
includeInputs: false,
|
|
93
|
+
onEvent: cloudOnEvent
|
|
94
|
+
};
|
|
95
|
+
}
|
|
14
96
|
if (analytics === true) return {
|
|
15
97
|
enabled: true,
|
|
16
98
|
console: "info",
|
|
17
|
-
includeInputs: false
|
|
99
|
+
includeInputs: false,
|
|
100
|
+
onEvent: cloudOnEvent
|
|
18
101
|
};
|
|
19
|
-
const
|
|
102
|
+
const userOnEvent = analytics.onEvent;
|
|
103
|
+
const hasEventHandler = typeof userOnEvent === "function" || Boolean(cloudOnEvent);
|
|
104
|
+
const onEvent = composeAnalyticsHandlers(userOnEvent, cloudOnEvent);
|
|
20
105
|
return {
|
|
21
106
|
enabled: analytics.enabled !== false,
|
|
22
107
|
console: resolveConsoleLevel(analytics.console, hasEventHandler),
|
|
23
108
|
includeInputs: analytics.includeInputs === true,
|
|
24
|
-
onEvent
|
|
109
|
+
onEvent
|
|
25
110
|
};
|
|
26
111
|
}
|
|
27
112
|
function normalizeAnalyticsEvent(event, config) {
|
|
@@ -842,4 +927,4 @@ function createCustomSearchAdapter(adapter) {
|
|
|
842
927
|
}
|
|
843
928
|
|
|
844
929
|
//#endregion
|
|
845
|
-
export { renderDocsRelatedMarkdownLines as _, createSimpleSearchAdapter as a, resolveSearchRequestConfig as c, hashGeneratedAgentContent as d, normalizeGeneratedAgentContent as f, normalizeDocsRelated as g, stripGeneratedAgentProvenance as h, createMcpSearchAdapter as i, GENERATED_AGENT_PROVENANCE_MARKER as l, serializeGeneratedAgentDocument as m, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, parseGeneratedAgentDocument as p, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, GENERATED_AGENT_PROVENANCE_VERSION as u, emitDocsAnalyticsEvent as v, resolveDocsAnalyticsConfig as y };
|
|
930
|
+
export { renderDocsRelatedMarkdownLines as _, createSimpleSearchAdapter as a, createDocsCloudAnalytics as b, resolveSearchRequestConfig as c, hashGeneratedAgentContent as d, normalizeGeneratedAgentContent as f, normalizeDocsRelated as g, stripGeneratedAgentProvenance as h, createMcpSearchAdapter as i, GENERATED_AGENT_PROVENANCE_MARKER as l, serializeGeneratedAgentDocument as m, createAlgoliaSearchAdapter as n, createTypesenseSearchAdapter as o, parseGeneratedAgentDocument as p, createCustomSearchAdapter as r, performDocsSearch as s, buildDocsSearchDocuments as t, GENERATED_AGENT_PROVENANCE_VERSION as u, emitDocsAnalyticsEvent as v, resolveDocsAnalyticsConfig as y };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-
|
|
1
|
+
import { n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, t as buildDocsSearchDocuments } from "./search-BhXicuww.mjs";
|
|
2
2
|
import "./prompt-utils-8nmFLQVH.mjs";
|
|
3
3
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
4
4
|
import "./server.mjs";
|
package/dist/server.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { A as DocsSearchAdapterContext, I as DocsSearchQuery, K as McpDocsSearchConfig, L as DocsSearchResult, N as DocsSearchConfig, P as DocsSearchDocument, Y as OpenDocsProvider, a as ApiReferenceRenderer, b as DocsConfig, g as DocsAnalyticsEventInput, h as DocsAnalyticsEvent, j as DocsSearchAdapterFactory, k as DocsSearchAdapter, m as DocsAnalyticsConfig, z as DocsSearchSourcePage } from "./types-DfiAeeHu.mjs";
|
|
2
|
-
import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as resolveDocsAnalyticsConfig, i as createMcpSearchAdapter, l as ResolvedDocsAnalyticsConfig, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as emitDocsAnalyticsEvent } from "./search-
|
|
2
|
+
import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, d as resolveDocsAnalyticsConfig, f as DocsCloudAnalyticsOptions, i as createMcpSearchAdapter, l as ResolvedDocsAnalyticsConfig, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, p as createDocsCloudAnalytics, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, u as emitDocsAnalyticsEvent } from "./search-6P9iaMYq.mjs";
|
|
3
3
|
import { DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpResolvedConfig, DocsMcpSource, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/api-reference.d.ts
|
|
@@ -63,4 +63,4 @@ declare function parsePromptStringArray(value: unknown): string[] | undefined;
|
|
|
63
63
|
declare function resolvePromptProviderChoices(availableProviders?: PromptProviderInput[], preferredNames?: string[]): PromptProviderChoice[];
|
|
64
64
|
declare function sanitizePromptText(text: string): string;
|
|
65
65
|
//#endregion
|
|
66
|
-
export { type ApiReferenceFramework, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_PROMPT_PROVIDER_TEMPLATES, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAnalyticsEvent, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
|
|
66
|
+
export { type ApiReferenceFramework, type ApiReferenceRenderer, type ApiReferenceRoute, DEFAULT_PROMPT_PROVIDER_TEMPLATES, type DocsAnalyticsConfig, type DocsAnalyticsEvent, type DocsAnalyticsEventInput, type DocsCloudAnalyticsOptions, type DocsMcpHttpHandlers, type DocsMcpNavigationNode, type DocsMcpNavigationTree, type DocsMcpPage, type DocsMcpResolvedConfig, type DocsMcpSource, type DocsSearchAdapter, type DocsSearchAdapterContext, type DocsSearchAdapterFactory, type DocsSearchConfig, type DocsSearchDocument, type DocsSearchQuery, type DocsSearchResult, type DocsSearchSourcePage, type McpDocsSearchConfig, type PromptAction, type PromptProviderChoice, type ResolvedApiReferenceConfig, type ResolvedDocsAnalyticsConfig, type SerializedOpenDocsProvider, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAnalyticsEvent, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
|
package/dist/server.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { a as createSimpleSearchAdapter, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, v as emitDocsAnalyticsEvent, y as resolveDocsAnalyticsConfig } from "./search-
|
|
1
|
+
import { a as createSimpleSearchAdapter, b as createDocsCloudAnalytics, c as resolveSearchRequestConfig, i as createMcpSearchAdapter, n as createAlgoliaSearchAdapter, o as createTypesenseSearchAdapter, r as createCustomSearchAdapter, s as performDocsSearch, t as buildDocsSearchDocuments, v as emitDocsAnalyticsEvent, y as resolveDocsAnalyticsConfig } from "./search-BhXicuww.mjs";
|
|
2
2
|
import { a as sanitizePromptText, c as serializeOpenDocsProviders, d as buildApiReferenceOpenApiDocument, f as buildApiReferenceOpenApiDocumentAsync, g as resolveApiReferenceRenderer, h as resolveApiReferenceConfig, i as resolvePromptProviderChoices, l as buildApiReferenceHtmlDocument, m as buildApiReferenceScalarCss, n as normalizePromptProviderName, o as serializeDocsIcon, p as buildApiReferencePageTitle, r as parsePromptStringArray, s as serializeDocsIconRegistry, t as DEFAULT_PROMPT_PROVIDER_TEMPLATES, u as buildApiReferenceHtmlDocumentAsync } from "./prompt-utils-8nmFLQVH.mjs";
|
|
3
3
|
import { createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
4
4
|
|
|
5
|
-
export { DEFAULT_PROMPT_PROVIDER_TEMPLATES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAnalyticsEvent, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
|
|
5
|
+
export { DEFAULT_PROMPT_PROVIDER_TEMPLATES, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsSearchDocuments, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsCloudAnalytics, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAnalyticsEvent, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, resolveApiReferenceConfig, resolveApiReferenceRenderer, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProviders };
|