@sentry/warden 0.22.0 → 0.23.0

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 (308) hide show
  1. package/.oxlintrc.json +169 -0
  2. package/CHANGELOG.md +210 -0
  3. package/README.md +1 -1
  4. package/dist/cli/args.d.ts +6 -2
  5. package/dist/cli/args.d.ts.map +1 -1
  6. package/dist/cli/args.js +175 -207
  7. package/dist/cli/args.js.map +1 -1
  8. package/dist/cli/commands/add.d.ts.map +1 -1
  9. package/dist/cli/commands/add.js +16 -5
  10. package/dist/cli/commands/add.js.map +1 -1
  11. package/dist/cli/commands/build.d.ts +13 -0
  12. package/dist/cli/commands/build.d.ts.map +1 -0
  13. package/dist/cli/commands/build.js +384 -0
  14. package/dist/cli/commands/build.js.map +1 -0
  15. package/dist/cli/commands/init.d.ts.map +1 -1
  16. package/dist/cli/commands/init.js +10 -2
  17. package/dist/cli/commands/init.js.map +1 -1
  18. package/dist/cli/commands/runs.d.ts.map +1 -1
  19. package/dist/cli/commands/runs.js +12 -6
  20. package/dist/cli/commands/runs.js.map +1 -1
  21. package/dist/cli/commands/sync.d.ts.map +1 -1
  22. package/dist/cli/commands/sync.js +4 -1
  23. package/dist/cli/commands/sync.js.map +1 -1
  24. package/dist/cli/context.d.ts.map +1 -1
  25. package/dist/cli/context.js +8 -1
  26. package/dist/cli/context.js.map +1 -1
  27. package/dist/cli/files.d.ts.map +1 -1
  28. package/dist/cli/files.js +27 -9
  29. package/dist/cli/files.js.map +1 -1
  30. package/dist/cli/help.d.ts +4 -0
  31. package/dist/cli/help.d.ts.map +1 -0
  32. package/dist/cli/help.js +448 -0
  33. package/dist/cli/help.js.map +1 -0
  34. package/dist/cli/index.js +2 -13
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/cli/input.d.ts +12 -0
  37. package/dist/cli/input.d.ts.map +1 -1
  38. package/dist/cli/input.js +60 -0
  39. package/dist/cli/input.js.map +1 -1
  40. package/dist/cli/main.d.ts +39 -2
  41. package/dist/cli/main.d.ts.map +1 -1
  42. package/dist/cli/main.js +264 -74
  43. package/dist/cli/main.js.map +1 -1
  44. package/dist/cli/output/box.js +1 -1
  45. package/dist/cli/output/formatters.d.ts +10 -2
  46. package/dist/cli/output/formatters.d.ts.map +1 -1
  47. package/dist/cli/output/formatters.js +32 -9
  48. package/dist/cli/output/formatters.js.map +1 -1
  49. package/dist/cli/output/index.d.ts +1 -1
  50. package/dist/cli/output/index.d.ts.map +1 -1
  51. package/dist/cli/output/index.js +1 -1
  52. package/dist/cli/output/index.js.map +1 -1
  53. package/dist/cli/output/ink-runner.d.ts +3 -1
  54. package/dist/cli/output/ink-runner.d.ts.map +1 -1
  55. package/dist/cli/output/ink-runner.js +64 -28
  56. package/dist/cli/output/ink-runner.js.map +1 -1
  57. package/dist/cli/output/jsonl.d.ts +37 -0
  58. package/dist/cli/output/jsonl.d.ts.map +1 -1
  59. package/dist/cli/output/jsonl.js +6 -0
  60. package/dist/cli/output/jsonl.js.map +1 -1
  61. package/dist/cli/output/live-status.d.ts +48 -0
  62. package/dist/cli/output/live-status.d.ts.map +1 -0
  63. package/dist/cli/output/live-status.js +173 -0
  64. package/dist/cli/output/live-status.js.map +1 -0
  65. package/dist/cli/output/reporter.d.ts +4 -0
  66. package/dist/cli/output/reporter.d.ts.map +1 -1
  67. package/dist/cli/output/reporter.js +20 -3
  68. package/dist/cli/output/reporter.js.map +1 -1
  69. package/dist/cli/output/tasks.d.ts +8 -5
  70. package/dist/cli/output/tasks.d.ts.map +1 -1
  71. package/dist/cli/output/tasks.js +113 -71
  72. package/dist/cli/output/tasks.js.map +1 -1
  73. package/dist/cli/signals.d.ts +15 -0
  74. package/dist/cli/signals.d.ts.map +1 -0
  75. package/dist/cli/signals.js +26 -0
  76. package/dist/cli/signals.js.map +1 -0
  77. package/dist/config/loader.d.ts +48 -7
  78. package/dist/config/loader.d.ts.map +1 -1
  79. package/dist/config/loader.js +228 -32
  80. package/dist/config/loader.js.map +1 -1
  81. package/dist/config/schema.d.ts +55 -0
  82. package/dist/config/schema.d.ts.map +1 -1
  83. package/dist/config/schema.js +34 -2
  84. package/dist/config/schema.js.map +1 -1
  85. package/dist/diff/context.d.ts +9 -2
  86. package/dist/diff/context.d.ts.map +1 -1
  87. package/dist/diff/context.js +65 -17
  88. package/dist/diff/context.js.map +1 -1
  89. package/dist/evals/runner.d.ts.map +1 -1
  90. package/dist/evals/runner.js +16 -0
  91. package/dist/evals/runner.js.map +1 -1
  92. package/dist/event/context.d.ts.map +1 -1
  93. package/dist/event/context.js +1 -0
  94. package/dist/event/context.js.map +1 -1
  95. package/dist/event/schedule-context.d.ts.map +1 -1
  96. package/dist/event/schedule-context.js +1 -0
  97. package/dist/event/schedule-context.js.map +1 -1
  98. package/dist/index.d.ts +6 -6
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +3 -3
  101. package/dist/index.js.map +1 -1
  102. package/dist/output/dedup.d.ts +8 -11
  103. package/dist/output/dedup.d.ts.map +1 -1
  104. package/dist/output/dedup.js +39 -37
  105. package/dist/output/dedup.js.map +1 -1
  106. package/dist/output/github-checks.d.ts +1 -0
  107. package/dist/output/github-checks.d.ts.map +1 -1
  108. package/dist/output/github-checks.js +9 -7
  109. package/dist/output/github-checks.js.map +1 -1
  110. package/dist/sdk/analyze.d.ts.map +1 -1
  111. package/dist/sdk/analyze.js +147 -277
  112. package/dist/sdk/analyze.js.map +1 -1
  113. package/dist/sdk/circuit-breaker.d.ts +26 -0
  114. package/dist/sdk/circuit-breaker.d.ts.map +1 -0
  115. package/dist/sdk/circuit-breaker.js +53 -0
  116. package/dist/sdk/circuit-breaker.js.map +1 -0
  117. package/dist/sdk/errors.d.ts +5 -0
  118. package/dist/sdk/errors.d.ts.map +1 -1
  119. package/dist/sdk/errors.js +27 -0
  120. package/dist/sdk/errors.js.map +1 -1
  121. package/dist/sdk/extract.d.ts +18 -9
  122. package/dist/sdk/extract.d.ts.map +1 -1
  123. package/dist/sdk/extract.js +95 -87
  124. package/dist/sdk/extract.js.map +1 -1
  125. package/dist/sdk/fix-quality.d.ts +5 -0
  126. package/dist/sdk/fix-quality.d.ts.map +1 -1
  127. package/dist/sdk/fix-quality.js +42 -23
  128. package/dist/sdk/fix-quality.js.map +1 -1
  129. package/dist/sdk/haiku.d.ts +6 -0
  130. package/dist/sdk/haiku.d.ts.map +1 -1
  131. package/dist/sdk/haiku.js +75 -49
  132. package/dist/sdk/haiku.js.map +1 -1
  133. package/dist/sdk/json-output.d.ts +31 -0
  134. package/dist/sdk/json-output.d.ts.map +1 -0
  135. package/dist/sdk/json-output.js +98 -0
  136. package/dist/sdk/json-output.js.map +1 -0
  137. package/dist/sdk/model-pricing.json +56 -16
  138. package/dist/sdk/post-process.d.ts +29 -0
  139. package/dist/sdk/post-process.d.ts.map +1 -0
  140. package/dist/sdk/post-process.js +65 -0
  141. package/dist/sdk/post-process.js.map +1 -0
  142. package/dist/sdk/prepare.d.ts.map +1 -1
  143. package/dist/sdk/prepare.js +4 -1
  144. package/dist/sdk/prepare.js.map +1 -1
  145. package/dist/sdk/pricing.d.ts +18 -0
  146. package/dist/sdk/pricing.d.ts.map +1 -1
  147. package/dist/sdk/pricing.js +108 -3
  148. package/dist/sdk/pricing.js.map +1 -1
  149. package/dist/sdk/prompt-sections.d.ts +56 -0
  150. package/dist/sdk/prompt-sections.d.ts.map +1 -0
  151. package/dist/sdk/prompt-sections.js +118 -0
  152. package/dist/sdk/prompt-sections.js.map +1 -0
  153. package/dist/sdk/prompt.d.ts +2 -17
  154. package/dist/sdk/prompt.d.ts.map +1 -1
  155. package/dist/sdk/prompt.js +15 -37
  156. package/dist/sdk/prompt.js.map +1 -1
  157. package/dist/sdk/report-files.d.ts +15 -0
  158. package/dist/sdk/report-files.d.ts.map +1 -0
  159. package/dist/sdk/report-files.js +20 -0
  160. package/dist/sdk/report-files.js.map +1 -0
  161. package/dist/sdk/runner.d.ts +9 -1
  162. package/dist/sdk/runner.d.ts.map +1 -1
  163. package/dist/sdk/runner.js +6 -0
  164. package/dist/sdk/runner.js.map +1 -1
  165. package/dist/sdk/runtimes/claude.d.ts +3 -0
  166. package/dist/sdk/runtimes/claude.d.ts.map +1 -0
  167. package/dist/sdk/runtimes/claude.js +376 -0
  168. package/dist/sdk/runtimes/claude.js.map +1 -0
  169. package/dist/sdk/runtimes/index.d.ts +12 -0
  170. package/dist/sdk/runtimes/index.d.ts.map +1 -0
  171. package/dist/sdk/runtimes/index.js +22 -0
  172. package/dist/sdk/runtimes/index.js.map +1 -0
  173. package/dist/sdk/runtimes/types.d.ts +116 -0
  174. package/dist/sdk/runtimes/types.d.ts.map +1 -0
  175. package/dist/sdk/runtimes/types.js +17 -0
  176. package/dist/sdk/runtimes/types.js.map +1 -0
  177. package/dist/sdk/types.d.ts +23 -2
  178. package/dist/sdk/types.d.ts.map +1 -1
  179. package/dist/sdk/types.js.map +1 -1
  180. package/dist/sdk/usage.d.ts +21 -6
  181. package/dist/sdk/usage.d.ts.map +1 -1
  182. package/dist/sdk/usage.js +36 -23
  183. package/dist/sdk/usage.js.map +1 -1
  184. package/dist/sdk/verify.d.ts +25 -0
  185. package/dist/sdk/verify.d.ts.map +1 -0
  186. package/dist/sdk/verify.js +226 -0
  187. package/dist/sdk/verify.js.map +1 -0
  188. package/dist/skill-builder/agentic.d.ts +33 -0
  189. package/dist/skill-builder/agentic.d.ts.map +1 -0
  190. package/dist/skill-builder/agentic.js +240 -0
  191. package/dist/skill-builder/agentic.js.map +1 -0
  192. package/dist/skill-builder/authoring-provider.d.ts +5 -0
  193. package/dist/skill-builder/authoring-provider.d.ts.map +1 -0
  194. package/dist/skill-builder/authoring-provider.js +70 -0
  195. package/dist/skill-builder/authoring-provider.js.map +1 -0
  196. package/dist/skill-builder/definition.d.ts +46 -0
  197. package/dist/skill-builder/definition.d.ts.map +1 -0
  198. package/dist/skill-builder/definition.js +171 -0
  199. package/dist/skill-builder/definition.js.map +1 -0
  200. package/dist/skill-builder/outline-contract.d.ts +113 -0
  201. package/dist/skill-builder/outline-contract.d.ts.map +1 -0
  202. package/dist/skill-builder/outline-contract.js +73 -0
  203. package/dist/skill-builder/outline-contract.js.map +1 -0
  204. package/dist/skill-builder/outline-state.d.ts +158 -0
  205. package/dist/skill-builder/outline-state.d.ts.map +1 -0
  206. package/dist/skill-builder/outline-state.js +87 -0
  207. package/dist/skill-builder/outline-state.js.map +1 -0
  208. package/dist/skill-builder/outline.d.ts +36 -0
  209. package/dist/skill-builder/outline.d.ts.map +1 -0
  210. package/dist/skill-builder/outline.js +345 -0
  211. package/dist/skill-builder/outline.js.map +1 -0
  212. package/dist/skill-builder/skill-contract.d.ts +97 -0
  213. package/dist/skill-builder/skill-contract.d.ts.map +1 -0
  214. package/dist/skill-builder/skill-contract.js +58 -0
  215. package/dist/skill-builder/skill-contract.js.map +1 -0
  216. package/dist/skill-builder/skill-prompts.d.ts +61 -0
  217. package/dist/skill-builder/skill-prompts.d.ts.map +1 -0
  218. package/dist/skill-builder/skill-prompts.js +285 -0
  219. package/dist/skill-builder/skill-prompts.js.map +1 -0
  220. package/dist/skill-builder/skill.d.ts +23 -0
  221. package/dist/skill-builder/skill.d.ts.map +1 -0
  222. package/dist/skill-builder/skill.js +563 -0
  223. package/dist/skill-builder/skill.js.map +1 -0
  224. package/dist/skills/index.d.ts +2 -2
  225. package/dist/skills/index.d.ts.map +1 -1
  226. package/dist/skills/index.js +1 -1
  227. package/dist/skills/index.js.map +1 -1
  228. package/dist/skills/loader.d.ts +20 -6
  229. package/dist/skills/loader.d.ts.map +1 -1
  230. package/dist/skills/loader.js +88 -141
  231. package/dist/skills/loader.js.map +1 -1
  232. package/dist/skills/remote.d.ts +11 -7
  233. package/dist/skills/remote.d.ts.map +1 -1
  234. package/dist/skills/remote.js +62 -162
  235. package/dist/skills/remote.js.map +1 -1
  236. package/dist/triggers/matcher.d.ts.map +1 -1
  237. package/dist/triggers/matcher.js +28 -15
  238. package/dist/triggers/matcher.js.map +1 -1
  239. package/dist/types/index.d.ts +40 -0
  240. package/dist/types/index.d.ts.map +1 -1
  241. package/dist/types/index.js +11 -0
  242. package/dist/types/index.js.map +1 -1
  243. package/dist/utils/index.d.ts +1 -0
  244. package/dist/utils/index.d.ts.map +1 -1
  245. package/dist/utils/index.js +1 -0
  246. package/dist/utils/index.js.map +1 -1
  247. package/dist/utils/path.d.ts +17 -0
  248. package/dist/utils/path.d.ts.map +1 -0
  249. package/dist/utils/path.js +36 -0
  250. package/dist/utils/path.js.map +1 -0
  251. package/package.json +8 -8
  252. package/policies/README.md +22 -0
  253. package/policies/code-comments.md +20 -0
  254. package/policies/policy-template.md +14 -0
  255. package/skills/warden/SPEC.md +112 -0
  256. package/skills/warden/references/config-schema.md +29 -13
  257. package/skills/warden/references/configuration.md +20 -8
  258. package/skills/warden-sweep/SPEC.md +126 -0
  259. package/src/builtin-skills/security-review/SKILL.md +81 -0
  260. package/src/builtin-skills/security-review/SPEC.md +77 -0
  261. package/src/builtin-skills/security-review/references/github-workflows.md +186 -0
  262. package/src/builtin-skills/security-review/references/javascript-typescript.md +69 -0
  263. package/src/builtin-skills/security-review/references/python.md +70 -0
  264. package/src/internal-skills/skill-writer/EVAL.md +124 -0
  265. package/src/internal-skills/skill-writer/SKILL.md +159 -0
  266. package/src/internal-skills/skill-writer/SOURCES.md +94 -0
  267. package/src/internal-skills/skill-writer/SPEC.md +153 -0
  268. package/src/internal-skills/skill-writer/references/artifact-layouts/argument-driven-skill-layout.md +32 -0
  269. package/src/internal-skills/skill-writer/references/artifact-layouts/asset-template-skill-layout.md +30 -0
  270. package/src/internal-skills/skill-writer/references/artifact-layouts/inline-skill-layout.md +28 -0
  271. package/src/internal-skills/skill-writer/references/artifact-layouts/reference-backed-skill-layout.md +35 -0
  272. package/src/internal-skills/skill-writer/references/artifact-layouts/script-backed-skill-layout.md +31 -0
  273. package/src/internal-skills/skill-writer/references/authoring-path.md +91 -0
  274. package/src/internal-skills/skill-writer/references/claude-code/argument-substitutions.md +20 -0
  275. package/src/internal-skills/skill-writer/references/claude-code/dynamic-context.md +16 -0
  276. package/src/internal-skills/skill-writer/references/claude-code/frontmatter-and-invocation.md +33 -0
  277. package/src/internal-skills/skill-writer/references/claude-code/hook-backed-skills.md +28 -0
  278. package/src/internal-skills/skill-writer/references/claude-code/subagent-fork-skills.md +22 -0
  279. package/src/internal-skills/skill-writer/references/description-optimization.md +28 -0
  280. package/src/internal-skills/skill-writer/references/design-principles.md +74 -0
  281. package/src/internal-skills/skill-writer/references/evaluation-path.md +73 -0
  282. package/src/internal-skills/skill-writer/references/examples/documentation-skill.md +70 -0
  283. package/src/internal-skills/skill-writer/references/examples/evaluator-loop-skill.md +38 -0
  284. package/src/internal-skills/skill-writer/references/examples/hook-backed-skill.md +39 -0
  285. package/src/internal-skills/skill-writer/references/examples/router-skill.md +41 -0
  286. package/src/internal-skills/skill-writer/references/examples/security-review-skill.md +69 -0
  287. package/src/internal-skills/skill-writer/references/examples/subagent-fork-skill.md +39 -0
  288. package/src/internal-skills/skill-writer/references/examples/workflow-process-skill.md +65 -0
  289. package/src/internal-skills/skill-writer/references/execution-shapes.md +68 -0
  290. package/src/internal-skills/skill-writer/references/iteration-evidence.md +82 -0
  291. package/src/internal-skills/skill-writer/references/iteration-path.md +40 -0
  292. package/src/internal-skills/skill-writer/references/mode-selection.md +67 -0
  293. package/src/internal-skills/skill-writer/references/output-contracts.md +68 -0
  294. package/src/internal-skills/skill-writer/references/reference-architecture.md +71 -0
  295. package/src/internal-skills/skill-writer/references/registration-validation.md +67 -0
  296. package/src/internal-skills/skill-writer/references/source-discovery.md +60 -0
  297. package/src/internal-skills/skill-writer/references/spec-template.md +118 -0
  298. package/src/internal-skills/skill-writer/references/structure-troubleshooting.md +111 -0
  299. package/src/internal-skills/skill-writer/references/synthesis-path.md +119 -0
  300. package/src/internal-skills/skill-writer/references/workflow-mechanics/evaluator-loops.md +25 -0
  301. package/src/internal-skills/skill-writer/references/workflow-mechanics/orchestrator-workers.md +25 -0
  302. package/src/internal-skills/skill-writer/references/workflow-mechanics/parallel-workflows.md +21 -0
  303. package/src/internal-skills/skill-writer/references/workflow-mechanics/plan-validate-execute.md +26 -0
  304. package/src/internal-skills/skill-writer/references/workflow-mechanics/prompt-chaining.md +24 -0
  305. package/src/internal-skills/skill-writer/references/workflow-mechanics/routing-workflows.md +28 -0
  306. package/src/internal-skills/skill-writer/references/workflow-mechanics/validation-loops.md +26 -0
  307. package/src/internal-skills/skill-writer/scripts/quick_validate.py +158 -0
  308. package/src/internal-skills/skill-writer/scripts/quick_validate_test.py +79 -0
