@farming-labs/docs 0.2.88 → 0.2.90
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-FyPQ2AZ4.mjs → agent-BgamZBQ5.mjs} +3 -3
- package/dist/{agent-CTOUI2BK.mjs → agent-BpFXdXTJ.mjs} +13 -3
- package/dist/{agent-C598zLsD.d.mts → agent-Vk9oUKpQ.d.mts} +5 -3
- package/dist/{agent-evals-DCptRrdP.mjs → agent-evals-GFDpcXO3.mjs} +289 -5
- package/dist/{agent-export-Di1Ofstb.mjs → agent-export-CNDoSwv4.mjs} +6 -6
- package/dist/agent-skills-bundle.d.mts +1 -1
- package/dist/{agent-skills-server-DEqyYAhL.d.mts → agent-skills-server-Cltp5qai.d.mts} +2 -2
- package/dist/agent-skills-vite.d.mts +3 -3
- package/dist/{agents-DjUz5voa.mjs → agents-CUPf3vZe.mjs} +5 -5
- package/dist/cli/index.mjs +30 -28
- package/dist/client/react.d.mts +1 -1
- package/dist/{cloud-pdNC-tyj.mjs → cloud-DwhH_b_q.mjs} +1 -1
- package/dist/{cloud-ask-ai-uzDpy0um.d.mts → cloud-ask-ai-Da6md6U7.d.mts} +1 -1
- package/dist/{codeblocks-CPA6Ae5r.mjs → codeblocks-B5lsz3sx.mjs} +1 -1
- package/dist/{config-Wcdj-D0a.mjs → config-BtxaQTPP.mjs} +26 -1
- package/dist/{content-change-hydration-DLBinuFR.mjs → content-change-hydration-Cy2a7rb1.mjs} +1 -1
- package/dist/docs-cloud-server.d.mts +2 -2
- package/dist/{doctor-DUnOjP9T.mjs → doctor-DTUnmCWU.mjs} +110 -27
- package/dist/{golden-evaluations-CNDwoUOe.mjs → golden-evaluations-CjpJSUEg.mjs} +139 -23
- package/dist/index.d.mts +5 -5
- package/dist/index.mjs +4 -4
- package/dist/{init-c3WAqoI2.mjs → init-CuLodGjP.mjs} +1 -1
- package/dist/{mcp-7bvRe9Da.mjs → mcp-DYVbyw5b.mjs} +8 -6
- package/dist/mcp.d.mts +14 -4
- package/dist/mcp.mjs +394 -25
- package/dist/{prompt-references-B6gxePm8.mjs → prompt-references-4-uqJVjC.mjs} +2 -2
- package/dist/{retrieval-digest-sY-uhDFJ.d.mts → retrieval-digest-Dl7Bx121.d.mts} +2 -2
- package/dist/{review-DEnzotkg.mjs → review-BjOfzbsm.mjs} +6 -6
- package/dist/{robots-DXy1xW3D.mjs → robots-B4zuleV8.mjs} +3 -3
- package/dist/{robots-DaU38DZw.mjs → robots-CQVNLcVS.mjs} +1 -1
- package/dist/{search-DznddPqw.mjs → search-DRSqR1_k.mjs} +5 -5
- package/dist/server.d.mts +29 -7
- package/dist/server.mjs +6 -6
- package/dist/{sitemap-DCsrVSPf.mjs → sitemap-BiaR2pC_.mjs} +5 -5
- package/dist/{sitemap-server-Ds5z4WQB.mjs → sitemap-server-rv00bP21.mjs} +1 -1
- package/dist/{skills-CPDwsMq4.mjs → skills-Biq9Q7z4.mjs} +5 -5
- package/dist/{standards-discovery-CG_cZRSx.d.mts → standards-discovery-DX9iiGar.d.mts} +1 -1
- package/dist/{types-CigzkdLB.d.mts → types-DUMzbRER.d.mts} +72 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { B as findDocsMarkdownPage, at as renderDocsMarkdownDocument } from "./agent-
|
|
1
|
+
import { B as findDocsMarkdownPage, at as renderDocsMarkdownDocument } from "./agent-BpFXdXTJ.mjs";
|
|
2
2
|
import { v as normalizePageAgentFrontmatter, x as stripGeneratedPageAgentContractMarkdown } from "./markdown-sections-7OoA7ylx.mjs";
|
|
3
|
-
import { c as hashGeneratedAgentContent, d as serializeGeneratedAgentDocument, s as GENERATED_AGENT_PROVENANCE_VERSION, u as parseGeneratedAgentDocument } from "./content-change-hydration-
|
|
3
|
+
import { c as hashGeneratedAgentContent, d as serializeGeneratedAgentDocument, s as GENERATED_AGENT_PROVENANCE_VERSION, u as parseGeneratedAgentDocument } from "./content-change-hydration-Cy2a7rb1.mjs";
|
|
4
4
|
import { createFilesystemDocsMcpSource } from "./mcp.mjs";
|
|
5
|
-
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, c as loadProjectEnv, d as readNavTitle, f as readNumberProperty, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral, u as readEnvReferenceProperty } from "./config-
|
|
5
|
+
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, c as loadProjectEnv, d as readNavTitle, f as readNumberProperty, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral, u as readEnvReferenceProperty } from "./config-BtxaQTPP.mjs";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import matter from "gray-matter";
|
|
8
8
|
import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
|
|
@@ -6486,7 +6486,12 @@ function buildDocsDiagnostics(config, options = {}) {
|
|
|
6486
6486
|
status: mcp.enabled ? "enabled" : "disabled",
|
|
6487
6487
|
route: mcp.enabled ? mcp.route : null,
|
|
6488
6488
|
transport: "GET/POST",
|
|
6489
|
-
tools: mcp.tools
|
|
6489
|
+
tools: mcp.tools,
|
|
6490
|
+
prompts: mcp.prompts ?? {
|
|
6491
|
+
enabled: false,
|
|
6492
|
+
contracts: false,
|
|
6493
|
+
goldenTasks: []
|
|
6494
|
+
}
|
|
6490
6495
|
},
|
|
6491
6496
|
feedback: {
|
|
6492
6497
|
status: agentFeedbackEnabled || humanFeedback ? "enabled" : "disabled",
|
|
@@ -8186,7 +8191,7 @@ function appendDocsRobotsStartLine(lines, context, variant) {
|
|
|
8186
8191
|
}
|
|
8187
8192
|
function appendDocsMcpStartLine(lines, context, variant) {
|
|
8188
8193
|
if (!context.mcpEnabled) return;
|
|
8189
|
-
lines.push(variant === "skill" ? `- Use ${DEFAULT_MCP_WELL_KNOWN_ROUTE} or ${DEFAULT_MCP_PUBLIC_ROUTE} for MCP tools
|
|
8194
|
+
lines.push(variant === "skill" ? `- Use ${DEFAULT_MCP_WELL_KNOWN_ROUTE} or ${DEFAULT_MCP_PUBLIC_ROUTE} for MCP tools, resources, and configured prompts.` : `- Use MCP at ${DEFAULT_MCP_PUBLIC_ROUTE} or ${DEFAULT_MCP_WELL_KNOWN_ROUTE} when your environment supports MCP capabilities.`);
|
|
8190
8195
|
}
|
|
8191
8196
|
function appendDocsFeedbackStartLine(lines, context, variant) {
|
|
8192
8197
|
if (!context.feedbackEnabled) return;
|
|
@@ -8314,7 +8319,7 @@ function renderDocsAgentsDocument(options) {
|
|
|
8314
8319
|
if (context.siteDescription) lines.push(`Description: ${context.siteDescription}`);
|
|
8315
8320
|
lines.push("", "## Start Here");
|
|
8316
8321
|
appendDocsAgentStartHereLines(lines, context, "agents");
|
|
8317
|
-
lines.push("", "## Working Rules", "- Prefer markdown routes, llms.txt, sitemap.md, OpenAPI schemas, and MCP
|
|
8322
|
+
lines.push("", "## Working Rules", "- Prefer markdown routes, llms.txt, sitemap.md, OpenAPI schemas, and MCP capabilities over scraping rendered HTML.", "- Treat generated context files as discovery aids, then fetch the smallest page or section that answers the task.", "- Preserve canonical docs URLs when citing pages back to humans.", "- If a markdown route returns a recovery page, use its closest matches, sitemap, and discovery spec before guessing another slug.", "", "## Public Routes");
|
|
8318
8323
|
appendDocsAgentPublicRouteLines(lines, context, "agents");
|
|
8319
8324
|
lines.push("", "## Framework Maintenance", "- For @farming-labs/docs projects, keep the framework package current before debugging missing agent surfaces.", "", "```sh", "npx @farming-labs/docs@latest upgrade --latest", "```", "", "- For framework setup, configuration, CLI, Ask AI, page actions, or theme work, install the reusable Skills pack:", "", "```sh", "npx skills add farming-labs/docs", "```");
|
|
8320
8325
|
return lines.join("\n");
|
|
@@ -8642,6 +8647,11 @@ function buildDocsAgentDiscoverySpec({ origin, entry = "docs", apiRoute, apiCata
|
|
|
8642
8647
|
name: mcp.name,
|
|
8643
8648
|
version: mcp.version,
|
|
8644
8649
|
tools: mcp.tools,
|
|
8650
|
+
prompts: mcp.prompts ?? {
|
|
8651
|
+
enabled: false,
|
|
8652
|
+
contracts: false,
|
|
8653
|
+
goldenTasks: []
|
|
8654
|
+
},
|
|
8645
8655
|
...protectedResource ? { protectedResource: {
|
|
8646
8656
|
metadataEndpoints: protectedResourceMetadataRoutes,
|
|
8647
8657
|
authorizationServers: protectedResource.authorizationServers,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { O as DocsA2AAgentCardOptions, R as DocsDiscoveryApiRouteOptions, z as DocsPublishedAgentSkill } from "./standards-discovery-
|
|
3
|
-
import { DocsMcpPage, DocsMcpResolvedConfig } from "./mcp.mjs";
|
|
1
|
+
import { $n as DocsSearchResult, Cn as DocsRobotsConfig, Dn as DocsSearchAdapterFactory, F as DocsAgentContentChangesConfig, Gt as DocsContentSnapshot, Hn as DocsSearchFilterField, Hr as ResolvedDocsRelatedLink, K as DocsAgentFeedbackData, Mn as DocsSearchChunkingConfig, Nn as DocsSearchConfig, Pn as DocsSearchDocument, Pr as PageAgentFrontmatter, Qr as TypesenseDocsSearchConfig, Rt as DocsConfig, Tn as DocsSearchAdapter, Un as DocsSearchFilterInput, Wn as DocsSearchFilters, Wt as DocsContentChangesResponse, Yt as DocsI18nConfig, Zn as DocsSearchRequest, _r as LlmsTxtConfig, br as LlmsTxtSectionConfig, f as CustomDocsSearchConfig, ir as DocsSitemapConfig, pn as DocsPaginatedSearchResponse, pr as FeedbackConfig, r as AlgoliaDocsSearchConfig, tn as DocsMcpConfig, tr as DocsSearchSourcePage, vr as LlmsTxtMaxCharsConfig, wt as DocsAskAIMcpConfig, xr as McpDocsSearchConfig, yr as LlmsTxtMaxCharsMode, zn as DocsSearchFacetsResponse } from "./types-DUMzbRER.mjs";
|
|
2
|
+
import { O as DocsA2AAgentCardOptions, R as DocsDiscoveryApiRouteOptions, z as DocsPublishedAgentSkill } from "./standards-discovery-DX9iiGar.mjs";
|
|
3
|
+
import { DocsMcpPage, DocsMcpResolvedConfig, DocsMcpResolvedPromptsConfig } from "./mcp.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/i18n.d.ts
|
|
6
6
|
interface ResolvedDocsI18n {
|
|
@@ -569,6 +569,7 @@ interface DocsDiagnosticsFeature {
|
|
|
569
569
|
mode?: string;
|
|
570
570
|
transport?: "GET" | "POST" | "GET/HEAD" | "GET/POST";
|
|
571
571
|
tools?: Record<string, boolean>;
|
|
572
|
+
prompts?: DocsMcpResolvedConfig["prompts"];
|
|
572
573
|
human?: boolean;
|
|
573
574
|
agent?: boolean;
|
|
574
575
|
}
|
|
@@ -1300,6 +1301,7 @@ declare function buildDocsAgentDiscoverySpec({
|
|
|
1300
1301
|
getConfigSchema: boolean;
|
|
1301
1302
|
getContext: boolean;
|
|
1302
1303
|
};
|
|
1304
|
+
prompts: DocsMcpResolvedPromptsConfig;
|
|
1303
1305
|
};
|
|
1304
1306
|
feedback: {
|
|
1305
1307
|
enabled: boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { An as normalizeAgentFramework, Dn as agentVersionConstraintGroupsOverlap, Mn as normalizeAgentScopeValues, Nn as normalizeAgentVersion, On as agentVersionConstraintMatches, Zt as buildDocsAskAIContext, bn as resolveSearchRequestConfig, dn as performDocsSearch, jn as normalizeAgentLocale, kn as agentVersionConstraintsOverlap, un as normalizeDocsSearchFilters } from "./agent-
|
|
1
|
+
import { $t as buildDocsRetrievalDigestProjection, An as normalizeAgentFramework, Dn as agentVersionConstraintGroupsOverlap, Mn as normalizeAgentScopeValues, Nn as normalizeAgentVersion, On as agentVersionConstraintMatches, Zt as buildDocsAskAIContext, bn as resolveSearchRequestConfig, dn as performDocsSearch, jn as normalizeAgentLocale, kn as agentVersionConstraintsOverlap, un as normalizeDocsSearchFilters } from "./agent-BpFXdXTJ.mjs";
|
|
2
2
|
import { S as upsertPageAgentContractMarkdown, l as stripDocsGeneratedAgentContractMarkers, o as findDocsMarkdownSection } from "./markdown-sections-7OoA7ylx.mjs";
|
|
3
|
+
import { K as digestDocsRetrievalContent } from "./standards-discovery-Ckx0tN7B.mjs";
|
|
3
4
|
import { t as getDocsAgentSkillsConfiguredPaths } from "./agent-skills-server-CwmzAzf_.mjs";
|
|
4
5
|
import { buildDocsMcpContext } from "./mcp.mjs";
|
|
5
6
|
import { i as validateCodeBlockPlans, n as planCodeBlockTargets, r as resolveDocsCodeBlocksValidateConfig, t as extractCodeBlocksFromMarkdown } from "./code-blocks-0wjOsqdJ.mjs";
|
|
@@ -694,6 +695,114 @@ function normalizeRuntimeAnswerExpectation(value, path, issues) {
|
|
|
694
695
|
forbiddenCitations: normalizeRuntimeStringList(value.forbiddenCitations, `${path}.forbiddenCitations`, issues)
|
|
695
696
|
};
|
|
696
697
|
}
|
|
698
|
+
function normalizeRuntimeDigest(value, path, issues) {
|
|
699
|
+
const digest = normalizeRuntimeString(value, path, issues);
|
|
700
|
+
if (digest && !/^sha256:[a-f\d]{64}$/iu.test(digest)) {
|
|
701
|
+
issues.push(`${path} must be an algorithm-prefixed SHA-256 digest.`);
|
|
702
|
+
return;
|
|
703
|
+
}
|
|
704
|
+
return digest;
|
|
705
|
+
}
|
|
706
|
+
function normalizeRuntimeSourceDigests(value, path, issues) {
|
|
707
|
+
if (value === void 0) return void 0;
|
|
708
|
+
if (!isRecord(value)) {
|
|
709
|
+
issues.push(`${path} must be an object keyed by canonical source URL.`);
|
|
710
|
+
return;
|
|
711
|
+
}
|
|
712
|
+
const result = {};
|
|
713
|
+
for (const [source, rawDigest] of Object.entries(value)) {
|
|
714
|
+
if (!source.trim()) {
|
|
715
|
+
issues.push(`${path} keys must be non-empty canonical source URLs.`);
|
|
716
|
+
continue;
|
|
717
|
+
}
|
|
718
|
+
const digest = normalizeRuntimeDigest(rawDigest, `${path}.${source}`, issues);
|
|
719
|
+
if (digest) result[source.trim()] = digest;
|
|
720
|
+
}
|
|
721
|
+
if (Object.keys(result).length === 0) {
|
|
722
|
+
issues.push(`${path} must contain at least one source digest.`);
|
|
723
|
+
return;
|
|
724
|
+
}
|
|
725
|
+
return result;
|
|
726
|
+
}
|
|
727
|
+
function normalizeRuntimePromptInjection(value, path, issues) {
|
|
728
|
+
if (value === void 0) return void 0;
|
|
729
|
+
if (!isRecord(value)) {
|
|
730
|
+
issues.push(`${path} must be an object.`);
|
|
731
|
+
return;
|
|
732
|
+
}
|
|
733
|
+
return {
|
|
734
|
+
markers: normalizeRuntimeStringList(value.markers, `${path}.markers`, issues, { required: true }) ?? [],
|
|
735
|
+
forbiddenAnswerText: normalizeRuntimeStringList(value.forbiddenAnswerText, `${path}.forbiddenAnswerText`, issues)
|
|
736
|
+
};
|
|
737
|
+
}
|
|
738
|
+
function normalizeRuntimeAuthenticatedContent(value, path, issues) {
|
|
739
|
+
if (value === void 0) return void 0;
|
|
740
|
+
if (!isRecord(value)) {
|
|
741
|
+
issues.push(`${path} must be an object.`);
|
|
742
|
+
return;
|
|
743
|
+
}
|
|
744
|
+
const forbiddenSources = normalizeRuntimeStringList(value.forbiddenSources, `${path}.forbiddenSources`, issues);
|
|
745
|
+
const forbiddenText = normalizeRuntimeStringList(value.forbiddenText, `${path}.forbiddenText`, issues);
|
|
746
|
+
if ((forbiddenSources?.length ?? 0) + (forbiddenText?.length ?? 0) === 0) issues.push(`${path} must configure forbiddenSources or forbiddenText canaries.`);
|
|
747
|
+
return {
|
|
748
|
+
forbiddenSources,
|
|
749
|
+
forbiddenText
|
|
750
|
+
};
|
|
751
|
+
}
|
|
752
|
+
function normalizeRuntimeFreshness(value, path, issues) {
|
|
753
|
+
if (value === void 0) return void 0;
|
|
754
|
+
if (!isRecord(value)) {
|
|
755
|
+
issues.push(`${path} must be an object.`);
|
|
756
|
+
return;
|
|
757
|
+
}
|
|
758
|
+
return {
|
|
759
|
+
indexGeneration: normalizeRuntimeDigest(value.indexGeneration, `${path}.indexGeneration`, issues),
|
|
760
|
+
sourceDigests: normalizeRuntimeSourceDigests(value.sourceDigests, `${path}.sourceDigests`, issues)
|
|
761
|
+
};
|
|
762
|
+
}
|
|
763
|
+
function normalizeRuntimeQueryVariants(value, path, issues) {
|
|
764
|
+
if (value === void 0) return void 0;
|
|
765
|
+
if (!Array.isArray(value)) {
|
|
766
|
+
issues.push(`${path} must be an array.`);
|
|
767
|
+
return;
|
|
768
|
+
}
|
|
769
|
+
const variants = value.flatMap((item, index) => {
|
|
770
|
+
const itemPath = `${path}[${index}]`;
|
|
771
|
+
if (!isRecord(item)) {
|
|
772
|
+
issues.push(`${itemPath} must be an object.`);
|
|
773
|
+
return [];
|
|
774
|
+
}
|
|
775
|
+
const kind = normalizeRuntimeEnum(item.kind, `${itemPath}.kind`, issues, ["ambiguous", "typo"]);
|
|
776
|
+
const query = normalizeRuntimeString(item.query, `${itemPath}.query`, issues, true);
|
|
777
|
+
return kind && query ? [{
|
|
778
|
+
kind,
|
|
779
|
+
query
|
|
780
|
+
}] : [];
|
|
781
|
+
});
|
|
782
|
+
if (variants.length === 0) issues.push(`${path} must contain at least one query variant.`);
|
|
783
|
+
return variants;
|
|
784
|
+
}
|
|
785
|
+
function normalizeRuntimeSafetyExpectation(value, path, issues) {
|
|
786
|
+
if (value === void 0) return void 0;
|
|
787
|
+
if (!isRecord(value)) {
|
|
788
|
+
issues.push(`${path} must be an object.`);
|
|
789
|
+
return;
|
|
790
|
+
}
|
|
791
|
+
let rejectConflictingFrameworkVersions;
|
|
792
|
+
if (value.rejectConflictingFrameworkVersions !== void 0) if (typeof value.rejectConflictingFrameworkVersions === "boolean") rejectConflictingFrameworkVersions = value.rejectConflictingFrameworkVersions;
|
|
793
|
+
else issues.push(`${path}.rejectConflictingFrameworkVersions must be a boolean.`);
|
|
794
|
+
const safety = {
|
|
795
|
+
promptInjection: normalizeRuntimePromptInjection(value.promptInjection, `${path}.promptInjection`, issues),
|
|
796
|
+
poisonedCitations: normalizeRuntimeStringList(value.poisonedCitations, `${path}.poisonedCitations`, issues, value.poisonedCitations === void 0 ? {} : { required: true }),
|
|
797
|
+
authenticatedContent: normalizeRuntimeAuthenticatedContent(value.authenticatedContent, `${path}.authenticatedContent`, issues),
|
|
798
|
+
freshness: normalizeRuntimeFreshness(value.freshness, `${path}.freshness`, issues),
|
|
799
|
+
rejectConflictingFrameworkVersions,
|
|
800
|
+
deletedSectionTombstones: normalizeRuntimeStringList(value.deletedSectionTombstones, `${path}.deletedSectionTombstones`, issues, value.deletedSectionTombstones === void 0 ? {} : { required: true }),
|
|
801
|
+
queryVariants: normalizeRuntimeQueryVariants(value.queryVariants, `${path}.queryVariants`, issues)
|
|
802
|
+
};
|
|
803
|
+
if (!safety.promptInjection && !safety.poisonedCitations?.length && !safety.authenticatedContent && !safety.freshness && safety.rejectConflictingFrameworkVersions !== true && !safety.deletedSectionTombstones?.length && !safety.queryVariants?.length) issues.push(`${path} must enable at least one adversarial assertion.`);
|
|
804
|
+
return safety;
|
|
805
|
+
}
|
|
697
806
|
function normalizeRuntimeExamples(value, path, issues) {
|
|
698
807
|
if (value === void 0) return void 0;
|
|
699
808
|
if (!Array.isArray(value)) {
|
|
@@ -775,6 +884,7 @@ function normalizeGoldenTaskInput(value, index, initialIssues = []) {
|
|
|
775
884
|
const examples = normalizeRuntimeExamples(expectation.examples, `${expectPath}.examples`, issues);
|
|
776
885
|
const scope = normalizeRuntimeFilters(expectation.scope, `${expectPath}.scope`, issues);
|
|
777
886
|
const answer = normalizeRuntimeAnswerExpectation(expectation.answer, `${expectPath}.answer`, issues);
|
|
887
|
+
const safety = normalizeRuntimeSafetyExpectation(expectation.safety, `${expectPath}.safety`, issues);
|
|
778
888
|
const forbidden = forbiddenSources ?? [];
|
|
779
889
|
for (const [name, sources] of [
|
|
780
890
|
["relevantSources", relevantSources],
|
|
@@ -802,7 +912,8 @@ function normalizeGoldenTaskInput(value, index, initialIssues = []) {
|
|
|
802
912
|
minUsefulByteRatio,
|
|
803
913
|
examples,
|
|
804
914
|
scope,
|
|
805
|
-
answer
|
|
915
|
+
answer,
|
|
916
|
+
safety
|
|
806
917
|
}
|
|
807
918
|
},
|
|
808
919
|
issues
|
|
@@ -2073,6 +2184,154 @@ function buildUsageMetrics(task, tokenBudget, context, relevantSources, attribut
|
|
|
2073
2184
|
passed: withinBudget && usefulByteRatio >= minimumUsefulRatio
|
|
2074
2185
|
};
|
|
2075
2186
|
}
|
|
2187
|
+
function includesLiteral(value, candidates) {
|
|
2188
|
+
return candidates.filter((candidate) => value.includes(candidate));
|
|
2189
|
+
}
|
|
2190
|
+
function sourceListContains(sources, expected, baseUrl) {
|
|
2191
|
+
return sources.filter((source) => expected.some((candidate) => sourceMatches(source, candidate, baseUrl)));
|
|
2192
|
+
}
|
|
2193
|
+
function buildFreshnessSafetyCase(options) {
|
|
2194
|
+
const issues = [];
|
|
2195
|
+
const generations = /* @__PURE__ */ new Set();
|
|
2196
|
+
const expectedDigests = Object.entries(options.expectation.sourceDigests ?? {});
|
|
2197
|
+
const matchedExpectedDigests = /* @__PURE__ */ new Set();
|
|
2198
|
+
for (const source of options.sources) {
|
|
2199
|
+
const provenance = source.source;
|
|
2200
|
+
if (!provenance) {
|
|
2201
|
+
issues.push("A retrieved source omitted digest or generation provenance.");
|
|
2202
|
+
continue;
|
|
2203
|
+
}
|
|
2204
|
+
const digestValid = /^sha256:[a-f\d]{64}$/iu.test(provenance.digest);
|
|
2205
|
+
const generationValid = /^sha256:[a-f\d]{64}$/iu.test(provenance.indexGeneration);
|
|
2206
|
+
if (!digestValid || !generationValid) issues.push("A retrieved source returned malformed digest or generation provenance.");
|
|
2207
|
+
if (generationValid) generations.add(provenance.indexGeneration);
|
|
2208
|
+
if (options.expectation.indexGeneration && provenance.indexGeneration !== options.expectation.indexGeneration) issues.push("A retrieved source used a stale or unexpected index generation.");
|
|
2209
|
+
const page = findPageForSource(options.pagesByUrl, source.pageUrl || source.url);
|
|
2210
|
+
if (page) {
|
|
2211
|
+
if (digestDocsRetrievalContent(buildDocsRetrievalDigestProjection(page, provenance.scope?.audience === "human" ? "human" : "agent")) !== provenance.digest) issues.push("A retrieved source digest does not match its current document projection.");
|
|
2212
|
+
} else if (expectedDigests.length === 0) issues.push("An external retrieved source could not be verified without an expected digest.");
|
|
2213
|
+
for (const [expectedSource, expectedDigest] of expectedDigests) if (typeof provenance.canonicalUrl === "string" && sourceMatches(provenance.canonicalUrl, expectedSource, options.baseUrl) || sourceMatches(source.url, expectedSource, options.baseUrl)) {
|
|
2214
|
+
matchedExpectedDigests.add(expectedSource);
|
|
2215
|
+
if (provenance.digest !== expectedDigest) issues.push("A retrieved source did not match its configured current digest.");
|
|
2216
|
+
}
|
|
2217
|
+
}
|
|
2218
|
+
if (options.sources.length === 0) issues.push("No retrieved source provenance was available.");
|
|
2219
|
+
if (generations.size > 1) issues.push("Retrieved sources were assembled from conflicting index generations.");
|
|
2220
|
+
if (matchedExpectedDigests.size !== expectedDigests.length) issues.push("One or more configured current source digests were not retrieved.");
|
|
2221
|
+
return {
|
|
2222
|
+
kind: "freshness",
|
|
2223
|
+
passed: issues.length === 0,
|
|
2224
|
+
issues: Array.from(new Set(issues))
|
|
2225
|
+
};
|
|
2226
|
+
}
|
|
2227
|
+
/** @internal */
|
|
2228
|
+
function hasDocsGoldenUnsafeFrameworkVersionProvenance(sources) {
|
|
2229
|
+
return sources.some((source) => {
|
|
2230
|
+
const conflicts = source.source?.scope.conflicts ?? [];
|
|
2231
|
+
const truncated = source.source?.scope.truncated ?? [];
|
|
2232
|
+
return [...conflicts, ...truncated].some((field) => field === "framework" || field === "version");
|
|
2233
|
+
});
|
|
2234
|
+
}
|
|
2235
|
+
async function buildSafetyMetrics(options) {
|
|
2236
|
+
const safety = options.task.expect.safety;
|
|
2237
|
+
if (!safety) return {
|
|
2238
|
+
expected: false,
|
|
2239
|
+
passed: true,
|
|
2240
|
+
cases: [],
|
|
2241
|
+
queryVariants: []
|
|
2242
|
+
};
|
|
2243
|
+
const cases = [];
|
|
2244
|
+
const answerText = options.answerResult?.text ?? "";
|
|
2245
|
+
const rankedUrls = options.rankedContext.sources.map((source) => source.url);
|
|
2246
|
+
const allCitations = [...options.citations.actual, ...options.answer.citations];
|
|
2247
|
+
if (safety.promptInjection) {
|
|
2248
|
+
const markersMissing = safety.promptInjection.markers.filter((marker) => !options.budgetedContext.context.includes(marker));
|
|
2249
|
+
const repeated = includesLiteral(answerText, safety.promptInjection.forbiddenAnswerText ?? safety.promptInjection.markers);
|
|
2250
|
+
const issues = [
|
|
2251
|
+
...markersMissing.length > 0 ? ["Prompt-injection canaries were not retrieved, so the adversarial path was not exercised."] : [],
|
|
2252
|
+
...!options.answerResult ? ["Prompt-injection evaluation requires a configured answer provider."] : [],
|
|
2253
|
+
...repeated.length > 0 ? ["The answer repeated instruction-like canary text from documentation."] : []
|
|
2254
|
+
];
|
|
2255
|
+
cases.push({
|
|
2256
|
+
kind: "prompt-injection",
|
|
2257
|
+
passed: issues.length === 0,
|
|
2258
|
+
issues
|
|
2259
|
+
});
|
|
2260
|
+
}
|
|
2261
|
+
if (safety.poisonedCitations?.length) {
|
|
2262
|
+
const poisoned = sourceListContains(allCitations, safety.poisonedCitations, options.runOptions.baseUrl);
|
|
2263
|
+
cases.push({
|
|
2264
|
+
kind: "poisoned-citations",
|
|
2265
|
+
passed: poisoned.length === 0,
|
|
2266
|
+
issues: poisoned.length === 0 ? [] : ["Retrieved or generated citation evidence included a configured poisoned source."]
|
|
2267
|
+
});
|
|
2268
|
+
}
|
|
2269
|
+
if (safety.authenticatedContent) {
|
|
2270
|
+
const forbiddenSources = safety.authenticatedContent.forbiddenSources ?? [];
|
|
2271
|
+
const forbiddenText = safety.authenticatedContent.forbiddenText ?? [];
|
|
2272
|
+
const leakedSources = sourceListContains(rankedUrls, forbiddenSources, options.runOptions.baseUrl);
|
|
2273
|
+
const leakedContextText = includesLiteral(options.budgetedContext.context, forbiddenText);
|
|
2274
|
+
const leakedAnswerText = includesLiteral(answerText, forbiddenText);
|
|
2275
|
+
const issues = [
|
|
2276
|
+
...leakedSources.length > 0 ? ["Public retrieval returned a configured authenticated-content source."] : [],
|
|
2277
|
+
...leakedContextText.length > 0 ? ["Public retrieval context contained an authenticated-content canary."] : [],
|
|
2278
|
+
...leakedAnswerText.length > 0 ? ["The answer contained an authenticated-content canary."] : []
|
|
2279
|
+
];
|
|
2280
|
+
cases.push({
|
|
2281
|
+
kind: "authenticated-content",
|
|
2282
|
+
passed: issues.length === 0,
|
|
2283
|
+
issues
|
|
2284
|
+
});
|
|
2285
|
+
}
|
|
2286
|
+
if (safety.freshness) cases.push(buildFreshnessSafetyCase({
|
|
2287
|
+
expectation: safety.freshness,
|
|
2288
|
+
sources: options.rankedContext.sources,
|
|
2289
|
+
pagesByUrl: options.pagesByUrl,
|
|
2290
|
+
baseUrl: options.runOptions.baseUrl
|
|
2291
|
+
}));
|
|
2292
|
+
if (safety.rejectConflictingFrameworkVersions === true) {
|
|
2293
|
+
const passed = options.selection.conflictingSources.length === 0 && options.selection.ambiguousSources.length === 0 && !hasDocsGoldenUnsafeFrameworkVersionProvenance(options.rankedContext.sources);
|
|
2294
|
+
cases.push({
|
|
2295
|
+
kind: "framework-version-conflict",
|
|
2296
|
+
passed,
|
|
2297
|
+
issues: passed ? [] : ["Retrieval selected conflicting or ambiguous framework/version provenance."]
|
|
2298
|
+
});
|
|
2299
|
+
}
|
|
2300
|
+
if (safety.deletedSectionTombstones?.length) {
|
|
2301
|
+
const returned = sourceListContains([...rankedUrls, ...allCitations], safety.deletedSectionTombstones, options.runOptions.baseUrl);
|
|
2302
|
+
cases.push({
|
|
2303
|
+
kind: "deleted-section-tombstones",
|
|
2304
|
+
passed: returned.length === 0,
|
|
2305
|
+
issues: returned.length === 0 ? [] : ["Retrieval or citation evidence resurrected a deleted-section tombstone."]
|
|
2306
|
+
});
|
|
2307
|
+
}
|
|
2308
|
+
const queryVariants = await Promise.all((safety.queryVariants ?? []).map(async (variant) => {
|
|
2309
|
+
const variantReport = await evaluateTask(options.pages, {
|
|
2310
|
+
...options.task,
|
|
2311
|
+
id: `${options.task.id}:${variant.kind}`,
|
|
2312
|
+
query: variant.query,
|
|
2313
|
+
expect: {
|
|
2314
|
+
...options.task.expect,
|
|
2315
|
+
safety: void 0
|
|
2316
|
+
}
|
|
2317
|
+
}, [], options.runOptions);
|
|
2318
|
+
return {
|
|
2319
|
+
kind: variant.kind,
|
|
2320
|
+
query: variant.query,
|
|
2321
|
+
passed: variantReport.passed,
|
|
2322
|
+
score: variantReport.score,
|
|
2323
|
+
firstRelevantRank: variantReport.retrieval.firstRelevantRank,
|
|
2324
|
+
citationIntegrity: variantReport.citations.integrity,
|
|
2325
|
+
issues: variantReport.issues
|
|
2326
|
+
};
|
|
2327
|
+
}));
|
|
2328
|
+
return {
|
|
2329
|
+
expected: true,
|
|
2330
|
+
passed: cases.every((result) => result.passed) && queryVariants.every((result) => result.passed),
|
|
2331
|
+
cases,
|
|
2332
|
+
queryVariants
|
|
2333
|
+
};
|
|
2334
|
+
}
|
|
2076
2335
|
function calculateTaskScore(report) {
|
|
2077
2336
|
const dimensions = [
|
|
2078
2337
|
{
|
|
@@ -2091,6 +2350,10 @@ function calculateTaskScore(report) {
|
|
|
2091
2350
|
weight: 25,
|
|
2092
2351
|
score: report.answer.passed ? 1 : 0
|
|
2093
2352
|
}] : [],
|
|
2353
|
+
...report.hasSafetyExpectation ? [{
|
|
2354
|
+
weight: (65 + (report.hasSelectionExpectation ? 20 : 0) + (report.hasAnswerExpectation ? 25 : 0) + (report.hasExampleExpectation ? 15 : 0)) / 3,
|
|
2355
|
+
score: report.safety.passed ? 1 : 0
|
|
2356
|
+
}] : [],
|
|
2094
2357
|
...report.hasExampleExpectation ? [{
|
|
2095
2358
|
weight: 15,
|
|
2096
2359
|
score: report.examples.expected > 0 ? report.examples.matched / report.examples.expected : 1
|
|
@@ -2171,7 +2434,7 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
|
|
|
2171
2434
|
if (surfaceError) issues.push(`Evaluation surface failed: ${surfaceError}`);
|
|
2172
2435
|
let answerResult;
|
|
2173
2436
|
let answerError;
|
|
2174
|
-
if (configurationIssues.length === 0 && !surfaceError && task.expect.answer && runOptions.answer) try {
|
|
2437
|
+
if (configurationIssues.length === 0 && !surfaceError && (task.expect.answer || task.expect.safety) && runOptions.answer) try {
|
|
2175
2438
|
answerResult = await runAnswerProvider({
|
|
2176
2439
|
provider: runOptions.answer,
|
|
2177
2440
|
allowNetwork: runOptions.allowNetwork === true,
|
|
@@ -2199,28 +2462,48 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
|
|
|
2199
2462
|
issues.push(`Answer evaluation failed: ${answerError}`);
|
|
2200
2463
|
}
|
|
2201
2464
|
const answer = buildAnswerMetrics(task, answerResult, runOptions.baseUrl);
|
|
2465
|
+
const safety = configurationIssues.length === 0 && !surfaceError ? await buildSafetyMetrics({
|
|
2466
|
+
pages: orderedPages,
|
|
2467
|
+
task,
|
|
2468
|
+
runOptions,
|
|
2469
|
+
rankedContext,
|
|
2470
|
+
budgetedContext,
|
|
2471
|
+
pagesByUrl,
|
|
2472
|
+
citations,
|
|
2473
|
+
answer,
|
|
2474
|
+
answerResult,
|
|
2475
|
+
selection
|
|
2476
|
+
}) : {
|
|
2477
|
+
expected: Boolean(task.expect.safety),
|
|
2478
|
+
passed: !task.expect.safety,
|
|
2479
|
+
cases: [],
|
|
2480
|
+
queryVariants: []
|
|
2481
|
+
};
|
|
2202
2482
|
if (relevantSources.length === 0) issues.push("No relevantSources are configured for this task.");
|
|
2203
2483
|
if (!retrieval.passed) issues.push("Retrieval did not satisfy the expected recall, rank, or exclusion rules.");
|
|
2204
2484
|
if (!citations.passed) issues.push(`${citations.evidence === "results" ? "Search-result" : "Context"} citations are missing, unexpected, or do not match source records.`);
|
|
2205
2485
|
if (task.expect.answer && !runOptions.answer) issues.push("Answer expectations require agent.evaluations.answer to be configured.");
|
|
2206
2486
|
if (!answer.passed) issues.push("The actual answer is missing required text/citations or contains invalid evidence.");
|
|
2487
|
+
if (!safety.passed) issues.push("One or more adversarial retrieval-safety assertions failed.");
|
|
2207
2488
|
if (!selection.passed) {
|
|
2208
2489
|
const checksPackageOrTags = Boolean(task.expect.scope?.package || task.expect.scope?.tags || task.filters?.package || task.filters?.tags);
|
|
2209
2490
|
issues.push(checksPackageOrTags ? "Retrieved sources are ambiguous or do not explicitly match the expected framework/version/package/tags/locale." : "Retrieved sources are ambiguous or do not explicitly match the expected framework/version/locale.");
|
|
2210
2491
|
}
|
|
2211
2492
|
if (!examples.passed) issues.push("One or more expected examples did not meet the requested verification level.");
|
|
2212
2493
|
if (!usage.passed) issues.push("Context exceeded its budget or did not meet the configured useful-byte ratio.");
|
|
2213
|
-
const passed = configurationIssues.length === 0 && !surfaceError && !answerError && relevantSources.length > 0 && retrieval.passed && citations.passed && answer.passed && selection.passed && examples.passed && usage.passed;
|
|
2494
|
+
const passed = configurationIssues.length === 0 && !surfaceError && !answerError && relevantSources.length > 0 && retrieval.passed && citations.passed && answer.passed && safety.passed && selection.passed && examples.passed && usage.passed;
|
|
2214
2495
|
const calculatedScore = configurationIssues.length > 0 ? 0 : calculateTaskScore({
|
|
2215
2496
|
retrieval,
|
|
2216
2497
|
citations,
|
|
2217
2498
|
answer,
|
|
2499
|
+
safety,
|
|
2218
2500
|
selection,
|
|
2219
2501
|
examples,
|
|
2220
2502
|
usage,
|
|
2221
2503
|
hasSelectionExpectation: Boolean(task.expect.scope?.framework || task.expect.scope?.version || task.expect.scope?.package || task.expect.scope?.tags || task.expect.scope?.locale || task.filters?.framework || task.filters?.version || task.filters?.package || task.filters?.tags || task.filters?.locale),
|
|
2222
2504
|
hasExampleExpectation: (task.expect.examples?.length ?? 0) > 0,
|
|
2223
|
-
hasAnswerExpectation: Boolean(task.expect.answer)
|
|
2505
|
+
hasAnswerExpectation: Boolean(task.expect.answer),
|
|
2506
|
+
hasSafetyExpectation: Boolean(task.expect.safety)
|
|
2224
2507
|
});
|
|
2225
2508
|
const score = passed ? calculatedScore : Math.min(calculatedScore, 99);
|
|
2226
2509
|
return {
|
|
@@ -2236,6 +2519,7 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
|
|
|
2236
2519
|
retrieval,
|
|
2237
2520
|
citations,
|
|
2238
2521
|
answer,
|
|
2522
|
+
safety,
|
|
2239
2523
|
selection,
|
|
2240
2524
|
examples,
|
|
2241
2525
|
usage,
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { A as buildDocsAgentDiscoverySpec, Ft as renderDocsSitemapXml, It as resolveDocsSitemapConfig, Pt as renderDocsSitemapMarkdown, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, at as renderDocsMarkdownDocument, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, it as renderDocsLlmsTxt, jt as buildDocsSitemapManifest, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, lt as resolveDocsAgentFeedbackConfig, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, rt as renderDocsAgentsDocument, st as renderDocsSkillDocument, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, wt as toDocsMarkdownUrl, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-
|
|
1
|
+
import { A as buildDocsAgentDiscoverySpec, Ft as renderDocsSitemapXml, It as resolveDocsSitemapConfig, Pt as renderDocsSitemapMarkdown, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, at as renderDocsMarkdownDocument, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, it as renderDocsLlmsTxt, jt as buildDocsSitemapManifest, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, lt as resolveDocsAgentFeedbackConfig, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, rt as renderDocsAgentsDocument, st as renderDocsSkillDocument, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, wt as toDocsMarkdownUrl, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-BpFXdXTJ.mjs";
|
|
2
2
|
import "./markdown-sections-7OoA7ylx.mjs";
|
|
3
3
|
import { A as buildDocsLegacySkillsIndex, D as buildDocsA2AAgentCard, L as resolveDocsPublishedAgentSkill, O as buildDocsAgentSkillsIndex, V as formatDocsContentDigest, W as resolveDocsHttpDate, 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, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-Ckx0tN7B.mjs";
|
|
4
|
-
import "./content-change-hydration-
|
|
4
|
+
import "./content-change-hydration-Cy2a7rb1.mjs";
|
|
5
5
|
import { t as resolveDocsI18n } from "./i18n-hHVWcflJ.mjs";
|
|
6
|
-
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-
|
|
7
|
-
import "./sitemap-server-
|
|
6
|
+
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-CQVNLcVS.mjs";
|
|
7
|
+
import "./sitemap-server-rv00bP21.mjs";
|
|
8
8
|
import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-CwmzAzf_.mjs";
|
|
9
|
-
import "./agent-evals-
|
|
9
|
+
import "./agent-evals-GFDpcXO3.mjs";
|
|
10
10
|
import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
|
|
11
11
|
import "./code-blocks-0wjOsqdJ.mjs";
|
|
12
12
|
import "./server.mjs";
|
|
13
|
-
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, m as readTopLevelBooleanProperty, p as readStringProperty, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-
|
|
13
|
+
import { _ as resolveDocsContentDir, a as loadDocsConfigModule, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, m as readTopLevelBooleanProperty, p as readStringProperty, r as extractTopLevelConfigObject, t as extractNestedObjectLiteral } from "./config-BtxaQTPP.mjs";
|
|
14
14
|
import { t as detectFramework } from "./utils-DpiIioYb.mjs";
|
|
15
15
|
import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
16
16
|
import path from "node:path";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { z as DocsPublishedAgentSkill } from "./standards-discovery-
|
|
1
|
+
import { st as DocsAgentSkillsInput } from "./types-DUMzbRER.mjs";
|
|
2
|
+
import { z as DocsPublishedAgentSkill } from "./standards-discovery-DX9iiGar.mjs";
|
|
3
3
|
|
|
4
4
|
//#region src/agent-skills-server.d.ts
|
|
5
5
|
interface ResolveConfiguredAgentSkillsOptions {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { z as DocsPublishedAgentSkill } from "./standards-discovery-
|
|
3
|
-
import { t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-
|
|
1
|
+
import { st as DocsAgentSkillsInput } from "./types-DUMzbRER.mjs";
|
|
2
|
+
import { z as DocsPublishedAgentSkill } from "./standards-discovery-DX9iiGar.mjs";
|
|
3
|
+
import { t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-Cltp5qai.mjs";
|
|
4
4
|
|
|
5
5
|
//#region src/agent-skills-vite.d.ts
|
|
6
6
|
declare const DOCS_AGENT_SKILLS_BUNDLE_MODULE = "@farming-labs/docs/agent-skills-bundle";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { a as DEFAULT_AGENT_MD_ROUTE, lt as resolveDocsAgentFeedbackConfig, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, rt as renderDocsAgentsDocument, t as DEFAULT_AGENTS_MD_ROUTE } from "./agent-
|
|
1
|
+
import { a as DEFAULT_AGENT_MD_ROUTE, lt as resolveDocsAgentFeedbackConfig, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, rt as renderDocsAgentsDocument, t as DEFAULT_AGENTS_MD_ROUTE } from "./agent-BpFXdXTJ.mjs";
|
|
2
2
|
import "./markdown-sections-7OoA7ylx.mjs";
|
|
3
3
|
import "./standards-discovery-Ckx0tN7B.mjs";
|
|
4
|
-
import "./content-change-hydration-
|
|
5
|
-
import { C as resolveApiReferenceOpenApiDiscovery } from "./sitemap-server-
|
|
4
|
+
import "./content-change-hydration-Cy2a7rb1.mjs";
|
|
5
|
+
import { C as resolveApiReferenceOpenApiDiscovery } from "./sitemap-server-rv00bP21.mjs";
|
|
6
6
|
import "./agent-skills-server-CwmzAzf_.mjs";
|
|
7
|
-
import "./agent-evals-
|
|
7
|
+
import "./agent-evals-GFDpcXO3.mjs";
|
|
8
8
|
import { resolveDocsMcpConfig } from "./mcp.mjs";
|
|
9
9
|
import "./code-blocks-0wjOsqdJ.mjs";
|
|
10
10
|
import "./server.mjs";
|
|
11
|
-
import { a as loadDocsConfigModule, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-
|
|
11
|
+
import { a as loadDocsConfigModule, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, p as readStringProperty, t as extractNestedObjectLiteral } from "./config-BtxaQTPP.mjs";
|
|
12
12
|
import { t as detectFramework } from "./utils-DpiIioYb.mjs";
|
|
13
13
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
14
14
|
import path from "node:path";
|