@farming-labs/docs 0.1.92 → 0.1.94
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-DV2Qc7qh.mjs → agent-DvxjrAXk.mjs} +1 -1
- package/dist/cli/index.mjs +5 -5
- package/dist/{doctor-DFseGu9S.mjs → doctor-Bz0Zbvv9.mjs} +180 -4
- package/dist/index.d.mts +14 -1
- package/dist/index.mjs +2 -2
- package/dist/{robots-D7dvjbuN.mjs → robots-5ywOPCZ-.mjs} +10 -1
- package/dist/{robots-CbylLz5o.mjs → robots-RfxmIgQV.mjs} +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "./reading-time-CbbHNg9V.mjs";
|
|
2
2
|
import { _ as parseGeneratedAgentDocument, h as hashGeneratedAgentContent, m as GENERATED_AGENT_PROVENANCE_VERSION, v as serializeGeneratedAgentDocument } from "./search-BL7o2rXk.mjs";
|
|
3
|
-
import {
|
|
3
|
+
import { O as findDocsMarkdownPage, V as renderDocsMarkdownDocument } from "./robots-5ywOPCZ-.mjs";
|
|
4
4
|
import "./index.mjs";
|
|
5
5
|
import "./sitemap-server-DwEPfk13.mjs";
|
|
6
6
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
package/dist/cli/index.mjs
CHANGED
|
@@ -86,7 +86,7 @@ async function main() {
|
|
|
86
86
|
const { runMcp } = await import("../mcp-B7x8mPrj.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-DvxjrAXk.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-DvxjrAXk.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-Bz0Zbvv9.mjs");
|
|
104
104
|
const doctorOptions = parseDoctorArgs(args.slice(1));
|
|
105
105
|
if (doctorOptions.help) {
|
|
106
106
|
printDoctorHelp();
|
|
@@ -130,7 +130,7 @@ async function main() {
|
|
|
130
130
|
printSitemapGenerateHelp();
|
|
131
131
|
process.exit(1);
|
|
132
132
|
} else if (parsedCommand.command === "robots" && subcommand === "generate") {
|
|
133
|
-
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-
|
|
133
|
+
const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-RfxmIgQV.mjs");
|
|
134
134
|
const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
|
|
135
135
|
if (robotsOptions.help) {
|
|
136
136
|
printRobotsGenerateHelp();
|
|
@@ -140,7 +140,7 @@ async function main() {
|
|
|
140
140
|
} else if (parsedCommand.command === "robots") {
|
|
141
141
|
console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
|
|
142
142
|
console.error();
|
|
143
|
-
const { printRobotsGenerateHelp } = await import("../robots-
|
|
143
|
+
const { printRobotsGenerateHelp } = await import("../robots-RfxmIgQV.mjs");
|
|
144
144
|
printRobotsGenerateHelp();
|
|
145
145
|
process.exit(1);
|
|
146
146
|
} else if (parsedCommand.command === "upgrade") {
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import "./reading-time-CbbHNg9V.mjs";
|
|
2
2
|
import "./search-BL7o2rXk.mjs";
|
|
3
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-BIQIYMKe.mjs";
|
|
4
|
-
import { C as DEFAULT_MCP_WELL_KNOWN_ROUTE, T as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, a as analyzeDocsRobotsTxt, 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, w as DEFAULT_SKILL_MD_ROUTE, x as DEFAULT_MCP_PUBLIC_ROUTE, y as DEFAULT_LLMS_TXT_ROUTE } from "./robots-
|
|
4
|
+
import { C as DEFAULT_MCP_WELL_KNOWN_ROUTE, T as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, a as analyzeDocsRobotsTxt, 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, w as DEFAULT_SKILL_MD_ROUTE, x as DEFAULT_MCP_PUBLIC_ROUTE, y as DEFAULT_LLMS_TXT_ROUTE } from "./robots-5ywOPCZ-.mjs";
|
|
5
5
|
import "./sitemap-server-DwEPfk13.mjs";
|
|
6
6
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
7
7
|
import "./server.mjs";
|
|
8
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-UI31_wlO.mjs";
|
|
9
|
-
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-
|
|
9
|
+
import { inspectAgentCompactionState, scanDocsPageTargets } from "./agent-DvxjrAXk.mjs";
|
|
10
10
|
import { t as detectFramework } from "./utils-AmYxHDoz.mjs";
|
|
11
11
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
12
12
|
import path from "node:path";
|
|
@@ -736,7 +736,9 @@ async function probeTextRoute(baseUrl, route) {
|
|
|
736
736
|
return {
|
|
737
737
|
ok: true,
|
|
738
738
|
status: response.status,
|
|
739
|
-
detail: `${route} returned HTTP ${response.status} with ${body.length} characters
|
|
739
|
+
detail: `${route} returned HTTP ${response.status} with ${body.length} characters.`,
|
|
740
|
+
body,
|
|
741
|
+
linkHeader: response.headers.get("link") ?? void 0
|
|
740
742
|
};
|
|
741
743
|
} catch (error) {
|
|
742
744
|
return {
|
|
@@ -745,6 +747,78 @@ async function probeTextRoute(baseUrl, route) {
|
|
|
745
747
|
};
|
|
746
748
|
}
|
|
747
749
|
}
|
|
750
|
+
function decodeHtmlEntity(value) {
|
|
751
|
+
const named = {
|
|
752
|
+
amp: "&",
|
|
753
|
+
apos: "'",
|
|
754
|
+
gt: ">",
|
|
755
|
+
lt: "<",
|
|
756
|
+
quot: "\""
|
|
757
|
+
};
|
|
758
|
+
return value.replace(/&(#x[\da-f]+|#\d+|[a-z]+);/gi, (entity, raw) => {
|
|
759
|
+
const lower = raw.toLowerCase();
|
|
760
|
+
if (lower.startsWith("#x")) {
|
|
761
|
+
const codePoint = Number.parseInt(lower.slice(2), 16);
|
|
762
|
+
return Number.isFinite(codePoint) && codePoint >= 0 && codePoint <= 1114111 ? String.fromCodePoint(codePoint) : entity;
|
|
763
|
+
}
|
|
764
|
+
if (lower.startsWith("#")) {
|
|
765
|
+
const codePoint = Number.parseInt(lower.slice(1), 10);
|
|
766
|
+
return Number.isFinite(codePoint) && codePoint >= 0 && codePoint <= 1114111 ? String.fromCodePoint(codePoint) : entity;
|
|
767
|
+
}
|
|
768
|
+
return named[lower] ?? entity;
|
|
769
|
+
});
|
|
770
|
+
}
|
|
771
|
+
function htmlAttribute(tag, name) {
|
|
772
|
+
for (const match of tag.matchAll(/([^\s"'<>/=]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s"'=<>`]+))/g)) {
|
|
773
|
+
if (match[1]?.toLowerCase() !== name.toLowerCase()) continue;
|
|
774
|
+
return decodeHtmlEntity(match[2] ?? match[3] ?? match[4] ?? "");
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
function hasJsonLdScript(html) {
|
|
778
|
+
return /<script\b(?=[^>]*\btype\s*=\s*["']application\/ld\+json["'])[^>]*>/i.test(html);
|
|
779
|
+
}
|
|
780
|
+
function markdownAlternateHref(html) {
|
|
781
|
+
for (const match of html.matchAll(/<link\b[^>]*>/gi)) {
|
|
782
|
+
const tag = match[0];
|
|
783
|
+
const rel = htmlAttribute(tag, "rel") ?? "";
|
|
784
|
+
const type = htmlAttribute(tag, "type") ?? "";
|
|
785
|
+
const href = htmlAttribute(tag, "href");
|
|
786
|
+
const relTokens = rel.toLowerCase().split(/\s+/).filter(Boolean);
|
|
787
|
+
if (href && relTokens.includes("alternate") && /^text\/markdown(?:\s*;|$)/i.test(type.trim())) return href;
|
|
788
|
+
}
|
|
789
|
+
}
|
|
790
|
+
function resolveMarkdownAlternateUrl(href, pageUrl) {
|
|
791
|
+
if (!href) return void 0;
|
|
792
|
+
try {
|
|
793
|
+
const url = new URL(href, pageUrl);
|
|
794
|
+
const page = new URL(pageUrl);
|
|
795
|
+
return url.origin === page.origin && url.pathname.endsWith(".md") ? url : void 0;
|
|
796
|
+
} catch {
|
|
797
|
+
return;
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
function canonicalLinkFromHeader(header) {
|
|
801
|
+
if (!header) return void 0;
|
|
802
|
+
for (const match of header.matchAll(/<([^>]+)>\s*((?:;\s*[^,]+)*)/g)) {
|
|
803
|
+
const rel = (match[2] ?? "").match(/(?:^|;)\s*rel\s*=\s*(?:"([^"]*)"|([^;\s,]+))/i);
|
|
804
|
+
if ((rel?.[1] ?? rel?.[2] ?? "").toLowerCase().split(/\s+/).includes("canonical")) return match[1];
|
|
805
|
+
}
|
|
806
|
+
}
|
|
807
|
+
function normalizeCanonicalUrl(value, baseUrl) {
|
|
808
|
+
try {
|
|
809
|
+
const url = new URL(value, baseUrl);
|
|
810
|
+
url.hash = "";
|
|
811
|
+
url.search = "";
|
|
812
|
+
return url.toString().replace(/\/+$/, "");
|
|
813
|
+
} catch {
|
|
814
|
+
return;
|
|
815
|
+
}
|
|
816
|
+
}
|
|
817
|
+
function hasCanonicalLinkHeader(header, pageUrl, responseUrl) {
|
|
818
|
+
const canonical = canonicalLinkFromHeader(header);
|
|
819
|
+
if (!canonical) return false;
|
|
820
|
+
return normalizeCanonicalUrl(canonical, responseUrl) === normalizeCanonicalUrl(pageUrl, pageUrl);
|
|
821
|
+
}
|
|
748
822
|
async function probeRobotsRoute(baseUrl, route = DEFAULT_ROBOTS_TXT_ROUTE) {
|
|
749
823
|
const url = joinDoctorUrl(baseUrl, route);
|
|
750
824
|
try {
|
|
@@ -923,6 +997,93 @@ function hostedRobotsRoute(discoveryBody) {
|
|
|
923
997
|
route: readDiscoveryRoute(robots?.route) ?? DEFAULT_ROBOTS_TXT_ROUTE
|
|
924
998
|
};
|
|
925
999
|
}
|
|
1000
|
+
function hostedCapability(discoveryBody, key) {
|
|
1001
|
+
const root = asRecord(discoveryBody);
|
|
1002
|
+
const capability = asRecord(root?.capabilities)?.[key];
|
|
1003
|
+
if (typeof capability === "boolean") return capability;
|
|
1004
|
+
const enabled = asRecord(root?.[key])?.enabled;
|
|
1005
|
+
return typeof enabled === "boolean" ? enabled : void 0;
|
|
1006
|
+
}
|
|
1007
|
+
function hostedRootDocsRoute(discoveryBody) {
|
|
1008
|
+
const site = asRecord(asRecord(discoveryBody)?.site);
|
|
1009
|
+
return `/${(typeof site?.entry === "string" && site.entry.trim() ? site.entry.trim() : "docs").replace(/^\/+|\/+$/g, "") || "docs"}`;
|
|
1010
|
+
}
|
|
1011
|
+
function hostedPageUrl(baseUrl, pageRoute) {
|
|
1012
|
+
try {
|
|
1013
|
+
const base = new URL(baseUrl);
|
|
1014
|
+
const parsed = new URL(pageRoute, base.origin);
|
|
1015
|
+
if (parsed.origin !== base.origin) return void 0;
|
|
1016
|
+
parsed.hash = "";
|
|
1017
|
+
parsed.search = "";
|
|
1018
|
+
const basePath = base.pathname.replace(/\/+$/, "");
|
|
1019
|
+
const pagePath = parsed.pathname.replace(/\/+$/, "") || "/";
|
|
1020
|
+
const pathname = !basePath || pagePath === basePath || pagePath.startsWith(`${basePath}/`) ? pagePath : `${basePath}${pagePath}`;
|
|
1021
|
+
return new URL(pathname || "/", base.origin).toString().replace(/\/+$/, "");
|
|
1022
|
+
} catch {
|
|
1023
|
+
return;
|
|
1024
|
+
}
|
|
1025
|
+
}
|
|
1026
|
+
function sampleHostedPageUrls(baseUrl, discoveryBody, pages, limit = 10) {
|
|
1027
|
+
const pageRoutes = pages.map((page) => page.url).filter((route) => route.startsWith("/") && !route.endsWith(".md"));
|
|
1028
|
+
const fallback = hostedRootDocsRoute(discoveryBody);
|
|
1029
|
+
const unique = Array.from(new Set(pageRoutes.length > 0 ? pageRoutes : [fallback])).sort();
|
|
1030
|
+
return (unique.length <= limit ? unique : Array.from({ length: limit }, (_, index) => unique[Math.floor(index * (unique.length / limit))])).map((route) => hostedPageUrl(baseUrl, route)).filter((url) => typeof url === "string");
|
|
1031
|
+
}
|
|
1032
|
+
async function probeHostedHtmlPage(url) {
|
|
1033
|
+
try {
|
|
1034
|
+
const response = await fetchWithTimeout(url, { headers: { Accept: "text/html, */*" } });
|
|
1035
|
+
const body = await response.text().catch(() => "");
|
|
1036
|
+
const pathname = new URL(url).pathname;
|
|
1037
|
+
if (!response.ok) return {
|
|
1038
|
+
ok: false,
|
|
1039
|
+
detail: `${pathname} returned HTTP ${response.status}.`,
|
|
1040
|
+
hasJsonLd: false,
|
|
1041
|
+
hasMarkdownAlternate: false
|
|
1042
|
+
};
|
|
1043
|
+
const alternateUrl = resolveMarkdownAlternateUrl(markdownAlternateHref(body), url);
|
|
1044
|
+
return {
|
|
1045
|
+
ok: true,
|
|
1046
|
+
detail: `${pathname} returned HTML with ${body.length} characters.`,
|
|
1047
|
+
hasJsonLd: hasJsonLdScript(body),
|
|
1048
|
+
hasMarkdownAlternate: Boolean(alternateUrl)
|
|
1049
|
+
};
|
|
1050
|
+
} catch (error) {
|
|
1051
|
+
return {
|
|
1052
|
+
ok: false,
|
|
1053
|
+
detail: `${url} failed: ${error instanceof Error ? error.message : String(error)}.`,
|
|
1054
|
+
hasJsonLd: false,
|
|
1055
|
+
hasMarkdownAlternate: false
|
|
1056
|
+
};
|
|
1057
|
+
}
|
|
1058
|
+
}
|
|
1059
|
+
function hostedSurfaceScore(probes, predicate) {
|
|
1060
|
+
const total = probes.length;
|
|
1061
|
+
const passed = probes.filter((probe) => probe.ok && predicate(probe)).length;
|
|
1062
|
+
if (total === 0) return {
|
|
1063
|
+
status: "warn",
|
|
1064
|
+
score: 0,
|
|
1065
|
+
passed: 0,
|
|
1066
|
+
total
|
|
1067
|
+
};
|
|
1068
|
+
if (passed === total) return {
|
|
1069
|
+
status: "pass",
|
|
1070
|
+
score: 5,
|
|
1071
|
+
passed,
|
|
1072
|
+
total
|
|
1073
|
+
};
|
|
1074
|
+
if (passed > 0) return {
|
|
1075
|
+
status: "warn",
|
|
1076
|
+
score: Math.round(passed / total * 5),
|
|
1077
|
+
passed,
|
|
1078
|
+
total
|
|
1079
|
+
};
|
|
1080
|
+
return {
|
|
1081
|
+
status: "fail",
|
|
1082
|
+
score: 0,
|
|
1083
|
+
passed,
|
|
1084
|
+
total
|
|
1085
|
+
};
|
|
1086
|
+
}
|
|
926
1087
|
async function buildHostedAgentChecks(url, pages) {
|
|
927
1088
|
let baseUrl;
|
|
928
1089
|
try {
|
|
@@ -956,9 +1117,24 @@ async function buildHostedAgentChecks(url, pages) {
|
|
|
956
1117
|
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."));
|
|
957
1118
|
const markdownRoute = toMarkdownRoute(pages[0]?.url);
|
|
958
1119
|
if (markdownRoute) {
|
|
1120
|
+
const markdownPageUrl = pages[0]?.url ? joinDoctorUrl(baseUrl, pages[0].url) : void 0;
|
|
1121
|
+
const markdownResponseUrl = joinDoctorUrl(baseUrl, markdownRoute);
|
|
959
1122
|
const markdown = await probeTextRoute(baseUrl, markdownRoute);
|
|
960
1123
|
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}.`));
|
|
961
|
-
|
|
1124
|
+
const hasCanonicalHeader = markdown.ok && markdownPageUrl ? hasCanonicalLinkHeader(markdown.linkHeader, markdownPageUrl, markdownResponseUrl) : false;
|
|
1125
|
+
checks.push(makeCheck("hosted-markdown-canonical", "Hosted markdown canonical header", hasCanonicalHeader ? "pass" : "fail", hasCanonicalHeader ? 3 : 0, 3, markdown.ok ? hasCanonicalHeader ? `${markdownRoute} includes a canonical Link header pointing to ${pages[0]?.url}.` : `${markdownRoute} is reachable but is missing a canonical Link response header.` : markdown.detail, hasCanonicalHeader ? void 0 : "Return `Link: <canonical-page-url>; rel=\"canonical\"` on successful markdown page responses so agents can cite the normal docs URL."));
|
|
1126
|
+
} else {
|
|
1127
|
+
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."));
|
|
1128
|
+
checks.push(makeCheck("hosted-markdown-canonical", "Hosted markdown canonical header", "warn", 0, 3, "No local docs page was available to choose a sample .md route.", "Add docs pages so the hosted doctor can probe a markdown canonical Link header."));
|
|
1129
|
+
}
|
|
1130
|
+
const htmlPageUrls = sampleHostedPageUrls(baseUrl, discovery.body, pages);
|
|
1131
|
+
const htmlPageProbes = await Promise.all(htmlPageUrls.map((pageUrl) => probeHostedHtmlPage(pageUrl)));
|
|
1132
|
+
const structuredDataScore = hostedSurfaceScore(htmlPageProbes, (probe) => probe.hasJsonLd);
|
|
1133
|
+
const structuredDataEnabled = hostedCapability(discovery.body, "structuredData");
|
|
1134
|
+
checks.push(makeCheck("hosted-structured-data", "Hosted structured data", structuredDataEnabled === false ? "warn" : structuredDataScore.status, structuredDataEnabled === false ? 0 : structuredDataScore.score, 5, structuredDataEnabled === false ? "The hosted discovery spec reports structured data as disabled." : structuredDataScore.total > 0 ? `${structuredDataScore.passed}/${structuredDataScore.total} sampled hosted docs pages include application/ld+json structured data.` : "No hosted docs pages were available to verify application/ld+json structured data.", structuredDataEnabled === false || structuredDataScore.status === "pass" ? void 0 : "Keep JSON-LD enabled on every docs page so agents can read canonical title, description, URL, breadcrumbs, and freshness hints."));
|
|
1135
|
+
const markdownAlternateScore = hostedSurfaceScore(htmlPageProbes, (probe) => probe.hasMarkdownAlternate);
|
|
1136
|
+
const markdownRoutesEnabled = hostedCapability(discovery.body, "markdownRoutes");
|
|
1137
|
+
checks.push(makeCheck("hosted-markdown-alternate", "Hosted markdown alternate links", markdownRoutesEnabled === false ? "warn" : markdownAlternateScore.status, markdownRoutesEnabled === false ? 0 : markdownAlternateScore.score, 5, markdownRoutesEnabled === false ? "The hosted discovery spec reports markdown routes as disabled." : markdownAlternateScore.total > 0 ? `${markdownAlternateScore.passed}/${markdownAlternateScore.total} sampled hosted docs pages include <link rel="alternate" type="text/markdown"> pointing to .md routes.` : "No hosted docs pages were available to verify markdown alternate links.", markdownRoutesEnabled === false || markdownAlternateScore.status === "pass" ? void 0 : "Add a text/markdown alternate link in each docs page head, usually through `alternates.types['text/markdown']`, so agents can discover the page markdown URL from HTML."));
|
|
962
1138
|
const mcp = await Promise.all([probeMcpRoute(baseUrl, DEFAULT_MCP_PUBLIC_ROUTE), probeMcpRoute(baseUrl, DEFAULT_MCP_WELL_KNOWN_ROUTE)]);
|
|
963
1139
|
const mcpPassed = mcp.filter((result) => result.ok).length;
|
|
964
1140
|
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.`));
|
package/dist/index.d.mts
CHANGED
|
@@ -323,11 +323,24 @@ interface DocsMarkdownNotFoundOptions {
|
|
|
323
323
|
requestedPath: string;
|
|
324
324
|
sitemap?: boolean | DocsSitemapConfig;
|
|
325
325
|
}
|
|
326
|
+
interface DocsMarkdownCanonicalUrlOptions {
|
|
327
|
+
origin: string;
|
|
328
|
+
entry?: string;
|
|
329
|
+
requestedPath: string;
|
|
330
|
+
locale?: string | null;
|
|
331
|
+
}
|
|
326
332
|
declare function normalizeDocsPathSegment(value: string): string;
|
|
327
333
|
declare function normalizeDocsUrlPath(value: string): string;
|
|
328
334
|
declare function toDocsMarkdownUrl(url: string, options?: {
|
|
329
335
|
locale?: string;
|
|
330
336
|
}): string;
|
|
337
|
+
declare function resolveDocsMarkdownCanonicalUrl({
|
|
338
|
+
origin,
|
|
339
|
+
entry,
|
|
340
|
+
requestedPath,
|
|
341
|
+
locale
|
|
342
|
+
}: DocsMarkdownCanonicalUrlOptions): string;
|
|
343
|
+
declare function getDocsMarkdownCanonicalLinkHeader(options: DocsMarkdownCanonicalUrlOptions): string;
|
|
331
344
|
declare function resolveDocsLlmsTxtSections(llms?: boolean | DocsLlmsDiscoveryConfig | LlmsTxtConfig): DocsLlmsTxtResolvedSection[];
|
|
332
345
|
declare function matchesDocsLlmsTxtSection(pageUrl: string, section: DocsLlmsTxtResolvedSection): boolean;
|
|
333
346
|
declare function resolveDocsLlmsTxtRequest(url: URL, llms?: boolean | DocsLlmsDiscoveryConfig | LlmsTxtConfig): DocsLlmsTxtRequest | null;
|
|
@@ -564,4 +577,4 @@ declare function renderDocsRobotsGeneratedBlock(options?: DocsRobotsRenderOption
|
|
|
564
577
|
declare function upsertDocsRobotsGeneratedBlock(existing: string, block: string): string;
|
|
565
578
|
declare function analyzeDocsRobotsTxt(content: string, options?: DocsRobotsRenderOptions): DocsRobotsAnalysis;
|
|
566
579
|
//#endregion
|
|
567
|
-
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_MAX_CHARS, 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 DocsLlmsTxtGeneratedContent, type DocsLlmsTxtGeneratedSection, type DocsLlmsTxtMaxCharsIssue, type DocsLlmsTxtPageInput, type DocsLlmsTxtRequest, type DocsLlmsTxtResolvedMaxChars, type DocsLlmsTxtResolvedSection, type DocsLlmsTxtSelectedContent, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsPageStructuredDataInput, 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 DocsStructuredDataBreadcrumb, 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 LlmsTxtMaxCharsConfig, type LlmsTxtMaxCharsMode, type LlmsTxtSectionConfig, 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, buildDocsPageStructuredData, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, matchesDocsLlmsTxtSection, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsLlmsTxt, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsPageStructuredDataJson, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, selectDocsLlmsTxtContent, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
|
580
|
+
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_MAX_CHARS, 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 DocsLlmsTxtGeneratedContent, type DocsLlmsTxtGeneratedSection, type DocsLlmsTxtMaxCharsIssue, type DocsLlmsTxtPageInput, type DocsLlmsTxtRequest, type DocsLlmsTxtResolvedMaxChars, type DocsLlmsTxtResolvedSection, type DocsLlmsTxtSelectedContent, type DocsMarkdownPage, type DocsMcpConfig, type DocsMcpToolsConfig, type DocsMetadata, type DocsNav, type DocsObservabilityConfig, type DocsObservabilityEvent, type DocsObservabilityEventInput, type DocsPageStructuredDataInput, 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 DocsStructuredDataBreadcrumb, 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 LlmsTxtMaxCharsConfig, type LlmsTxtMaxCharsMode, type LlmsTxtSectionConfig, 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, buildDocsPageStructuredData, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownCanonicalLinkHeader, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, matchesDocsLlmsTxtSection, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsLlmsTxt, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsPageStructuredDataJson, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMarkdownCanonicalUrl, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, selectDocsLlmsTxtContent, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
package/dist/index.mjs
CHANGED
|
@@ -2,6 +2,6 @@ import { _ as extendTheme, a as resolveReadingTimeOptions, b as defineDocs, c as
|
|
|
2
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-BL7o2rXk.mjs";
|
|
3
3
|
import { n as renderDocsRelatedMarkdownLines, t as normalizeDocsRelated } from "./related-BNj_NdHq.mjs";
|
|
4
4
|
import { a as buildDocsSitemapManifest, c as renderDocsSitemapMarkdown, d as resolveDocsSitemapPageLastmod, f as resolveDocsSitemapRequest, i as DEFAULT_SITEMAP_XML_ROUTE, l as renderDocsSitemapXml, n as DEFAULT_SITEMAP_MD_ROUTE, o as createDocsSitemapResponse, p as toDocsSitemapMarkdownUrl, r as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, s as readDocsSitemapManifestFromContentMap, t as DEFAULT_SITEMAP_MANIFEST_PATH, u as resolveDocsSitemapConfig } from "./sitemap-BIQIYMKe.mjs";
|
|
5
|
-
import { A as
|
|
5
|
+
import { A as getDocsMarkdownCanonicalLinkHeader, B as renderDocsLlmsTxt, C as DEFAULT_MCP_WELL_KNOWN_ROUTE, D as buildDocsAgentDiscoverySpec, E as DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER, F as isDocsPublicGetRequest, G as resolveDocsLlmsTxtFormat, H as renderDocsMarkdownNotFound, I as isDocsSkillRequest, J as resolveDocsMarkdownCanonicalUrl, K as resolveDocsLlmsTxtRequest, L as matchesDocsLlmsTxtSection, M as hasDocsMarkdownSignatureAgent, N as isDocsAgentDiscoveryRequest, O as findDocsMarkdownPage, P as isDocsMcpRequest, Q as toDocsMarkdownUrl, R as normalizeDocsPathSegment, S as DEFAULT_MCP_ROUTE, T as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, U as renderDocsSkillDocument, V as renderDocsMarkdownDocument, W as resolveDocsAgentMdxContent, X as resolveDocsSkillFormat, Y as resolveDocsMarkdownRequest, Z as selectDocsLlmsTxtContent, _ as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, a as analyzeDocsRobotsTxt, b as DEFAULT_LLMS_TXT_WELL_KNOWN_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 getDocsMarkdownVaryHeader, k as getDocsLlmsTxtMaxCharsIssue, 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, q as resolveDocsLlmsTxtSections, 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_MAX_CHARS, w as DEFAULT_SKILL_MD_ROUTE, x as DEFAULT_MCP_PUBLIC_ROUTE, y as DEFAULT_LLMS_TXT_ROUTE, z as normalizeDocsUrlPath } from "./robots-5ywOPCZ-.mjs";
|
|
6
6
|
|
|
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_MAX_CHARS, 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, buildDocsPageStructuredData, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, matchesDocsLlmsTxtSection, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsLlmsTxt, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsPageStructuredDataJson, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, selectDocsLlmsTxtContent, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
|
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_MAX_CHARS, 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, buildDocsPageStructuredData, buildDocsSearchDocuments, buildDocsSitemapManifest, buildPageOpenGraph, buildPageTwitter, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAnalytics, createDocsSitemapResponse, createMcpSearchAdapter, createSimpleSearchAdapter, createTheme, createTypesenseSearchAdapter, deepMerge, defineDocs, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, estimateReadingTimeMinutes, extendTheme, findDocsMarkdownPage, formatDocsAskAIPackageHints, getDocsLlmsTxtMaxCharsIssue, getDocsMarkdownCanonicalLinkHeader, getDocsMarkdownVaryHeader, getDocsRobotsAllowRoutes, hasDocsMarkdownSignatureAgent, hashGeneratedAgentContent, inferDocsAskAIPackageHints, isDocsAgentDiscoveryRequest, isDocsMcpRequest, isDocsPublicGetRequest, isDocsSkillRequest, matchesDocsLlmsTxtSection, normalizeDocsPathSegment, normalizeDocsRelated, normalizeDocsUrlPath, normalizeGeneratedAgentContent, parseGeneratedAgentDocument, performDocsSearch, readDocsSitemapManifestFromContentMap, renderDocsLlmsTxt, renderDocsMarkdownDocument, renderDocsMarkdownNotFound, renderDocsPageStructuredDataJson, renderDocsRelatedMarkdownLines, renderDocsRobotsGeneratedBlock, renderDocsRobotsTxt, renderDocsSitemapMarkdown, renderDocsSitemapXml, renderDocsSkillDocument, resolveAskAISearchRequestConfig, resolveChangelogConfig, resolveDocsAgentMdxContent, resolveDocsAnalyticsConfig, resolveDocsI18n, resolveDocsLlmsTxtFormat, resolveDocsLlmsTxtRequest, resolveDocsLlmsTxtSections, resolveDocsLocale, resolveDocsMarkdownCanonicalUrl, resolveDocsMarkdownRequest, resolveDocsMetadataBaseUrl, resolveDocsObservabilityConfig, resolveDocsPath, resolveDocsRobotsConfig, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolveDocsSkillFormat, resolveOGImage, resolvePageReadingTime, resolvePageSidebarFolderIndexBehavior, resolveReadingTimeFromContent, resolveReadingTimeFromSource, resolveReadingTimeOptions, resolveSearchRequestConfig, resolveSidebarFolderIndexBehavior, resolveSidebarFolderIndexBehaviorForPath, resolveTitle, selectDocsLlmsTxtContent, serializeGeneratedAgentDocument, stripGeneratedAgentProvenance, toDocsMarkdownUrl, toDocsSitemapMarkdownUrl, upsertDocsRobotsGeneratedBlock };
|
|
@@ -38,6 +38,15 @@ function toDocsMarkdownUrl(url, options = {}) {
|
|
|
38
38
|
const search = params.toString();
|
|
39
39
|
return `${markdownPath}${search ? `?${search}` : ""}${hash ? `#${hash}` : ""}`;
|
|
40
40
|
}
|
|
41
|
+
function resolveDocsMarkdownCanonicalUrl({ origin, entry = "docs", requestedPath, locale }) {
|
|
42
|
+
const pathname = normalizeRequestedMarkdownPath(normalizeDocsPathSegment(entry) || "docs", requestedPath);
|
|
43
|
+
const canonicalUrl = new URL(pathname, origin);
|
|
44
|
+
if (locale) canonicalUrl.searchParams.set("lang", locale);
|
|
45
|
+
return canonicalUrl.toString();
|
|
46
|
+
}
|
|
47
|
+
function getDocsMarkdownCanonicalLinkHeader(options) {
|
|
48
|
+
return `<${resolveDocsMarkdownCanonicalUrl(options)}>; rel="canonical"`;
|
|
49
|
+
}
|
|
41
50
|
function joinDocsPublicRoute(prefix, suffix) {
|
|
42
51
|
const normalizedPrefix = normalizeDocsUrlPath(`/${normalizeDocsPathSegment(prefix)}`);
|
|
43
52
|
const normalizedSuffix = `/${normalizeDocsPathSegment(suffix)}`;
|
|
@@ -822,4 +831,4 @@ function analyzeDocsRobotsTxt(content, options = {}) {
|
|
|
822
831
|
}
|
|
823
832
|
|
|
824
833
|
//#endregion
|
|
825
|
-
export {
|
|
834
|
+
export { getDocsMarkdownCanonicalLinkHeader as A, renderDocsLlmsTxt as B, DEFAULT_MCP_WELL_KNOWN_ROUTE as C, buildDocsAgentDiscoverySpec as D, DOCS_MARKDOWN_SIGNATURE_AGENT_HEADER as E, isDocsPublicGetRequest as F, resolveDocsLlmsTxtFormat as G, renderDocsMarkdownNotFound as H, isDocsSkillRequest as I, resolveDocsMarkdownCanonicalUrl as J, resolveDocsLlmsTxtRequest as K, matchesDocsLlmsTxtSection as L, hasDocsMarkdownSignatureAgent as M, isDocsAgentDiscoveryRequest as N, findDocsMarkdownPage as O, isDocsMcpRequest as P, toDocsMarkdownUrl as Q, normalizeDocsPathSegment as R, DEFAULT_MCP_ROUTE as S, DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE as T, renderDocsSkillDocument as U, renderDocsMarkdownDocument as V, resolveDocsAgentMdxContent as W, resolveDocsSkillFormat as X, resolveDocsMarkdownRequest as Y, selectDocsLlmsTxtContent as Z, DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE as _, analyzeDocsRobotsTxt as a, DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE as b, renderDocsRobotsTxt as c, DEFAULT_AGENT_FEEDBACK_ROUTE as d, DEFAULT_AGENT_SPEC_ROUTE as f, DEFAULT_LLMS_FULL_TXT_ROUTE as g, DEFAULT_DOCS_API_ROUTE as h, DOCS_ROBOTS_GENERATED_BLOCK_START as i, getDocsMarkdownVaryHeader as j, getDocsLlmsTxtMaxCharsIssue as k, resolveDocsRobotsConfig as l, DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE as m, DEFAULT_ROBOTS_TXT_ROUTE as n, getDocsRobotsAllowRoutes as o, DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE as p, resolveDocsLlmsTxtSections as q, DOCS_ROBOTS_GENERATED_BLOCK_END as r, renderDocsRobotsGeneratedBlock as s, DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS as t, upsertDocsRobotsGeneratedBlock as u, DEFAULT_LLMS_TXT_MAX_CHARS as v, DEFAULT_SKILL_MD_ROUTE as w, DEFAULT_MCP_PUBLIC_ROUTE as x, DEFAULT_LLMS_TXT_ROUTE as y, normalizeDocsUrlPath as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as DOCS_ROBOTS_GENERATED_BLOCK_START, l as resolveDocsRobotsConfig, r as DOCS_ROBOTS_GENERATED_BLOCK_END, s as renderDocsRobotsGeneratedBlock, u as upsertDocsRobotsGeneratedBlock } from "./robots-
|
|
1
|
+
import { i as DOCS_ROBOTS_GENERATED_BLOCK_START, l as resolveDocsRobotsConfig, r as DOCS_ROBOTS_GENERATED_BLOCK_END, s as renderDocsRobotsGeneratedBlock, u as upsertDocsRobotsGeneratedBlock } from "./robots-5ywOPCZ-.mjs";
|
|
2
2
|
import { d as readTopLevelStringProperty, f as resolveDocsConfigPath, i as loadDocsConfigModule, o as readBooleanProperty, t as extractNestedObjectLiteral, u as readStringProperty } from "./config-UI31_wlO.mjs";
|
|
3
3
|
import { t as detectFramework } from "./utils-AmYxHDoz.mjs";
|
|
4
4
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|