@farming-labs/docs 0.2.69 → 0.2.71
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-D2SsSct2.mjs → agent-FIyl4-Oa.mjs} +510 -11
- package/dist/{agent-BIzynBvk.mjs → agent-bof3qzKZ.mjs} +2 -2
- package/dist/{agent-evals-DZR4J7Iz.mjs → agent-evals-Cr9TAkmB.mjs} +2 -1
- package/dist/{agent-export-C_zd18VF.mjs → agent-export-7Ws4KqDE.mjs} +11 -8
- package/dist/agent-skills-bundle.d.mts +1 -1
- package/dist/{agent-skills-server-iBfCLPOt.mjs → agent-skills-server-B4u3qy-1.mjs} +9 -5
- package/dist/{agent-skills-server-DJXdK_hS.d.mts → agent-skills-server-DTwblsLu.d.mts} +1 -1
- package/dist/agent-skills-spec.d.mts +51 -0
- package/dist/agent-skills-spec.mjs +284 -0
- package/dist/agent-skills-vite.d.mts +2 -2
- package/dist/agent-skills-vite.mjs +2 -2
- package/dist/{agents-BR5tSkbq.mjs → agents-Be2ntaFr.mjs} +6 -6
- package/dist/cli/index.mjs +14 -14
- package/dist/docs-cloud-server.d.mts +1 -1
- package/dist/{doctor-CVhU0YKo.mjs → doctor-DoPAofVP.mjs} +32 -15
- package/dist/{golden-evaluations-DK1uqjlo.mjs → golden-evaluations-CPGGnXOV.mjs} +1 -1
- package/dist/index.d.mts +84 -6
- package/dist/index.mjs +8 -7
- package/dist/{mcp-YWlNI2d4.mjs → mcp-BLynUzE7.mjs} +6 -6
- package/dist/mcp.d.mts +1 -1
- package/dist/mcp.mjs +3 -3
- package/dist/{metadata-CNjcFhQN.mjs → metadata-bw8k-9x-.mjs} +1 -1
- package/dist/{reading-time-O8mYgLvH.mjs → reading-time-DtNegNiq.mjs} +119 -7
- package/dist/{review-DdfvxMh2.mjs → review-NFnYbMRI.mjs} +6 -6
- package/dist/{robots-CD14j-mU.mjs → robots-B3e-aWPy.mjs} +3 -3
- package/dist/{robots-Dz5XeT8F.mjs → robots-DOqBwQw8.mjs} +2 -2
- package/dist/{search-BBVD0A7O.d.mts → search-CozHzW7v.d.mts} +1 -1
- package/dist/{search-DjN1Gfid.mjs → search-DOGUUZvs.mjs} +6 -6
- package/dist/{search-DBlw9h3P.mjs → search-x5O0-9X3.mjs} +2 -142
- package/dist/server.d.mts +3 -3
- package/dist/server.mjs +6 -6
- package/dist/{sitemap-B0hlAZ8o.mjs → sitemap-BpMKdDUd.mjs} +6 -6
- package/dist/{sitemap-server-DQp8qUKN.mjs → sitemap-server-D_hayOp6.mjs} +1 -1
- package/dist/{standards-discovery-DSVKdQrl.mjs → standards-discovery-CYfiQE13.mjs} +8 -31
- package/package.json +7 -1
- /package/dist/{cloud-ask-ai-BD1SeVZv.d.mts → cloud-ask-ai-BfnX18rI.d.mts} +0 -0
- /package/dist/{standards-discovery-CQjJ-M2y.d.mts → standards-discovery-C0CIC4QI.d.mts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { n as
|
|
1
|
+
import { Ft as DEFAULT_SITEMAP_XML_ROUTE, Nt 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, m as DEFAULT_DOCS_DIAGNOSTICS_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, un as DEFAULT_MCP_WELL_KNOWN_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-FIyl4-Oa.mjs";
|
|
2
|
+
import { isDocsAgentSkillName, validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
|
|
3
|
+
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-CYfiQE13.mjs";
|
|
4
|
+
import { n as DEFAULT_ROBOTS_TXT_ROUTE } from "./robots-DOqBwQw8.mjs";
|
|
4
5
|
import matter from "gray-matter";
|
|
5
6
|
|
|
6
7
|
//#region src/define-docs.ts
|
|
@@ -160,6 +161,91 @@ function extendTheme(baseTheme, extensions) {
|
|
|
160
161
|
return deepMerge(baseTheme, extensions);
|
|
161
162
|
}
|
|
162
163
|
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region src/agent-skills-archive.ts
|
|
166
|
+
const TAR_BLOCK_BYTES = 512;
|
|
167
|
+
const TAR_NAME_BYTES = 100;
|
|
168
|
+
const TAR_PREFIX_OFFSET = 345;
|
|
169
|
+
const TAR_PREFIX_BYTES = 155;
|
|
170
|
+
const AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES = 10 * 1024 * 1024;
|
|
171
|
+
const AGENT_SKILL_DOCUMENT_MAX_BYTES = 1024 * 1024;
|
|
172
|
+
function isZeroBlock(block) {
|
|
173
|
+
return block.every((byte) => byte === 0);
|
|
174
|
+
}
|
|
175
|
+
function readTarText(header, offset, length, field) {
|
|
176
|
+
const bytes = header.subarray(offset, offset + length);
|
|
177
|
+
const terminator = bytes.indexOf(0);
|
|
178
|
+
const value = terminator < 0 ? bytes : bytes.subarray(0, terminator);
|
|
179
|
+
try {
|
|
180
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(value);
|
|
181
|
+
} catch {
|
|
182
|
+
throw new Error(`Agent Skill archive has invalid UTF-8 in its ${field}.`);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
function readTarOctal(header, offset, length, field) {
|
|
186
|
+
const value = readTarText(header, offset, length, field).trim();
|
|
187
|
+
if (!/^[0-7]+$/u.test(value)) throw new Error(`Agent Skill archive has an invalid ${field}.`);
|
|
188
|
+
const parsed = Number.parseInt(value, 8);
|
|
189
|
+
if (!Number.isSafeInteger(parsed) || parsed < 0) throw new Error(`Agent Skill archive has an unsafe ${field}.`);
|
|
190
|
+
return parsed;
|
|
191
|
+
}
|
|
192
|
+
function validateTarChecksum(header) {
|
|
193
|
+
const expected = readTarOctal(header, 148, 8, "header checksum");
|
|
194
|
+
if (header.reduce((sum, byte, index) => {
|
|
195
|
+
return sum + (index >= 148 && index < 156 ? 32 : byte);
|
|
196
|
+
}, 0) !== expected) throw new Error("Agent Skill archive has an invalid tar header checksum.");
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Extract the root SKILL.md from an uncompressed Agent Skill tar archive.
|
|
200
|
+
*
|
|
201
|
+
* Only the regular-file payload is returned; duplicate, oversized, malformed,
|
|
202
|
+
* or non-UTF-8 documents are rejected before frontmatter validation.
|
|
203
|
+
*/
|
|
204
|
+
function readAgentSkillDocumentFromTar(archive) {
|
|
205
|
+
if (archive.byteLength > AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES) throw new Error(`Agent Skill archive exceeds ${AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES} uncompressed bytes.`);
|
|
206
|
+
let skillDocument;
|
|
207
|
+
let offset = 0;
|
|
208
|
+
let foundEndOfArchive = false;
|
|
209
|
+
while (offset < archive.byteLength) {
|
|
210
|
+
if (offset + TAR_BLOCK_BYTES > archive.byteLength) throw new Error("Agent Skill archive contains a truncated tar header.");
|
|
211
|
+
const header = archive.subarray(offset, offset + TAR_BLOCK_BYTES);
|
|
212
|
+
if (isZeroBlock(header)) {
|
|
213
|
+
const secondZeroBlockStart = offset + TAR_BLOCK_BYTES;
|
|
214
|
+
const secondZeroBlockEnd = secondZeroBlockStart + TAR_BLOCK_BYTES;
|
|
215
|
+
if (secondZeroBlockEnd > archive.byteLength) throw new Error("Agent Skill archive contains a truncated end-of-archive marker.");
|
|
216
|
+
if (!isZeroBlock(archive.subarray(secondZeroBlockStart, secondZeroBlockEnd))) throw new Error("Agent Skill archive is missing the second end-of-archive block.");
|
|
217
|
+
if (!archive.subarray(secondZeroBlockEnd).every((byte) => byte === 0)) throw new Error("Agent Skill archive contains non-zero bytes after its end marker.");
|
|
218
|
+
foundEndOfArchive = true;
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
validateTarChecksum(header);
|
|
222
|
+
const name = readTarText(header, 0, TAR_NAME_BYTES, "file name");
|
|
223
|
+
const prefix = readTarText(header, TAR_PREFIX_OFFSET, TAR_PREFIX_BYTES, "file prefix");
|
|
224
|
+
const path = prefix ? `${prefix}/${name}` : name;
|
|
225
|
+
const size = readTarOctal(header, 124, 12, "file size");
|
|
226
|
+
const contentStart = offset + TAR_BLOCK_BYTES;
|
|
227
|
+
const contentEnd = contentStart + size;
|
|
228
|
+
if (contentEnd > archive.byteLength) throw new Error(`Agent Skill archive entry ${JSON.stringify(path)} is truncated.`);
|
|
229
|
+
const typeFlag = header[156];
|
|
230
|
+
if (path === "SKILL.md") {
|
|
231
|
+
if (typeFlag !== 0 && typeFlag !== "0".charCodeAt(0)) throw new Error("Agent Skill archive root SKILL.md must be a regular file.");
|
|
232
|
+
if (skillDocument) throw new Error("Agent Skill archive contains more than one root SKILL.md.");
|
|
233
|
+
if (size > AGENT_SKILL_DOCUMENT_MAX_BYTES) throw new Error(`Agent Skill archive SKILL.md exceeds ${AGENT_SKILL_DOCUMENT_MAX_BYTES} bytes.`);
|
|
234
|
+
skillDocument = archive.subarray(contentStart, contentEnd);
|
|
235
|
+
}
|
|
236
|
+
const nextOffset = contentStart + Math.ceil(size / TAR_BLOCK_BYTES) * TAR_BLOCK_BYTES;
|
|
237
|
+
if (nextOffset > archive.byteLength) throw new Error(`Agent Skill archive entry ${JSON.stringify(path)} has truncated padding.`);
|
|
238
|
+
offset = nextOffset;
|
|
239
|
+
}
|
|
240
|
+
if (!foundEndOfArchive) throw new Error("Agent Skill archive is missing its end-of-archive marker.");
|
|
241
|
+
if (!skillDocument) throw new Error("Agent Skill archive does not contain a root SKILL.md.");
|
|
242
|
+
try {
|
|
243
|
+
return new TextDecoder("utf-8", { fatal: true }).decode(skillDocument);
|
|
244
|
+
} catch {
|
|
245
|
+
throw new Error("Agent Skill archive SKILL.md is not valid UTF-8.");
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
163
249
|
//#endregion
|
|
164
250
|
//#region src/http-link.ts
|
|
165
251
|
/** Split an HTTP list without treating delimiters inside quotes or URI references as separators. */
|
|
@@ -242,7 +328,7 @@ function httpLinkHeaderHasTargetRelation(header, href, rel, responseUrl) {
|
|
|
242
328
|
|
|
243
329
|
//#endregion
|
|
244
330
|
//#region src/agent-conformance.ts
|
|
245
|
-
const DOCS_AGENT_CONTRACT_VERSION = "1.
|
|
331
|
+
const DOCS_AGENT_CONTRACT_VERSION = "1.3";
|
|
246
332
|
function normalizeOrigin(value) {
|
|
247
333
|
return value.replace(/\/+$/, "");
|
|
248
334
|
}
|
|
@@ -636,6 +722,24 @@ async function sha256Content(content) {
|
|
|
636
722
|
const digest = await globalThis.crypto.subtle.digest("SHA-256", content);
|
|
637
723
|
return [...new Uint8Array(digest)].map((value) => value.toString(16).padStart(2, "0")).join("");
|
|
638
724
|
}
|
|
725
|
+
async function decompressAgentSkillArchive(content) {
|
|
726
|
+
if (typeof DecompressionStream !== "function") throw new Error("gzip decompression is unavailable in this runtime");
|
|
727
|
+
const stream = new Blob([content]).stream().pipeThrough(new DecompressionStream("gzip"));
|
|
728
|
+
const chunks = [];
|
|
729
|
+
let totalBytes = 0;
|
|
730
|
+
for await (const chunk of stream) {
|
|
731
|
+
totalBytes += chunk.byteLength;
|
|
732
|
+
if (totalBytes > AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES) throw new Error(`archive exceeds ${AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES} uncompressed bytes`);
|
|
733
|
+
chunks.push(chunk);
|
|
734
|
+
}
|
|
735
|
+
const archive = new Uint8Array(new ArrayBuffer(totalBytes));
|
|
736
|
+
let offset = 0;
|
|
737
|
+
for (const chunk of chunks) {
|
|
738
|
+
archive.set(chunk, offset);
|
|
739
|
+
offset += chunk.byteLength;
|
|
740
|
+
}
|
|
741
|
+
return archive;
|
|
742
|
+
}
|
|
639
743
|
async function validateAgentSkillsIndex(content, indexUrl, handle) {
|
|
640
744
|
const issues = [];
|
|
641
745
|
let parsed;
|
|
@@ -658,7 +762,7 @@ async function validateAgentSkillsIndex(content, indexUrl, handle) {
|
|
|
658
762
|
const description = skill?.description;
|
|
659
763
|
const artifactRoute = skill?.url;
|
|
660
764
|
const digest = skill?.digest;
|
|
661
|
-
if (!isNonEmptyString(name) ||
|
|
765
|
+
if (!isNonEmptyString(name) || !isDocsAgentSkillName(name) || skill?.type !== "skill-md" && skill?.type !== "archive" || !isNonEmptyString(description) || Array.from(description).length > 1024 || !isNonEmptyString(artifactRoute) || typeof digest !== "string" || !/^sha256:[0-9a-f]{64}$/u.test(digest)) {
|
|
662
766
|
issues.push("Agent Skills index contained an invalid skill entry");
|
|
663
767
|
continue;
|
|
664
768
|
}
|
|
@@ -674,11 +778,12 @@ async function validateAgentSkillsIndex(content, indexUrl, handle) {
|
|
|
674
778
|
issues.push(`Agent Skills artifact URL for ${JSON.stringify(name)} was invalid`);
|
|
675
779
|
continue;
|
|
676
780
|
}
|
|
677
|
-
const expectedPath = skill.type === "archive" ? `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${name}.tar.gz` : `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${name}/SKILL.md`;
|
|
781
|
+
const expectedPath = skill.type === "archive" ? `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${encodeURIComponent(name)}.tar.gz` : `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${encodeURIComponent(name)}/SKILL.md`;
|
|
678
782
|
if (artifactUrl.origin !== origin || !artifactUrl.pathname.endsWith(expectedPath)) {
|
|
679
783
|
issues.push(`Agent Skills artifact URL for ${JSON.stringify(name)} did not resolve to same-origin ${expectedPath}`);
|
|
680
784
|
continue;
|
|
681
785
|
}
|
|
786
|
+
let skillDocument = null;
|
|
682
787
|
try {
|
|
683
788
|
const response = await handle(new Request(artifactUrl), "agent-skill");
|
|
684
789
|
const artifact = new Uint8Array(await response.arrayBuffer());
|
|
@@ -687,9 +792,16 @@ async function validateAgentSkillsIndex(content, indexUrl, handle) {
|
|
|
687
792
|
if (!matchesContentType(contentType, [skill.type === "archive" ? "application/gzip" : "text/markdown"])) issues.push(`Agent Skills artifact ${JSON.stringify(artifactRoute)} returned content-type ${contentType || "<missing>"}`);
|
|
688
793
|
const actualDigest = `sha256:${await sha256Content(artifact)}`;
|
|
689
794
|
if (actualDigest !== digest) issues.push(`Agent Skills artifact ${JSON.stringify(artifactRoute)} digest ${actualDigest} did not match ${digest}`);
|
|
795
|
+
if (skill.type === "skill-md") skillDocument = new TextDecoder("utf-8", { fatal: true }).decode(artifact);
|
|
796
|
+
else skillDocument = readAgentSkillDocumentFromTar(await decompressAgentSkillArchive(artifact));
|
|
690
797
|
} catch (error) {
|
|
691
798
|
issues.push(`Agent Skills artifact ${JSON.stringify(artifactRoute)} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
692
799
|
}
|
|
800
|
+
if (skillDocument !== null) {
|
|
801
|
+
const validation = validateDocsAgentSkillFrontmatter(skillDocument, { directoryName: name });
|
|
802
|
+
if (!validation.valid) issues.push(`Agent Skill ${JSON.stringify(name)} has invalid SKILL.md frontmatter: ${validation.issues.map((issue) => issue.message).join("; ")}`);
|
|
803
|
+
else if (validation.data.description !== description) issues.push(`Agent Skill ${JSON.stringify(name)} SKILL.md description does not match the discovery index`);
|
|
804
|
+
}
|
|
693
805
|
}
|
|
694
806
|
return issues;
|
|
695
807
|
}
|
|
@@ -797,4 +909,4 @@ function resolveReadingTimeFromSource(source, wordsPerMinute, options) {
|
|
|
797
909
|
}
|
|
798
910
|
|
|
799
911
|
//#endregion
|
|
800
|
-
export { resolveReadingTimeOptions as a, runDocsAgentConformance as c,
|
|
912
|
+
export { resolveReadingTimeOptions as a, runDocsAgentConformance as c, readAgentSkillDocumentFromTar as d, createTheme as f, defineDocs as g, resolveChangelogConfig as h, resolveReadingTimeFromSource as i, httpLinkHeaderHasTargetRelation as l, deepMerge as m, resolvePageReadingTime as n, DOCS_AGENT_CONTRACT_VERSION as o, extendTheme as p, resolveReadingTimeFromContent as r, createDocsAgentContractCases as s, estimateReadingTimeMinutes as t, AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES as u };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
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 { A as buildDocsAgentDiscoverySpec, Et as findDocsAudienceMdxIssues, M as buildDocsConfigMap, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, Xt as PAGE_AGENT_CONTRACT_FIELDS, en as getPageAgentFrontmatterIssues, fn as getDocsMcpProtectedResourceMetadataRoutes, nn as normalizePageAgentFrontmatter, tn as hasStructuredPageAgentContract } from "./agent-FIyl4-Oa.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-CYfiQE13.mjs";
|
|
3
|
+
import { d as resolveAskAISearchRequestConfig } from "./search-x5O0-9X3.mjs";
|
|
4
|
+
import { a as resolveDocsMetadataBaseUrl } from "./metadata-bw8k-9x-.mjs";
|
|
5
|
+
import { c as resolveDocsReviewConfig, o as ensureDocsReviewWorkflow, s as readDocsReviewConfigFromSource, t as runDocsGoldenTasks } from "./agent-evals-Cr9TAkmB.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-CPGGnXOV.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,6 +1,6 @@
|
|
|
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-
|
|
1
|
+
import "./agent-FIyl4-Oa.mjs";
|
|
2
|
+
import "./standards-discovery-CYfiQE13.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-DOqBwQw8.mjs";
|
|
4
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";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
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 { S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, Vt as resolveDocsSitemapConfig, a as DEFAULT_AGENT_MD_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, cn as DEFAULT_MCP_PUBLIC_ROUTE, et as normalizeDocsPathSegment, 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, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, t as DEFAULT_AGENTS_MD_ROUTE, un as DEFAULT_MCP_WELL_KNOWN_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-FIyl4-Oa.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-CYfiQE13.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/robots.ts
|
|
5
5
|
const DEFAULT_ROBOTS_TXT_ROUTE = "/robots.txt";
|
|
@@ -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 { F as DocsDiscoveryApiRouteOptions } from "./standards-discovery-
|
|
2
|
+
import { F as DocsDiscoveryApiRouteOptions } from "./standards-discovery-C0CIC4QI.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,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-FIyl4-Oa.mjs";
|
|
2
|
+
import "./standards-discovery-CYfiQE13.mjs";
|
|
3
|
+
import { n as buildDocsSearchDocuments, r as createAlgoliaSearchAdapter, s as createTypesenseSearchAdapter } from "./search-x5O0-9X3.mjs";
|
|
4
|
+
import "./sitemap-server-D_hayOp6.mjs";
|
|
5
|
+
import "./agent-evals-Cr9TAkmB.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-B4u3qy-1.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { At as resolveDocsAudienceMdxContent, G as isDocsAgentDiscoveryRequest, Gt as findDocsMarkdownSection, K as isDocsAgentsRequest, Kt as parseDocsMarkdownSections, Q as isDocsSkillRequest, Qt as PAGE_AGENT_CONTRACT_START_MARKER, Yt as PAGE_AGENT_CONTRACT_END_MARKER, _t as resolveDocsMarkdownRequest, dt as resolveDocsAgentsFormat, lt as resolveDocsAgentFeedbackConfig, on as upsertPageAgentContractMarkdown, pt as resolveDocsLlmsTxtRequest, rn as renderPageAgentContractMarkdown, ut as resolveDocsAgentFeedbackRequest, xt as resolveDocsSkillFormat } from "./agent-FIyl4-Oa.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/telemetry.ts
|
|
4
4
|
const DOCS_PACKAGE_NAME = "@farming-labs/docs";
|
|
@@ -457,146 +457,6 @@ function serializeGeneratedAgentDocument(content, provenance) {
|
|
|
457
457
|
].join("\n")}\n`;
|
|
458
458
|
}
|
|
459
459
|
|
|
460
|
-
//#endregion
|
|
461
|
-
//#region src/markdown-sections.ts
|
|
462
|
-
const HTML_ENTITIES = {
|
|
463
|
-
amp: "&",
|
|
464
|
-
apos: "'",
|
|
465
|
-
gt: ">",
|
|
466
|
-
lt: "<",
|
|
467
|
-
nbsp: " ",
|
|
468
|
-
quot: "\""
|
|
469
|
-
};
|
|
470
|
-
/**
|
|
471
|
-
* Reduce inline Markdown in a heading to the visible label used by search and anchors.
|
|
472
|
-
* This intentionally covers the common inline constructs without adding a Markdown parser
|
|
473
|
-
* dependency to the runtime package.
|
|
474
|
-
*/
|
|
475
|
-
function cleanDocsMarkdownHeadingLabel(value) {
|
|
476
|
-
return value.replace(/!\[([^\]]*)\]\([^)]*\)/gu, "$1").replace(/\[([^\]]+)\]\([^)]*\)/gu, "$1").replace(/!\[([^\]]*)\]\[[^\]]*\]/gu, "$1").replace(/\[([^\]]+)\]\[[^\]]*\]/gu, "$1").replace(/<((?:https?:\/\/|mailto:)[^>]+)>/giu, "$1").replace(/<[^>]+>/gu, "").replace(/`+([^`]*?)`+/gu, "$1").replace(/\\([!"#$%&'()*+,\-./:;<=>?@[\]^_`{|}~])/gu, "$1").replace(/[*_~]/gu, "").replace(/&(#(?:x[0-9a-f]+|\d+)|[a-z]+);/giu, (_match, entity) => {
|
|
477
|
-
if (entity.startsWith("#x") || entity.startsWith("#X")) {
|
|
478
|
-
const codePoint = Number.parseInt(entity.slice(2), 16);
|
|
479
|
-
return Number.isSafeInteger(codePoint) && codePoint >= 0 && codePoint <= 1114111 ? String.fromCodePoint(codePoint) : _match;
|
|
480
|
-
}
|
|
481
|
-
if (entity.startsWith("#")) {
|
|
482
|
-
const codePoint = Number.parseInt(entity.slice(1), 10);
|
|
483
|
-
return Number.isSafeInteger(codePoint) && codePoint >= 0 && codePoint <= 1114111 ? String.fromCodePoint(codePoint) : _match;
|
|
484
|
-
}
|
|
485
|
-
return HTML_ENTITIES[entity.toLowerCase()] ?? _match;
|
|
486
|
-
}).replace(/\s+/gu, " ").trim();
|
|
487
|
-
}
|
|
488
|
-
/** Keep anchors aligned with the framework's existing ASCII heading-slug behavior. */
|
|
489
|
-
function slugifyDocsMarkdownHeading(value) {
|
|
490
|
-
return cleanDocsMarkdownHeadingLabel(value).toLowerCase().replace(/[`'"‘’“”]/gu, "").replace(/&/gu, " and ").replace(/[^a-z0-9\s-]/gu, "").replace(/\s+/gu, "-").replace(/-+/gu, "-").replace(/^-|-$/gu, "");
|
|
491
|
-
}
|
|
492
|
-
function readOpeningFence(line) {
|
|
493
|
-
const match = line.match(/^ {0,3}(`{3,}|~{3,})/u);
|
|
494
|
-
if (!match) return void 0;
|
|
495
|
-
return {
|
|
496
|
-
marker: match[1][0],
|
|
497
|
-
length: match[1].length
|
|
498
|
-
};
|
|
499
|
-
}
|
|
500
|
-
function isClosingFence(line, fence) {
|
|
501
|
-
const marker = fence.marker === "`" ? "`" : "~";
|
|
502
|
-
const match = line.match(new RegExp(`^ {0,3}(${marker}{${fence.length},})[\\t ]*$`, "u"));
|
|
503
|
-
return Boolean(match);
|
|
504
|
-
}
|
|
505
|
-
function readAtxHeading(line) {
|
|
506
|
-
const match = line.match(/^ {0,3}(#{1,6})(?:[\t ]+|$)(.*)$/u);
|
|
507
|
-
if (!match) return void 0;
|
|
508
|
-
return {
|
|
509
|
-
title: cleanDocsMarkdownHeadingLabel(match[2].replace(/[\t ]+#+[\t ]*$/u, "").trim()),
|
|
510
|
-
level: match[1].length
|
|
511
|
-
};
|
|
512
|
-
}
|
|
513
|
-
function readSetextLevel(line) {
|
|
514
|
-
const match = line.match(/^ {0,3}(=+|-+)[\t ]*$/u);
|
|
515
|
-
if (!match) return void 0;
|
|
516
|
-
return match[1][0] === "=" ? 1 : 2;
|
|
517
|
-
}
|
|
518
|
-
function normalizeDocsSectionSelector(value) {
|
|
519
|
-
let selector = value.trim();
|
|
520
|
-
const hashIndex = selector.lastIndexOf("#");
|
|
521
|
-
if (hashIndex >= 0) selector = selector.slice(hashIndex + 1);
|
|
522
|
-
try {
|
|
523
|
-
selector = decodeURIComponent(selector);
|
|
524
|
-
} catch {}
|
|
525
|
-
return cleanDocsMarkdownHeadingLabel(selector.replace(/^#+/u, "")).toLowerCase();
|
|
526
|
-
}
|
|
527
|
-
/**
|
|
528
|
-
* Parse heading sections once for search, Ask AI hydration, and MCP tools.
|
|
529
|
-
* Supports CommonMark ATX indentation, Setext headings, fenced-code exclusion,
|
|
530
|
-
* visible inline labels, and stable duplicate anchors.
|
|
531
|
-
*/
|
|
532
|
-
function parseDocsMarkdownSections(markdown) {
|
|
533
|
-
const lines = markdown.split("\n");
|
|
534
|
-
const headings = [];
|
|
535
|
-
const headingCounts = /* @__PURE__ */ new Map();
|
|
536
|
-
let openFence;
|
|
537
|
-
let setextCandidate;
|
|
538
|
-
const pushHeading = (title, level, start) => {
|
|
539
|
-
const baseAnchor = slugifyDocsMarkdownHeading(title) || `section-${headings.length}`;
|
|
540
|
-
const seen = headingCounts.get(baseAnchor) ?? 0;
|
|
541
|
-
headingCounts.set(baseAnchor, seen + 1);
|
|
542
|
-
headings.push({
|
|
543
|
-
title,
|
|
544
|
-
anchor: seen === 0 ? baseAnchor : `${baseAnchor}-${seen}`,
|
|
545
|
-
level,
|
|
546
|
-
start
|
|
547
|
-
});
|
|
548
|
-
};
|
|
549
|
-
for (let index = 0; index < lines.length; index += 1) {
|
|
550
|
-
const line = lines[index];
|
|
551
|
-
if (openFence) {
|
|
552
|
-
if (isClosingFence(line, openFence)) openFence = void 0;
|
|
553
|
-
setextCandidate = void 0;
|
|
554
|
-
continue;
|
|
555
|
-
}
|
|
556
|
-
const openingFence = readOpeningFence(line);
|
|
557
|
-
if (openingFence) {
|
|
558
|
-
openFence = openingFence;
|
|
559
|
-
setextCandidate = void 0;
|
|
560
|
-
continue;
|
|
561
|
-
}
|
|
562
|
-
const setextLevel = readSetextLevel(line);
|
|
563
|
-
if (setextLevel && setextCandidate?.index === index - 1) {
|
|
564
|
-
const title = cleanDocsMarkdownHeadingLabel(setextCandidate.value.trim());
|
|
565
|
-
if (title) pushHeading(title, setextLevel, setextCandidate.index);
|
|
566
|
-
setextCandidate = void 0;
|
|
567
|
-
continue;
|
|
568
|
-
}
|
|
569
|
-
const atxHeading = readAtxHeading(line);
|
|
570
|
-
if (atxHeading) {
|
|
571
|
-
pushHeading(atxHeading.title, atxHeading.level, index);
|
|
572
|
-
setextCandidate = void 0;
|
|
573
|
-
continue;
|
|
574
|
-
}
|
|
575
|
-
if (!line.trim() || /^ {4}|^\t/u.test(line)) {
|
|
576
|
-
setextCandidate = void 0;
|
|
577
|
-
continue;
|
|
578
|
-
}
|
|
579
|
-
setextCandidate = {
|
|
580
|
-
index,
|
|
581
|
-
value: line
|
|
582
|
-
};
|
|
583
|
-
}
|
|
584
|
-
return headings.map((heading, index) => {
|
|
585
|
-
const end = headings.slice(index + 1).find((candidate) => candidate.level <= heading.level)?.start ?? lines.length;
|
|
586
|
-
return {
|
|
587
|
-
title: heading.title,
|
|
588
|
-
anchor: heading.anchor,
|
|
589
|
-
level: heading.level,
|
|
590
|
-
content: lines.slice(heading.start, end).join("\n").trim()
|
|
591
|
-
};
|
|
592
|
-
});
|
|
593
|
-
}
|
|
594
|
-
function findDocsMarkdownSection(markdown, requestedSection) {
|
|
595
|
-
const selector = normalizeDocsSectionSelector(requestedSection);
|
|
596
|
-
if (!selector) return void 0;
|
|
597
|
-
return parseDocsMarkdownSections(markdown).find((section) => normalizeDocsSectionSelector(section.title) === selector || section.anchor === selector);
|
|
598
|
-
}
|
|
599
|
-
|
|
600
460
|
//#endregion
|
|
601
461
|
//#region src/search.ts
|
|
602
462
|
const DEFAULT_SEARCH_LIMIT = 10;
|
|
@@ -1823,4 +1683,4 @@ function createCustomSearchAdapter(adapter) {
|
|
|
1823
1683
|
}
|
|
1824
1684
|
|
|
1825
1685
|
//#endregion
|
|
1826
|
-
export {
|
|
1686
|
+
export { inferDocsTelemetryAgentSurface as A, resolveSidebarFolderIndexBehavior as C, emitDocsTelemetryMcpToolEvent as D, emitDocsTelemetryEvent as E, normalizeDocsTelemetryOrigin as M, resolveDocsTelemetryConfig as N, emitDocsTelemetryProjectEvent as O, resolvePageSidebarFolderIndexBehavior as S, emitDocsTelemetryAgentSurfaceEvent as T, normalizeGeneratedAgentContent as _, createMcpSearchAdapter as a, stripGeneratedAgentProvenance as b, formatDocsAskAIPackageHints as c, resolveAskAISearchRequestConfig as d, resolveDocsSearchAudience as f, hashGeneratedAgentContent as g, GENERATED_AGENT_PROVENANCE_VERSION as h, createCustomSearchAdapter as i, isLocalDocsTelemetryOrigin as j, getDocsTelemetryFeatures as k, inferDocsAskAIPackageHints as l, GENERATED_AGENT_PROVENANCE_MARKER as m, buildDocsSearchDocuments as n, createSimpleSearchAdapter as o, resolveSearchRequestConfig as p, createAlgoliaSearchAdapter as r, createTypesenseSearchAdapter as s, buildDocsAskAIContext as t, performDocsSearch as u, parseGeneratedAgentDocument as v, resolveSidebarFolderIndexBehaviorForPath as w, applySidebarFolderIndexBehavior as x, serializeGeneratedAgentDocument as y };
|
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-DTwblsLu.mjs";
|
|
3
3
|
import { renderDocsAgentSkillsBundle } from "./agent-skills-vite.mjs";
|
|
4
|
-
import { i as isDocsCloudAskAIProvider, n as DocsCloudAskAIResponseOptions, r as createDocsCloudAskAIResponse, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-
|
|
4
|
+
import { i as isDocsCloudAskAIProvider, n as DocsCloudAskAIResponseOptions, r as createDocsCloudAskAIResponse, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-BfnX18rI.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-CozHzW7v.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 {
|
|
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 { Bt as renderDocsSitemapXml, Ft as DEFAULT_SITEMAP_XML_ROUTE, Ht as resolveDocsSitemapPageLastmod, It as buildDocsSitemapManifest, Lt as createDocsSitemapResponse, Mt as DEFAULT_SITEMAP_MD_DOCS_ROUTE, Nt as DEFAULT_SITEMAP_MD_ROUTE, Pt as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, Rt as readDocsSitemapManifestFromContentMap, Ut as resolveDocsSitemapRequest, Vt as resolveDocsSitemapConfig, Wt as toDocsSitemapMarkdownUrl, jt as DEFAULT_SITEMAP_MANIFEST_PATH, zt as renderDocsSitemapMarkdown } from "./agent-FIyl4-Oa.mjs";
|
|
3
|
+
import "./standards-discovery-CYfiQE13.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-x5O0-9X3.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-D_hayOp6.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-Cr9TAkmB.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-B4u3qy-1.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 {
|
|
2
|
-
import "./standards-discovery-
|
|
3
|
-
import "./search-
|
|
4
|
-
import "./sitemap-server-
|
|
5
|
-
import "./agent-evals-
|
|
1
|
+
import { Bt as renderDocsSitemapXml, It as buildDocsSitemapManifest, Vt as resolveDocsSitemapConfig, zt as renderDocsSitemapMarkdown } from "./agent-FIyl4-Oa.mjs";
|
|
2
|
+
import "./standards-discovery-CYfiQE13.mjs";
|
|
3
|
+
import "./search-x5O0-9X3.mjs";
|
|
4
|
+
import "./sitemap-server-D_hayOp6.mjs";
|
|
5
|
+
import "./agent-evals-Cr9TAkmB.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-B4u3qy-1.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 {
|
|
1
|
+
import { Vt as resolveDocsSitemapConfig } from "./agent-FIyl4-Oa.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";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { parseDocsAgentSkillFrontmatter, validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
|
|
2
2
|
|
|
3
3
|
//#region src/standards-discovery.ts
|
|
4
4
|
const DEFAULT_API_CATALOG_ROUTE = "/.well-known/api-catalog";
|
|
@@ -27,9 +27,6 @@ const DOCS_AGENT_MANIFEST_SCHEMA_URI = "https://docs.farming-labs.dev/schema/age
|
|
|
27
27
|
const DOCS_AGENT_MANIFEST_SCHEMA_MEDIA_TYPE = "application/schema+json";
|
|
28
28
|
const DEFAULT_DOCS_API_ROUTE = "/api/docs";
|
|
29
29
|
const DEFAULT_AGENT_MANIFEST_ROUTE = "/.well-known/agent.json";
|
|
30
|
-
const AGENT_SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
31
|
-
const AGENT_SKILL_NAME_MAX_LENGTH = 64;
|
|
32
|
-
const AGENT_SKILL_DESCRIPTION_MAX_LENGTH = 1024;
|
|
33
30
|
const DISCOVERY_CACHE_CONTROL = "public, max-age=0, s-maxage=3600";
|
|
34
31
|
const LEGACY_A2A_PROTOCOL_VERSION = "0.3";
|
|
35
32
|
function normalizeDocsRoute(value) {
|
|
@@ -125,22 +122,6 @@ function buildDocsApiCatalog(options) {
|
|
|
125
122
|
}
|
|
126
123
|
return { linkset };
|
|
127
124
|
}
|
|
128
|
-
function readAgentSkillFrontmatter(document) {
|
|
129
|
-
const normalized = document.startsWith("") ? document.slice(1) : document;
|
|
130
|
-
let data;
|
|
131
|
-
try {
|
|
132
|
-
data = matter(normalized).data;
|
|
133
|
-
} catch {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
const name = typeof data.name === "string" ? data.name.trim() : "";
|
|
137
|
-
const description = typeof data.description === "string" ? data.description.trim() : "";
|
|
138
|
-
if (!name || name.length > AGENT_SKILL_NAME_MAX_LENGTH || !AGENT_SKILL_NAME_PATTERN.test(name) || !description || description.length > AGENT_SKILL_DESCRIPTION_MAX_LENGTH) return null;
|
|
139
|
-
return {
|
|
140
|
-
name,
|
|
141
|
-
description
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
125
|
function toDiscoveryBytes(content) {
|
|
145
126
|
if (typeof content === "string") return new TextEncoder().encode(content);
|
|
146
127
|
const bytes = new Uint8Array(new ArrayBuffer(content.byteLength));
|
|
@@ -161,14 +142,14 @@ function createDocsPublishedAgentSkill(content, metadata, sha256) {
|
|
|
161
142
|
name: metadata.name,
|
|
162
143
|
type: "skill-md",
|
|
163
144
|
description: metadata.description,
|
|
164
|
-
url: `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${metadata.name}/SKILL.md`,
|
|
145
|
+
url: `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${encodeURIComponent(metadata.name)}/SKILL.md`,
|
|
165
146
|
digest: `sha256:${sha256}`,
|
|
166
147
|
content,
|
|
167
148
|
sha256,
|
|
168
149
|
skillDocument: content,
|
|
169
150
|
files: [{
|
|
170
151
|
path: "SKILL.md",
|
|
171
|
-
url: `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${metadata.name}/SKILL.md`,
|
|
152
|
+
url: `${DEFAULT_AGENT_SKILLS_ROUTE_PREFIX}/${encodeURIComponent(metadata.name)}/SKILL.md`,
|
|
172
153
|
mediaType: "text/markdown",
|
|
173
154
|
content,
|
|
174
155
|
sha256,
|
|
@@ -177,20 +158,16 @@ function createDocsPublishedAgentSkill(content, metadata, sha256) {
|
|
|
177
158
|
};
|
|
178
159
|
}
|
|
179
160
|
/** Build a published skill from an exact SKILL.md document and its precomputed SHA-256. */
|
|
180
|
-
function buildDocsPublishedAgentSkill(document, sha256) {
|
|
181
|
-
const metadata =
|
|
182
|
-
if (!metadata) throw new Error("The generated Agent Skills fallback must contain valid name and description frontmatter.");
|
|
161
|
+
function buildDocsPublishedAgentSkill(document, sha256, options = {}) {
|
|
162
|
+
const metadata = parseDocsAgentSkillFrontmatter(document, options);
|
|
183
163
|
if (!/^[a-f0-9]{64}$/.test(sha256)) throw new Error("Agent Skill SHA-256 must be a lowercase 64-character hexadecimal digest.");
|
|
184
164
|
return createDocsPublishedAgentSkill(document, metadata, sha256);
|
|
185
165
|
}
|
|
186
166
|
/** Select a valid public skill and hash the exact bytes returned by its standards route. */
|
|
187
167
|
async function resolveDocsPublishedAgentSkill({ preferredDocument, fallbackDocument }) {
|
|
188
|
-
const
|
|
189
|
-
const
|
|
190
|
-
|
|
191
|
-
const metadata = preferredMetadata ?? fallbackMetadata;
|
|
192
|
-
if (!metadata) throw new Error("The generated Agent Skills fallback must contain valid name and description frontmatter.");
|
|
193
|
-
return createDocsPublishedAgentSkill(content, metadata, await sha256DocsDiscoveryContent(content));
|
|
168
|
+
const preferredValidation = preferredDocument ? validateDocsAgentSkillFrontmatter(preferredDocument) : null;
|
|
169
|
+
const content = preferredValidation?.valid ? preferredDocument : fallbackDocument;
|
|
170
|
+
return createDocsPublishedAgentSkill(content, preferredValidation?.valid ? preferredValidation.data : parseDocsAgentSkillFrontmatter(fallbackDocument, { source: "generated Agent Skills fallback" }), await sha256DocsDiscoveryContent(content));
|
|
194
171
|
}
|
|
195
172
|
function buildDocsAgentSkillsIndex(skills) {
|
|
196
173
|
return {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@farming-labs/docs",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.71",
|
|
4
4
|
"description": "Modern, flexible MDX-based docs framework — core types, config, and CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"docs",
|
|
@@ -35,6 +35,11 @@
|
|
|
35
35
|
"import": "./dist/agent-skills-bundle.mjs",
|
|
36
36
|
"default": "./dist/agent-skills-bundle.mjs"
|
|
37
37
|
},
|
|
38
|
+
"./agent-skills": {
|
|
39
|
+
"types": "./dist/agent-skills-spec.d.mts",
|
|
40
|
+
"import": "./dist/agent-skills-spec.mjs",
|
|
41
|
+
"default": "./dist/agent-skills-spec.mjs"
|
|
42
|
+
},
|
|
38
43
|
"./vite": {
|
|
39
44
|
"types": "./dist/agent-skills-vite.d.mts",
|
|
40
45
|
"import": "./dist/agent-skills-vite.mjs",
|
|
@@ -65,6 +70,7 @@
|
|
|
65
70
|
"gray-matter": "^4.0.3",
|
|
66
71
|
"jiti": "^2.7.0",
|
|
67
72
|
"picocolors": "^1.1.1",
|
|
73
|
+
"yaml": "^2.8.2",
|
|
68
74
|
"zod": "^4.3.6"
|
|
69
75
|
},
|
|
70
76
|
"peerDependencies": {
|
|
File without changes
|
|
File without changes
|