@farming-labs/docs 0.2.70 → 0.2.72

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.
Files changed (51) hide show
  1. package/dist/{agent-MOuft73V.mjs → agent-DbDfIqhe.mjs} +3 -3
  2. package/dist/{agent-evals-BTh28hl-.mjs → agent-evals-CjYzCQMZ.mjs} +90 -10
  3. package/dist/{agent-export-43XUqLf5.mjs → agent-export-CpQhD8eA.mjs} +13 -10
  4. package/dist/{agent-CXkn2ihX.mjs → agent-pS2nNQS3.mjs} +540 -14
  5. package/dist/agent-skills-bundle.d.mts +1 -1
  6. package/dist/{agent-skills-server-DTwblsLu.d.mts → agent-skills-server-DZnNB4_S.d.mts} +2 -2
  7. package/dist/agent-skills-vite.d.mts +3 -3
  8. package/dist/agent-skills-vite.mjs +1 -1
  9. package/dist/{agents-C16sSxHU.mjs → agents-B-1h9Jlm.mjs} +8 -8
  10. package/dist/cli/index.mjs +29 -29
  11. package/dist/client/react.d.mts +1 -1
  12. package/dist/{cloud-pdNC-tyj.mjs → cloud-CyysfDny.mjs} +3 -3
  13. package/dist/{cloud-ask-ai-BfnX18rI.d.mts → cloud-ask-ai-D9gIN4Vr.d.mts} +1 -1
  14. package/dist/{codeblocks-CFuurVIH.mjs → codeblocks-DAj7EAwt.mjs} +2 -2
  15. package/dist/{dev-Cc1cFFj-.mjs → dev-qE7MYEh9.mjs} +2 -2
  16. package/dist/docs-cloud-server.d.mts +2 -2
  17. package/dist/docs-cloud-server.mjs +1 -1
  18. package/dist/{doctor-WjSas47Z.mjs → doctor-CBy8-tPu.mjs} +13 -13
  19. package/dist/{downgrade-w7e6Se0L.mjs → downgrade-DCxezPZI.mjs} +2 -2
  20. package/dist/{golden-evaluations-Cg0braJV.mjs → golden-evaluations-DGg_eHIY.mjs} +23 -3
  21. package/dist/index.d.mts +104 -6
  22. package/dist/index.mjs +6 -6
  23. package/dist/{init-DAkI0Lkf.mjs → init-p1MHf06G.mjs} +3 -3
  24. package/dist/{mcp-BDPfedoh.mjs → mcp-BNK45dzD.mjs} +7 -7
  25. package/dist/mcp.d.mts +7 -2
  26. package/dist/mcp.mjs +122 -18
  27. package/dist/{metadata-BMBvGASC.mjs → metadata-D6qlWDu-.mjs} +1 -1
  28. package/dist/{package-version-n5AFur8a.mjs → package-version-BXHcIm1T.mjs} +1 -1
  29. package/dist/{reading-time-D0s9Osqw.mjs → reading-time-DvTuW2Iy.mjs} +2 -2
  30. package/dist/{review-_0G2gAtx.mjs → review-Cace7A2c.mjs} +8 -8
  31. package/dist/{robots-DOnLGE0l.mjs → robots-C2SindI5.mjs} +1 -1
  32. package/dist/{robots-DLl9Zizg.mjs → robots-DmE_wXvG.mjs} +4 -4
  33. package/dist/{search-CozHzW7v.d.mts → search-1aftosa5.d.mts} +24 -9
  34. package/dist/{search-Boqkxa3T.mjs → search-BbArHODP.mjs} +672 -147
  35. package/dist/{search-B9tkri5i.mjs → search-DB3svkNQ.mjs} +7 -7
  36. package/dist/server.d.mts +13 -5
  37. package/dist/server.mjs +8 -8
  38. package/dist/{sitemap-FgXlxHEO.mjs → sitemap-DPTLh_26.mjs} +8 -8
  39. package/dist/{sitemap-server-Bynukz-j.mjs → sitemap-server-PUoOhplO.mjs} +1 -1
  40. package/dist/{standards-discovery-C0CIC4QI.d.mts → standards-discovery-DRJ10g7B.d.mts} +1 -1
  41. package/dist/{types-BQC05SQm.d.mts → types-B9DNNAdT.d.mts} +49 -1
  42. package/dist/{upgrade-oz-GChgt.mjs → upgrade-DDJQ5l6n.mjs} +2 -2
  43. package/package.json +1 -1
  44. package/dist/agent-scope-C_U--OZ7.mjs +0 -283
  45. /package/dist/{agent-skills-server-B4u3qy-1.mjs → agent-skills-server-BPVv4gMg.mjs} +0 -0
  46. /package/dist/{cloud-ask-ai-sbpjOR2K.mjs → cloud-ask-ai-hnJfj8-X.mjs} +0 -0
  47. /package/dist/{code-blocks-DnNVNK2M.mjs → code-blocks-qe0T8-xe.mjs} +0 -0
  48. /package/dist/{config-Wcdj-D0a.mjs → config-z7_R0f86.mjs} +0 -0
  49. /package/dist/{errors-DbOhkE1h.mjs → errors-Cc_qplZU.mjs} +0 -0
  50. /package/dist/{templates-C6avM0U3.mjs → templates-BJnf6B8l.mjs} +0 -0
  51. /package/dist/{utils-DpiIioYb.mjs → utils-C4RC8Zq_.mjs} +0 -0
