@farming-labs/docs 0.2.84 → 0.2.87

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 (43) hide show
  1. package/dist/{agent-qJNbZUCZ.d.mts → agent-C598zLsD.d.mts} +6 -3
  2. package/dist/{agent-D68WI6-N.mjs → agent-CTOUI2BK.mjs} +30 -245
  3. package/dist/{agent-DuwSq3C7.mjs → agent-FyPQ2AZ4.mjs} +2 -2
  4. package/dist/{agent-evals-CEvUQb_Z.mjs → agent-evals-DCptRrdP.mjs} +2 -2
  5. package/dist/{agent-export-BMljO4ll.mjs → agent-export-Di1Ofstb.mjs} +41 -25
  6. package/dist/agent-skills-bundle.d.mts +1 -1
  7. package/dist/agent-skills-progressive-disclosure-BVvj7nM8.mjs +308 -0
  8. package/dist/{agent-skills-server-D5qYU19g.mjs → agent-skills-server-CwmzAzf_.mjs} +1 -1
  9. package/dist/{agent-skills-server-aKgt9CR9.d.mts → agent-skills-server-DEqyYAhL.d.mts} +2 -2
  10. package/dist/agent-skills-vite.d.mts +3 -3
  11. package/dist/agent-skills-vite.mjs +2 -2
  12. package/dist/{agents-D1j3fKjv.mjs → agents-DjUz5voa.mjs} +6 -6
  13. package/dist/cli/index.mjs +44 -17
  14. package/dist/client/react.d.mts +1 -1
  15. package/dist/{cloud-ask-ai-Bx-qtqHL.d.mts → cloud-ask-ai-uzDpy0um.d.mts} +1 -1
  16. package/dist/{content-change-hydration-CiMxs3LF.mjs → content-change-hydration-DLBinuFR.mjs} +2 -1
  17. package/dist/docs-cloud-server.d.mts +2 -2
  18. package/dist/{doctor-DaZp33gE.mjs → doctor-DUnOjP9T.mjs} +11 -10
  19. package/dist/{downgrade-w7e6Se0L.mjs → downgrade-Wcgqbfv_.mjs} +1 -1
  20. package/dist/{golden-evaluations-BKxcJ1qw.mjs → golden-evaluations-CNDwoUOe.mjs} +2 -306
  21. package/dist/index.d.mts +29 -5
  22. package/dist/index.mjs +6 -6
  23. package/dist/{mcp-CwTbgrZm.mjs → mcp-7bvRe9Da.mjs} +6 -6
  24. package/dist/mcp.d.mts +3 -3
  25. package/dist/mcp.mjs +3 -3
  26. package/dist/{prompt-references-ClTizbsa.mjs → prompt-references-B6gxePm8.mjs} +3 -3
  27. package/dist/{retrieval-digest-CG9QWgw-.d.mts → retrieval-digest-sY-uhDFJ.d.mts} +10 -7
  28. package/dist/{review-BMO-4X_5.mjs → review-DEnzotkg.mjs} +7 -6
  29. package/dist/{robots-CLtbWSEJ.mjs → robots-DXy1xW3D.mjs} +3 -3
  30. package/dist/{robots-HWKsiZQS.mjs → robots-DaU38DZw.mjs} +2 -2
  31. package/dist/{search-ZY4rf1fy.mjs → search-DznddPqw.mjs} +6 -6
  32. package/dist/server.d.mts +5 -5
  33. package/dist/server.mjs +6 -6
  34. package/dist/{sitemap-CAzZFDic.mjs → sitemap-DCsrVSPf.mjs} +6 -6
  35. package/dist/{sitemap-server-_AeFxJQB.mjs → sitemap-server-Ds5z4WQB.mjs} +1 -1
  36. package/dist/skills-CPDwsMq4.mjs +467 -0
  37. package/dist/{standards-discovery-UdXpOfmN.d.mts → standards-discovery-CG_cZRSx.d.mts} +5 -2
  38. package/dist/{standards-discovery-BKlEnK_H.mjs → standards-discovery-Ckx0tN7B.mjs} +342 -41
  39. package/dist/{upgrade-oz-GChgt.mjs → upgrade-BSCjUH0V.mjs} +1 -1
  40. package/package.json +1 -1
  41. /package/dist/{init-DAkI0Lkf.mjs → init-D0GcUKJ0.mjs} +0 -0
  42. /package/dist/{package-version-n5AFur8a.mjs → package-version-B3PJ6IDr.mjs} +0 -0
  43. /package/dist/{types-DQl2dvDl.d.mts → types-CigzkdLB.d.mts} +0 -0