@@ -0,0 +1,240 @@
1
+ import { performance } from 'node:perf_hooks';
2
+ import { z } from 'zod';
3
+ import { parseJsonFromOutput } from '../sdk/json-output.js';
4
+ import { buildJsonOutputSection, buildTaggedSection, joinPromptSections } from '../sdk/prompt-sections.js';
5
+ import { aggregateUsage, emptyUsage } from '../sdk/usage.js';
6
+ const SKILL_BUILDER_READ_TOOLS = ['Read', 'Grep', 'Glob', 'WebFetch', 'WebSearch'];
7
+ const SKILL_BUILDER_WRITE_TOOLS = ['Read', 'Grep', 'Glob', 'Write', 'Edit', 'Bash', 'WebFetch', 'WebSearch'];
8
+ const STRUCTURED_REPAIR_MAX_TURNS = 1;
9
+ const STRUCTURED_REPAIR_MAX_CHARS = 60_000;
10
+ export class StructuredSkillBuilderAgentError extends Error {
11
+ constructor(message, options) {
12
+ super(message, options);
13
+ this.name = 'StructuredSkillBuilderAgentError';
14
+ }
15
+ }
16
+ function formatRuntimeFailure(result) {
17
+ if (result.errors.length > 0) {
18
+ return result.errors.join('; ');
19
+ }
20
+ return `Runtime status: ${result.status}`;
21
+ }
22
+ function previewText(value, maxLength = 1200) {
23
+ const trimmed = value?.trim();
24
+ if (!trimmed)
25
+ return '<empty>';
26
+ if (trimmed.length <= maxLength)
27
+ return trimmed;
28
+ return `${trimmed.slice(0, maxLength)}...`;
29
+ }
30
+ function formatAgentFailure(message, details) {
31
+ const lines = [message];
32
+ if (details.responseModel) {
33
+ lines.push(` Model: ${details.responseModel}`);
34
+ }
35
+ if (details.durationMs !== undefined) {
36
+ lines.push(` Duration: ${(details.durationMs / 1000).toFixed(1)}s`);
37
+ }
38
+ if (details.usage) {
39
+ lines.push(` Usage: ${details.usage.inputTokens.toLocaleString()} input / ` +
40
+ `${details.usage.outputTokens.toLocaleString()} output tokens / ` +
41
+ `$${details.usage.costUSD.toFixed(4)}`);
42
+ }
43
+ if (details.numTurns !== undefined) {
44
+ lines.push(` Turns: ${details.numTurns}`);
45
+ }
46
+ if (details.stderr?.trim()) {
47
+ lines.push(' Claude Code stderr:');
48
+ lines.push(` ${previewText(details.stderr).replace(/\n/g, '\n ')}`);
49
+ }
50
+ if (details.rawText !== undefined) {
51
+ lines.push(' Raw output:');
52
+ lines.push(` ${previewText(details.rawText).replace(/\n/g, '\n ')}`);
53
+ }
54
+ return lines.join('\n');
55
+ }
56
+ function resultFailureDetails(result, stderr, startedAt) {
57
+ return {
58
+ rawText: result?.text,
59
+ stderr,
60
+ usage: result?.usage,
61
+ durationMs: result?.durationMs ?? performance.now() - startedAt,
62
+ responseModel: result?.responseModel,
63
+ numTurns: result?.numTurns,
64
+ };
65
+ }
66
+ function truncateForRepair(output) {
67
+ if (output.length <= STRUCTURED_REPAIR_MAX_CHARS) {
68
+ return output;
69
+ }
70
+ return `${output.slice(0, STRUCTURED_REPAIR_MAX_CHARS)}\n[... truncated]`;
71
+ }
72
+ function structuredRepairSystemPrompt() {
73
+ return `You repair model output into strict JSON for Warden.
74
+
75
+ Return only valid JSON matching the provided JSON Schema. Do not include markdown, prose, code fences, or explanations. Preserve the original structured content whenever possible and do not invent extra fields.`;
76
+ }
77
+ function structuredRepairPrompt(args) {
78
+ return joinPromptSections([
79
+ `<task>
80
+ Repair this model output into valid JSON that matches the provided JSON Schema.
81
+ </task>`,
82
+ buildJsonOutputSection(`Remove surrounding prose or markdown only when needed.
83
+ Preserve the original structured content as much as possible.
84
+ Do not invent extra fields.`),
85
+ buildTaggedSection('parse_error', args.reason),
86
+ buildTaggedSection('json_schema', JSON.stringify(z.toJSONSchema(args.schema), null, 2)),
87
+ buildTaggedSection('model_output', truncateForRepair(args.output)),
88
+ ]);
89
+ }
90
+ async function repairStructuredSkillBuilderOutput(args) {
91
+ const response = await args.runtime.runSkill({
92
+ systemPrompt: structuredRepairSystemPrompt(),
93
+ userPrompt: structuredRepairPrompt({
94
+ schema: args.schema,
95
+ output: args.output,
96
+ reason: args.reason,
97
+ }),
98
+ repoPath: args.repoPath,
99
+ skillName: `${args.skillName}:structured-output-repair`,
100
+ tools: { allowed: [] },
101
+ options: {
102
+ model: args.model,
103
+ maxTurns: STRUCTURED_REPAIR_MAX_TURNS,
104
+ abortController: args.abortController,
105
+ },
106
+ });
107
+ if (response.authError) {
108
+ return {
109
+ success: false,
110
+ error: `repair_failed: ${response.authError}`,
111
+ };
112
+ }
113
+ if (!response.result) {
114
+ return {
115
+ success: false,
116
+ error: 'repair_failed: no_result',
117
+ };
118
+ }
119
+ if (response.result.status !== 'success') {
120
+ return {
121
+ success: false,
122
+ error: `repair_failed: ${formatRuntimeFailure(response.result)}`,
123
+ usage: response.result.usage,
124
+ };
125
+ }
126
+ const parsed = await parseJsonFromOutput({
127
+ output: response.result.text,
128
+ schema: args.schema,
129
+ });
130
+ if (!parsed.success) {
131
+ return {
132
+ success: false,
133
+ error: `repair_failed: ${parsed.error}`,
134
+ json: parsed.json,
135
+ usage: response.result.usage,
136
+ };
137
+ }
138
+ return {
139
+ success: true,
140
+ data: parsed.data,
141
+ json: parsed.json,
142
+ repaired: true,
143
+ usage: response.result.usage,
144
+ };
145
+ }
146
+ export async function runStructuredSkillBuilderAgent(args) {
147
+ const startedAt = performance.now();
148
+ const { runtime } = args;
149
+ const response = await runtime.runSkill({
150
+ systemPrompt: args.systemPrompt,
151
+ userPrompt: args.userPrompt,
152
+ repoPath: args.repoPath,
153
+ skillName: args.skillName,
154
+ tools: { allowed: args.writeAccess ? SKILL_BUILDER_WRITE_TOOLS : SKILL_BUILDER_READ_TOOLS },
155
+ allowMutatingTools: args.writeAccess,
156
+ options: {
157
+ model: args.model,
158
+ maxTurns: args.maxTurns,
159
+ abortController: args.abortController,
160
+ },
161
+ });
162
+ if (response.authError) {
163
+ throw new StructuredSkillBuilderAgentError(response.authError);
164
+ }
165
+ if (!response.result) {
166
+ throw new StructuredSkillBuilderAgentError(formatAgentFailure('Skill builder agent returned no result', resultFailureDetails(undefined, response.stderr, startedAt)));
167
+ }
168
+ if (response.result.status !== 'success') {
169
+ throw new StructuredSkillBuilderAgentError(formatAgentFailure(formatRuntimeFailure(response.result), resultFailureDetails(response.result, response.stderr, startedAt)));
170
+ }
171
+ const repairUsages = [];
172
+ let parsed = await parseJsonFromOutput({
173
+ output: response.result.text,
174
+ schema: args.schema,
175
+ });
176
+ if (!parsed.success) {
177
+ const skillRepair = await repairStructuredSkillBuilderOutput({
178
+ runtime,
179
+ repoPath: args.repoPath,
180
+ skillName: args.skillName,
181
+ schema: args.schema,
182
+ output: response.result.text,
183
+ reason: parsed.error,
184
+ model: args.repair?.model ?? args.model,
185
+ abortController: args.abortController,
186
+ });
187
+ if (skillRepair.usage) {
188
+ repairUsages.push(skillRepair.usage);
189
+ }
190
+ if (skillRepair.success) {
191
+ parsed = skillRepair;
192
+ }
193
+ else if (args.repair?.apiKey) {
194
+ const auxiliaryRepair = await parseJsonFromOutput({
195
+ output: response.result.text,
196
+ schema: args.schema,
197
+ repair: {
198
+ runtime,
199
+ apiKey: args.repair.apiKey,
200
+ model: args.repair.model,
201
+ maxRetries: args.repair.maxRetries,
202
+ },
203
+ });
204
+ if (auxiliaryRepair.usage) {
205
+ repairUsages.push(auxiliaryRepair.usage);
206
+ }
207
+ parsed = auxiliaryRepair.success
208
+ ? auxiliaryRepair
209
+ : {
210
+ ...auxiliaryRepair,
211
+ error: `${skillRepair.error}; ${auxiliaryRepair.error}`,
212
+ json: auxiliaryRepair.json ?? skillRepair.json ?? parsed.json,
213
+ };
214
+ }
215
+ else {
216
+ parsed = skillRepair;
217
+ }
218
+ }
219
+ if (!parsed.success) {
220
+ const label = parsed.error.startsWith('no_json')
221
+ ? `Skill builder agent returned no JSON: ${parsed.error}`
222
+ : parsed.error.startsWith('invalid_json')
223
+ ? `Skill builder agent returned invalid JSON: ${parsed.error}`
224
+ : `Skill builder agent output failed validation or repair: ${parsed.error}`;
225
+ throw new StructuredSkillBuilderAgentError(formatAgentFailure(label, {
226
+ ...resultFailureDetails(response.result, response.stderr, startedAt),
227
+ rawText: parsed.json ?? response.result.text,
228
+ usage: aggregateUsage([response.result.usage ?? emptyUsage(), ...repairUsages]),
229
+ }));
230
+ }
231
+ const usage = aggregateUsage([response.result.usage ?? emptyUsage(), ...repairUsages]);
232
+ return {
233
+ data: parsed.data,
234
+ usage,
235
+ durationMs: response.result.durationMs ?? performance.now() - startedAt,
236
+ responseModel: response.result.responseModel,
237
+ numTurns: response.result.numTurns,
238
+ };
239
+ }
240
+ //# sourceMappingURL=agentic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentic.js","sourceRoot":"","sources":["../../src/skill-builder/agentic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { SkillBuildAuthoringProvider } from './skill-contract.js';
2
+ export declare function resolveAuthoringProvider(args?: {
3
+ authoringSkillRoot?: string;
4
+ }): SkillBuildAuthoringProvider;
5
+ //# sourceMappingURL=authoring-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-provider.d.ts","sourceRoot":"","sources":["../../src/skill-builder/authoring-provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAkDvE,wBAAgB,wBAAwB,CAAC,IAAI,GAAE;IAC7C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,2BAA2B,CA0BnC"}
@@ -0,0 +1,70 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
3
+ import { basename, dirname, join, resolve } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ const DEFAULT_AUTHORING_SKILL_NAME = 'skill-writer';
6
+ const AUTHORING_PROVIDER_ENV = 'WARDEN_SKILL_AUTHORING_ROOT';
7
+ function hashDirectory(rootDir) {
8
+ const hash = createHash('sha256');
9
+ function visit(relativeDir) {
10
+ const absoluteDir = join(rootDir, relativeDir);
11
+ for (const entry of readdirSync(absoluteDir, { withFileTypes: true })
12
+ .sort((a, b) => a.name.localeCompare(b.name))) {
13
+ if (entry.name === '.git' || entry.name === 'node_modules') {
14
+ continue;
15
+ }
16
+ const relativePath = relativeDir ? `${relativeDir}/${entry.name}` : entry.name;
17
+ const absolutePath = join(rootDir, relativePath);
18
+ if (entry.isDirectory()) {
19
+ visit(relativePath);
20
+ continue;
21
+ }
22
+ if (!entry.isFile()) {
23
+ continue;
24
+ }
25
+ hash.update(relativePath);
26
+ hash.update('\0');
27
+ hash.update(readFileSync(absolutePath));
28
+ hash.update('\0');
29
+ }
30
+ }
31
+ visit('');
32
+ return hash.digest('hex');
33
+ }
34
+ function candidateAuthoringSkillRoots() {
35
+ const fromEnv = process.env[AUTHORING_PROVIDER_ENV];
36
+ const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..');
37
+ return [
38
+ fromEnv ? resolve(fromEnv) : undefined,
39
+ join(packageRoot, 'src', 'internal-skills', DEFAULT_AUTHORING_SKILL_NAME),
40
+ ].filter((path) => Boolean(path));
41
+ }
42
+ function authoringSkillName(rootDir) {
43
+ const content = readFileSync(join(rootDir, 'SKILL.md'), 'utf-8');
44
+ const match = /^name:\s*["']?([^"'\n]+)["']?$/m.exec(content);
45
+ return match?.[1]?.trim() || basename(rootDir);
46
+ }
47
+ export function resolveAuthoringProvider(args = {}) {
48
+ const roots = args.authoringSkillRoot
49
+ ? [resolve(args.authoringSkillRoot)]
50
+ : candidateAuthoringSkillRoots();
51
+ for (const rootDir of roots) {
52
+ const skillPath = join(rootDir, 'SKILL.md');
53
+ if (!existsSync(skillPath)) {
54
+ continue;
55
+ }
56
+ const stat = statSync(skillPath);
57
+ if (!stat.isFile()) {
58
+ continue;
59
+ }
60
+ return {
61
+ name: authoringSkillName(rootDir),
62
+ rootDir,
63
+ contentHash: hashDirectory(rootDir),
64
+ };
65
+ }
66
+ const searched = roots.map((root) => `- ${root}`).join('\n');
67
+ throw new Error(`Unable to find generated-skill authoring provider "${DEFAULT_AUTHORING_SKILL_NAME}". ` +
68
+ `Set ${AUTHORING_PROVIDER_ENV} or ensure the internal provider is packaged in one of:\n${searched}`);
69
+ }
70
+ //# sourceMappingURL=authoring-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authoring-provider.js","sourceRoot":"","sources":["../../src/skill-builder/authoring-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { z } from 'zod';
2
+ import type { SkillDefinition } from '../config/schema.js';
3
+ export declare const GENERATED_SKILLS_DIR = ".warden/skills";
4
+ export declare const GENERATED_SKILL_DEFINITION_FILE = "warden.yaml";
5
+ export declare const BUILD_STATE_FILE = "build-state.json";
6
+ export declare const GeneratedSkillDefinitionSchema: z.ZodObject<{
7
+ version: z.ZodLiteral<1>;
8
+ kind: z.ZodLiteral<"generated-skill">;
9
+ name: z.ZodString;
10
+ prompt: z.ZodString;
11
+ instructions: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
+ coverage: z.ZodOptional<z.ZodArray<z.ZodString>>;
13
+ }, z.core.$loose>;
14
+ export type GeneratedSkillDefinition = z.infer<typeof GeneratedSkillDefinitionSchema>;
15
+ /** A generated skill target resolved from a CLI name or filesystem path. */
16
+ export interface GeneratedSkillTarget {
17
+ displayName: string;
18
+ isPath: boolean;
19
+ rootDir: string;
20
+ }
21
+ export interface GeneratedSkillArtifactFile {
22
+ path: string;
23
+ content: string;
24
+ bytes: number;
25
+ }
26
+ export declare function inferGeneratedSkillDescription(name: string, prompt: string): string;
27
+ export declare function getGeneratedSkillRoot(repoRoot: string, skillName: string): string;
28
+ export declare function generatedSkillDefinitionRootExists(rootDir: string): boolean;
29
+ /** Resolve a generated skill CLI target using the shared name and path semantics. */
30
+ export declare function resolveGeneratedSkillTarget(repoRoot: string, target: string): GeneratedSkillTarget;
31
+ export declare function resolveGeneratedSkillRoot(repoRoot: string, skillName: string): string;
32
+ export declare function loadGeneratedSkillDefinition(rootDir: string): {
33
+ content: string;
34
+ data: GeneratedSkillDefinition;
35
+ };
36
+ export declare function buildGeneratedSkillDefinition(rootDir: string): SkillDefinition;
37
+ export declare function createGeneratedSkillDefinition(args: {
38
+ repoRoot: string;
39
+ name: string;
40
+ prompt: string;
41
+ rootDir?: string;
42
+ }): SkillDefinition;
43
+ export declare function clearGeneratedSkillArtifacts(rootDir: string): void;
44
+ /** Read generated runtime artifacts while excluding Warden-owned metadata files. */
45
+ export declare function readGeneratedSkillArtifactFiles(rootDir: string): GeneratedSkillArtifactFile[];
46
+ //# sourceMappingURL=definition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../src/skill-builder/definition.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,eAAO,MAAM,oBAAoB,mBAAmB,CAAC;AACrD,eAAO,MAAM,+BAA+B,gBAAgB,CAAC;AAC7D,eAAO,MAAM,gBAAgB,qBAAqB,CAAC;AAQnD,eAAO,MAAM,8BAA8B;;;;;;;iBAO3B,CAAC;AAEjB,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAEtF,4EAA4E;AAC5E,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAuBD,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBnF;AAUD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE3E;AAED,qFAAqF;AACrF,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,CAclG;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CASrF;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,wBAAwB,CAAC;CAChC,CAkBA;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAQ9E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,CAYlB;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAUlE;AAED,oFAAoF;AACpF,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,0BAA0B,EAAE,CA+B7F"}
@@ -0,0 +1,171 @@
1
+ import { existsSync, mkdirSync, readdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { parse as parseYaml } from 'yaml';
4
+ import { z } from 'zod';
5
+ import { isPathLike, resolvePathTarget } from '../utils/path.js';
6
+ export const GENERATED_SKILLS_DIR = '.warden/skills';
7
+ export const GENERATED_SKILL_DEFINITION_FILE = 'warden.yaml';
8
+ export const BUILD_STATE_FILE = 'build-state.json';
9
+ const DESCRIPTION_MAX_LENGTH = 88;
10
+ const EXISTING_GENERATED_SKILL_DIRS = [
11
+ GENERATED_SKILLS_DIR,
12
+ '.agents/skills',
13
+ '.claude/skills',
14
+ ];
15
+ export const GeneratedSkillDefinitionSchema = z.object({
16
+ version: z.literal(1),
17
+ kind: z.literal('generated-skill'),
18
+ name: z.string().min(1),
19
+ prompt: z.string().min(1),
20
+ instructions: z.array(z.string().min(1)).optional(),
21
+ coverage: z.array(z.string().min(1)).optional(),
22
+ }).passthrough();
23
+ function safePathSegment(value) {
24
+ return value.replace(/[^a-zA-Z0-9._-]/g, '-');
25
+ }
26
+ function firstSentence(value) {
27
+ return value.trim().split(/(?<=[.!?])\s+/)[0] ?? value.trim();
28
+ }
29
+ function normalizeOneLine(value) {
30
+ return value.replace(/\s+/g, ' ').trim();
31
+ }
32
+ function ensureSentenceEnding(value) {
33
+ const trimmed = value.trim().replace(/[,;:]+$/, '');
34
+ return /[.!?]$/.test(trimmed) ? trimmed : `${trimmed}.`;
35
+ }
36
+ function firstClause(value) {
37
+ return value.split(/[,;:]\s+/)[0] ?? value;
38
+ }
39
+ export function inferGeneratedSkillDescription(name, prompt) {
40
+ const fallback = `${name}.`;
41
+ const sentence = normalizeOneLine(firstSentence(prompt));
42
+ if (!sentence) {
43
+ return fallback;
44
+ }
45
+ let description = sentence;
46
+ if (description.length > DESCRIPTION_MAX_LENGTH && /[,;:]\s+/.test(description)) {
47
+ description = firstClause(description);
48
+ }
49
+ description = ensureSentenceEnding(description);
50
+ if (description.length > DESCRIPTION_MAX_LENGTH) {
51
+ description = `${description.slice(0, DESCRIPTION_MAX_LENGTH - 3).trimEnd()}...`;
52
+ }
53
+ return description;
54
+ }
55
+ function yamlBlock(value, indent = ' ') {
56
+ return value.split('\n').map((line) => `${indent}${line}`).join('\n');
57
+ }
58
+ function getGeneratedSkillsRoot(repoRoot) {
59
+ return join(repoRoot, GENERATED_SKILLS_DIR);
60
+ }
61
+ export function getGeneratedSkillRoot(repoRoot, skillName) {
62
+ return join(getGeneratedSkillsRoot(repoRoot), safePathSegment(skillName));
63
+ }
64
+ export function generatedSkillDefinitionRootExists(rootDir) {
65
+ return existsSync(join(rootDir, GENERATED_SKILL_DEFINITION_FILE));
66
+ }
67
+ /** Resolve a generated skill CLI target using the shared name and path semantics. */
68
+ export function resolveGeneratedSkillTarget(repoRoot, target) {
69
+ if (isPathLike(target)) {
70
+ return {
71
+ displayName: target,
72
+ isPath: true,
73
+ rootDir: resolvePathTarget(target, repoRoot),
74
+ };
75
+ }
76
+ return {
77
+ displayName: target,
78
+ isPath: false,
79
+ rootDir: resolveGeneratedSkillRoot(repoRoot, target),
80
+ };
81
+ }
82
+ export function resolveGeneratedSkillRoot(repoRoot, skillName) {
83
+ const safeName = safePathSegment(skillName);
84
+ for (const dir of EXISTING_GENERATED_SKILL_DIRS) {
85
+ const rootDir = join(repoRoot, dir, safeName);
86
+ if (generatedSkillDefinitionRootExists(rootDir)) {
87
+ return rootDir;
88
+ }
89
+ }
90
+ return getGeneratedSkillRoot(repoRoot, skillName);
91
+ }
92
+ export function loadGeneratedSkillDefinition(rootDir) {
93
+ const definitionPath = join(rootDir, GENERATED_SKILL_DEFINITION_FILE);
94
+ const content = readFileSync(definitionPath, 'utf-8');
95
+ let parsed;
96
+ try {
97
+ parsed = parseYaml(content);
98
+ }
99
+ catch (error) {
100
+ throw new Error(`Generated skill definition is not valid YAML: ${definitionPath}`, { cause: error });
101
+ }
102
+ const validation = GeneratedSkillDefinitionSchema.safeParse(parsed);
103
+ if (!validation.success) {
104
+ throw new Error(`Generated skill definition is invalid: ${validation.error.message}`, {
105
+ cause: validation.error,
106
+ });
107
+ }
108
+ return { content, data: validation.data };
109
+ }
110
+ export function buildGeneratedSkillDefinition(rootDir) {
111
+ const { data } = loadGeneratedSkillDefinition(rootDir);
112
+ return {
113
+ name: data.name,
114
+ description: inferGeneratedSkillDescription(data.name, data.prompt),
115
+ prompt: data.prompt,
116
+ rootDir,
117
+ };
118
+ }
119
+ export function createGeneratedSkillDefinition(args) {
120
+ const rootDir = args.rootDir ?? getGeneratedSkillRoot(args.repoRoot, args.name);
121
+ mkdirSync(rootDir, { recursive: true });
122
+ writeFileSync(join(rootDir, GENERATED_SKILL_DEFINITION_FILE), `version: 1
123
+ kind: generated-skill
124
+ name: ${args.name}
125
+ prompt: |-
126
+ ${yamlBlock(args.prompt.trim())}
127
+ `, 'utf-8');
128
+ return buildGeneratedSkillDefinition(rootDir);
129
+ }
130
+ export function clearGeneratedSkillArtifacts(rootDir) {
131
+ if (!existsSync(rootDir)) {
132
+ return;
133
+ }
134
+ for (const entry of readdirSync(rootDir, { withFileTypes: true })) {
135
+ if (entry.name === GENERATED_SKILL_DEFINITION_FILE || entry.name === BUILD_STATE_FILE) {
136
+ continue;
137
+ }
138
+ rmSync(join(rootDir, entry.name), { recursive: true, force: true });
139
+ }
140
+ }
141
+ /** Read generated runtime artifacts while excluding Warden-owned metadata files. */
142
+ export function readGeneratedSkillArtifactFiles(rootDir) {
143
+ if (!existsSync(rootDir)) {
144
+ return [];
145
+ }
146
+ const files = [];
147
+ function visit(relativeDir) {
148
+ for (const entry of readdirSync(join(rootDir, relativeDir), { withFileTypes: true })) {
149
+ const relativePath = relativeDir ? `${relativeDir}/${entry.name}` : entry.name;
150
+ if (!relativeDir && (entry.name === GENERATED_SKILL_DEFINITION_FILE || entry.name === BUILD_STATE_FILE)) {
151
+ continue;
152
+ }
153
+ if (entry.isDirectory()) {
154
+ visit(relativePath);
155
+ continue;
156
+ }
157
+ if (!entry.isFile()) {
158
+ continue;
159
+ }
160
+ const content = readFileSync(join(rootDir, relativePath), 'utf-8');
161
+ files.push({
162
+ path: relativePath,
163
+ content,
164
+ bytes: Buffer.byteLength(content, 'utf-8'),
165
+ });
166
+ }
167
+ }
168
+ visit('');
169
+ return files.sort((a, b) => a.path.localeCompare(b.path));
170
+ }
171
+ //# sourceMappingURL=definition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/skill-builder/definition.ts"],"names":[],"mappings":"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"}