@sentry/warden 0.22.0 → 0.24.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 (310) hide show
  1. package/.oxlintrc.json +169 -0
  2. package/CHANGELOG.md +427 -0
  3. package/README.md +4 -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 +13 -5
  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 +41 -2
  41. package/dist/cli/main.d.ts.map +1 -1
  42. package/dist/cli/main.js +294 -75
  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/cli-reference.md +2 -2
  257. package/skills/warden/references/config-schema.md +29 -13
  258. package/skills/warden/references/configuration.md +20 -8
  259. package/skills/warden/references/creating-skills.md +3 -0
  260. package/skills/warden-sweep/SPEC.md +126 -0
  261. package/src/builtin-skills/security-review/SKILL.md +81 -0
  262. package/src/builtin-skills/security-review/SPEC.md +77 -0
  263. package/src/builtin-skills/security-review/references/github-workflows.md +186 -0
  264. package/src/builtin-skills/security-review/references/javascript-typescript.md +69 -0
  265. package/src/builtin-skills/security-review/references/python.md +70 -0
  266. package/src/internal-skills/skill-writer/EVAL.md +124 -0
  267. package/src/internal-skills/skill-writer/SKILL.md +159 -0
  268. package/src/internal-skills/skill-writer/SOURCES.md +94 -0
  269. package/src/internal-skills/skill-writer/SPEC.md +153 -0
  270. package/src/internal-skills/skill-writer/references/artifact-layouts/argument-driven-skill-layout.md +32 -0
  271. package/src/internal-skills/skill-writer/references/artifact-layouts/asset-template-skill-layout.md +30 -0
  272. package/src/internal-skills/skill-writer/references/artifact-layouts/inline-skill-layout.md +28 -0
  273. package/src/internal-skills/skill-writer/references/artifact-layouts/reference-backed-skill-layout.md +35 -0
  274. package/src/internal-skills/skill-writer/references/artifact-layouts/script-backed-skill-layout.md +31 -0
  275. package/src/internal-skills/skill-writer/references/authoring-path.md +91 -0
  276. package/src/internal-skills/skill-writer/references/claude-code/argument-substitutions.md +20 -0
  277. package/src/internal-skills/skill-writer/references/claude-code/dynamic-context.md +16 -0
  278. package/src/internal-skills/skill-writer/references/claude-code/frontmatter-and-invocation.md +33 -0
  279. package/src/internal-skills/skill-writer/references/claude-code/hook-backed-skills.md +28 -0
  280. package/src/internal-skills/skill-writer/references/claude-code/subagent-fork-skills.md +22 -0
  281. package/src/internal-skills/skill-writer/references/description-optimization.md +28 -0
  282. package/src/internal-skills/skill-writer/references/design-principles.md +74 -0
  283. package/src/internal-skills/skill-writer/references/evaluation-path.md +73 -0
  284. package/src/internal-skills/skill-writer/references/examples/documentation-skill.md +70 -0
  285. package/src/internal-skills/skill-writer/references/examples/evaluator-loop-skill.md +38 -0
  286. package/src/internal-skills/skill-writer/references/examples/hook-backed-skill.md +39 -0
  287. package/src/internal-skills/skill-writer/references/examples/router-skill.md +41 -0
  288. package/src/internal-skills/skill-writer/references/examples/security-review-skill.md +69 -0
  289. package/src/internal-skills/skill-writer/references/examples/subagent-fork-skill.md +39 -0
  290. package/src/internal-skills/skill-writer/references/examples/workflow-process-skill.md +65 -0
  291. package/src/internal-skills/skill-writer/references/execution-shapes.md +68 -0
  292. package/src/internal-skills/skill-writer/references/iteration-evidence.md +82 -0
  293. package/src/internal-skills/skill-writer/references/iteration-path.md +40 -0
  294. package/src/internal-skills/skill-writer/references/mode-selection.md +67 -0
  295. package/src/internal-skills/skill-writer/references/output-contracts.md +68 -0
  296. package/src/internal-skills/skill-writer/references/reference-architecture.md +71 -0
  297. package/src/internal-skills/skill-writer/references/registration-validation.md +67 -0
  298. package/src/internal-skills/skill-writer/references/source-discovery.md +60 -0
  299. package/src/internal-skills/skill-writer/references/spec-template.md +118 -0
  300. package/src/internal-skills/skill-writer/references/structure-troubleshooting.md +111 -0
  301. package/src/internal-skills/skill-writer/references/synthesis-path.md +119 -0
  302. package/src/internal-skills/skill-writer/references/workflow-mechanics/evaluator-loops.md +25 -0
  303. package/src/internal-skills/skill-writer/references/workflow-mechanics/orchestrator-workers.md +25 -0
  304. package/src/internal-skills/skill-writer/references/workflow-mechanics/parallel-workflows.md +21 -0
  305. package/src/internal-skills/skill-writer/references/workflow-mechanics/plan-validate-execute.md +26 -0
  306. package/src/internal-skills/skill-writer/references/workflow-mechanics/prompt-chaining.md +24 -0
  307. package/src/internal-skills/skill-writer/references/workflow-mechanics/routing-workflows.md +28 -0
  308. package/src/internal-skills/skill-writer/references/workflow-mechanics/validation-loops.md +26 -0
  309. package/src/internal-skills/skill-writer/scripts/quick_validate.py +158 -0
  310. package/src/internal-skills/skill-writer/scripts/quick_validate_test.py +79 -0
