@farming-labs/docs 0.2.66 → 0.2.68
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-B81ztzxZ.mjs → agent-BIzynBvk.mjs} +2 -2
- package/dist/{agent-CcR8_Yyd.mjs → agent-D2SsSct2.mjs} +3 -1
- package/dist/{agent-evals-Bn_dA1_A.mjs → agent-evals-DZR4J7Iz.mjs} +1 -1
- package/dist/{agent-export-CyhCaE8J.mjs → agent-export-C_zd18VF.mjs} +8 -8
- package/dist/agent-skills-bundle.d.mts +1 -1
- package/dist/{agent-skills-server-CHvqnM4R.d.mts → agent-skills-server-DJXdK_hS.d.mts} +1 -1
- package/dist/{agent-skills-server-Cuoqu8Jv.mjs → agent-skills-server-iBfCLPOt.mjs} +1 -1
- package/dist/agent-skills-vite.d.mts +2 -2
- package/dist/agent-skills-vite.mjs +2 -2
- package/dist/{agents-BZ_hXI_Z.mjs → agents-BR5tSkbq.mjs} +6 -6
- package/dist/cli/index.mjs +14 -14
- package/dist/{doctor-BJt0ZFkJ.mjs → doctor-CVhU0YKo.mjs} +36 -12
- package/dist/{golden-evaluations-D7lSUeQl.mjs → golden-evaluations-DK1uqjlo.mjs} +1 -1
- package/dist/index.d.mts +12 -5
- package/dist/index.mjs +7 -7
- package/dist/{mcp-jGoU4pLD.mjs → mcp-YWlNI2d4.mjs} +6 -6
- package/dist/mcp.d.mts +1 -1
- package/dist/mcp.mjs +3 -3
- package/dist/{metadata-Cna0CtWZ.mjs → metadata-CNjcFhQN.mjs} +1 -1
- package/dist/{reading-time-oAnc4Brq.mjs → reading-time-O8mYgLvH.mjs} +71 -13
- package/dist/{review-CUo6iXMw.mjs → review-DdfvxMh2.mjs} +6 -6
- package/dist/{robots-NL_OsxEC.mjs → robots-CD14j-mU.mjs} +18 -8
- package/dist/{robots-vU80KRFy.mjs → robots-Dz5XeT8F.mjs} +91 -23
- package/dist/{search-B-BfnROL.d.mts → search-BBVD0A7O.d.mts} +1 -1
- package/dist/{search-D0A9lRGJ.mjs → search-DBlw9h3P.mjs} +1 -1
- package/dist/{search-B_CixCu9.mjs → search-DjN1Gfid.mjs} +6 -6
- package/dist/server.d.mts +2 -2
- package/dist/server.mjs +6 -6
- package/dist/{sitemap-B4mIK0ka.mjs → sitemap-B0hlAZ8o.mjs} +6 -6
- package/dist/{sitemap-server-atbbiVzW.mjs → sitemap-server-DQp8qUKN.mjs} +1 -1
- package/dist/{standards-discovery-iOmUel-o.d.mts → standards-discovery-CQjJ-M2y.d.mts} +11 -1
- package/dist/{standards-discovery-C7p5lBhc.mjs → standards-discovery-DSVKdQrl.mjs} +16 -1
- package/package.json +3 -1
package/dist/mcp.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as emitDocsAnalyticsEvent, i as emitDocsAgentTraceEvent, n as createDocsAgentTraceContext, r as createDocsAgentTraceId } from "./analytics-Bx44lg6d.mjs";
|
|
2
|
-
import { Bt as renderDocsRelatedMarkdownLines, Jt as normalizePageAgentFrontmatter, Qt as upsertPageAgentContractMarkdown, cn as isDocsMcpProtectedResourceMetadataPath, dn as normalizeDocsMcpAuthorizationServerUrls, fn as normalizeDocsMcpEndpointPath, mn as resolveDocsMcpResourceLocation, pn as resolveDocsMcpProtectedResourceMetadataLocation, qt as hasStructuredPageAgentContract, sn as isDocsMcpOAuthScopeToken, un as isDocsMcpResourcePath, wt as resolveDocsAudienceMdxContent, zt as normalizeDocsRelated } from "./agent-
|
|
3
|
-
import "./standards-discovery-
|
|
4
|
-
import { A as emitDocsTelemetryProjectEvent, D as emitDocsTelemetryAgentSurfaceEvent, S as stripGeneratedAgentProvenance, h as parseDocsMarkdownSections, k as emitDocsTelemetryMcpToolEvent, m as findDocsMarkdownSection, u as performDocsSearch, w as resolvePageSidebarFolderIndexBehavior } from "./search-
|
|
2
|
+
import { Bt as renderDocsRelatedMarkdownLines, Jt as normalizePageAgentFrontmatter, Qt as upsertPageAgentContractMarkdown, cn as isDocsMcpProtectedResourceMetadataPath, dn as normalizeDocsMcpAuthorizationServerUrls, fn as normalizeDocsMcpEndpointPath, mn as resolveDocsMcpResourceLocation, pn as resolveDocsMcpProtectedResourceMetadataLocation, qt as hasStructuredPageAgentContract, sn as isDocsMcpOAuthScopeToken, un as isDocsMcpResourcePath, wt as resolveDocsAudienceMdxContent, zt as normalizeDocsRelated } from "./agent-D2SsSct2.mjs";
|
|
3
|
+
import "./standards-discovery-DSVKdQrl.mjs";
|
|
4
|
+
import { A as emitDocsTelemetryProjectEvent, D as emitDocsTelemetryAgentSurfaceEvent, S as stripGeneratedAgentProvenance, h as parseDocsMarkdownSections, k as emitDocsTelemetryMcpToolEvent, m as findDocsMarkdownSection, u as performDocsSearch, w as resolvePageSidebarFolderIndexBehavior } from "./search-DBlw9h3P.mjs";
|
|
5
5
|
import { a as normalizeAgentScopeValues, i as normalizeAgentLocale, n as agentVersionConstraintsOverlap, r as normalizeAgentFramework, t as agentVersionConstraintMatches } from "./agent-scope-C_U--OZ7.mjs";
|
|
6
6
|
import matter from "gray-matter";
|
|
7
7
|
import fs from "node:fs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Dt as DEFAULT_SITEMAP_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_XML_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-
|
|
2
|
-
import { f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-
|
|
3
|
-
import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-
|
|
1
|
+
import { Dt as DEFAULT_SITEMAP_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, f as DEFAULT_DOCS_CONFIG_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_XML_ROUTE, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-D2SsSct2.mjs";
|
|
2
|
+
import { C as DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE, S as DOCS_AGENT_MANIFEST_FORMAT, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, w as DOCS_AGENT_MANIFEST_SCHEMA_URI } from "./standards-discovery-DSVKdQrl.mjs";
|
|
3
|
+
import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-Dz5XeT8F.mjs";
|
|
4
4
|
import matter from "gray-matter";
|
|
5
5
|
|
|
6
6
|
//#region src/define-docs.ts
|
|
@@ -242,7 +242,7 @@ function httpLinkHeaderHasTargetRelation(header, href, rel, responseUrl) {
|
|
|
242
242
|
|
|
243
243
|
//#endregion
|
|
244
244
|
//#region src/agent-conformance.ts
|
|
245
|
-
const DOCS_AGENT_CONTRACT_VERSION = "1.
|
|
245
|
+
const DOCS_AGENT_CONTRACT_VERSION = "1.2";
|
|
246
246
|
function normalizeOrigin(value) {
|
|
247
247
|
return value.replace(/\/+$/, "");
|
|
248
248
|
}
|
|
@@ -267,13 +267,21 @@ function createDocsAgentContractCases(options = {}) {
|
|
|
267
267
|
expect: {
|
|
268
268
|
statuses: [200],
|
|
269
269
|
contentTypes: json,
|
|
270
|
-
linkRelations: [
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
270
|
+
linkRelations: [
|
|
271
|
+
{
|
|
272
|
+
href: DEFAULT_API_CATALOG_ROUTE,
|
|
273
|
+
rel: "api-catalog"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
href: DEFAULT_AGENT_SKILLS_INDEX_ROUTE,
|
|
277
|
+
rel: "service-meta"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
href: DOCS_AGENT_MANIFEST_SCHEMA_URI,
|
|
281
|
+
rel: "describedby",
|
|
282
|
+
type: DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE
|
|
283
|
+
}
|
|
284
|
+
]
|
|
277
285
|
}
|
|
278
286
|
},
|
|
279
287
|
{
|
|
@@ -578,6 +586,52 @@ function asRecord(value) {
|
|
|
578
586
|
function isNonEmptyString(value) {
|
|
579
587
|
return typeof value === "string" && value.trim().length > 0;
|
|
580
588
|
}
|
|
589
|
+
function validateAgentManifest(content) {
|
|
590
|
+
let parsed;
|
|
591
|
+
try {
|
|
592
|
+
parsed = JSON.parse(content);
|
|
593
|
+
} catch {
|
|
594
|
+
return ["Agent manifest did not contain valid JSON"];
|
|
595
|
+
}
|
|
596
|
+
const root = asRecord(parsed);
|
|
597
|
+
const issues = [];
|
|
598
|
+
if (root?.$schema !== DOCS_AGENT_MANIFEST_SCHEMA_URI) issues.push(`Agent manifest did not declare top-level $schema ${DOCS_AGENT_MANIFEST_SCHEMA_URI}`);
|
|
599
|
+
if (root?.format !== DOCS_AGENT_MANIFEST_FORMAT) issues.push(`Agent manifest did not declare top-level format ${DOCS_AGENT_MANIFEST_FORMAT}`);
|
|
600
|
+
return issues;
|
|
601
|
+
}
|
|
602
|
+
function httpLinkMatchesContractExpectation(header, expectation, responseUrl) {
|
|
603
|
+
if (!httpLinkMatchesExpectation(parseHttpLinkHeader(header), expectation, responseUrl)) return false;
|
|
604
|
+
if (!expectation.type) return true;
|
|
605
|
+
let expectedUrl;
|
|
606
|
+
try {
|
|
607
|
+
expectedUrl = new URL(expectation.href, responseUrl).toString();
|
|
608
|
+
} catch {
|
|
609
|
+
return false;
|
|
610
|
+
}
|
|
611
|
+
for (const value of splitHttpList(header ?? "", ",")) {
|
|
612
|
+
const target = value.match(/^\s*<([^>]*)>/);
|
|
613
|
+
if (!target) continue;
|
|
614
|
+
let actualUrl;
|
|
615
|
+
try {
|
|
616
|
+
actualUrl = new URL(target[1], responseUrl).toString();
|
|
617
|
+
} catch {
|
|
618
|
+
continue;
|
|
619
|
+
}
|
|
620
|
+
if (actualUrl !== expectedUrl) continue;
|
|
621
|
+
const relations = [];
|
|
622
|
+
let type;
|
|
623
|
+
for (const rawParameter of splitHttpList(value.slice(target[0].length), ";")) {
|
|
624
|
+
const separator = rawParameter.indexOf("=");
|
|
625
|
+
if (separator < 0) continue;
|
|
626
|
+
const name = rawParameter.slice(0, separator).trim().toLowerCase();
|
|
627
|
+
const parameterValue = unquoteHttpValue(rawParameter.slice(separator + 1));
|
|
628
|
+
if (name === "rel") relations.push(...parameterValue.toLowerCase().split(/\s+/).filter(Boolean));
|
|
629
|
+
else if (name === "type") type = parameterValue.toLowerCase();
|
|
630
|
+
}
|
|
631
|
+
if (relations.includes(expectation.rel.toLowerCase()) && type === expectation.type.toLowerCase()) return true;
|
|
632
|
+
}
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
581
635
|
async function sha256Content(content) {
|
|
582
636
|
const digest = await globalThis.crypto.subtle.digest("SHA-256", content);
|
|
583
637
|
return [...new Uint8Array(digest)].map((value) => value.toString(16).padStart(2, "0")).join("");
|
|
@@ -652,13 +706,17 @@ async function runDocsAgentConformance(options) {
|
|
|
652
706
|
if (!matchesContentType(contentType, contractCase.expect.contentTypes)) issues.push(`expected content-type ${contractCase.expect.contentTypes.join(" or ")}, received ${contentType || "<missing>"}`);
|
|
653
707
|
for (const requiredText of contractCase.expect.bodyIncludes ?? []) if (!body.toLowerCase().includes(requiredText.toLowerCase())) issues.push(`response body did not include ${JSON.stringify(requiredText)}`);
|
|
654
708
|
if (contractCase.expect.bodyEmpty && body !== "") issues.push(`expected an empty response body, received ${body.length} characters`);
|
|
709
|
+
if (contractCase.surface === "discovery") issues.push(...validateAgentManifest(body));
|
|
655
710
|
if (contractCase.surface === "agent-skills-index") issues.push(...await validateAgentSkillsIndex(body, contractCase.request.url, options.handle));
|
|
656
711
|
for (const [header, requiredValues] of Object.entries(contractCase.expect.headerIncludes ?? {})) {
|
|
657
712
|
const actual = response.headers.get(header) ?? "";
|
|
658
713
|
for (const requiredValue of requiredValues) if (!actual.toLowerCase().includes(requiredValue.toLowerCase())) issues.push(`response header ${JSON.stringify(header)} did not include ${JSON.stringify(requiredValue)}`);
|
|
659
714
|
}
|
|
660
|
-
const
|
|
661
|
-
for (const expectation of contractCase.expect.linkRelations ?? []) if (!
|
|
715
|
+
const linkHeader = response.headers.get("link");
|
|
716
|
+
for (const expectation of contractCase.expect.linkRelations ?? []) if (!httpLinkMatchesContractExpectation(linkHeader, expectation, contractCase.request.url)) {
|
|
717
|
+
const typeRequirement = expectation.type ? ` and type=${JSON.stringify(expectation.type)}` : "";
|
|
718
|
+
issues.push(`response Link header did not include ${JSON.stringify(expectation.href)} with rel=${JSON.stringify(expectation.rel)}${typeRequirement} in the same link-value`);
|
|
719
|
+
}
|
|
662
720
|
results.push({
|
|
663
721
|
surface: contractCase.surface,
|
|
664
722
|
passed: issues.length === 0,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { Ht as PAGE_AGENT_CONTRACT_FIELDS, Jt as normalizePageAgentFrontmatter, Kt as getPageAgentFrontmatterIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, bt as findDocsAudienceMdxIssues, in as getDocsMcpProtectedResourceMetadataRoutes, j as buildDocsConfigMap, k as buildDocsAgentDiscoverySpec, qt as hasStructuredPageAgentContract } from "./agent-
|
|
2
|
-
import { _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, h as DEFAULT_AGENT_SKILL_FORMAT,
|
|
3
|
-
import { d as resolveAskAISearchRequestConfig } from "./search-
|
|
4
|
-
import { a as resolveDocsMetadataBaseUrl } from "./metadata-
|
|
5
|
-
import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-
|
|
1
|
+
import { Ht as PAGE_AGENT_CONTRACT_FIELDS, Jt as normalizePageAgentFrontmatter, Kt as getPageAgentFrontmatterIssues, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, bt as findDocsAudienceMdxIssues, in as getDocsMcpProtectedResourceMetadataRoutes, j as buildDocsConfigMap, k as buildDocsAgentDiscoverySpec, qt as hasStructuredPageAgentContract } from "./agent-D2SsSct2.mjs";
|
|
2
|
+
import { F as resolveDocsDiscoveryApiRoute, _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, h as DEFAULT_AGENT_SKILL_FORMAT, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-DSVKdQrl.mjs";
|
|
3
|
+
import { d as resolveAskAISearchRequestConfig } from "./search-DBlw9h3P.mjs";
|
|
4
|
+
import { a as resolveDocsMetadataBaseUrl } from "./metadata-CNjcFhQN.mjs";
|
|
5
|
+
import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-DZR4J7Iz.mjs";
|
|
6
6
|
import { createFilesystemDocsMcpSource, getDocsConfigSchema, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
7
7
|
import "./code-blocks-DnNVNK2M.mjs";
|
|
8
8
|
import { _ as resolveDocsContentDir, g as resolveDocsConfigPath, h as readTopLevelStringProperty, s as loadDocsConfigModuleResultWithProjectEnv } from "./config-Wcdj-D0a.mjs";
|
|
9
9
|
import { t as detectFramework } from "./utils-DpiIioYb.mjs";
|
|
10
|
-
import { a as extractAgentBlocks, i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-
|
|
10
|
+
import { a as extractAgentBlocks, i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-DK1uqjlo.mjs";
|
|
11
11
|
import matter from "gray-matter";
|
|
12
12
|
import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
|
|
13
13
|
import path from "node:path";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "./agent-
|
|
2
|
-
import "./standards-discovery-
|
|
3
|
-
import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-
|
|
4
|
-
import { a as loadDocsConfigModule, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
|
|
1
|
+
import "./agent-D2SsSct2.mjs";
|
|
2
|
+
import "./standards-discovery-DSVKdQrl.mjs";
|
|
3
|
+
import { c as renderDocsRobotsGeneratedBlock, f as upsertDocsRobotsGeneratedBlock, i as DOCS_ROBOTS_GENERATED_BLOCK_START, r as DOCS_ROBOTS_GENERATED_BLOCK_END, u as resolveDocsRobotsConfig } from "./robots-Dz5XeT8F.mjs";
|
|
4
|
+
import { a as loadDocsConfigModule, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, m as readTopLevelBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
|
|
5
5
|
import { t as detectFramework } from "./utils-DpiIioYb.mjs";
|
|
6
6
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
@@ -70,15 +70,21 @@ function parseRobotsGenerateArgs(argv) {
|
|
|
70
70
|
if (parsed.append && parsed.force) throw new Error("Use either --append or --force, not both.");
|
|
71
71
|
return parsed;
|
|
72
72
|
}
|
|
73
|
-
function readTopLevelBooleanProperty(content, key) {
|
|
74
|
-
const match = content.match(new RegExp(`\\b${key}\\b\\s*:\\s*(true|false)`));
|
|
75
|
-
return match ? match[1] === "true" : void 0;
|
|
76
|
-
}
|
|
77
73
|
function readLlmsBaseUrlFromConfig(content, config) {
|
|
78
74
|
if (config?.llmsTxt && typeof config.llmsTxt === "object") return config.llmsTxt.baseUrl;
|
|
79
75
|
const block = extractNestedObjectLiteral(content, ["llmsTxt"]);
|
|
80
76
|
return block ? readStringProperty(block, "baseUrl") : void 0;
|
|
81
77
|
}
|
|
78
|
+
function isApiCatalogEnabled(content, config) {
|
|
79
|
+
if (config?.staticExport ?? readTopLevelBooleanProperty(content, "staticExport") ?? false) return false;
|
|
80
|
+
if (config?.llmsTxt && typeof config.llmsTxt === "object") return config.llmsTxt.apiCatalog !== false;
|
|
81
|
+
const block = extractNestedObjectLiteral(content, ["llmsTxt"]);
|
|
82
|
+
return block ? readBooleanProperty(block, "apiCatalog") !== false : true;
|
|
83
|
+
}
|
|
84
|
+
function isAgentCardEnabled(content, config) {
|
|
85
|
+
if (config) return Boolean(config.agent?.a2a);
|
|
86
|
+
return Boolean(extractNestedObjectLiteral(content, ["agent", "a2a"]));
|
|
87
|
+
}
|
|
82
88
|
function readSitemapConfigFromStatic(content) {
|
|
83
89
|
const topLevelBoolean = readTopLevelBooleanProperty(content, "sitemap");
|
|
84
90
|
if (typeof topLevelBoolean === "boolean") return topLevelBoolean;
|
|
@@ -134,6 +140,8 @@ async function generateRobots(options = {}) {
|
|
|
134
140
|
const sitemap = config?.sitemap ?? readSitemapConfigFromStatic(configContent) ?? true;
|
|
135
141
|
const sitemapBaseUrl = typeof sitemap === "object" ? sitemap.baseUrl : void 0;
|
|
136
142
|
const llmsBaseUrl = readLlmsBaseUrlFromConfig(configContent, config);
|
|
143
|
+
const apiCatalog = isApiCatalogEnabled(configContent, config);
|
|
144
|
+
const agentCard = isAgentCardEnabled(configContent, config);
|
|
137
145
|
const configuredRobots = resolveConfiguredRobots(configContent, config);
|
|
138
146
|
if (configuredRobots === false) throw new Error("Robots generation is disabled by `robots: false`.");
|
|
139
147
|
const robotsInput = typeof configuredRobots === "object" ? configuredRobots : {};
|
|
@@ -143,6 +151,8 @@ async function generateRobots(options = {}) {
|
|
|
143
151
|
const relativeRobotsPath = path.relative(rootDir, robotsPath).replace(/\\/g, "/");
|
|
144
152
|
const generatedBlock = renderDocsRobotsGeneratedBlock({
|
|
145
153
|
entry,
|
|
154
|
+
apiCatalog,
|
|
155
|
+
agentCard,
|
|
146
156
|
sitemap,
|
|
147
157
|
baseUrl: robots.baseUrl,
|
|
148
158
|
robots
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Ft as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, X as normalizeDocsPathSegment, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, en as DEFAULT_MCP_PUBLIC_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-
|
|
2
|
-
import { a as DEFAULT_A2A_AGENT_CARD_ROUTE, b as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-
|
|
1
|
+
import { Ft as resolveDocsSitemapConfig, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, X as normalizeDocsPathSegment, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, en as DEFAULT_MCP_PUBLIC_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, nn as DEFAULT_MCP_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-D2SsSct2.mjs";
|
|
2
|
+
import { a as DEFAULT_A2A_AGENT_CARD_ROUTE, b as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-DSVKdQrl.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/robots.ts
|
|
5
5
|
const DEFAULT_ROBOTS_TXT_ROUTE = "/robots.txt";
|
|
@@ -61,13 +61,17 @@ function resolveDocsRobotsConfig(input, options = {}) {
|
|
|
61
61
|
}
|
|
62
62
|
function getDocsRobotsAllowRoutes(options = {}) {
|
|
63
63
|
const normalizedEntry = normalizeDocsPathSegment(options.entry ?? "docs") || "docs";
|
|
64
|
-
|
|
65
|
-
const routes = [
|
|
64
|
+
return unique([
|
|
66
65
|
"/",
|
|
67
66
|
`/${normalizedEntry}`,
|
|
68
67
|
`/${normalizedEntry}/`,
|
|
69
68
|
`/${normalizedEntry}.md`,
|
|
70
69
|
`/${normalizedEntry}/*.md`,
|
|
70
|
+
...getDocsRobotsDiscoveryRoutes(options)
|
|
71
|
+
].map(normalizeRoute));
|
|
72
|
+
}
|
|
73
|
+
function getDocsRobotsDiscoveryRoutes(options = {}) {
|
|
74
|
+
const routes = [
|
|
71
75
|
DEFAULT_LLMS_TXT_ROUTE,
|
|
72
76
|
DEFAULT_LLMS_FULL_TXT_ROUTE,
|
|
73
77
|
DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE,
|
|
@@ -89,6 +93,7 @@ function getDocsRobotsAllowRoutes(options = {}) {
|
|
|
89
93
|
DEFAULT_MCP_PUBLIC_ROUTE,
|
|
90
94
|
DEFAULT_MCP_WELL_KNOWN_ROUTE
|
|
91
95
|
];
|
|
96
|
+
const sitemapConfig = resolveDocsSitemapConfig(options.sitemap);
|
|
92
97
|
if (sitemapConfig.enabled) {
|
|
93
98
|
if (sitemapConfig.xml.enabled) routes.push(sitemapConfig.xml.route);
|
|
94
99
|
if (sitemapConfig.markdown.enabled) {
|
|
@@ -169,30 +174,93 @@ function upsertDocsRobotsGeneratedBlock(existing, block) {
|
|
|
169
174
|
const prefix = existing.trimEnd();
|
|
170
175
|
return `${prefix}${prefix ? "\n\n" : ""}${block}`;
|
|
171
176
|
}
|
|
172
|
-
function
|
|
173
|
-
const
|
|
174
|
-
|
|
177
|
+
function parseRobotsGroups(content) {
|
|
178
|
+
const groups = [];
|
|
179
|
+
let current;
|
|
180
|
+
for (const rawLine of content.split(/\r?\n/)) {
|
|
181
|
+
const line = rawLine.replace(/#.*$/, "").trim();
|
|
182
|
+
const separator = line.indexOf(":");
|
|
183
|
+
if (separator === -1) continue;
|
|
184
|
+
const field = line.slice(0, separator).trim().toLowerCase();
|
|
185
|
+
const value = line.slice(separator + 1).trim();
|
|
186
|
+
if (field === "user-agent") {
|
|
187
|
+
if (!value) continue;
|
|
188
|
+
if (!current || current.hasRules) {
|
|
189
|
+
current = {
|
|
190
|
+
userAgents: /* @__PURE__ */ new Set(),
|
|
191
|
+
allowRoutes: /* @__PURE__ */ new Set(),
|
|
192
|
+
rules: [],
|
|
193
|
+
hasRules: false
|
|
194
|
+
};
|
|
195
|
+
groups.push(current);
|
|
196
|
+
}
|
|
197
|
+
current.userAgents.add(value.toLowerCase());
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (!current) continue;
|
|
201
|
+
if (field !== "allow" && field !== "disallow") continue;
|
|
202
|
+
current.hasRules = true;
|
|
203
|
+
if (!value) continue;
|
|
204
|
+
const pattern = normalizeRoute(value);
|
|
205
|
+
if (field === "allow") current.allowRoutes.add(pattern);
|
|
206
|
+
current.rules.push({
|
|
207
|
+
directive: field,
|
|
208
|
+
pattern
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
return groups;
|
|
212
|
+
}
|
|
213
|
+
function rulesForUserAgent(groups, userAgent) {
|
|
214
|
+
const normalizedUserAgent = userAgent.toLowerCase();
|
|
215
|
+
const explicitMatches = groups.filter((group) => group.userAgents.has(normalizedUserAgent));
|
|
216
|
+
const matches = explicitMatches.length > 0 ? explicitMatches : groups.filter((group) => group.userAgents.has("*"));
|
|
217
|
+
return {
|
|
218
|
+
found: explicitMatches.length > 0,
|
|
219
|
+
allowRoutes: new Set(matches.flatMap((group) => [...group.allowRoutes])),
|
|
220
|
+
rules: matches.flatMap((group) => group.rules)
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
function concreteDiscoveryRoute(route) {
|
|
224
|
+
return route.replace(/\*/g, "resource");
|
|
175
225
|
}
|
|
176
|
-
function
|
|
177
|
-
const
|
|
178
|
-
|
|
226
|
+
function robotsRuleMatches(pattern, route) {
|
|
227
|
+
const endAnchored = pattern.endsWith("$");
|
|
228
|
+
const expression = (endAnchored ? pattern.slice(0, -1) : pattern).split("*").map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")).join(".*");
|
|
229
|
+
return new RegExp(`^${expression}${endAnchored ? "$" : ""}`).test(route);
|
|
230
|
+
}
|
|
231
|
+
function robotsRuleSpecificity(pattern) {
|
|
232
|
+
return new TextEncoder().encode(pattern).byteLength;
|
|
233
|
+
}
|
|
234
|
+
function rulesAllowRoute(rules, route) {
|
|
235
|
+
const concreteRoute = concreteDiscoveryRoute(route);
|
|
236
|
+
let strongestMatch = -1;
|
|
237
|
+
let allowed = true;
|
|
238
|
+
for (const rule of rules) {
|
|
239
|
+
if (!robotsRuleMatches(rule.pattern, concreteRoute)) continue;
|
|
240
|
+
const specificity = robotsRuleSpecificity(rule.pattern);
|
|
241
|
+
if (specificity > strongestMatch) {
|
|
242
|
+
strongestMatch = specificity;
|
|
243
|
+
allowed = rule.directive === "allow";
|
|
244
|
+
continue;
|
|
245
|
+
}
|
|
246
|
+
if (specificity === strongestMatch && rule.directive === "allow") allowed = true;
|
|
247
|
+
}
|
|
248
|
+
return allowed;
|
|
179
249
|
}
|
|
180
250
|
function analyzeDocsRobotsTxt(content, options = {}) {
|
|
181
|
-
const expectedRoutes =
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
].includes(route) || route.includes("sitemap"));
|
|
190
|
-
const missingRoutes = expectedRoutes.filter((route) => !content.includes(route));
|
|
251
|
+
const expectedRoutes = options.sitemapRoutes === void 0 ? getDocsRobotsDiscoveryRoutes(options) : unique([...getDocsRobotsDiscoveryRoutes({
|
|
252
|
+
...options,
|
|
253
|
+
sitemap: false
|
|
254
|
+
}), ...options.sitemapRoutes].map(normalizeRoute));
|
|
255
|
+
const groups = parseRobotsGroups(content);
|
|
256
|
+
const wildcardRules = rulesForUserAgent(groups, "*");
|
|
257
|
+
const allowedRoutes = wildcardRules.allowRoutes;
|
|
258
|
+
const missingRoutes = expectedRoutes.filter((route) => !allowedRoutes.has(route));
|
|
191
259
|
return {
|
|
192
|
-
blocksAgentRoutes:
|
|
193
|
-
blocksAiAgents: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) =>
|
|
260
|
+
blocksAgentRoutes: expectedRoutes.some((route) => !rulesAllowRoute(wildcardRules.rules, route)),
|
|
261
|
+
blocksAiAgents: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => expectedRoutes.some((route) => !rulesAllowRoute(rulesForUserAgent(groups, userAgent).rules, route))),
|
|
194
262
|
hasAgentRoutes: missingRoutes.length === 0,
|
|
195
|
-
hasAiPolicy: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) =>
|
|
263
|
+
hasAiPolicy: DEFAULT_DOCS_AI_ROBOTS_USER_AGENTS.some((userAgent) => rulesForUserAgent(groups, userAgent).found),
|
|
196
264
|
missingRoutes
|
|
197
265
|
};
|
|
198
266
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { $n as ResolvedDocsRelatedLink, Fn as OpenDocsProvider, Jt as DocsObservabilityEventInput, Kt as DocsObservabilityConfig, Mn as McpDocsSearchConfig, Rn as OpenDocsTarget, at as DocsAnalyticsEventInput, cn as DocsSearchConfig, et as DocsAgentTraceEventInput, f as CustomDocsSearchConfig, fn as DocsSearchResult, hn as DocsSitemapConfig, ht as DocsAskAIMcpConfig, in as DocsSearchAdapter, it as DocsAnalyticsEvent, ln as DocsSearchDocument, lr as TypesenseDocsSearchConfig, mn as DocsSearchSourcePage, on as DocsSearchAdapterFactory, qt as DocsObservabilityEvent, r as AlgoliaDocsSearchConfig, rt as DocsAnalyticsConfig, sn as DocsSearchChunkingConfig } from "./types-BQC05SQm.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { F as DocsDiscoveryApiRouteOptions } from "./standards-discovery-CQjJ-M2y.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/analytics.d.ts
|
|
5
5
|
declare const DOCS_AGENT_TRACE_EVENT_TYPES: readonly ["run.start", "run.end", "run.error", "user.input", "prompt.build", "retrieval.query", "retrieval.result", "retrieval.error", "model.call", "model.response", "model.stream", "model.error", "tool.call", "tool.result", "tool.error", "retry", "timeout", "error", "agent.final"];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { H as isDocsAgentDiscoveryRequest, J as isDocsSkillRequest, Qt as upsertPageAgentContractMarkdown, U as isDocsAgentsRequest, Vt as PAGE_AGENT_CONTRACT_END_MARKER, Wt as PAGE_AGENT_CONTRACT_START_MARKER, Yt as renderPageAgentContractMarkdown, at as resolveDocsAgentFeedbackConfig, gt as resolveDocsSkillFormat, lt as resolveDocsLlmsTxtRequest, ot as resolveDocsAgentFeedbackRequest, pt as resolveDocsMarkdownRequest, st as resolveDocsAgentsFormat, wt as resolveDocsAudienceMdxContent } from "./agent-
|
|
1
|
+
import { H as isDocsAgentDiscoveryRequest, J as isDocsSkillRequest, Qt as upsertPageAgentContractMarkdown, U as isDocsAgentsRequest, Vt as PAGE_AGENT_CONTRACT_END_MARKER, Wt as PAGE_AGENT_CONTRACT_START_MARKER, Yt as renderPageAgentContractMarkdown, at as resolveDocsAgentFeedbackConfig, gt as resolveDocsSkillFormat, lt as resolveDocsLlmsTxtRequest, ot as resolveDocsAgentFeedbackRequest, pt as resolveDocsMarkdownRequest, st as resolveDocsAgentsFormat, wt as resolveDocsAudienceMdxContent } from "./agent-D2SsSct2.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/telemetry.ts
|
|
4
4
|
const DOCS_PACKAGE_NAME = "@farming-labs/docs";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import "./agent-
|
|
2
|
-
import "./standards-discovery-
|
|
3
|
-
import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-
|
|
4
|
-
import "./sitemap-server-
|
|
5
|
-
import "./agent-evals-
|
|
1
|
+
import "./agent-D2SsSct2.mjs";
|
|
2
|
+
import "./standards-discovery-DSVKdQrl.mjs";
|
|
3
|
+
import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-DBlw9h3P.mjs";
|
|
4
|
+
import "./sitemap-server-DQp8qUKN.mjs";
|
|
5
|
+
import "./agent-evals-DZR4J7Iz.mjs";
|
|
6
6
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
7
7
|
import "./code-blocks-DnNVNK2M.mjs";
|
|
8
|
-
import "./agent-skills-server-
|
|
8
|
+
import "./agent-skills-server-iBfCLPOt.mjs";
|
|
9
9
|
import "./server.mjs";
|
|
10
10
|
import { _ as resolveDocsContentDir, c as loadProjectEnv, g as resolveDocsConfigPath, h as readTopLevelStringProperty } from "./config-Wcdj-D0a.mjs";
|
|
11
11
|
import { readFileSync } from "node:fs";
|
package/dist/server.d.mts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { $t as DocsReviewRulesConfig, B as DocsAgentEvaluationSourceReference, Ct as DocsCodeBlocksPlannerProvider, Et as DocsCodeBlocksValidateConfig, F as DocsAgentEvaluationAnswerInput, H as DocsAgentEvaluationTaskInput, I as DocsAgentEvaluationAnswerProvider, J as DocsAgentGoldenExpectedExample, Jt as DocsObservabilityEventInput, K as DocsAgentGoldenAnswerExpectation, Kt as DocsObservabilityConfig, L as DocsAgentEvaluationAnswerRequest, Mn as McpDocsSearchConfig, Qt as DocsReviewConfig, R as DocsAgentEvaluationAnswerResult, V as DocsAgentEvaluationSurface, X as DocsAgentGoldenTaskExpectation, Y as DocsAgentGoldenTask, Z as DocsAgentGoldenTaskFilters, Zt as DocsReviewCiMode, a as ApiReferenceRenderer, an as DocsSearchAdapterContext, at as DocsAnalyticsEventInput, cn as DocsSearchConfig, dn as DocsSearchQuery, dt as DocsAskAIFeedbackConfig, et as DocsAgentTraceEventInput, fn as DocsSearchResult, ft as DocsAskAIFeedbackData, hn as DocsSitemapConfig, ht as DocsAskAIMcpConfig, in as DocsSearchAdapter, it as DocsAnalyticsEvent, kt as DocsConfig, ln as DocsSearchDocument, mn as DocsSearchSourcePage, mt as DocsAskAIFeedbackValue, nt as DocsAgentTraceStatus, on as DocsSearchAdapterFactory, pt as DocsAskAIFeedbackMessage, q as DocsAgentGoldenExampleVerification, qt as DocsObservabilityEvent, rt as DocsAnalyticsConfig, tt as DocsAgentTraceEventType, z as DocsAgentEvaluationAnswerRunner } from "./types-BQC05SQm.mjs";
|
|
2
|
-
import { n as resolveConfiguredAgentSkills, r as resolveConfiguredAgentSkillsSync, t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-
|
|
2
|
+
import { n as resolveConfiguredAgentSkills, r as resolveConfiguredAgentSkillsSync, t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-DJXdK_hS.mjs";
|
|
3
3
|
import { renderDocsAgentSkillsBundle } from "./agent-skills-vite.mjs";
|
|
4
4
|
import { i as isDocsCloudAskAIProvider, n as DocsCloudAskAIResponseOptions, r as createDocsCloudAskAIResponse, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-BD1SeVZv.mjs";
|
|
5
5
|
import { DocsCloudAskAIOptions, DocsCloudPublicConfig, DocsCloudRouteHandlerOptions, DocsCloudRouteHandlers, DocsCloudRuntimeEnv, DocsCloudRuntimeValue, DocsCloudServer, DocsCloudServerOptions, DocsCloudTrackEventOptions, createDocsCloudRouteHandler, createDocsCloudServer } from "./docs-cloud-server.mjs";
|
|
6
|
-
import { A as resolveDocsSitemapPageLastmod, B as SerializedOpenDocsProvider, C as DocsSitemapResolvedConfig, D as renderDocsSitemapMarkdown, E as readDocsSitemapManifestFromContentMap, F as DEFAULT_OPEN_DOCS_TARGET, G as serializeDocsIcon, H as parsePromptStringArray, I as DEFAULT_PROMPT_PROVIDER_TEMPLATES, J as serializeOpenDocsProviders, K as serializeDocsIconRegistry, L as PromptAction, M as toDocsSitemapMarkdownUrl, N as DEFAULT_OPEN_DOCS_PROMPT, O as renderDocsSitemapXml, P as DEFAULT_OPEN_DOCS_PROVIDER_IDS, R as PromptProviderChoice, S as DocsSitemapPageInput, T as createDocsSitemapResponse, U as resolvePromptProviderChoices, V as normalizePromptProviderName, W as sanitizePromptText, _ as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, a as createMcpSearchAdapter, at as createDocsAgentTraceContext, b as DocsSitemapManifest, c as formatDocsAskAIPackageHints, ct as emitDocsAnalyticsEvent, d as resolveAskAISearchRequestConfig, dt as resolveDocsAnalyticsConfig, f as resolveDocsSearchAudience, ft as resolveDocsObservabilityConfig, g as DEFAULT_SITEMAP_MD_ROUTE, h as DEFAULT_SITEMAP_MD_DOCS_ROUTE, i as createCustomSearchAdapter, it as ResolvedDocsObservabilityConfig, j as resolveDocsSitemapRequest, k as resolveDocsSitemapConfig, l as inferDocsAskAIPackageHints, lt as emitDocsObservabilityEvent, m as DEFAULT_SITEMAP_MANIFEST_PATH, n as buildDocsSearchDocuments, nt as DocsAgentTraceContext, o as createSimpleSearchAdapter, ot as createDocsAgentTraceId, p as resolveSearchRequestConfig, q as serializeOpenDocsProvider, r as createAlgoliaSearchAdapter, rt as ResolvedDocsAnalyticsConfig, s as createTypesenseSearchAdapter, st as emitDocsAgentTraceEvent, t as buildDocsAskAIContext, tt as DOCS_AGENT_TRACE_EVENT_TYPES, u as performDocsSearch, ut as getDocsRequestAnalyticsProperties, v as DEFAULT_SITEMAP_XML_ROUTE, w as buildDocsSitemapManifest, x as DocsSitemapManifestPage, y as DocsSitemapFormat, z as SerializeOpenDocsProviderOptions } from "./search-
|
|
6
|
+
import { A as resolveDocsSitemapPageLastmod, B as SerializedOpenDocsProvider, C as DocsSitemapResolvedConfig, D as renderDocsSitemapMarkdown, E as readDocsSitemapManifestFromContentMap, F as DEFAULT_OPEN_DOCS_TARGET, G as serializeDocsIcon, H as parsePromptStringArray, I as DEFAULT_PROMPT_PROVIDER_TEMPLATES, J as serializeOpenDocsProviders, K as serializeDocsIconRegistry, L as PromptAction, M as toDocsSitemapMarkdownUrl, N as DEFAULT_OPEN_DOCS_PROMPT, O as renderDocsSitemapXml, P as DEFAULT_OPEN_DOCS_PROVIDER_IDS, R as PromptProviderChoice, S as DocsSitemapPageInput, T as createDocsSitemapResponse, U as resolvePromptProviderChoices, V as normalizePromptProviderName, W as sanitizePromptText, _ as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, a as createMcpSearchAdapter, at as createDocsAgentTraceContext, b as DocsSitemapManifest, c as formatDocsAskAIPackageHints, ct as emitDocsAnalyticsEvent, d as resolveAskAISearchRequestConfig, dt as resolveDocsAnalyticsConfig, f as resolveDocsSearchAudience, ft as resolveDocsObservabilityConfig, g as DEFAULT_SITEMAP_MD_ROUTE, h as DEFAULT_SITEMAP_MD_DOCS_ROUTE, i as createCustomSearchAdapter, it as ResolvedDocsObservabilityConfig, j as resolveDocsSitemapRequest, k as resolveDocsSitemapConfig, l as inferDocsAskAIPackageHints, lt as emitDocsObservabilityEvent, m as DEFAULT_SITEMAP_MANIFEST_PATH, n as buildDocsSearchDocuments, nt as DocsAgentTraceContext, o as createSimpleSearchAdapter, ot as createDocsAgentTraceId, p as resolveSearchRequestConfig, q as serializeOpenDocsProvider, r as createAlgoliaSearchAdapter, rt as ResolvedDocsAnalyticsConfig, s as createTypesenseSearchAdapter, st as emitDocsAgentTraceEvent, t as buildDocsAskAIContext, tt as DOCS_AGENT_TRACE_EVENT_TYPES, u as performDocsSearch, ut as getDocsRequestAnalyticsProperties, v as DEFAULT_SITEMAP_XML_ROUTE, w as buildDocsSitemapManifest, x as DocsSitemapManifestPage, y as DocsSitemapFormat, z as SerializeOpenDocsProviderOptions } from "./search-BBVD0A7O.mjs";
|
|
7
7
|
import { CreateDocsMcpServerOptions, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, DocsMcpAgentContractSummary, DocsMcpCodeExample, DocsMcpConfigSchema, DocsMcpConfigSchemaOption, DocsMcpContextResult, DocsMcpContextSource, DocsMcpDocsList, DocsMcpDocsPageSummary, DocsMcpDocsSection, DocsMcpHttpHandlers, DocsMcpNavigationNode, DocsMcpNavigationTree, DocsMcpPage, DocsMcpRequestContext, DocsMcpResolvedConfig, DocsMcpResolvedCorsConfig, DocsMcpResolvedProtectedResourceConfig, DocsMcpResolvedSecurityConfig, DocsMcpSource, DocsMcpTaskSummary, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
8
8
|
|
|
9
9
|
//#region src/code-group-mdx.d.ts
|
package/dist/server.mjs
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { a as emitDocsAnalyticsEvent, c as resolveDocsAnalyticsConfig, i as emitDocsAgentTraceEvent, l as resolveDocsObservabilityConfig, n as createDocsAgentTraceContext, o as emitDocsObservabilityEvent, r as createDocsAgentTraceId, s as getDocsRequestAnalyticsProperties, t as DOCS_AGENT_TRACE_EVENT_TYPES } from "./analytics-Bx44lg6d.mjs";
|
|
2
|
-
import { At as buildDocsSitemapManifest, Dt as DEFAULT_SITEMAP_MD_ROUTE, Et as DEFAULT_SITEMAP_MD_DOCS_ROUTE, Ft as resolveDocsSitemapConfig, It as resolveDocsSitemapPageLastmod, Lt as resolveDocsSitemapRequest, Mt as readDocsSitemapManifestFromContentMap, Nt as renderDocsSitemapMarkdown, Ot as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, Pt as renderDocsSitemapXml, Rt as toDocsSitemapMarkdownUrl, Tt as DEFAULT_SITEMAP_MANIFEST_PATH, jt as createDocsSitemapResponse, kt as DEFAULT_SITEMAP_XML_ROUTE } from "./agent-
|
|
3
|
-
import "./standards-discovery-
|
|
4
|
-
import { a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveDocsSearchAudience, i as createCustomSearchAdapter, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as resolveSearchRequestConfig, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch } from "./search-
|
|
5
|
-
import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, T as remarkCodeGroup, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-
|
|
6
|
-
import { a as buildDocsReviewWorkflowPathFilters, c as resolveDocsReviewConfig, i as buildDocsReviewWorkflow, n as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, o as ensureDocsReviewWorkflow, r as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-
|
|
2
|
+
import { At as buildDocsSitemapManifest, Dt as DEFAULT_SITEMAP_MD_ROUTE, Et as DEFAULT_SITEMAP_MD_DOCS_ROUTE, Ft as resolveDocsSitemapConfig, It as resolveDocsSitemapPageLastmod, Lt as resolveDocsSitemapRequest, Mt as readDocsSitemapManifestFromContentMap, Nt as renderDocsSitemapMarkdown, Ot as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, Pt as renderDocsSitemapXml, Rt as toDocsSitemapMarkdownUrl, Tt as DEFAULT_SITEMAP_MANIFEST_PATH, jt as createDocsSitemapResponse, kt as DEFAULT_SITEMAP_XML_ROUTE } from "./agent-D2SsSct2.mjs";
|
|
3
|
+
import "./standards-discovery-DSVKdQrl.mjs";
|
|
4
|
+
import { a as createMcpSearchAdapter, c as formatDocsAskAIPackageHints, d as resolveAskAISearchRequestConfig, f as resolveDocsSearchAudience, i as createCustomSearchAdapter, l as inferDocsAskAIPackageHints, n as buildDocsSearchDocuments, o as createSimpleSearchAdapter, p as resolveSearchRequestConfig, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter, t as buildDocsAskAIContext, u as performDocsSearch } from "./search-DBlw9h3P.mjs";
|
|
5
|
+
import { C as resolveApiReferenceOpenApiDiscovery, S as resolveApiReferenceConfig, T as remarkCodeGroup, _ as buildApiReferenceOpenApiDocument, a as DEFAULT_PROMPT_PROVIDER_TEMPLATES, b as buildApiReferenceScalarCss, c as resolvePromptProviderChoices, d as serializeDocsIconRegistry, f as serializeOpenDocsProvider, g as buildApiReferenceHtmlDocumentAsync, h as buildApiReferenceHtmlDocument, i as DEFAULT_OPEN_DOCS_TARGET, l as sanitizePromptText, m as DEFAULT_API_REFERENCE_OPENAPI_ROUTE, n as DEFAULT_OPEN_DOCS_PROMPT, o as normalizePromptProviderName, p as serializeOpenDocsProviders, r as DEFAULT_OPEN_DOCS_PROVIDER_IDS, s as parsePromptStringArray, t as readDocsSitemapManifest, u as serializeDocsIcon, v as buildApiReferenceOpenApiDocumentAsync, w as resolveApiReferenceRenderer, x as isApiReferenceOpenApiRequest, y as buildApiReferencePageTitle } from "./sitemap-server-DQp8qUKN.mjs";
|
|
6
|
+
import { a as buildDocsReviewWorkflowPathFilters, c as resolveDocsReviewConfig, i as buildDocsReviewWorkflow, n as DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, o as ensureDocsReviewWorkflow, r as DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-DZR4J7Iz.mjs";
|
|
7
7
|
import { DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DOCS_CONFIG_SCHEMA_OPTIONS, createDocsMcpHttpHandler, createDocsMcpServer, createFilesystemDocsMcpSource, getDocsConfigSchema, normalizeDocsMcpRoute, resolveDocsMcpConfig, runDocsMcpStdio } from "./mcp.mjs";
|
|
8
8
|
import { n as isDocsCloudAskAIProvider, t as createDocsCloudAskAIResponse } from "./cloud-ask-ai-sbpjOR2K.mjs";
|
|
9
9
|
import { createDocsCloudRouteHandler, createDocsCloudServer } from "./docs-cloud-server.mjs";
|
|
10
10
|
import "./code-blocks-DnNVNK2M.mjs";
|
|
11
|
-
import { n as resolveConfiguredAgentSkillsSync, t as resolveConfiguredAgentSkills } from "./agent-skills-server-
|
|
11
|
+
import { n as resolveConfiguredAgentSkillsSync, t as resolveConfiguredAgentSkills } from "./agent-skills-server-iBfCLPOt.mjs";
|
|
12
12
|
import { renderDocsAgentSkillsBundle } from "./agent-skills-vite.mjs";
|
|
13
13
|
|
|
14
14
|
export { DEFAULT_API_REFERENCE_OPENAPI_ROUTE, DEFAULT_DOCS_MCP_CORS_ALLOWED_HEADERS, DEFAULT_DOCS_MCP_CORS_EXPOSED_HEADERS, DEFAULT_DOCS_MCP_CORS_MAX_AGE_SECONDS, DEFAULT_DOCS_MCP_MAX_BODY_BYTES, DEFAULT_DOCS_REVIEW_SCORE_THRESHOLD, DEFAULT_DOCS_REVIEW_WORKFLOW_PATH, DEFAULT_OPEN_DOCS_PROMPT, DEFAULT_OPEN_DOCS_PROVIDER_IDS, DEFAULT_OPEN_DOCS_TARGET, DEFAULT_PROMPT_PROVIDER_TEMPLATES, DEFAULT_SITEMAP_MANIFEST_PATH, DEFAULT_SITEMAP_MD_DOCS_ROUTE, DEFAULT_SITEMAP_MD_ROUTE, DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, DEFAULT_SITEMAP_XML_ROUTE, DOCS_AGENT_TRACE_EVENT_TYPES, DOCS_CONFIG_SCHEMA_OPTIONS, buildApiReferenceHtmlDocument, buildApiReferenceHtmlDocumentAsync, buildApiReferenceOpenApiDocument, buildApiReferenceOpenApiDocumentAsync, buildApiReferencePageTitle, buildApiReferenceScalarCss, buildDocsAskAIContext, buildDocsReviewWorkflow, buildDocsReviewWorkflowPathFilters, buildDocsSearchDocuments, buildDocsSitemapManifest, createAlgoliaSearchAdapter, createCustomSearchAdapter, createDocsAgentTraceContext, createDocsAgentTraceId, createDocsCloudAskAIResponse, createDocsCloudRouteHandler, createDocsCloudServer, createDocsMcpHttpHandler, createDocsMcpServer, createDocsSitemapResponse, createFilesystemDocsMcpSource, createMcpSearchAdapter, createSimpleSearchAdapter, createTypesenseSearchAdapter, emitDocsAgentTraceEvent, emitDocsAnalyticsEvent, emitDocsObservabilityEvent, ensureDocsReviewWorkflow, formatDocsAskAIPackageHints, getDocsConfigSchema, getDocsRequestAnalyticsProperties, inferDocsAskAIPackageHints, isApiReferenceOpenApiRequest, isDocsCloudAskAIProvider, normalizeDocsMcpRoute, normalizePromptProviderName, parsePromptStringArray, performDocsSearch, readDocsReviewConfigFromSource, readDocsSitemapManifest, readDocsSitemapManifestFromContentMap, remarkCodeGroup, renderDocsAgentSkillsBundle, renderDocsSitemapMarkdown, renderDocsSitemapXml, resolveApiReferenceConfig, resolveApiReferenceOpenApiDiscovery, resolveApiReferenceRenderer, resolveAskAISearchRequestConfig, resolveConfiguredAgentSkills, resolveConfiguredAgentSkillsSync, resolveDocsAnalyticsConfig, resolveDocsMcpConfig, resolveDocsObservabilityConfig, resolveDocsReviewConfig, resolveDocsSearchAudience, resolveDocsSitemapConfig, resolveDocsSitemapPageLastmod, resolveDocsSitemapRequest, resolvePromptProviderChoices, resolveSearchRequestConfig, runDocsGoldenTasks, runDocsMcpStdio, sanitizePromptText, serializeDocsIcon, serializeDocsIconRegistry, serializeOpenDocsProvider, serializeOpenDocsProviders, toDocsSitemapMarkdownUrl };
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { At as buildDocsSitemapManifest, Ft as resolveDocsSitemapConfig, Nt as renderDocsSitemapMarkdown, Pt as renderDocsSitemapXml } from "./agent-
|
|
2
|
-
import "./standards-discovery-
|
|
3
|
-
import "./search-
|
|
4
|
-
import "./sitemap-server-
|
|
5
|
-
import "./agent-evals-
|
|
1
|
+
import { At as buildDocsSitemapManifest, Ft as resolveDocsSitemapConfig, Nt as renderDocsSitemapMarkdown, Pt as renderDocsSitemapXml } from "./agent-D2SsSct2.mjs";
|
|
2
|
+
import "./standards-discovery-DSVKdQrl.mjs";
|
|
3
|
+
import "./search-DBlw9h3P.mjs";
|
|
4
|
+
import "./sitemap-server-DQp8qUKN.mjs";
|
|
5
|
+
import "./agent-evals-DZR4J7Iz.mjs";
|
|
6
6
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
7
7
|
import "./code-blocks-DnNVNK2M.mjs";
|
|
8
|
-
import "./agent-skills-server-
|
|
8
|
+
import "./agent-skills-server-iBfCLPOt.mjs";
|
|
9
9
|
import "./server.mjs";
|
|
10
10
|
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
|
|
11
11
|
import { t as detectFramework } from "./utils-DpiIioYb.mjs";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ft as resolveDocsSitemapConfig } from "./agent-
|
|
1
|
+
import { Ft as resolveDocsSitemapConfig } from "./agent-D2SsSct2.mjs";
|
|
2
2
|
import { createRequire } from "node:module";
|
|
3
3
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
4
4
|
import path, { basename, join, relative } from "node:path";
|
|
@@ -22,6 +22,9 @@ declare const DEFAULT_A2A_AGENT_CARD_FORMAT = "agent-card";
|
|
|
22
22
|
declare const DEFAULT_A2A_PROTOCOL_BINDING = "HTTP+JSON";
|
|
23
23
|
declare const DEFAULT_A2A_PROTOCOL_VERSION = "1.0";
|
|
24
24
|
declare const AGENT_SKILLS_DISCOVERY_SCHEMA_URI = "https://schemas.agentskills.io/discovery/0.2.0/schema.json";
|
|
25
|
+
declare const DOCS_AGENT_MANIFEST_FORMAT = "farming-labs-agent-manifest.v1";
|
|
26
|
+
declare const DOCS_AGENT_MANIFEST_SCHEMA_URI = "https://docs.farming-labs.dev/schema/agent-manifest.v1.json";
|
|
27
|
+
declare const DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE = "application/schema+json";
|
|
25
28
|
interface DocsAgentSkillIndexEntry {
|
|
26
29
|
name: string;
|
|
27
30
|
type: "skill-md" | "archive";
|
|
@@ -194,6 +197,13 @@ declare function getDocsDiscoveryLinkHeader(options?: {
|
|
|
194
197
|
includeSkills?: boolean;
|
|
195
198
|
includeAgentCard?: boolean;
|
|
196
199
|
}): string;
|
|
200
|
+
/**
|
|
201
|
+
* Add the registered `describedby` relation for the Farming Labs manifest schema.
|
|
202
|
+
*
|
|
203
|
+
* Keep this scoped to agent-manifest responses: the shared discovery Link header is
|
|
204
|
+
* also used by unrelated resources that the manifest schema does not describe.
|
|
205
|
+
*/
|
|
206
|
+
declare function getDocsAgentManifestLinkHeader(discoveryLinkHeader?: string): string;
|
|
197
207
|
declare function appendDocsDiscoveryLinkHeader(headers: Headers, value?: string): Headers;
|
|
198
208
|
/** Return one RFC 9727 or Agent Skills discovery response, or null for unrelated requests. */
|
|
199
209
|
declare function createDocsStandardsResponse({
|
|
@@ -207,4 +217,4 @@ declare function createDocsStandardsResponse({
|
|
|
207
217
|
agentCard
|
|
208
218
|
}: CreateDocsStandardsResponseOptions): Promise<Response | null>;
|
|
209
219
|
//#endregion
|
|
210
|
-
export {
|
|
220
|
+
export { sha256DocsDiscoveryContent as $, DocsAgentSkillsIndex as A, DocsStandardsDiscoveryRouteOptions as B, DOCS_AGENT_MANIFEST_FORMAT as C, DocsA2AAgentCardOptions as D, DocsA2AAgentCard as E, DocsDiscoveryApiRouteOptions as F, buildDocsLegacySkillsIndex as G, buildDocsA2AAgentCard as H, DocsPublishedAgentSkill as I, getDocsDiscoveryLinkHeader as J, createDocsStandardsResponse as K, DocsPublishedAgentSkillFile as L, DocsApiCatalogLinkContext as M, DocsApiCatalogLinkTarget as N, DocsA2AAgentInterface as O, DocsApiCatalogOptions as P, resolveDocsStandardsDiscoveryRequest as Q, DocsPublishedAgentSkillOptions as R, DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX as S, DOCS_AGENT_MANIFEST_SCHEMA_URI as T, buildDocsAgentSkillsIndex as U, appendDocsDiscoveryLinkHeader as V, buildDocsApiCatalog as W, resolveDocsDiscoveryApiRoute as X, isDocsStandardsDiscoveryRequest as Y, resolveDocsPublishedAgentSkill as Z, DEFAULT_AGENT_SKILL_RESOURCE_FORMAT as _, DEFAULT_A2A_AGENT_CARD_FORMAT as a, DEFAULT_LEGACY_SKILLS_INDEX_FORMAT as b, DEFAULT_A2A_PROTOCOL_VERSION as c, DEFAULT_AGENT_SKILLS_INDEX_ROUTE as d, DEFAULT_AGENT_SKILLS_ROUTE_PATTERN as f, DEFAULT_AGENT_SKILL_FORMAT as g, DEFAULT_AGENT_SKILL_FILE_FORMAT as h, CreateDocsStandardsResponseOptions as i, DocsApiCatalog as j, DocsAgentSkillIndexEntry as k, DEFAULT_AGENT_SKILLS_ARCHIVE_ROUTE_PATTERN as l, DEFAULT_AGENT_SKILL_ARCHIVE_FORMAT as m, API_CATALOG_MEDIA_TYPE as n, DEFAULT_A2A_AGENT_CARD_ROUTE as o, DEFAULT_AGENT_SKILLS_ROUTE_PREFIX as p, getDocsAgentManifestLinkHeader as q, API_CATALOG_PROFILE_URI as r, DEFAULT_A2A_PROTOCOL_BINDING as s, AGENT_SKILLS_DISCOVERY_SCHEMA_URI as t, DEFAULT_AGENT_SKILLS_INDEX_FORMAT as u, DEFAULT_API_CATALOG_FORMAT as v, DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE as w, DEFAULT_LEGACY_SKILLS_INDEX_ROUTE as x, DEFAULT_API_CATALOG_ROUTE as y, DocsStandardsDiscoveryRequest as z };
|
|
@@ -22,6 +22,9 @@ const DEFAULT_A2A_AGENT_CARD_FORMAT = "agent-card";
|
|
|
22
22
|
const DEFAULT_A2A_PROTOCOL_BINDING = "HTTP+JSON";
|
|
23
23
|
const DEFAULT_A2A_PROTOCOL_VERSION = "1.0";
|
|
24
24
|
const AGENT_SKILLS_DISCOVERY_SCHEMA_URI = "https://schemas.agentskills.io/discovery/0.2.0/schema.json";
|
|
25
|
+
const DOCS_AGENT_MANIFEST_FORMAT = "farming-labs-agent-manifest.v1";
|
|
26
|
+
const DOCS_AGENT_MANIFEST_SCHEMA_URI = "https://docs.farming-labs.dev/schema/agent-manifest.v1.json";
|
|
27
|
+
const DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE = "application/schema+json";
|
|
25
28
|
const DEFAULT_DOCS_API_ROUTE = "/api/docs";
|
|
26
29
|
const DEFAULT_AGENT_MANIFEST_ROUTE = "/.well-known/agent.json";
|
|
27
30
|
const AGENT_SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
@@ -644,6 +647,18 @@ function getDocsDiscoveryLinkHeader(options = {}) {
|
|
|
644
647
|
...options.includeAgentCard ? [formatLinkTarget(DEFAULT_A2A_AGENT_CARD_ROUTE, "service-meta", { type: "application/json" })] : []
|
|
645
648
|
].join(", ");
|
|
646
649
|
}
|
|
650
|
+
/**
|
|
651
|
+
* Add the registered `describedby` relation for the Farming Labs manifest schema.
|
|
652
|
+
*
|
|
653
|
+
* Keep this scoped to agent-manifest responses: the shared discovery Link header is
|
|
654
|
+
* also used by unrelated resources that the manifest schema does not describe.
|
|
655
|
+
*/
|
|
656
|
+
function getDocsAgentManifestLinkHeader(discoveryLinkHeader = getDocsDiscoveryLinkHeader()) {
|
|
657
|
+
const schemaLink = formatLinkTarget(DOCS_AGENT_MANIFEST_SCHEMA_URI, "describedby", { type: DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE });
|
|
658
|
+
if (!discoveryLinkHeader.trim()) return schemaLink;
|
|
659
|
+
if (discoveryLinkHeader.includes(schemaLink)) return discoveryLinkHeader;
|
|
660
|
+
return `${discoveryLinkHeader}, ${schemaLink}`;
|
|
661
|
+
}
|
|
647
662
|
function appendDocsDiscoveryLinkHeader(headers, value) {
|
|
648
663
|
const next = new Headers(headers);
|
|
649
664
|
const discoveryLinks = value ?? getDocsDiscoveryLinkHeader();
|
|
@@ -793,4 +808,4 @@ async function createDocsStandardsResponse({ request, apiCatalog, apiCatalogEnab
|
|
|
793
808
|
}
|
|
794
809
|
|
|
795
810
|
//#endregion
|
|
796
|
-
export {
|
|
811
|
+
export { buildDocsPublishedAgentSkill as A, DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE as C, buildDocsAgentSkillsIndex as D, buildDocsA2AAgentCard as E, resolveDocsDiscoveryApiRoute as F, resolveDocsPublishedAgentSkill as I, resolveDocsStandardsDiscoveryRequest as L, getDocsAgentManifestLinkHeader as M, getDocsDiscoveryLinkHeader as N, buildDocsApiCatalog as O, isDocsStandardsDiscoveryRequest as P, sha256DocsDiscoveryContent as R, DOCS_AGENT_MANIFEST_FORMAT as S, appendDocsDiscoveryLinkHeader as T, DEFAULT_API_CATALOG_FORMAT as _, DEFAULT_A2A_AGENT_CARD_ROUTE as a, DEFAULT_LEGACY_SKILLS_INDEX_ROUTE as b, DEFAULT_AGENT_SKILLS_ARCHIVE_ROUTE_PATTERN as c, DEFAULT_AGENT_SKILLS_ROUTE_PATTERN as d, DEFAULT_AGENT_SKILLS_ROUTE_PREFIX as f, DEFAULT_AGENT_SKILL_RESOURCE_FORMAT as g, DEFAULT_AGENT_SKILL_FORMAT as h, DEFAULT_A2A_AGENT_CARD_FORMAT as i, createDocsStandardsResponse as j, buildDocsLegacySkillsIndex as k, DEFAULT_AGENT_SKILLS_INDEX_FORMAT as l, DEFAULT_AGENT_SKILL_FILE_FORMAT as m, API_CATALOG_MEDIA_TYPE as n, DEFAULT_A2A_PROTOCOL_BINDING as o, DEFAULT_AGENT_SKILL_ARCHIVE_FORMAT as p, API_CATALOG_PROFILE_URI as r, DEFAULT_A2A_PROTOCOL_VERSION as s, AGENT_SKILLS_DISCOVERY_SCHEMA_URI as t, DEFAULT_AGENT_SKILLS_INDEX_ROUTE as u, DEFAULT_API_CATALOG_ROUTE as v, DOCS_AGENT_MANIFEST_SCHEMA_URI as w, DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX as x, DEFAULT_LEGACY_SKILLS_INDEX_FORMAT as y };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/docs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.68",
|
|
4
4
|
"description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -78,6 +78,8 @@
|
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@types/node": "^22.10.0",
|
|
80
80
|
"@types/react": "^19.2.2",
|
|
81
|
+
"ajv": "^8.18.0",
|
|
82
|
+
"ajv-formats": "^3.0.1",
|
|
81
83
|
"react": "^19.2.0",
|
|
82
84
|
"tsdown": "^0.20.3",
|
|
83
85
|
"typescript": "^5.9.3",
|