@@ -1,7 +1,7 @@
1
- import { Jt as normalizePageAgentFrontmatter, L as findDocsMarkdownPage, Zt as stripGeneratedPageAgentContractMarkdown, tt as renderDocsMarkdownDocument } from "./agent-CXkn2ihX.mjs";
2
- import { _ as GENERATED_AGENT_PROVENANCE_VERSION, b as parseGeneratedAgentDocument, v as hashGeneratedAgentContent, x as serializeGeneratedAgentDocument } from "./search-Boqkxa3T.mjs";
1
+ import { B as findDocsMarkdownPage, an as stripGeneratedPageAgentContractMarkdown, at as renderDocsMarkdownDocument, nn as normalizePageAgentFrontmatter } from "./agent-pS2nNQS3.mjs";
2
+ import { E as hashGeneratedAgentContent, O as parseGeneratedAgentDocument, T as GENERATED_AGENT_PROVENANCE_VERSION, k as serializeGeneratedAgentDocument } from "./search-BbArHODP.mjs";
3
3
  import { createFilesystemDocsMcpSource } from "./mcp.mjs";
4
- 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-Wcdj-D0a.mjs";
4
+ 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-z7_R0f86.mjs";
5
5
  import { createRequire } from "node:module";
6
6
  import matter from "gray-matter";
7
7
  import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs";
@@ -1,7 +1,7 @@
1
- import { m as findDocsMarkdownSection, p as resolveSearchRequestConfig, t as buildDocsAskAIContext, u as performDocsSearch } from "./search-Boqkxa3T.mjs";
2
- import { a as normalizeAgentScopeValues, i as normalizeAgentLocale, n as agentVersionConstraintsOverlap, o as normalizeAgentVersion, r as normalizeAgentFramework, t as agentVersionConstraintMatches } from "./agent-scope-C_U--OZ7.mjs";
1
+ import { Gt as findDocsMarkdownSection } from "./agent-pS2nNQS3.mjs";
2
+ import { C as normalizeAgentVersion, S as normalizeAgentScopeValues, _ as resolveSearchRequestConfig, b as normalizeAgentFramework, d as performDocsSearch, t as buildDocsAskAIContext, u as normalizeDocsSearchFilters, v as agentVersionConstraintMatches, x as normalizeAgentLocale, y as agentVersionConstraintsOverlap } from "./search-BbArHODP.mjs";
3
3
  import { buildDocsMcpContext } from "./mcp.mjs";
4
- import { i as validateCodeBlockPlans, n as planCodeBlockTargets, r as resolveDocsCodeBlocksValidateConfig, t as extractCodeBlocksFromMarkdown } from "./code-blocks-DnNVNK2M.mjs";
4
+ import { i as validateCodeBlockPlans, n as planCodeBlockTargets, r as resolveDocsCodeBlocksValidateConfig, t as extractCodeBlocksFromMarkdown } from "./code-blocks-qe0T8-xe.mjs";
5
5
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
6
6
  import { dirname, isAbsolute, join, relative } from "node:path";