@@ -0,0 +1,345 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { existsSync } from 'node:fs';
3
+ import { basename } from 'node:path';
4
+ import { getRuntime } from '../sdk/runtimes/index.js';
5
+ import { runStructuredSkillBuilderAgent, StructuredSkillBuilderAgentError } from './agentic.js';
6
+ import { GENERATED_SKILL_DEFINITION_FILE, loadGeneratedSkillDefinition, readGeneratedSkillArtifactFiles, } from './definition.js';
7
+ import { SKILL_BUILD_OUTLINE_SCHEMA_VERSION, SKILL_BUILD_VERSION, SkillBuildOutlineSchema, } from './outline-contract.js';
8
+ import { getBuildStatePath, readSkillBuildState, SKILL_BUILD_STATE_KIND, SKILL_BUILD_STATE_SCHEMA_VERSION, writeSkillBuildState, } from './outline-state.js';
9
+ export { outlineHash, SKILL_BUILD_OUTLINE_SCHEMA_VERSION, SKILL_BUILD_VERSION, SkillBuildOutlineSchema } from './outline-contract.js';
10
+ export const SKILL_BUILD_MAX_TOKENS = 64_000;
11
+ export const SKILL_BUILD_TIMEOUT_MS = 180_000;
12
+ export const SKILL_BUILD_MAX_TURNS = 80;
13
+ export class SkillBuildOutlineError extends Error {
14
+ constructor(message, options) {
15
+ super(message, options);
16
+ this.name = 'SkillBuildOutlineError';
17
+ }
18
+ }
19
+ function sha256(value) {
20
+ return createHash('sha256').update(value).digest('hex');
21
+ }
22
+ function sourceBlocks(source) {
23
+ return source.files
24
+ .map((file) => `## ${file.path}\n\n${file.content}`)
25
+ .join('\n\n---\n\n');
26
+ }
27
+ function buildSkillSource(skillName, files) {
28
+ const hash = sha256(JSON.stringify({
29
+ skill: skillName,
30
+ files,
31
+ }));
32
+ return { hash, files };
33
+ }
34
+ function generatedSkillDefinitionSourceFile(skill) {
35
+ if (skill.rootDir) {
36
+ const { content } = loadGeneratedSkillDefinition(skill.rootDir);
37
+ return { path: GENERATED_SKILL_DEFINITION_FILE, content };
38
+ }
39
+ return {
40
+ path: GENERATED_SKILL_DEFINITION_FILE,
41
+ content: `version: 1\nkind: generated-skill\nname: ${skill.name}\nprompt: ${JSON.stringify(skill.prompt)}\n`,
42
+ };
43
+ }
44
+ export function collectSkillBuildSource(skill) {
45
+ const files = [];
46
+ files.push(generatedSkillDefinitionSourceFile(skill));
47
+ return buildSkillSource(skill.name, files);
48
+ }
49
+ /** Collect the improvement brief and current artifacts as source material. */
50
+ export function collectSkillImproveSource(skill, improvementPrompt) {
51
+ const files = [
52
+ generatedSkillDefinitionSourceFile(skill),
53
+ {
54
+ path: 'improvement-brief.md',
55
+ content: improvementPrompt.trim(),
56
+ },
57
+ ];
58
+ if (skill.rootDir) {
59
+ files.push(...readGeneratedSkillArtifactFiles(skill.rootDir).map((file) => ({
60
+ path: `current-artifacts/${file.path}`,
61
+ content: file.content,
62
+ })));
63
+ }
64
+ return buildSkillSource(skill.name, files);
65
+ }
66
+ function validateOutlineIdentity(outline, skillName, sourceHash) {
67
+ if (outline.skill !== skillName) {
68
+ throw new SkillBuildOutlineError(`Generated skill outline mismatch: expected ${skillName}, got ${outline.skill}`);
69
+ }
70
+ if (outline.sourceHash !== sourceHash) {
71
+ throw new SkillBuildOutlineError(`Generated skill outline source hash mismatch for ${skillName}. Regenerate the skill.`);
72
+ }
73
+ if (outline.buildVersion !== SKILL_BUILD_VERSION) {
74
+ throw new SkillBuildOutlineError(`Generated skill outline version mismatch for ${skillName}. Regenerate the skill.`);
75
+ }
76
+ }
77
+ function validateStateIdentity(state, model) {
78
+ if (state.identity?.requestedModel !== model) {
79
+ throw new SkillBuildOutlineError(`Generated skill model mismatch. Expected ${model ?? 'default'}, got ${state.identity?.requestedModel ?? 'default'}. Regenerate the skill.`);
80
+ }
81
+ }
82
+ function renderPreviousOutlineContinuity(previousOutline) {
83
+ if (!previousOutline || previousOutline.tracks.length === 0) {
84
+ return '';
85
+ }
86
+ const previousTracks = previousOutline.tracks.map((track) => ({
87
+ id: track.id,
88
+ title: track.title,
89
+ goal: track.goal,
90
+ }));
91
+ return `
92
+
93
+ Existing track continuity:
94
+ - Reuse an existing track id exactly when the same concern still exists after regeneration.
95
+ - Only create a new track id when a concern is genuinely new.
96
+ - If one previous track splits into multiple tracks, keep the previous id on the primary surviving concern and mint new ids only for the new sibling concerns.
97
+ - If multiple previous tracks merge, keep the id of the track whose concern remains primary.
98
+ - Do not rename tracks casually. Stable ids help compare authoring plans across regenerations.
99
+
100
+ Previous track set:
101
+ ${JSON.stringify(previousTracks, null, 2)}`;
102
+ }
103
+ function buildOutlinePrompt(skill, source, previousOutline) {
104
+ return `You build the internal outline for one repo-local Warden skill.
105
+
106
+ This outline exists only to give Warden context for a later authoring-provider run. It is planning metadata, not a runnable skill, and it does not prescribe the final artifact layout.
107
+
108
+ Rules:
109
+ - Return only a JSON object. No markdown, prose, or code fences.
110
+ - Use version ${SKILL_BUILD_OUTLINE_SCHEMA_VERSION}.
111
+ - Use skill "${skill.name}".
112
+ - Use sourceHash "${source.hash}" exactly.
113
+ - Use buildVersion "${SKILL_BUILD_VERSION}" exactly.
114
+ - First determine what kind of skill this is: domain, ecosystem, repository, or product.
115
+ - First determine the full agenda implied by the prompt, metadata contract, and source material. The track set exists only to accomplish that agenda completely.
116
+ - Split by analysis concern, not file type, severity, or implementation phase.
117
+ - Track count is unconstrained. Use as many or as few tracks as needed to fit the agenda cleanly.
118
+ - If one track can carry the agenda without becoming vague or overloaded, one track is correct.
119
+ - If the agenda requires many focused tracks to avoid overlap or shallow work, many tracks are correct.
120
+ - The important constraint is scope fit: each track should be small enough to support deep, coherent execution, and the full track set should accomplish the entire agenda without gaps or duplicate ownership.
121
+ - Each track must have an id, title, goal, rationale, sourceSignals, owns, excludes, relevanceSignals, evidenceFocus, checks, safeCounterpatterns, falsePositiveTraps, and researchHints.
122
+ - Track ids must be lowercase kebab-case.
123
+ - The outline should stay lean. Do not write runnable prompts here.
124
+ - scopeProfile.subject should describe the generated skill, not the repo name alone.
125
+ - scopeProfile.observedContext should capture the concrete context that shaped the track split:
126
+ - for repository or product skills, include the stack, runtime, notable trust boundaries, and important repo-local surfaces you actually observed
127
+ - for domain or ecosystem skills, include the supplied source material, intended platform, and any explicit coverage boundaries
128
+ - scopeProfile.unresolvedContext is only for context that would materially improve decomposition and was not inferable from the provided sources.
129
+ - Do not list obvious context as unresolved when it is already visible in the source material.
130
+ - Treat each track as a concise analysis concern that the authoring provider may use, merge, split, or inline while producing the final skill:
131
+ - goal: the one-line investigation objective
132
+ - rationale: why this track exists for this skill
133
+ - sourceSignals: the context signals that justified this track
134
+ - owns: the primary concerns this track is responsible for
135
+ - excludes: the sibling concerns or boundaries this track must not absorb
136
+ - relevanceSignals: the file, hunk, or behavioral cues that should make the runtime skill pick this track
137
+ - evidenceFocus: what concrete evidence the runtime skill must require
138
+ - checks: a short ordered task set of concrete investigation steps or questions for this track
139
+ - safeCounterpatterns: concrete safe patterns, mitigations, or boundary conditions that should suppress weak findings
140
+ - falsePositiveTraps: the common shallow misreads, sibling overlaps, or pattern-only claims that this track must avoid
141
+ - researchHints: public docs, runtime topics, or prior-art areas the generated reference may need to consult
142
+ - Keep track fields short and specific. If a field starts reading like a long prompt, you are adding bloat to the outline.
143
+ - Do not put trigger-language, long remediation playbooks, or essay-length false-positive controls into the outline.
144
+ - When one code path could create chained risks across tracks, assign one primary owning track and make the other tracks exclude that ownership boundary instead of competing for the same finding.
145
+ - Boundary rules should be written from this track's perspective: say what this track owns and what it must not report.
146
+ - If the source material is too thin for a safe decomposition, make that explicit inside scopeProfile.unresolvedContext or the relevant track fields. Do not silently invent coverage areas.
147
+ - Do not ask follow-up questions or return prose. If context is missing, still return valid JSON and record it in scopeProfile.unresolvedContext or the relevant track fields.
148
+ - Keep all track guidance compatible with Warden's normal hunk analysis model: concerns must be focused, inspectable, and able to return an empty findings array when evidence is insufficient.
149
+ - If the skill is intentionally generic, keep it generic. Depth must come from concrete checks, relevance signals, safe counterpatterns, falsePositiveTraps, and researchHints, not fake repo specificity.
150
+
151
+ JSON shape:
152
+ {
153
+ "version": ${SKILL_BUILD_OUTLINE_SCHEMA_VERSION},
154
+ "skill": "${skill.name}",
155
+ "sourceHash": "${source.hash}",
156
+ "buildVersion": "${SKILL_BUILD_VERSION}",
157
+ "scopeProfile": {
158
+ "kind": "repository",
159
+ "subject": "Code review for this repo's CLI and runtime surfaces",
160
+ "localContextUsed": true,
161
+ "observedContext": [
162
+ "Node.js and TypeScript runtime",
163
+ "CLI orchestration and subprocess execution",
164
+ "GitHub workflow and token boundaries"
165
+ ],
166
+ "unresolvedContext": ["Production deployment boundary, if it materially affects decomposition"]
167
+ },
168
+ "build": {
169
+ "phases": [
170
+ {"id": "collect-inputs", "status": "generated"},
171
+ {"id": "assess-source-depth", "status": "generated"},
172
+ {"id": "identify-research-needs", "status": "generated"},
173
+ {"id": "build-tracks", "status": "generated"},
174
+ {"id": "validate-coverage", "status": "validated"}
175
+ ],
176
+ "externalSources": [
177
+ {"title": "Public source title", "url": "https://example.com/source", "reason": "Why this source informed the decomposition"}
178
+ ]
179
+ },
180
+ "tracks": [
181
+ {
182
+ "id": "example-track",
183
+ "title": "Example track",
184
+ "goal": "One-line investigation objective.",
185
+ "rationale": "Why this track exists for this skill.",
186
+ "sourceSignals": ["Observed context or source signal that justified this track"],
187
+ "owns": ["Primary concern this track is responsible for"],
188
+ "excludes": ["Sibling concern or boundary this track must not report"],
189
+ "relevanceSignals": ["Cue that should make the runtime skill choose this track"],
190
+ "evidenceFocus": ["Concrete evidence the runtime skill must require"],
191
+ "checks": ["Ordered investigation step or question for this track"],
192
+ "safeCounterpatterns": ["Concrete safe pattern or mitigation that should suppress weak reporting"],
193
+ "falsePositiveTraps": ["Common shallow misread or sibling overlap this track must avoid"],
194
+ "researchHints": ["Public runtime or ecosystem topic the generated reference may need to consult"]
195
+ }
196
+ ]
197
+ }
198
+
199
+ Quality bar:
200
+ - The outline should fully accomplish the agenda implied by the prompt, metadata, and source material. Do not optimize for a preferred number of tracks.
201
+ - The track set should be specific enough that one generated skill can route work clearly and avoid duplicate reports.
202
+ - Each track should have the right amount of work for one coherent investigation track: not so broad that it becomes shallow, and not so narrow that the split becomes busywork.
203
+ - The checks should be specific enough that the authoring provider can turn them into executable runtime guidance without inventing the structure again.
204
+ - The track set should give later build steps enough depth hooks to expand into strong references: relevanceSignals, safeCounterpatterns, falsePositiveTraps, and researchHints should be concrete instead of generic filler.
205
+ - Repository or product skills must reflect the local context actually observed. Domain or ecosystem skills must say they are generic and stay aligned with the supplied scope.
206
+
207
+ Skill description:
208
+ ${skill.description}
209
+ ${renderPreviousOutlineContinuity(previousOutline)}
210
+
211
+ Source material:
212
+
213
+ ${sourceBlocks(source)}`;
214
+ }
215
+ function buildOutlineSystemPrompt() {
216
+ return `You build the internal outline for one generated Warden skill.
217
+
218
+ Use Read, Grep, and Glob to inspect relevant repository source before deciding how to decompose the skill when local context is needed. Use WebSearch or WebFetch for public prior art and current external documentation when framework, runtime, risk class, or ecosystem behavior affects the outline.
219
+
220
+ Do not send repository code, secrets, private file paths, or proprietary details to web tools. Use public framework, package, API, risk class, and documentation names only.
221
+
222
+ Return only the strict JSON object requested by the user prompt. Never return prose or follow-up questions.`;
223
+ }
224
+ function parseCachedOutline(statePath, skillName, sourceHash, model) {
225
+ const state = readSkillBuildState(statePath);
226
+ if (!state) {
227
+ return undefined;
228
+ }
229
+ try {
230
+ validateOutlineIdentity(state.outline, skillName, sourceHash);
231
+ validateStateIdentity(state, model);
232
+ return state;
233
+ }
234
+ catch {
235
+ return undefined;
236
+ }
237
+ }
238
+ export async function buildSkillOutline(options) {
239
+ const { skill, apiKey, model, maxRetries, regenerate = false } = options;
240
+ const runtime = options.runtime ?? getRuntime(options.runtimeName ?? 'claude');
241
+ const source = options.source ?? collectSkillBuildSource(skill);
242
+ const rootDir = skill.rootDir;
243
+ if (!rootDir) {
244
+ throw new SkillBuildOutlineError(`Generated skill ${skill.name} is missing a root directory`);
245
+ }
246
+ const statePath = getBuildStatePath(rootDir);
247
+ if (existsSync(statePath) && !regenerate) {
248
+ const state = parseCachedOutline(statePath, skill.name, source.hash, model);
249
+ if (state) {
250
+ return {
251
+ outline: state.outline,
252
+ source: 'cache',
253
+ statePath,
254
+ usage: state.outlineRun?.usage,
255
+ durationMs: state.outlineRun?.durationMs,
256
+ responseModel: state.outlineRun?.responseModel,
257
+ numTurns: state.outlineRun?.numTurns,
258
+ };
259
+ }
260
+ }
261
+ if (options.repoPath) {
262
+ try {
263
+ options.onStatus?.('Inspecting source material');
264
+ const result = await runStructuredSkillBuilderAgent({
265
+ runtime,
266
+ repoPath: options.repoPath,
267
+ skillName: `${skill.name}:skill-outline`,
268
+ systemPrompt: buildOutlineSystemPrompt(),
269
+ userPrompt: buildOutlinePrompt(skill, source, options.previousOutline),
270
+ schema: SkillBuildOutlineSchema,
271
+ model,
272
+ maxTurns: options.maxTurns ?? SKILL_BUILD_MAX_TURNS,
273
+ abortController: options.abortController,
274
+ repair: {
275
+ apiKey,
276
+ model: options.repairModel,
277
+ maxRetries: options.repairMaxRetries ?? maxRetries,
278
+ },
279
+ });
280
+ validateOutlineIdentity(result.data, skill.name, source.hash);
281
+ writeSkillBuildState(statePath, {
282
+ version: SKILL_BUILD_STATE_SCHEMA_VERSION,
283
+ kind: SKILL_BUILD_STATE_KIND,
284
+ identity: model ? { requestedModel: model } : undefined,
285
+ outline: result.data,
286
+ outlineRun: {
287
+ usage: result.usage,
288
+ durationMs: result.durationMs,
289
+ responseModel: result.responseModel,
290
+ numTurns: result.numTurns,
291
+ },
292
+ updatedAt: new Date().toISOString(),
293
+ });
294
+ return {
295
+ outline: result.data,
296
+ source: 'generated',
297
+ statePath,
298
+ usage: result.usage,
299
+ durationMs: result.durationMs,
300
+ responseModel: result.responseModel,
301
+ numTurns: result.numTurns,
302
+ };
303
+ }
304
+ catch (error) {
305
+ if (error instanceof StructuredSkillBuilderAgentError) {
306
+ throw new SkillBuildOutlineError(`Skill outline build failed: ${error.message}`, { cause: error });
307
+ }
308
+ throw error;
309
+ }
310
+ }
311
+ const result = await runtime.runSynthesis({
312
+ task: 'skill_build',
313
+ apiKey,
314
+ prompt: buildOutlinePrompt(skill, source, options.previousOutline),
315
+ schema: SkillBuildOutlineSchema,
316
+ model,
317
+ maxTokens: SKILL_BUILD_MAX_TOKENS,
318
+ timeout: SKILL_BUILD_TIMEOUT_MS,
319
+ maxRetries,
320
+ });
321
+ if (!result.success) {
322
+ throw new SkillBuildOutlineError(`Skill outline build failed: ${result.error}`);
323
+ }
324
+ validateOutlineIdentity(result.data, skill.name, source.hash);
325
+ writeSkillBuildState(statePath, {
326
+ version: SKILL_BUILD_STATE_SCHEMA_VERSION,
327
+ kind: SKILL_BUILD_STATE_KIND,
328
+ identity: model ? { requestedModel: model } : undefined,
329
+ outline: result.data,
330
+ outlineRun: {
331
+ usage: result.usage,
332
+ },
333
+ updatedAt: new Date().toISOString(),
334
+ });
335
+ return {
336
+ outline: result.data,
337
+ source: 'generated',
338
+ statePath,
339
+ usage: result.usage,
340
+ };
341
+ }
342
+ export function defaultOutlineExportPath(skillName) {
343
+ return `${basename(skillName)}-outline.json`;
344
+ }
345
+ //# sourceMappingURL=outline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outline.js","sourceRoot":"","sources":["../../src/skill-builder/outline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { z } from 'zod';
2
+ import type { UsageStats } from '../types/index.js';
3
+ export interface SkillBuildExternalSource {
4
+ title: string;
5
+ url: string;
6
+ reason: string;
7
+ }
8
+ export interface SkillBuildAuthoringProvider {
9
+ name: string;
10
+ rootDir: string;
11
+ contentHash: string;
12
+ }
13
+ export type GeneratedSkillAuthoringMode = 'build' | 'improve';
14
+ export declare const GeneratedSkillAuthoringPlanSchema: z.ZodObject<{
15
+ version: z.ZodLiteral<1>;
16
+ summary: z.ZodString;
17
+ workflow: z.ZodArray<z.ZodString>;
18
+ researchPlan: z.ZodDefault<z.ZodArray<z.ZodString>>;
19
+ sourceDecisions: z.ZodDefault<z.ZodArray<z.ZodObject<{
20
+ source: z.ZodString;
21
+ decision: z.ZodString;
22
+ implication: z.ZodString;
23
+ }, z.core.$strict>>>;
24
+ lookupQuestions: z.ZodDefault<z.ZodArray<z.ZodObject<{
25
+ question: z.ZodString;
26
+ openWhen: z.ZodString;
27
+ requiredEvidence: z.ZodArray<z.ZodString>;
28
+ }, z.core.$strict>>>;
29
+ qualityBar: z.ZodDefault<z.ZodArray<z.ZodString>>;
30
+ artifactPlan: z.ZodArray<z.ZodString>;
31
+ validationPlan: z.ZodArray<z.ZodString>;
32
+ risks: z.ZodDefault<z.ZodArray<z.ZodString>>;
33
+ missingInputs: z.ZodDefault<z.ZodArray<z.ZodString>>;
34
+ externalSources: z.ZodDefault<z.ZodArray<z.ZodObject<{
35
+ title: z.ZodString;
36
+ url: z.ZodString;
37
+ reason: z.ZodString;
38
+ }, z.core.$strict>>>;
39
+ }, z.core.$strict>;
40
+ export type GeneratedSkillAuthoringPlan = z.infer<typeof GeneratedSkillAuthoringPlanSchema>;
41
+ export declare const GeneratedSkillWriterResultSchema: z.ZodObject<{
42
+ version: z.ZodLiteral<1>;
43
+ summary: z.ZodString;
44
+ validationNotes: z.ZodDefault<z.ZodArray<z.ZodString>>;
45
+ missingInputs: z.ZodDefault<z.ZodArray<z.ZodString>>;
46
+ externalSources: z.ZodDefault<z.ZodArray<z.ZodObject<{
47
+ title: z.ZodString;
48
+ url: z.ZodString;
49
+ reason: z.ZodString;
50
+ }, z.core.$strict>>>;
51
+ }, z.core.$strip>;
52
+ export type GeneratedSkillWriterResult = z.infer<typeof GeneratedSkillWriterResultSchema>;
53
+ export declare const GeneratedSkillReviewIssueSchema: z.ZodObject<{
54
+ severity: z.ZodEnum<{
55
+ error: "error";
56
+ warning: "warning";
57
+ }>;
58
+ path: z.ZodOptional<z.ZodString>;
59
+ message: z.ZodString;
60
+ suggestedFix: z.ZodOptional<z.ZodString>;
61
+ }, z.core.$strict>;
62
+ export declare const GeneratedSkillReviewResultSchema: z.ZodObject<{
63
+ version: z.ZodLiteral<1>;
64
+ valid: z.ZodBoolean;
65
+ summary: z.ZodString;
66
+ issues: z.ZodDefault<z.ZodArray<z.ZodObject<{
67
+ severity: z.ZodEnum<{
68
+ error: "error";
69
+ warning: "warning";
70
+ }>;
71
+ path: z.ZodOptional<z.ZodString>;
72
+ message: z.ZodString;
73
+ suggestedFix: z.ZodOptional<z.ZodString>;
74
+ }, z.core.$strict>>>;
75
+ missingInputs: z.ZodDefault<z.ZodArray<z.ZodString>>;
76
+ }, z.core.$strict>;
77
+ export type GeneratedSkillReviewResult = z.infer<typeof GeneratedSkillReviewResultSchema>;
78
+ export interface GeneratedSkillArtifact {
79
+ kind: 'generated-skill';
80
+ source: 'cache' | 'generated';
81
+ name: string;
82
+ path: string;
83
+ bytes: number;
84
+ durationMs: number;
85
+ usage: UsageStats;
86
+ externalSources: SkillBuildExternalSource[];
87
+ missingInputs: string[];
88
+ warnings: string[];
89
+ responseModel?: string;
90
+ numTurns?: number;
91
+ }
92
+ export declare class GeneratedSkillBuildError extends Error {
93
+ constructor(message: string, options?: {
94
+ cause?: unknown;
95
+ });
96
+ }
97
+ //# sourceMappingURL=skill-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-contract.d.ts","sourceRoot":"","sources":["../../src/skill-builder/skill-contract.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,2BAA2B;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,2BAA2B,GAAG,OAAO,GAAG,SAAS,CAAC;AAW9D,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;kBAqBnC,CAAC;AAEZ,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F,eAAO,MAAM,gCAAgC;;;;;;;;;;iBAM3C,CAAC;AAEH,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,+BAA+B;;;;;;;;kBAKjC,CAAC;AAEZ,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;kBAMlC,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,iBAAiB,CAAC;IACxB,MAAM,EAAE,OAAO,GAAG,WAAW,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,eAAe,EAAE,wBAAwB,EAAE,CAAC;IAC5C,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;gBACrC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI3D"}
@@ -0,0 +1,58 @@
1
+ import { z } from 'zod';
2
+ const SkillBuildExternalSourceSchema = z.object({
3
+ title: z.string().min(1),
4
+ url: z.string().min(1),
5
+ reason: z.string().min(1),
6
+ }).strict();
7
+ // The authoring plan is meant to describe semantic coverage, source depth,
8
+ // ordered work, and review criteria. It must not become an artifact-layout
9
+ // plan; the authoring skill owns artifact placement and routing choices.
10
+ export const GeneratedSkillAuthoringPlanSchema = z.object({
11
+ version: z.literal(1),
12
+ summary: z.string().min(1),
13
+ workflow: z.array(z.string().min(1)).min(1),
14
+ researchPlan: z.array(z.string().min(1)).default([]),
15
+ sourceDecisions: z.array(z.object({
16
+ source: z.string().min(1),
17
+ decision: z.string().min(1),
18
+ implication: z.string().min(1),
19
+ }).strict()).default([]),
20
+ lookupQuestions: z.array(z.object({
21
+ question: z.string().min(1),
22
+ openWhen: z.string().min(1),
23
+ requiredEvidence: z.array(z.string().min(1)).min(1),
24
+ }).strict()).default([]),
25
+ qualityBar: z.array(z.string().min(1)).default([]),
26
+ artifactPlan: z.array(z.string().min(1)).min(1),
27
+ validationPlan: z.array(z.string().min(1)).min(1),
28
+ risks: z.array(z.string().min(1)).default([]),
29
+ missingInputs: z.array(z.string().min(1)).default([]),
30
+ externalSources: z.array(SkillBuildExternalSourceSchema).default([]),
31
+ }).strict();
32
+ export const GeneratedSkillWriterResultSchema = z.object({
33
+ version: z.literal(1),
34
+ summary: z.string().min(1),
35
+ validationNotes: z.array(z.string().min(1)).default([]),
36
+ missingInputs: z.array(z.string().min(1)).default([]),
37
+ externalSources: z.array(SkillBuildExternalSourceSchema).default([]),
38
+ });
39
+ export const GeneratedSkillReviewIssueSchema = z.object({
40
+ severity: z.enum(['error', 'warning']),
41
+ path: z.string().optional(),
42
+ message: z.string().min(1),
43
+ suggestedFix: z.string().optional(),
44
+ }).strict();
45
+ export const GeneratedSkillReviewResultSchema = z.object({
46
+ version: z.literal(1),
47
+ valid: z.boolean(),
48
+ summary: z.string().min(1),
49
+ issues: z.array(GeneratedSkillReviewIssueSchema).default([]),
50
+ missingInputs: z.array(z.string().min(1)).default([]),
51
+ }).strict();
52
+ export class GeneratedSkillBuildError extends Error {
53
+ constructor(message, options) {
54
+ super(message, options);
55
+ this.name = 'GeneratedSkillBuildError';
56
+ }
57
+ }
58
+ //# sourceMappingURL=skill-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-contract.js","sourceRoot":"","sources":["../../src/skill-builder/skill-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { GeneratedSkillAuthoringPlan, GeneratedSkillAuthoringMode, GeneratedSkillReviewResult, SkillBuildExternalSource } from './skill-contract.js';
2
+ import type { SkillBuildOutline, SkillBuildSource } from './outline-contract.js';
3
+ interface GeneratedSkillArtifactSnapshot {
4
+ summary: string;
5
+ files: {
6
+ path: string;
7
+ content: string;
8
+ }[];
9
+ validationNotes: string[];
10
+ missingInputs: string[];
11
+ externalSources: SkillBuildExternalSource[];
12
+ }
13
+ export declare function defaultBuildMaxTurns(): number;
14
+ export declare function defaultValidationMaxTurns(): number;
15
+ export declare function authoringSystemPrompt(): string;
16
+ export declare function buildAuthoringPlanPrompt(args: {
17
+ outline: SkillBuildOutline;
18
+ source: SkillBuildSource;
19
+ authoringSkillRoot: string;
20
+ targetName: string;
21
+ targetRootDir: string;
22
+ mode?: GeneratedSkillAuthoringMode;
23
+ improvementPrompt?: string;
24
+ }): string;
25
+ export declare function buildAuthoringImplementationPrompt(args: {
26
+ outline: SkillBuildOutline;
27
+ source: SkillBuildSource;
28
+ authoringSkillRoot: string;
29
+ targetName: string;
30
+ targetRootDir: string;
31
+ plan: GeneratedSkillAuthoringPlan;
32
+ mode?: GeneratedSkillAuthoringMode;
33
+ improvementPrompt?: string;
34
+ }): string;
35
+ export declare function buildAuthoringValidationPrompt(args: {
36
+ outline: SkillBuildOutline;
37
+ source: SkillBuildSource;
38
+ authoringSkillRoot: string;
39
+ targetName: string;
40
+ targetRootDir: string;
41
+ plan: GeneratedSkillAuthoringPlan;
42
+ artifact: GeneratedSkillArtifactSnapshot;
43
+ deterministicIssues: string[];
44
+ mode?: GeneratedSkillAuthoringMode;
45
+ improvementPrompt?: string;
46
+ }): string;
47
+ export declare function buildAuthoringRevisionPrompt(args: {
48
+ outline: SkillBuildOutline;
49
+ source: SkillBuildSource;
50
+ authoringSkillRoot: string;
51
+ targetName: string;
52
+ targetRootDir: string;
53
+ plan: GeneratedSkillAuthoringPlan;
54
+ artifact: GeneratedSkillArtifactSnapshot;
55
+ review: GeneratedSkillReviewResult;
56
+ deterministicIssues: string[];
57
+ mode?: GeneratedSkillAuthoringMode;
58
+ improvementPrompt?: string;
59
+ }): string;
60
+ export {};
61
+ //# sourceMappingURL=skill-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-prompts.d.ts","sourceRoot":"","sources":["../../src/skill-builder/skill-prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAKjF,UAAU,8BAA8B;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,EAAE,CAAC;IACJ,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,eAAe,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAQD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AA0ED,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAoDT;AAED,wBAAgB,kCAAkC,CAAC,IAAI,EAAE;IACvD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,2BAA2B,CAAC;IAClC,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CA2CT;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACnD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE,8BAA8B,CAAC;IACzC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAoDT;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE;IACjD,OAAO,EAAE,iBAAiB,CAAC;IAC3B,MAAM,EAAE,gBAAgB,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,2BAA2B,CAAC;IAClC,QAAQ,EAAE,8BAA8B,CAAC;IACzC,MAAM,EAAE,0BAA0B,CAAC;IACnC,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,IAAI,CAAC,EAAE,2BAA2B,CAAC;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,GAAG,MAAM,CAuDT"}