@@ -0,0 +1,308 @@
1
+ import { validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
2
+ import { n as resolveConfiguredAgentSkillPathsSync } from "./agent-skills-server-CwmzAzf_.mjs";
3
+ import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
4
+ import path from "node:path";
5
+
6
+ //#region src/agent-skills-progressive-disclosure.ts
7
+ const DEFAULT_AGENT_SKILL_MAX_LINES = 500;
8
+ const DEFAULT_AGENT_SKILL_INSTRUCTION_TOKEN_BUDGET = 5e3;
9
+ const DEFAULT_AGENT_SKILL_MAX_REFERENCE_DEPTH = 1;
10
+ const MARKDOWN_LINK_PATTERN = /!?\[[^\]]*\]\(([^)\n]+)\)/gu;
11
+ const SKILL_PATH_PATTERN = /(?:^|[\s"'`(])((?:\.\/)?(?:references|scripts|assets)\/[\p{L}\p{N}@._+\-/]+)/gmu;
12
+ const REQUIREMENT_PATTERN = /\b(?:requires?|prerequisites?|node(?:\.js)?|python|npm|pnpm|yarn|bun|deno|docker|git|network access|internet access|api key|environment variables?|macos|linux|windows)\b/iu;
13
+ const DEPENDENCY_DOCUMENTATION_PATTERN = /\b(?:dependenc(?:y|ies)|requires?|prerequisites?|self-contained|standard library|no external dependencies)\b/iu;
14
+ const VALIDATION_DOCUMENTATION_PATTERN = /\b(?:validate|validation|verify|verification|tests?|expected (?:result|output)|--check|--dry-run)\b/iu;
15
+ const PUBLISHED_SKILL_ROOTS = new Set([
16
+ "references",
17
+ "scripts",
18
+ "assets"
19
+ ]);
20
+ const MARKDOWN_EXTENSIONS = new Set([".md", ".mdx"]);
21
+ function positiveInteger(value, fallback) {
22
+ return typeof value === "number" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : fallback;
23
+ }
24
+ function nonNegativeInteger(value, fallback) {
25
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : fallback;
26
+ }
27
+ function readProgressiveDisclosureConfig(input) {
28
+ if (!input || typeof input === "string" || Array.isArray(input)) return void 0;
29
+ return input.progressiveDisclosure;
30
+ }
31
+ function resolveDocsAgentSkillsProgressiveDisclosureConfig(input) {
32
+ const config = readProgressiveDisclosureConfig(input);
33
+ return {
34
+ maxSkillLines: positiveInteger(config?.maxSkillLines, DEFAULT_AGENT_SKILL_MAX_LINES),
35
+ instructionTokenBudget: positiveInteger(config?.instructionTokenBudget, DEFAULT_AGENT_SKILL_INSTRUCTION_TOKEN_BUDGET),
36
+ maxReferenceDepth: nonNegativeInteger(config?.maxReferenceDepth, DEFAULT_AGENT_SKILL_MAX_REFERENCE_DEPTH),
37
+ compatibility: config?.compatibility === "always" || config?.compatibility === "off" || config?.compatibility === "when-needed" ? config.compatibility : "when-needed",
38
+ checkScripts: config?.checkScripts !== false
39
+ };
40
+ }
41
+ function stripFrontmatter(document) {
42
+ if (!/^---[ \t]*(?:\r?\n)/u.test(document)) return document;
43
+ const closing = /^---[ \t]*(?:\r?\n|$)/gmu;
44
+ closing.lastIndex = document.indexOf("\n") + 1;
45
+ const match = closing.exec(document);
46
+ return match ? document.slice(match.index + match[0].length) : document;
47
+ }
48
+ /**
49
+ * Dependency-free estimate for diagnostics, deliberately using three UTF-8 bytes per token
50
+ * so code-heavy instructions are less likely to be under-counted.
51
+ */
52
+ function estimateAgentSkillInstructionTokens(document) {
53
+ return Math.ceil(Buffer.byteLength(stripFrontmatter(document), "utf8") / 3);
54
+ }
55
+ function lineForIndex(source, index) {
56
+ return source.slice(0, index).split(/\r?\n/u).length;
57
+ }
58
+ function cleanReferenceTarget(rawTarget) {
59
+ let target = rawTarget.trim();
60
+ if (target.startsWith("<") && target.includes(">")) target = target.slice(1, target.indexOf(">"));
61
+ else target = target.split(/\s+(?=["'])/u, 1)[0] ?? "";
62
+ if (!target || target.startsWith("#") || target.startsWith("/") || /^[a-z][a-z\d+.-]*:/iu.test(target) || target.includes("{") || target.includes("}")) return null;
63
+ const withoutFragment = target.split("#", 1)[0]?.split("?", 1)[0] ?? "";
64
+ if (!withoutFragment) return null;
65
+ try {
66
+ return decodeURIComponent(withoutFragment).replace(/^\.\//u, "").replace(/[.,;:!?]+$/u, "");
67
+ } catch {
68
+ return withoutFragment.replace(/^\.\//u, "").replace(/[.,;:!?]+$/u, "");
69
+ }
70
+ }
71
+ function extractLocalReferences(source) {
72
+ const references = [];
73
+ const seen = /* @__PURE__ */ new Set();
74
+ let match;
75
+ MARKDOWN_LINK_PATTERN.lastIndex = 0;
76
+ while (match = MARKDOWN_LINK_PATTERN.exec(source)) {
77
+ if (match[0]?.startsWith("!")) continue;
78
+ const target = cleanReferenceTarget(match[1] ?? "");
79
+ if (!target) continue;
80
+ const index = match.index + (match[0]?.indexOf(match[1] ?? "") ?? 0);
81
+ const key = `${target}:${index}`;
82
+ if (seen.has(key)) continue;
83
+ seen.add(key);
84
+ references.push({
85
+ target,
86
+ index,
87
+ line: lineForIndex(source, index)
88
+ });
89
+ }
90
+ SKILL_PATH_PATTERN.lastIndex = 0;
91
+ while (match = SKILL_PATH_PATTERN.exec(source)) {
92
+ const target = cleanReferenceTarget(match[1] ?? "");
93
+ if (!target) continue;
94
+ const index = match.index + (match[0]?.lastIndexOf(match[1] ?? "") ?? 0);
95
+ const key = `${target}:${index}`;
96
+ if (seen.has(key)) continue;
97
+ seen.add(key);
98
+ references.push({
99
+ target,
100
+ index,
101
+ line: lineForIndex(source, index)
102
+ });
103
+ }
104
+ return references.sort((left, right) => left.index - right.index);
105
+ }
106
+ function isInside(parent, candidate) {
107
+ const relative = path.relative(parent, candidate);
108
+ return relative === "" || !relative.startsWith("..") && !path.isAbsolute(relative);
109
+ }
110
+ function toSkillRelativePath(skillDir, filePath) {
111
+ return path.relative(skillDir, filePath).replaceAll("\\", "/");
112
+ }
113
+ function isPublishedSkillPath(relativePath) {
114
+ if (relativePath === "SKILL.md") return true;
115
+ const [root] = relativePath.split("/");
116
+ return Boolean(root && PUBLISHED_SKILL_ROOTS.has(root));
117
+ }
118
+ function resolveReferencePath(skillDir, currentFilePath, target) {
119
+ const [root] = target.replaceAll("\\", "/").replace(/^\.\//u, "").split("/");
120
+ return path.resolve(root && PUBLISHED_SKILL_ROOTS.has(root) ? skillDir : path.dirname(currentFilePath), target);
121
+ }
122
+ function listRegularFiles(directory) {
123
+ if (!existsSync(directory)) return [];
124
+ const files = [];
125
+ for (const entry of readdirSync(directory, { withFileTypes: true }).sort((left, right) => left.name.localeCompare(right.name))) {
126
+ const entryPath = path.join(directory, entry.name);
127
+ if (entry.isSymbolicLink()) continue;
128
+ if (entry.isDirectory()) files.push(...listRegularFiles(entryPath));
129
+ else if (entry.isFile()) files.push(entryPath);
130
+ }
131
+ return files;
132
+ }
133
+ function issue(issues, input) {
134
+ issues.push(input);
135
+ }
136
+ function analyzeOneSkill(skillPath, config) {
137
+ const skillDir = path.dirname(skillPath);
138
+ const document = readFileSync(skillPath, "utf8");
139
+ const frontmatter = validateDocsAgentSkillFrontmatter(document, { directoryName: path.basename(skillDir) });
140
+ const name = frontmatter.valid ? frontmatter.data.name : path.basename(skillDir);
141
+ const issues = [];
142
+ const lineCount = document.split(/\r?\n/u).length;
143
+ const estimatedInstructionTokens = estimateAgentSkillInstructionTokens(document);
144
+ if (lineCount > config.maxSkillLines) issue(issues, {
145
+ code: "skill-lines-exceeded",
146
+ severity: "warning",
147
+ skill: name,
148
+ skillPath,
149
+ filePath: skillPath,
150
+ line: 1,
151
+ message: `SKILL.md has ${lineCount} lines, exceeding the configured ${config.maxSkillLines}-line limit; move detailed material into focused references/.`
152
+ });
153
+ if (estimatedInstructionTokens > config.instructionTokenBudget) issue(issues, {
154
+ code: "skill-token-budget-exceeded",
155
+ severity: "warning",
156
+ skill: name,
157
+ skillPath,
158
+ filePath: skillPath,
159
+ line: 1,
160
+ message: `SKILL.md instructions are approximately ${estimatedInstructionTokens} tokens, exceeding the configured ${config.instructionTokenBudget}-token budget.`
161
+ });
162
+ const referenceQueue = [{
163
+ filePath: skillPath,
164
+ depth: 0
165
+ }];
166
+ const visitedDepth = new Map([[skillPath, 0]]);
167
+ const markdownDocuments = new Map([[skillPath, document]]);
168
+ const validReferencePaths = /* @__PURE__ */ new Set();
169
+ const referencedTargets = /* @__PURE__ */ new Set();
170
+ for (let cursor = 0; cursor < referenceQueue.length; cursor += 1) {
171
+ const current = referenceQueue[cursor];
172
+ const source = markdownDocuments.get(current.filePath) ?? readFileSync(current.filePath, "utf8");
173
+ markdownDocuments.set(current.filePath, source);
174
+ for (const reference of extractLocalReferences(source)) {
175
+ referencedTargets.add(reference.target);
176
+ const resolved = resolveReferencePath(skillDir, current.filePath, reference.target);
177
+ if (!isInside(skillDir, resolved)) {
178
+ issue(issues, {
179
+ code: "skill-reference-outside-root",
180
+ severity: "error",
181
+ skill: name,
182
+ skillPath,
183
+ filePath: current.filePath,
184
+ line: reference.line,
185
+ message: `Local reference escapes the skill directory: ${reference.target}`
186
+ });
187
+ continue;
188
+ }
189
+ const relativeTarget = toSkillRelativePath(skillDir, resolved);
190
+ if (!isPublishedSkillPath(relativeTarget)) {
191
+ issue(issues, {
192
+ code: "skill-reference-unpublished",
193
+ severity: "error",
194
+ skill: name,
195
+ skillPath,
196
+ filePath: current.filePath,
197
+ line: reference.line,
198
+ message: `Local reference is outside SKILL.md, references/, scripts/, or assets/ and will not be published: ${reference.target}`
199
+ });
200
+ continue;
201
+ }
202
+ if (!existsSync(resolved) || !lstatSync(resolved).isFile()) {
203
+ issue(issues, {
204
+ code: "skill-reference-broken",
205
+ severity: "error",
206
+ skill: name,
207
+ skillPath,
208
+ filePath: current.filePath,
209
+ line: reference.line,
210
+ message: `Local skill reference does not resolve to a regular file: ${reference.target}`
211
+ });
212
+ continue;
213
+ }
214
+ validReferencePaths.add(relativeTarget);
215
+ if (!MARKDOWN_EXTENSIONS.has(path.extname(resolved).toLowerCase())) continue;
216
+ const nextDepth = current.depth + 1;
217
+ const previousDepth = visitedDepth.get(resolved);
218
+ if (resolved !== skillPath && previousDepth === void 0 && nextDepth > config.maxReferenceDepth) issue(issues, {
219
+ code: "skill-reference-depth-exceeded",
220
+ severity: "warning",
221
+ skill: name,
222
+ skillPath,
223
+ filePath: current.filePath,
224
+ line: reference.line,
225
+ message: `Reference chain reaches depth ${nextDepth}, exceeding the configured maximum of ${config.maxReferenceDepth}: ${reference.target}`
226
+ });
227
+ if (previousDepth !== void 0 && previousDepth <= nextDepth) continue;
228
+ visitedDepth.set(resolved, nextDepth);
229
+ referenceQueue.push({
230
+ filePath: resolved,
231
+ depth: nextDepth
232
+ });
233
+ }
234
+ }
235
+ const scriptPaths = listRegularFiles(path.join(skillDir, "scripts"));
236
+ const documentation = [...markdownDocuments.values()].join("\n\n");
237
+ if ((config.compatibility === "always" || config.compatibility === "when-needed" && (scriptPaths.length > 0 || REQUIREMENT_PATTERN.test(documentation))) && frontmatter.valid && !frontmatter.data.compatibility?.trim()) issue(issues, {
238
+ code: "skill-compatibility-missing",
239
+ severity: "warning",
240
+ skill: name,
241
+ skillPath,
242
+ filePath: skillPath,
243
+ line: 1,
244
+ message: "Skill instructions require tools, environment capabilities, or scripts but frontmatter does not declare compatibility requirements."
245
+ });
246
+ if (config.checkScripts && scriptPaths.length > 0) {
247
+ const dependencyDocumented = Boolean(frontmatter.valid && frontmatter.data.compatibility?.trim()) || DEPENDENCY_DOCUMENTATION_PATTERN.test(documentation);
248
+ const validationDocumented = VALIDATION_DOCUMENTATION_PATTERN.test(documentation);
249
+ for (const scriptPath of scriptPaths) {
250
+ const relativeScript = toSkillRelativePath(skillDir, scriptPath);
251
+ if (!validReferencePaths.has(relativeScript)) issue(issues, {
252
+ code: "skill-script-undocumented",
253
+ severity: "warning",
254
+ skill: name,
255
+ skillPath,
256
+ filePath: scriptPath,
257
+ line: 1,
258
+ message: `Script is bundled but never referenced by SKILL.md or a reachable reference: ${relativeScript}`
259
+ });
260
+ if (!dependencyDocumented) issue(issues, {
261
+ code: "skill-script-dependencies-undocumented",
262
+ severity: "warning",
263
+ skill: name,
264
+ skillPath,
265
+ filePath: scriptPath,
266
+ line: 1,
267
+ message: `Document required runtimes/packages or explicitly state that ${relativeScript} is self-contained.`
268
+ });
269
+ if (!validationDocumented) issue(issues, {
270
+ code: "skill-script-validation-undocumented",
271
+ severity: "warning",
272
+ skill: name,
273
+ skillPath,
274
+ filePath: scriptPath,
275
+ line: 1,
276
+ message: `Document how to validate ${relativeScript}, including an expected result, test, --check, or --dry-run command.`
277
+ });
278
+ }
279
+ }
280
+ return {
281
+ summary: {
282
+ name,
283
+ skillPath,
284
+ lineCount,
285
+ estimatedInstructionTokens,
286
+ referenceCount: referencedTargets.size,
287
+ scriptCount: scriptPaths.length
288
+ },
289
+ issues
290
+ };
291
+ }
292
+ function analyzeConfiguredAgentSkillsProgressiveDisclosure(input, options = {}) {
293
+ const config = resolveDocsAgentSkillsProgressiveDisclosureConfig(input);
294
+ const analyses = resolveConfiguredAgentSkillPathsSync(input, options).map((skillPath) => analyzeOneSkill(skillPath, config));
295
+ return {
296
+ config,
297
+ skills: analyses.map((analysis) => analysis.summary),
298
+ issues: analyses.flatMap((analysis) => analysis.issues).sort((left, right) => {
299
+ const fileOrder = left.filePath.localeCompare(right.filePath);
300
+ if (fileOrder !== 0) return fileOrder;
301
+ const lineOrder = (left.line ?? 0) - (right.line ?? 0);
302
+ return lineOrder !== 0 ? lineOrder : left.code.localeCompare(right.code);
303
+ })
304
+ };
305
+ }
306
+
307
+ //#endregion
308
+ export { estimateAgentSkillInstructionTokens as n, resolveDocsAgentSkillsProgressiveDisclosureConfig as r, analyzeConfiguredAgentSkillsProgressiveDisclosure as t };
@@ -1,4 +1,4 @@
1
- import { f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, j as buildDocsPublishedAgentSkill } from "./standards-discovery-BKlEnK_H.mjs";
1
+ import { f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, j as buildDocsPublishedAgentSkill } from "./standards-discovery-Ckx0tN7B.mjs";
2
2
  import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
3
3
  import path from "node:path";
4
4
  import { createHash } from "node:crypto";
@@ -1,5 +1,5 @@
1
- import { tt as DocsAgentSkillsInput } from "./types-DQl2dvDl.mjs";
2
- import { z as DocsPublishedAgentSkill } from "./standards-discovery-UdXpOfmN.mjs";
1
+ import { tt as DocsAgentSkillsInput } from "./types-CigzkdLB.mjs";
2
+ import { z as DocsPublishedAgentSkill } from "./standards-discovery-CG_cZRSx.mjs";
3
3
 
4
4
  //#region src/agent-skills-server.d.ts
5
5
  interface ResolveConfiguredAgentSkillsOptions {
@@ -1,6 +1,6 @@
1
- import { tt as DocsAgentSkillsInput } from "./types-DQl2dvDl.mjs";
2
- import { z as DocsPublishedAgentSkill } from "./standards-discovery-UdXpOfmN.mjs";
3
- import { t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-aKgt9CR9.mjs";
1
+ import { tt as DocsAgentSkillsInput } from "./types-CigzkdLB.mjs";
2
+ import { z as DocsPublishedAgentSkill } from "./standards-discovery-CG_cZRSx.mjs";
3
+ import { t as ResolveConfiguredAgentSkillsOptions } from "./agent-skills-server-DEqyYAhL.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,5 +1,5 @@
1
- import "./standards-discovery-BKlEnK_H.mjs";
2
- import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-D5qYU19g.mjs";
1
+ import "./standards-discovery-Ckx0tN7B.mjs";
2
+ import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-CwmzAzf_.mjs";
3
3
 
4
4
  //#region src/agent-skills-vite.ts
5
5
  const DOCS_AGENT_SKILLS_BUNDLE_MODULE = "@farming-labs/docs/agent-skills-bundle";
@@ -1,10 +1,10 @@
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-D68WI6-N.mjs";
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-CTOUI2BK.mjs";
2
2
  import "./markdown-sections-7OoA7ylx.mjs";
3
- import "./standards-discovery-BKlEnK_H.mjs";
4
- import "./content-change-hydration-CiMxs3LF.mjs";
5
- import { C as resolveApiReferenceOpenApiDiscovery } from "./sitemap-server-_AeFxJQB.mjs";
6
- import "./agent-skills-server-D5qYU19g.mjs";
7
- import "./agent-evals-CEvUQb_Z.mjs";
3
+ import "./standards-discovery-Ckx0tN7B.mjs";
4
+ import "./content-change-hydration-DLBinuFR.mjs";
5
+ import { C as resolveApiReferenceOpenApiDiscovery } from "./sitemap-server-Ds5z4WQB.mjs";
6
+ import "./agent-skills-server-CwmzAzf_.mjs";
7
+ import "./agent-evals-DCptRrdP.mjs";
8
8
  import { resolveDocsMcpConfig } from "./mcp.mjs";
9
9
  import "./code-blocks-0wjOsqdJ.mjs";
10
10
  import "./server.mjs";
@@ -108,7 +108,7 @@ async function main() {
108
108
  ]
109
109
  };
110
110
  if (!parsedCommand.command || parsedCommand.command === "init") {
111
- const { init } = await import("../init-DAkI0Lkf.mjs");
111
+ const { init } = await import("../init-D0GcUKJ0.mjs");
112
112
  await init(initOptions);
113
113
  } else if (parsedCommand.command === "dev") {
114
114
  const { dev } = await import("../dev-kjaxOOla.mjs");
@@ -141,10 +141,10 @@ async function main() {
141
141
  printCloudHelp();
142
142
  process.exit(1);
143
143
  } else if (parsedCommand.command === "mcp") {
144
- const { runMcp } = await import("../mcp-CwTbgrZm.mjs");
144
+ const { runMcp } = await import("../mcp-7bvRe9Da.mjs");
145
145
  await runMcp(mcpOptions);
146
146
  } else if (parsedCommand.command === "agent" && subcommand === "compact") {
147
- const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-DuwSq3C7.mjs").then((n) => n.t);
147
+ const { compactAgentDocs, parseAgentCompactArgs, printAgentCompactHelp } = await import("../agent-FyPQ2AZ4.mjs").then((n) => n.t);
148
148
  const agentCompactOptions = parseAgentCompactArgs(args.slice(2));
149
149
  if (agentCompactOptions.help) {
150
150
  printAgentCompactHelp();
@@ -152,7 +152,7 @@ async function main() {
152
152
  }
153
153
  await compactAgentDocs(agentCompactOptions);
154
154
  } else if (parsedCommand.command === "agent" && subcommand === "export") {
155
- const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-BMljO4ll.mjs");
155
+ const { exportAgentBundle, parseAgentExportArgs, printAgentExportHelp } = await import("../agent-export-Di1Ofstb.mjs");
156
156
  const agentExportOptions = parseAgentExportArgs(args.slice(2));
157
157
  if (agentExportOptions.help) {
158
158
  printAgentExportHelp();
@@ -162,13 +162,13 @@ async function main() {
162
162
  } else if (parsedCommand.command === "agent") {
163
163
  console.error(pc.red(`Unknown agent subcommand: ${subcommand ?? "(missing)"}`));
164
164
  console.error();
165
- const { printAgentCompactHelp } = await import("../agent-DuwSq3C7.mjs").then((n) => n.t);
166
- const { printAgentExportHelp } = await import("../agent-export-BMljO4ll.mjs");
165
+ const { printAgentCompactHelp } = await import("../agent-FyPQ2AZ4.mjs").then((n) => n.t);
166
+ const { printAgentExportHelp } = await import("../agent-export-Di1Ofstb.mjs");
167
167
  printAgentCompactHelp();
168
168
  printAgentExportHelp();
169
169
  process.exit(1);
170
170
  } else if (parsedCommand.command === "agents" && subcommand === "generate") {
171
- const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-D1j3fKjv.mjs");
171
+ const { generateAgents, parseAgentsGenerateArgs, printAgentsGenerateHelp } = await import("../agents-DjUz5voa.mjs");
172
172
  const agentsOptions = parseAgentsGenerateArgs(args.slice(2));
173
173
  if (agentsOptions.help) {
174
174
  printAgentsGenerateHelp();
@@ -178,11 +178,28 @@ async function main() {
178
178
  } else if (parsedCommand.command === "agents") {
179
179
  console.error(pc.red(`Unknown agents subcommand: ${subcommand ?? "(missing)"}`));
180
180
  console.error();
181
- const { printAgentsGenerateHelp } = await import("../agents-D1j3fKjv.mjs");
181
+ const { printAgentsGenerateHelp } = await import("../agents-DjUz5voa.mjs");
182
182
  printAgentsGenerateHelp();
183
183
  process.exit(1);
184
+ } else if (parsedCommand.command === "skills" && subcommand === "scaffold") {
185
+ const { parseSkillScaffoldArgs, printSkillScaffoldHelp, scaffoldSkillFromContracts } = await import("../skills-CPDwsMq4.mjs");
186
+ const skillOptions = parseSkillScaffoldArgs(args.slice(2));
187
+ if (skillOptions.help) {
188
+ printSkillScaffoldHelp();
189
+ return;
190
+ }
191
+ await scaffoldSkillFromContracts(skillOptions);
192
+ } else if (parsedCommand.command === "skills" && (subcommand === "--help" || subcommand === "-h")) {
193
+ const { printSkillScaffoldHelp } = await import("../skills-CPDwsMq4.mjs");
194
+ printSkillScaffoldHelp();
195
+ } else if (parsedCommand.command === "skills") {
196
+ console.error(pc.red(`Unknown skills subcommand: ${subcommand ?? "(missing)"}`));
197
+ console.error();
198
+ const { printSkillScaffoldHelp } = await import("../skills-CPDwsMq4.mjs");
199
+ printSkillScaffoldHelp();
200
+ process.exit(1);
184
201
  } else if (parsedCommand.command === "doctor") {
185
- const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-DaZp33gE.mjs");
202
+ const { parseDoctorArgs, printDoctorHelp, runDoctor } = await import("../doctor-DUnOjP9T.mjs");
186
203
  const doctorOptions = parseDoctorArgs(args.slice(1));
187
204
  if (doctorOptions.help) {
188
205
  printDoctorHelp();
@@ -190,7 +207,7 @@ async function main() {
190
207
  }
191
208
  await runDoctor(doctorOptions);
192
209
  } else if (parsedCommand.command === "review") {
193
- const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-BMO-4X_5.mjs");
210
+ const { parseReviewArgs, printReviewHelp, runReview } = await import("../review-DEnzotkg.mjs");
194
211
  const reviewOptions = parseReviewArgs(args.slice(1));
195
212
  if (reviewOptions.help) {
196
213
  printReviewHelp();
@@ -212,7 +229,7 @@ async function main() {
212
229
  printCodeBlocksValidateHelp();
213
230
  process.exit(1);
214
231
  } else if (parsedCommand.command === "search" && subcommand === "sync") {
215
- const { syncSearch } = await import("../search-ZY4rf1fy.mjs");
232
+ const { syncSearch } = await import("../search-DznddPqw.mjs");
216
233
  await syncSearch(searchSyncOptions);
217
234
  } else if (parsedCommand.command === "search") {
218
235
  console.error(pc.red(`Unknown search subcommand: ${subcommand ?? "(missing)"}`));
@@ -220,7 +237,7 @@ async function main() {
220
237
  printHelp();
221
238
  process.exit(1);
222
239
  } else if (parsedCommand.command === "sitemap" && subcommand === "generate") {
223
- const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-CAzZFDic.mjs");
240
+ const { generateSitemap, parseSitemapGenerateArgs, printSitemapGenerateHelp } = await import("../sitemap-DCsrVSPf.mjs");
224
241
  const sitemapOptions = parseSitemapGenerateArgs(args.slice(2));
225
242
  if (sitemapOptions.help) {
226
243
  printSitemapGenerateHelp();
@@ -230,11 +247,11 @@ async function main() {
230
247
  } else if (parsedCommand.command === "sitemap") {
231
248
  console.error(pc.red(`Unknown sitemap subcommand: ${subcommand ?? "(missing)"}`));
232
249
  console.error();
233
- const { printSitemapGenerateHelp } = await import("../sitemap-CAzZFDic.mjs");
250
+ const { printSitemapGenerateHelp } = await import("../sitemap-DCsrVSPf.mjs");
234
251
  printSitemapGenerateHelp();
235
252
  process.exit(1);
236
253
  } else if (parsedCommand.command === "robots" && subcommand === "generate") {
237
- const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-CLtbWSEJ.mjs");
254
+ const { generateRobots, parseRobotsGenerateArgs, printRobotsGenerateHelp } = await import("../robots-DXy1xW3D.mjs");
238
255
  const robotsOptions = parseRobotsGenerateArgs(args.slice(2));
239
256
  if (robotsOptions.help) {
240
257
  printRobotsGenerateHelp();
@@ -244,11 +261,11 @@ async function main() {
244
261
  } else if (parsedCommand.command === "robots") {
245
262
  console.error(pc.red(`Unknown robots subcommand: ${subcommand ?? "(missing)"}`));
246
263
  console.error();
247
- const { printRobotsGenerateHelp } = await import("../robots-CLtbWSEJ.mjs");
264
+ const { printRobotsGenerateHelp } = await import("../robots-DXy1xW3D.mjs");
248
265
  printRobotsGenerateHelp();
249
266
  process.exit(1);
250
267
  } else if (parsedCommand.command === "downgrade") {
251
- const { downgrade } = await import("../downgrade-w7e6Se0L.mjs");
268
+ const { downgrade } = await import("../downgrade-Wcgqbfv_.mjs");
252
269
  const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
253
270
  const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
254
271
  await downgrade({
@@ -257,7 +274,7 @@ async function main() {
257
274
  dryRun: flags["dry-run"] === true
258
275
  });
259
276
  } else if (parsedCommand.command === "upgrade") {
260
- const { upgrade } = await import("../upgrade-oz-GChgt.mjs");
277
+ const { upgrade } = await import("../upgrade-BSCjUH0V.mjs");
261
278
  const framework = (typeof flags.framework === "string" ? flags.framework : void 0) ?? (args[1] && !args[1].startsWith("--") ? args[1] : void 0);
262
279
  const hasVersionFlag = args.includes("--version") || args.some((arg) => arg.startsWith("--version="));
263
280
  const version = typeof flags.version === "string" ? flags.version : hasVersionFlag ? "" : void 0;
@@ -291,6 +308,7 @@ ${pc.dim("Commands:")}
291
308
  ${pc.cyan("cloud")} Docs Cloud utilities (${pc.dim("init")}, ${pc.dim("check")}, ${pc.dim("deploy")}, ${pc.dim("preview")}, ${pc.dim("sync")})
292
309
  ${pc.cyan("agent")} Agent utilities (${pc.dim("compact")} page context, ${pc.dim("export")} static bundles)
293
310
  ${pc.cyan("agents")} AGENTS.md utilities (${pc.dim("generate")} for static agent instructions)
311
+ ${pc.cyan("skills")} Agent Skills utilities (${pc.dim("scaffold")} from structured page contracts)
294
312
  ${pc.cyan("doctor")} Inspect and score agent or reader-facing docs quality
295
313
  ${pc.cyan("review")} Review changed docs files and wire Docs Review CI
296
314
  ${pc.cyan("codeblocks")} Validate fenced MDX code blocks (${pc.dim("validate")})
@@ -365,6 +383,15 @@ ${pc.dim("Options for agent export:")}
365
383
  ${pc.cyan("agent export --check")} Fail when the static Agent Bundle is stale
366
384
  ${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
367
385
 
386
+ ${pc.dim("Options for skills scaffold:")}
387
+ ${pc.cyan("skills scaffold [name]")} Compile page agent contracts into a compact ${pc.dim("SKILL.md")} router and focused references
388
+ ${pc.cyan("--output <directory>")} Write to a full skill directory; defaults to ${pc.dim("skills/<name>")}
389
+ ${pc.cyan("--include <route>")} Include a route prefix; repeat for multiple focused sections
390
+ ${pc.cyan("--check")} Fail when generated skill files are missing or stale
391
+ ${pc.cyan("--dry-run")} Preview generated skill changes without writing files
392
+ ${pc.cyan("--force")} Replace colliding user-owned files in the selected directory
393
+ ${pc.cyan("--config <path>")} Use a custom docs config path instead of ${pc.dim("docs.config.ts[x]")}
394
+
368
395
  ${pc.dim("Options for doctor:")}
369
396
  ${pc.cyan("doctor")} Score the current docs app for agent-readiness
370
397
  ${pc.cyan("doctor --agent")} Same as ${pc.cyan("doctor")}; explicit agent scoring mode
@@ -1,4 +1,4 @@
1
- import { ot as DocsAnalyticsConfig } from "../types-DQl2dvDl.mjs";
1
+ import { ot as DocsAnalyticsConfig } from "../types-CigzkdLB.mjs";
2
2
  import { ReactNode } from "react";
3
3
 
4
4
  //#region src/docs-cloud-client.d.ts
@@ -1,4 +1,4 @@
1
- import { bt as DocsCloudConfig, ot as DocsAnalyticsConfig, t as AIConfig } from "./types-DQl2dvDl.mjs";
1
+ import { bt as DocsCloudConfig, ot as DocsAnalyticsConfig, t as AIConfig } from "./types-CigzkdLB.mjs";
2
2
 
3
3
  //#region src/cloud-ask-ai.d.ts
4
4
  interface DocsCloudAskAIConfig {
@@ -1,5 +1,6 @@
1
- import { $t as buildDocsRetrievalDigestProjection, Fn as createDocsPaginationCursor, G as isDocsAgentDiscoveryRequest, Jt as resolveDocsContentChangesConfig, K as isDocsAgentsRequest, Ln as resolveDocsPaginationOffset, Pn as DocsPaginationCursorError, Q as isDocsSkillRequest, Rn as digestDocsRetrievalContent, _t as resolveDocsMarkdownRequest, dt as resolveDocsAgentsFormat, lt as resolveDocsAgentFeedbackConfig, pt as resolveDocsLlmsTxtRequest, qt as isDocsContentChangesRequest, ut as resolveDocsAgentFeedbackRequest, xt as resolveDocsSkillFormat } from "./agent-D68WI6-N.mjs";
1
+ import { $t as buildDocsRetrievalDigestProjection, Fn as createDocsPaginationCursor, G as isDocsAgentDiscoveryRequest, Jt as resolveDocsContentChangesConfig, K as isDocsAgentsRequest, Ln as resolveDocsPaginationOffset, Pn as DocsPaginationCursorError, Q as isDocsSkillRequest, _t as resolveDocsMarkdownRequest, dt as resolveDocsAgentsFormat, lt as resolveDocsAgentFeedbackConfig, pt as resolveDocsLlmsTxtRequest, qt as isDocsContentChangesRequest, ut as resolveDocsAgentFeedbackRequest, xt as resolveDocsSkillFormat } from "./agent-CTOUI2BK.mjs";
2
2
  import { s as parseDocsMarkdownSections } from "./markdown-sections-7OoA7ylx.mjs";
3
+ import { K as digestDocsRetrievalContent } from "./standards-discovery-Ckx0tN7B.mjs";
3
4
  import matter from "gray-matter";
4
5
 
5
6
  //#region src/telemetry.ts
@@ -1,5 +1,5 @@
1
- import { ct as DocsAnalyticsEventInput, ot as DocsAnalyticsConfig, st as DocsAnalyticsEvent } from "./types-DQl2dvDl.mjs";
2
- import { n as DocsCloudAskAIResponseOptions, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-Bx-qtqHL.mjs";
1
+ import { ct as DocsAnalyticsEventInput, ot as DocsAnalyticsConfig, st as DocsAnalyticsEvent } from "./types-CigzkdLB.mjs";
2
+ import { n as DocsCloudAskAIResponseOptions, t as DocsCloudAskAIConfig } from "./cloud-ask-ai-uzDpy0um.mjs";
3
3
 
4
4
  //#region src/docs-cloud-server.d.ts
5
5
  type DocsCloudRuntimeValue<T = string> = T | undefined | null | (() => T | undefined | null);
@@ -1,21 +1,22 @@
1
- import { i as scanDocsPageTargets, n as compactAgentDocs, r as inspectAgentCompactionState } from "./agent-DuwSq3C7.mjs";
2
- import { d as httpLinkHeaderHasTargetRelation, f as AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES, p as readAgentSkillDocumentFromTar } from "./prompt-references-ClTizbsa.mjs";
3
- import { A as buildDocsAgentDiscoverySpec, At as DEFAULT_SITEMAP_XML_ROUTE, F as buildDocsMcpEndpointCandidates, Gn as DEFAULT_MCP_WELL_KNOWN_ROUTE, It as resolveDocsSitemapConfig, M as buildDocsConfigMap, Ot as DEFAULT_SITEMAP_MD_ROUTE, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, Un as DEFAULT_MCP_PUBLIC_ROUTE, Xn as isDocsMcpOAuthScopeToken, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, er as normalizeDocsMcpAuthorizationServerUrls, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, pn as resolveAskAISearchRequestConfig, qn as getDocsMcpProtectedResourceMetadataRoutes, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-D68WI6-N.mjs";
1
+ import { i as scanDocsPageTargets, n as compactAgentDocs, r as inspectAgentCompactionState } from "./agent-FyPQ2AZ4.mjs";
2
+ import { d as httpLinkHeaderHasTargetRelation, f as AGENT_SKILL_ARCHIVE_MAX_UNCOMPRESSED_BYTES, p as readAgentSkillDocumentFromTar } from "./prompt-references-B6gxePm8.mjs";
3
+ import { A as buildDocsAgentDiscoverySpec, At as DEFAULT_SITEMAP_XML_ROUTE, F as buildDocsMcpEndpointCandidates, Gn as getDocsMcpProtectedResourceMetadataRoutes, It as resolveDocsSitemapConfig, Jn as isDocsMcpOAuthScopeToken, M as buildDocsConfigMap, Ot as DEFAULT_SITEMAP_MD_ROUTE, Qn as normalizeDocsMcpAuthorizationServerUrls, S as DEFAULT_SKILL_MD_WELL_KNOWN_ROUTE, T as DOCS_CONFIG_MAP_TOP_LEVEL_KEYS, Un as DEFAULT_MCP_WELL_KNOWN_ROUTE, Vn as DEFAULT_MCP_PUBLIC_ROUTE, c as DEFAULT_AGENT_SPEC_WELL_KNOWN_JSON_ROUTE, h as DEFAULT_LLMS_FULL_TXT_ROUTE, i as DEFAULT_AGENT_FEEDBACK_ROUTE, kt as DEFAULT_SITEMAP_MD_WELL_KNOWN_ROUTE, l as DEFAULT_AGENT_SPEC_WELL_KNOWN_ROUTE, n as DEFAULT_AGENTS_MD_WELL_KNOWN_ROUTE, pn as resolveAskAISearchRequestConfig, t as DEFAULT_AGENTS_MD_ROUTE, v as DEFAULT_LLMS_TXT_ROUTE, x as DEFAULT_SKILL_MD_ROUTE } from "./agent-CTOUI2BK.mjs";
4
4
  import { f as PAGE_AGENT_CONTRACT_FIELDS } from "./markdown-sections-7OoA7ylx.mjs";
5
+ import { I as resolveDocsDiscoveryApiRoute, _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, h as DEFAULT_AGENT_SKILL_FORMAT, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-Ckx0tN7B.mjs";
5
6
  import { isDocsAgentSkillName, validateDocsAgentSkillFrontmatter } from "./agent-skills-spec.mjs";
6
- import { I as resolveDocsDiscoveryApiRoute, _ as DEFAULT_API_CATALOG_FORMAT, d as DEFAULT_AGENT_SKILLS_ROUTE_PATTERN, f as DEFAULT_AGENT_SKILLS_ROUTE_PREFIX, h as DEFAULT_AGENT_SKILL_FORMAT, l as DEFAULT_AGENT_SKILLS_INDEX_FORMAT, n as API_CATALOG_MEDIA_TYPE, r as API_CATALOG_PROFILE_URI, t as AGENT_SKILLS_DISCOVERY_SCHEMA_URI, u as DEFAULT_AGENT_SKILLS_INDEX_ROUTE, v as DEFAULT_API_CATALOG_ROUTE } from "./standards-discovery-BKlEnK_H.mjs";
7
- import "./content-change-hydration-CiMxs3LF.mjs";
8
- import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-HWKsiZQS.mjs";
7
+ import "./content-change-hydration-DLBinuFR.mjs";
8
+ import { a as analyzeDocsRobotsTxt, n as DEFAULT_ROBOTS_TXT_ROUTE, u as resolveDocsRobotsConfig } from "./robots-DaU38DZw.mjs";
9
9
  import { a as resolveDocsMetadataBaseUrl } from "./metadata-N252j5_a.mjs";
10
- import "./sitemap-server-_AeFxJQB.mjs";
11
- import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-D5qYU19g.mjs";
12
- import { t as runDocsGoldenTasks } from "./agent-evals-CEvUQb_Z.mjs";
10
+ import "./sitemap-server-Ds5z4WQB.mjs";
11
+ import { r as resolveConfiguredAgentSkills } from "./agent-skills-server-CwmzAzf_.mjs";
12
+ import { t as runDocsGoldenTasks } from "./agent-evals-DCptRrdP.mjs";
13
13
  import { createFilesystemDocsMcpSource, getDocsConfigSchema, resolveDocsMcpConfig } from "./mcp.mjs";
14
14
  import "./code-blocks-0wjOsqdJ.mjs";
15
15
  import "./server.mjs";
16
16
  import { _ as resolveDocsContentDir, d as readNavTitle, g as resolveDocsConfigPath, h as readTopLevelStringProperty, l as readBooleanProperty, r as extractTopLevelConfigObject, s as loadDocsConfigModuleResultWithProjectEnv, t as extractNestedObjectLiteral } from "./config-Wcdj-D0a.mjs";
17
17
  import { t as detectFramework } from "./utils-DpiIioYb.mjs";
18
- import { a as createAgentUsefulnessPagesFromMcp, i as analyzeAgentUsefulness, n as analyzeConfiguredAgentSkillsProgressiveDisclosure, r as analyzeAgentSurfaceDrift, t as resolveGoldenEvaluationInput } from "./golden-evaluations-BKxcJ1qw.mjs";
18
+ import { i as createAgentUsefulnessPagesFromMcp, n as analyzeAgentSurfaceDrift, r as analyzeAgentUsefulness, t as resolveGoldenEvaluationInput } from "./golden-evaluations-CNDwoUOe.mjs";
19
+ import { t as analyzeConfiguredAgentSkillsProgressiveDisclosure } from "./agent-skills-progressive-disclosure-BVvj7nM8.mjs";
19
20
  import { existsSync, lstatSync, readFileSync, readdirSync } from "node:fs";
20
21
  import path from "node:path";
21
22
  import { createHash } from "node:crypto";
@@ -1,5 +1,5 @@
1
1
  import { c as fileExists, o as exec, s as execOutput } from "./utils-DpiIioYb.mjs";
2
- import { a as getPackagesForFramework, c as resolveDocsPackageManager, l as validateUpgradeVersion, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework } from "./package-version-n5AFur8a.mjs";
2
+ import { a as getPackagesForFramework, c as resolveDocsPackageManager, l as validateUpgradeVersion, r as buildDocsPackageInstallCommand, s as resolveDocsPackageFramework } from "./package-version-B3PJ6IDr.mjs";
3
3
  import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import pc from "picocolors";