7
7
  import { createJiti } from "jiti";
@@ -630,13 +630,33 @@ function normalizeRuntimeFilters(value, path, issues) {
630
630
  }
631
631
  const framework = normalizeRuntimeString(value.framework, `${path}.framework`, issues);
632
632
  const version = normalizeRuntimeString(value.version, `${path}.version`, issues);
633
+ const packageName = normalizeRuntimeFilterValue(value.package, `${path}.package`, issues);
634
+ const tags = normalizeRuntimeFilterValue(value.tags, `${path}.tags`, issues);
633
635
  const locale = normalizeRuntimeString(value.locale, `${path}.locale`, issues);
634
- return framework || version || locale ? {
636
+ return framework || version || packageName || tags || locale ? {
635
637
  framework,
636
638
  version,
639
+ package: packageName,
640
+ tags,
637
641
  locale
638
642
  } : void 0;
639
643
  }
644
+ function normalizeRuntimeFilterValue(value, path, issues) {
645
+ if (value === void 0) return void 0;
646
+ if (typeof value === "string") return normalizeRuntimeString(value, path, issues);
647
+ if (!Array.isArray(value)) {
648
+ issues.push(`${path} must be a non-empty string or string array.`);
649
+ return;
650
+ }
651
+ const normalized = value.filter((item) => typeof item === "string" && Boolean(item.trim())).map((item) => item.trim()).filter((item, index, items) => items.indexOf(item) === index);
652
+ const hasInvalidItem = value.some((item) => typeof item !== "string" || !item.trim());
653
+ if (hasInvalidItem) issues.push(`${path} must contain only non-empty strings.`);
654
+ if (normalized.length === 0) {
655
+ if (!hasInvalidItem) issues.push(`${path} must contain at least one non-empty string.`);
656
+ return;
657
+ }
658
+ return normalized;
659
+ }
640
660
  function normalizeRuntimeEnum(value, path, issues, allowed) {
641
661
  if (value === void 0) return void 0;
642
662
  if (typeof value !== "string" || !allowed.includes(value)) {
@@ -838,10 +858,14 @@ function getPageScope(page) {
838
858
  const contractFramework = normalizeAgentScopeValues(page.agent?.appliesTo?.framework).map(normalizeAgentFramework);
839
859
  const topVersion = normalizeAgentScopeValues(page.version).map(normalizeAgentVersion);
840
860
  const contractVersion = normalizeAgentScopeValues(page.agent?.appliesTo?.version).map(normalizeAgentVersion);
861
+ const packageValues = normalizeDocsSearchFilters({ package: page.agent?.appliesTo?.package }).package ?? [];
862
+ const tags = normalizeDocsSearchFilters({ tags: page.tags }).tags ?? [];
841
863
  const locale = normalizeAgentScopeValues(page.locale).map(normalizeAgentLocale);
842
864
  return {
843
865
  framework: Array.from(new Set([...topFramework, ...contractFramework])),
844
866
  version: Array.from(new Set([...topVersion, ...contractVersion])),
867
+ package: packageValues,
868
+ tags,
845
869
  locale,
846
870
  frameworkAmbiguous: topFramework.length > 0 && contractFramework.length > 0 && !valuesOverlap(topFramework, contractFramework, (left, right) => left === right),
847
871
  versionAmbiguous: topVersion.length > 0 && contractVersion.length > 0 && !valuesOverlap(topVersion, contractVersion, agentVersionConstraintsOverlap)
@@ -858,6 +882,8 @@ function toGoldenSources(sources, relevantSources, baseUrl) {
858
882
  title: source.section ?? source.title,
859
883
  framework: source.framework,
860
884
  version: source.version,
885
+ package: source.package,
886
+ tags: source.tags,
861
887
  utf8Bytes: source.utf8Bytes,
862
888
  relevant: relevantSources.some((expected) => sourceMatches(source.url, expected, baseUrl)),
863
889
  truncated: source.truncated
@@ -938,7 +964,8 @@ function hydrateSearchSource(result, index, pagesByUrl, contentMode, baseUrl) {
938
964
  locale: scope?.locale[0],
939
965
  framework: scope?.framework[0],
940
966
  version: scope?.version[0],
941
- tags: page?.tags ? [...page.tags] : void 0,
967
+ package: scope?.package.length ? [...scope.package] : void 0,
968
+ tags: scope?.tags.length ? [...scope.tags] : void 0,
942
969
  score: result.score,
943
970
  content,
944
971
  chars: content.length,
@@ -978,11 +1005,17 @@ function buildContextFromSources(options) {
978
1005
  }
979
1006
  const context = blocks.join(CONTEXT_SEPARATOR);
980
1007
  usedUtf8Bytes = Buffer.byteLength(context, "utf8");
1008
+ const normalizedFilters = normalizeDocsSearchFilters({
1009
+ package: options.filters?.package,
1010
+ tags: options.filters?.tags
1011
+ });
981
1012
  return {
982
1013
  query: options.query,
983
1014
  filters: {
984
1015
  framework: options.filters?.framework,
985
1016
  version: options.filters?.version,
1017
+ package: normalizedFilters.package,
1018
+ tags: normalizedFilters.tags,
986
1019
  locale: options.filters?.locale
987
1020
  },
988
1021
  budget: {
@@ -1077,11 +1110,17 @@ function createContextShell(options) {
1077
1110
  const context = options.context ?? "";
1078
1111
  const sources = options.sources ?? [];
1079
1112
  const usedUtf8Bytes = Buffer.byteLength(context, "utf8");
1113
+ const normalizedFilters = normalizeDocsSearchFilters({
1114
+ package: options.filters?.package,
1115
+ tags: options.filters?.tags
1116
+ });
1080
1117
  return {
1081
1118
  query: options.query,
1082
1119
  filters: {
1083
1120
  framework: options.filters?.framework,
1084
1121
  version: options.filters?.version,
1122
+ package: normalizedFilters.package,
1123
+ tags: normalizedFilters.tags,
1085
1124
  locale: options.filters?.locale
1086
1125
  },
1087
1126
  budget: {
@@ -1159,6 +1198,8 @@ async function buildGoldenSurface(options) {
1159
1198
  query: options.task.query,
1160
1199
  framework: options.task.filters?.framework,
1161
1200
  version: options.task.filters?.version,
1201
+ package: options.task.filters?.package,
1202
+ tags: options.task.filters?.tags,
1162
1203
  locale: options.task.filters?.locale,
1163
1204
  maxResults: options.topK
1164
1205
  };
@@ -1198,6 +1239,12 @@ async function buildGoldenSurface(options) {
1198
1239
  search: surfaceSearch,
1199
1240
  audience: "agent",
1200
1241
  locale: options.task.filters?.locale,
1242
+ filters: {
1243
+ framework: options.task.filters?.framework,
1244
+ version: options.task.filters?.version,
1245
+ package: options.task.filters?.package,
1246
+ tags: options.task.filters?.tags
1247
+ },
1201
1248
  siteTitle: options.runOptions.siteTitle,
1202
1249
  baseUrl: options.runOptions.baseUrl,
1203
1250
  limit: options.topK,
@@ -1238,6 +1285,12 @@ async function buildGoldenSurface(options) {
1238
1285
  query: options.task.query,
1239
1286
  search: surfaceSearch,
1240
1287
  locale: options.task.filters?.locale,
1288
+ filters: {
1289
+ framework: options.task.filters?.framework,
1290
+ version: options.task.filters?.version,
1291
+ package: options.task.filters?.package,
1292
+ tags: options.task.filters?.tags
1293
+ },
1241
1294
  siteTitle: options.runOptions.siteTitle,
1242
1295
  baseUrl: options.runOptions.baseUrl,
1243
1296
  limit: options.topK,
@@ -1878,17 +1931,27 @@ async function runAnswerProvider(options) {
1878
1931
  function buildSelectionMetrics(task, sources, pagesByUrl) {
1879
1932
  const requestedFramework = task.filters?.framework;
1880
1933
  const requestedVersion = task.filters?.version;
1934
+ const requestedPackage = task.filters?.package;
1935
+ const requestedTags = task.filters?.tags;
1881
1936
  const requestedLocale = task.filters?.locale;
1882
1937
  const expectedFramework = task.expect.scope?.framework ?? requestedFramework;
1883
1938
  const expectedVersion = task.expect.scope?.version ?? requestedVersion;
1939
+ const expectedPackage = task.expect.scope?.package ?? requestedPackage;
1940
+ const expectedTags = task.expect.scope?.tags ?? requestedTags;
1884
1941
  const expectedLocale = task.expect.scope?.locale ?? requestedLocale;
1885
1942
  const framework = expectedFramework ? normalizeAgentFramework(expectedFramework) : void 0;
1943
+ const expectedSearchScope = normalizeDocsSearchFilters({
1944
+ package: expectedPackage,
1945
+ tags: expectedTags
1946
+ });
1886
1947
  const locale = expectedLocale ? normalizeAgentLocale(expectedLocale) : void 0;
1887
1948
  const candidates = sources.map((source) => {
1888
1949
  const page = findPageForSource(pagesByUrl, source.pageUrl || source.url);
1889
1950
  const scope = page ? getPageScope(page) : {
1890
1951
  framework: normalizeAgentScopeValues(source.framework).map(normalizeAgentFramework),
1891
1952
  version: normalizeAgentScopeValues(source.version).map(normalizeAgentVersion),
1953
+ package: normalizeDocsSearchFilters({ package: source.package }).package ?? [],
1954
+ tags: normalizeDocsSearchFilters({ tags: source.tags }).tags ?? [],
1892
1955
  locale: normalizeAgentScopeValues(source.locale).map(normalizeAgentLocale),
1893
1956
  frameworkAmbiguous: false,
1894
1957
  versionAmbiguous: false
@@ -1900,22 +1963,34 @@ function buildSelectionMetrics(task, sources, pagesByUrl) {
1900
1963
  });
1901
1964
  const firstFrameworkMatchRank = framework ? candidates.findIndex((candidate) => candidate.scope.framework.includes(framework)) + 1 || null : null;
1902
1965
  const firstVersionMatchRank = expectedVersion ? candidates.findIndex((candidate) => candidate.scope.version.some((version) => agentVersionConstraintMatches(expectedVersion, version))) + 1 || null : null;
1966
+ const firstPackageMatchRank = expectedSearchScope.package ? candidates.findIndex((candidate) => valuesOverlap(expectedSearchScope.package ?? [], candidate.scope.package, (left, right) => left === right)) + 1 || null : null;
1967
+ const firstTagsMatchRank = expectedSearchScope.tags ? candidates.findIndex((candidate) => valuesOverlap(expectedSearchScope.tags ?? [], candidate.scope.tags, (left, right) => left === right)) + 1 || null : null;
1903
1968
  const firstLocaleMatchRank = locale ? candidates.findIndex((candidate) => candidate.scope.locale.includes(locale)) + 1 || null : null;
1904
- const conflictingSources = candidates.filter((candidate) => framework && candidate.scope.framework.length > 0 && !candidate.scope.framework.includes(framework) || expectedVersion && candidate.scope.version.length > 0 && !candidate.scope.version.some((version) => agentVersionConstraintMatches(expectedVersion, version)) || locale && candidate.scope.locale.length > 0 && !candidate.scope.locale.includes(locale)).map((candidate) => candidate.source);
1905
- const ambiguousSources = candidates.filter((candidate) => candidate.scope.frameworkAmbiguous || candidate.scope.versionAmbiguous || Boolean(framework && candidate.scope.framework.length === 0) || Boolean(expectedVersion && candidate.scope.version.length === 0) || Boolean(locale && candidate.scope.locale.length === 0)).map((candidate) => candidate.source);
1969
+ const conflictingSources = candidates.filter((candidate) => framework && candidate.scope.framework.length > 0 && !candidate.scope.framework.includes(framework) || expectedVersion && candidate.scope.version.length > 0 && !candidate.scope.version.some((version) => agentVersionConstraintMatches(expectedVersion, version)) || expectedSearchScope.package && candidate.scope.package.length > 0 && !valuesOverlap(expectedSearchScope.package, candidate.scope.package, (left, right) => left === right) || expectedSearchScope.tags && candidate.scope.tags.length > 0 && !valuesOverlap(expectedSearchScope.tags, candidate.scope.tags, (left, right) => left === right) || locale && candidate.scope.locale.length > 0 && !candidate.scope.locale.includes(locale)).map((candidate) => candidate.source);
1970
+ const ambiguousSources = candidates.filter((candidate) => candidate.scope.frameworkAmbiguous || candidate.scope.versionAmbiguous || Boolean(framework && candidate.scope.framework.length === 0) || Boolean(expectedVersion && candidate.scope.version.length === 0) || Boolean(expectedSearchScope.package && candidate.scope.package.length === 0) || Boolean(expectedSearchScope.tags && candidate.scope.tags.length === 0) || Boolean(locale && candidate.scope.locale.length === 0)).map((candidate) => candidate.source);
1971
+ const frameworkPassed = !framework || firstFrameworkMatchRank !== null;
1972
+ const versionPassed = !expectedVersion || firstVersionMatchRank !== null;
1973
+ const packagePassed = !expectedSearchScope.package || firstPackageMatchRank !== null;
1974
+ const tagsPassed = !expectedSearchScope.tags || firstTagsMatchRank !== null;
1906
1975
  return {
1907
1976
  requestedFramework,
1908
1977
  requestedVersion,
1978
+ requestedPackage,
1979
+ requestedTags,
1909
1980
  requestedLocale,
1910
1981
  expectedFramework,
1911
1982
  expectedVersion,
1983
+ expectedPackage,
1984
+ expectedTags,
1912
1985
  expectedLocale,
1913
1986
  firstFrameworkMatchRank,
1914
1987
  firstVersionMatchRank,
1988
+ firstPackageMatchRank,
1989
+ firstTagsMatchRank,
1915
1990
  firstLocaleMatchRank,
1916
1991
  conflictingSources,
1917
1992
  ambiguousSources,
1918
- passed: (!framework || firstFrameworkMatchRank !== null) && (!expectedVersion || firstVersionMatchRank !== null) && (!locale || firstLocaleMatchRank !== null) && conflictingSources.length === 0 && ambiguousSources.length === 0
1993
+ passed: frameworkPassed && versionPassed && packagePassed && tagsPassed && (!locale || firstLocaleMatchRank !== null) && conflictingSources.length === 0 && ambiguousSources.length === 0
1919
1994
  };
1920
1995
  }
1921
1996
  function buildUsageMetrics(task, tokenBudget, context, relevantSources, attributionUtf8Bytes, baseUrl) {
@@ -2055,6 +2130,8 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
2055
2130
  title: source.title,
2056
2131
  framework: source.framework,
2057
2132
  version: source.version,
2133
+ package: source.package,
2134
+ tags: source.tags,
2058
2135
  locale: source.locale
2059
2136
  }))
2060
2137
  }
@@ -2069,7 +2146,10 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
2069
2146
  if (!citations.passed) issues.push(`${citations.evidence === "results" ? "Search-result" : "Context"} citations are missing, unexpected, or do not match source records.`);
2070
2147
  if (task.expect.answer && !runOptions.answer) issues.push("Answer expectations require agent.evaluations.answer to be configured.");
2071
2148
  if (!answer.passed) issues.push("The actual answer is missing required text/citations or contains invalid evidence.");
2072
- if (!selection.passed) issues.push("Retrieved sources are ambiguous or do not explicitly match the expected framework/version/locale.");
2149
+ if (!selection.passed) {
2150
+ const checksPackageOrTags = Boolean(task.expect.scope?.package || task.expect.scope?.tags || task.filters?.package || task.filters?.tags);
2151
+ 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.");
2152
+ }
2073
2153
  if (!examples.passed) issues.push("One or more expected examples did not meet the requested verification level.");
2074
2154
  if (!usage.passed) issues.push("Context exceeded its budget or did not meet the configured useful-byte ratio.");
2075
2155
  const passed = configurationIssues.length === 0 && !surfaceError && !answerError && relevantSources.length > 0 && retrieval.passed && citations.passed && answer.passed && selection.passed && examples.passed && usage.passed;
@@ -2080,7 +2160,7 @@ async function evaluateTask(pages, task, configurationIssues = [], runOptions =
2080
2160
  selection,
2081
2161
  examples,
2082
2162
  usage,
2083
- hasSelectionExpectation: Boolean(task.expect.scope?.framework || task.expect.scope?.version || task.expect.scope?.locale || task.filters?.framework || task.filters?.version || task.filters?.locale),
2163
+ 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),
2084
2164
  hasExampleExpectation: (task.expect.examples?.length ?? 0) > 0,
2085
2165
  hasAnswerExpectation: Boolean(task.expect.answer)
2086
2166
  });
@@ -1,16 +1,16 @@
1
- import { $ as renderDocsAgentsDocument, At as buildDocsSitemapManifest, Ft as resolveDocsSitemapConfig, Nt as renderDocsSitemapMarkdown, Pt as renderDocsSitemapXml, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, a as DEFAULT_AGENT_MD_ROUTE, at as resolveDocsAgentFeedbackConfig, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, et as renderDocsLlmsTxt, g as DEFAULT_LLMS_FULL_TXT_WELL_KNOWN_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, k as buildDocsAgentDiscoverySpec, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, o as DEFAULT_AGENT_MD_WELL_KNOWN_ROUTE, rt as renderDocsSkillDocument, t as DEFAULT_AGENTS_MD_ROUTE, tt as renderDocsMarkdownDocument, v as DEFAULT_LLMS_TXT_ROUTE, vt as toDocsMarkdownUrl, x as DEFAULT_SKILL_MD_ROUTE, y as DEFAULT_LLMS_TXT_WELL_KNOWN_ROUTE } from "./agent-CXkn2ihX.mjs";
1
+ import { A as buildDocsAgentDiscoverySpec, Bt as renderDocsSitemapXml, It as buildDocsSitemapManifest, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, Vt as resolveDocsSitemapConfig, 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, 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, zt as renderDocsSitemapMarkdown } from "./agent-pS2nNQS3.mjs";
2
2
  import { D as buildDocsAgentSkillsIndex, E as buildDocsA2AAgentCard, I as resolveDocsPublishedAgentSkill, a as DEFAULT_A2A_AGENT_CARD_ROUTE, b as DEFAULT_LEGACY_SKILLS_INDEX_ROUTE, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, k as buildDocsLegacySkillsIndex, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, x as DEFAULT_LEGACY_SKILLS_ROUTE_PREFIX } from "./standards-discovery-CYfiQE13.mjs";
3
- import "./search-Boqkxa3T.mjs";
3
+ import "./search-BbArHODP.mjs";
4
4
  import { t as resolveDocsI18n } from "./i18n-CCaFUnAN.mjs";
5
- 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-DOnLGE0l.mjs";
6
- import "./sitemap-server-Bynukz-j.mjs";
7
- import "./agent-evals-BTh28hl-.mjs";
5
+ 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-C2SindI5.mjs";
6
+ import "./sitemap-server-PUoOhplO.mjs";
7
+ import "./agent-evals-CjYzCQMZ.mjs";
8
8
  import { createFilesystemDocsMcpSource, resolveDocsMcpConfig } from "./mcp.mjs";
9
- import "./code-blocks-DnNVNK2M.mjs";
10
- import { t as resolveConfiguredAgentSkills } from "./agent-skills-server-B4u3qy-1.mjs";
9
+ import "./code-blocks-qe0T8-xe.mjs";
10
+ import { t as resolveConfiguredAgentSkills } from "./agent-skills-server-BPVv4gMg.mjs";
11
11
  import "./server.mjs";
12
- 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-Wcdj-D0a.mjs";
13
- import { t as detectFramework } from "./utils-DpiIioYb.mjs";
12
+ 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-z7_R0f86.mjs";
13
+ import { t as detectFramework } from "./utils-C4RC8Zq_.mjs";
14
14
  import { existsSync, lstatSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
15
15
  import path from "node:path";
16
16
  import { execFileSync } from "node:child_process";
@@ -702,7 +702,10 @@ async function exportAgentBundle(options = {}) {
702
702
  sitemap: sitemapInput,
703
703
  robots: robotsInput,
704
704
  openapi,
705
- markdown: { acceptHeader: false }
705
+ markdown: {
706
+ acceptHeader: false,
707
+ sectionDiscovery: false
708
+ }
706
709
  };
707
710
  const configuredAgentSkills = await resolveConfiguredAgentSkills(config?.agent?.skills, { rootDir });
708
711
  let outputs = [];