@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,448 @@
1
+ const HELP_OPTIONS = {
2
+ cwd: {
3
+ label: '-C, --cwd <path>',
4
+ description: 'Run as if invoked from this directory',
5
+ },
6
+ help: {
7
+ label: '-h, --help',
8
+ description: 'Show help for this command',
9
+ },
10
+ version: {
11
+ label: '-V, --version',
12
+ description: 'Show version number',
13
+ },
14
+ skill: {
15
+ label: '--skill <name|path>',
16
+ description: 'Run only this skill by name or path; names fall back to built-ins',
17
+ },
18
+ config: {
19
+ label: '--config <path>',
20
+ description: 'Path to warden.toml',
21
+ },
22
+ model: {
23
+ label: '-m, --model <model>',
24
+ description: 'Model fallback when config does not specify one',
25
+ },
26
+ json: {
27
+ label: '--json',
28
+ description: 'Output results as JSON',
29
+ },
30
+ output: {
31
+ label: '-o, --output <path>',
32
+ description: 'Write full run output to a JSONL file',
33
+ },
34
+ failOn: {
35
+ label: '--fail-on <severity>',
36
+ description: 'Exit with code 1 if findings meet this severity',
37
+ },
38
+ reportOn: {
39
+ label: '--report-on <severity>',
40
+ description: 'Only show findings at or above this severity',
41
+ },
42
+ minConfidence: {
43
+ label: '--min-confidence <level>',
44
+ description: 'Only show findings at or above this confidence',
45
+ },
46
+ fix: {
47
+ label: '--fix',
48
+ description: 'Automatically apply all suggested fixes',
49
+ },
50
+ parallel: {
51
+ label: '--parallel <n>',
52
+ description: 'Max concurrent task or skill executions',
53
+ },
54
+ failFast: {
55
+ label: '-x, --fail-fast',
56
+ description: 'Stop after the first finding',
57
+ },
58
+ staged: {
59
+ label: '--staged',
60
+ description: 'Analyze only staged changes',
61
+ },
62
+ git: {
63
+ label: '--git',
64
+ description: 'Force ambiguous targets to be treated as git refs',
65
+ },
66
+ offline: {
67
+ label: '--offline',
68
+ description: 'Use cached remote skills without network access',
69
+ },
70
+ quiet: {
71
+ label: '--quiet',
72
+ description: 'Errors and final summary only',
73
+ },
74
+ verbose: {
75
+ label: '-v, --verbose',
76
+ description: 'Increase verbosity',
77
+ continuation: 'Repeat as -vv or combine with --debug for more detail',
78
+ },
79
+ debug: {
80
+ label: '--debug',
81
+ description: 'Enable debug output',
82
+ },
83
+ log: {
84
+ label: '--log',
85
+ description: 'Use log output mode',
86
+ },
87
+ color: {
88
+ label: '--color / --no-color',
89
+ description: 'Override color detection',
90
+ },
91
+ force: {
92
+ label: '-f, --force',
93
+ description: 'Overwrite existing files or bypass caches',
94
+ },
95
+ list: {
96
+ label: '--list',
97
+ description: 'List available skills',
98
+ },
99
+ remote: {
100
+ label: '--remote <ref>',
101
+ description: 'Remote repository reference',
102
+ },
103
+ regenerate: {
104
+ label: '--regenerate',
105
+ description: 'Ignore cached generated skill artifacts and build again',
106
+ },
107
+ prompt: {
108
+ label: '-p, --prompt <value>',
109
+ description: 'Generated skill prompt or improvement brief',
110
+ continuation: 'Prefix with @ to read the prompt from a file',
111
+ },
112
+ org: {
113
+ label: '--org <name>',
114
+ description: 'Create under an organization instead of a personal account',
115
+ },
116
+ port: {
117
+ label: '--port <number>',
118
+ description: 'Local server port',
119
+ },
120
+ timeout: {
121
+ label: '--timeout <seconds>',
122
+ description: 'Callback timeout in seconds',
123
+ },
124
+ name: {
125
+ label: '--name <string>',
126
+ description: 'Custom GitHub App name',
127
+ },
128
+ noOpen: {
129
+ label: '--no-open',
130
+ description: 'Print the URL instead of opening a browser',
131
+ },
132
+ follow: {
133
+ label: '--follow',
134
+ description: 'Follow a run instead of showing it once',
135
+ },
136
+ all: {
137
+ label: '--all',
138
+ description: 'Include zero-file sessions in runs list output',
139
+ },
140
+ };
141
+ const SHARED_COMMAND_OPTIONS = [
142
+ 'quiet',
143
+ 'verbose',
144
+ 'debug',
145
+ 'log',
146
+ 'color',
147
+ 'help',
148
+ ];
149
+ const HELP_COMMANDS = {
150
+ run: {
151
+ summary: 'Analyze files, git refs, or current branch changes',
152
+ description: 'Run Warden analysis against explicit targets or the current branch by default.',
153
+ usage: [
154
+ 'warden [targets...] [options]',
155
+ 'warden run [targets...] [options]',
156
+ ],
157
+ arguments: [
158
+ { label: 'targets...', description: 'Files, globs, or git refs to analyze' },
159
+ ],
160
+ options: [
161
+ 'cwd',
162
+ 'skill',
163
+ 'config',
164
+ 'model',
165
+ 'json',
166
+ 'output',
167
+ 'failOn',
168
+ 'reportOn',
169
+ 'minConfidence',
170
+ 'fix',
171
+ 'parallel',
172
+ 'failFast',
173
+ 'staged',
174
+ 'git',
175
+ 'offline',
176
+ ...SHARED_COMMAND_OPTIONS,
177
+ ],
178
+ examples: [
179
+ 'warden src/auth.ts',
180
+ 'warden "src/**/*.ts" --skill security-review',
181
+ 'warden HEAD~3',
182
+ 'warden --staged --fix',
183
+ ],
184
+ },
185
+ init: {
186
+ summary: 'Initialize Warden configuration',
187
+ description: 'Create a starter warden.toml and GitHub workflow in the current repository.',
188
+ usage: ['warden init [options]'],
189
+ options: ['cwd', 'force', ...SHARED_COMMAND_OPTIONS],
190
+ examples: [
191
+ 'warden init',
192
+ 'warden init --force',
193
+ ],
194
+ },
195
+ add: {
196
+ summary: 'Add a skill trigger to warden.toml',
197
+ description: 'Add a local or remote skill trigger to the repository configuration.',
198
+ usage: ['warden add [skill] [options]'],
199
+ arguments: [
200
+ { label: 'skill', description: 'Skill name to add' },
201
+ ],
202
+ options: ['cwd', 'list', 'remote', 'force', ...SHARED_COMMAND_OPTIONS],
203
+ examples: [
204
+ 'warden add',
205
+ 'warden add security-review',
206
+ 'warden add --remote getsentry/skills --skill security-review',
207
+ ],
208
+ },
209
+ sync: {
210
+ summary: 'Update cached remote skills',
211
+ description: 'Refresh cached remote skill repositories to their latest revision.',
212
+ usage: ['warden sync [remote] [options]'],
213
+ arguments: [
214
+ { label: 'remote', description: 'Remote repository reference to sync' },
215
+ ],
216
+ options: ['cwd', 'remote', ...SHARED_COMMAND_OPTIONS],
217
+ examples: [
218
+ 'warden sync',
219
+ 'warden sync getsentry/skills',
220
+ ],
221
+ },
222
+ build: {
223
+ summary: 'Build a repo-local generated skill',
224
+ description: 'Create or refresh one generated skill. A name resolves through .warden/skills, .agents/skills, then .claude/skills; use a path for other roots.',
225
+ usage: [
226
+ 'warden build <skill> [options]',
227
+ ],
228
+ arguments: [
229
+ { label: 'skill', description: 'Generated skill name or skill root path' },
230
+ ],
231
+ options: [
232
+ 'cwd',
233
+ 'config',
234
+ 'model',
235
+ 'json',
236
+ 'regenerate',
237
+ 'prompt',
238
+ ...SHARED_COMMAND_OPTIONS,
239
+ ],
240
+ examples: [
241
+ 'warden build security --regenerate',
242
+ 'warden build security -p @prompt.md',
243
+ 'warden build ./skills/security -p @prompt.md',
244
+ 'warden build sentry-security --json',
245
+ ],
246
+ },
247
+ improve: {
248
+ summary: 'Improve a repo-local generated skill',
249
+ description: 'Revise an existing generated skill from an improvement brief using the generated-skill reviewer loop.',
250
+ usage: [
251
+ 'warden improve <skill> [options]',
252
+ ],
253
+ arguments: [
254
+ { label: 'skill', description: 'Generated skill name or skill root path' },
255
+ ],
256
+ options: [
257
+ 'cwd',
258
+ 'config',
259
+ 'model',
260
+ 'json',
261
+ 'prompt',
262
+ ...SHARED_COMMAND_OPTIONS,
263
+ ],
264
+ examples: [
265
+ 'warden improve security -p "Deepen source provenance and reference routing"',
266
+ 'warden improve security -p @feedback.md',
267
+ 'warden improve ./skills/security -p @feedback.md',
268
+ ],
269
+ },
270
+ 'setup-app': {
271
+ summary: 'Create a GitHub App via manifest flow',
272
+ description: 'Walk through the GitHub App manifest flow and print the credentials to install.',
273
+ usage: ['warden setup-app [options]'],
274
+ options: ['cwd', 'org', 'port', 'timeout', 'name', 'noOpen', ...SHARED_COMMAND_OPTIONS],
275
+ examples: [
276
+ 'warden setup-app',
277
+ 'warden setup-app --org my-org --port 8080',
278
+ ],
279
+ },
280
+ runs: {
281
+ summary: 'Inspect saved sessions and run logs',
282
+ description: 'Browse, show, follow, and clean up saved Warden run logs.',
283
+ usage: [
284
+ 'warden runs [list] [options]',
285
+ 'warden runs show <files...> [options]',
286
+ 'warden runs follow [run] [options]',
287
+ 'warden runs gc [options]',
288
+ ],
289
+ options: ['cwd', 'follow', 'all', 'json', ...SHARED_COMMAND_OPTIONS],
290
+ subcommands: [
291
+ { label: 'list', summary: 'List saved runs' },
292
+ { label: 'show <files...>', summary: 'Show results from saved logs or run IDs' },
293
+ { label: 'follow [run]', summary: 'Tail a live or completed session' },
294
+ { label: 'gc', summary: 'Remove expired session logs' },
295
+ ],
296
+ examples: [
297
+ 'warden runs',
298
+ 'warden runs show deadbeef',
299
+ 'warden runs follow',
300
+ ],
301
+ },
302
+ 'runs:list': {
303
+ summary: 'List saved runs',
304
+ description: 'List saved run logs in reverse chronological order.',
305
+ usage: ['warden runs [list] [options]'],
306
+ options: ['cwd', 'all', 'json', ...SHARED_COMMAND_OPTIONS],
307
+ examples: [
308
+ 'warden runs',
309
+ 'warden runs list --all',
310
+ ],
311
+ },
312
+ 'runs:show': {
313
+ summary: 'Show results from saved logs or run IDs',
314
+ description: 'Render findings from one or more saved JSONL logs or short run IDs.',
315
+ usage: ['warden runs show <files...> [options]'],
316
+ arguments: [
317
+ { label: 'files...', description: 'JSONL paths or short run IDs' },
318
+ ],
319
+ options: ['cwd', 'json', 'reportOn', 'minConfidence', ...SHARED_COMMAND_OPTIONS],
320
+ examples: [
321
+ 'warden runs show deadbeef',
322
+ 'warden runs show .warden/logs/a1b2c3d4-2026-04-25T13-00-00-000Z.jsonl',
323
+ ],
324
+ },
325
+ 'runs:follow': {
326
+ summary: 'Tail a live or completed session',
327
+ description: 'Follow a session as skill records arrive, or replay the latest completed run.',
328
+ usage: [
329
+ 'warden runs follow [run] [options]',
330
+ 'warden runs --follow [run] [options]',
331
+ ],
332
+ arguments: [
333
+ { label: 'run', description: 'Optional short run ID or JSONL path' },
334
+ ],
335
+ options: ['cwd', 'json', ...SHARED_COMMAND_OPTIONS],
336
+ examples: [
337
+ 'warden runs follow',
338
+ 'warden runs --follow deadbeef',
339
+ ],
340
+ },
341
+ 'runs:gc': {
342
+ summary: 'Remove expired session logs',
343
+ description: 'Delete saved run logs that are older than the configured retention window.',
344
+ usage: ['warden runs gc [options]'],
345
+ options: ['cwd', 'json', ...SHARED_COMMAND_OPTIONS],
346
+ examples: [
347
+ 'warden runs gc',
348
+ ],
349
+ },
350
+ };
351
+ const ROOT_COMMANDS = [
352
+ { label: 'run [targets...]', summary: 'Analyze files, git refs, or current branch changes' },
353
+ { label: 'init', summary: 'Initialize Warden configuration' },
354
+ { label: 'add [skill]', summary: 'Add a skill trigger to warden.toml' },
355
+ { label: 'sync [remote]', summary: 'Update cached remote skills to latest' },
356
+ { label: 'build <skill>', summary: 'Build a repo-local generated skill' },
357
+ { label: 'runs', summary: 'Inspect saved sessions and run logs' },
358
+ { label: 'setup-app', summary: 'Create a GitHub App via manifest flow' },
359
+ { label: 'help [command]', summary: 'Show help for a command' },
360
+ ];
361
+ function renderTable(items) {
362
+ if (items.length === 0)
363
+ return [];
364
+ const width = Math.max(...items.map((item) => item.label.length));
365
+ const lines = [];
366
+ for (const item of items) {
367
+ lines.push(` ${item.label.padEnd(width)} ${item.description}`);
368
+ if (item.continuation) {
369
+ lines.push(` ${' '.repeat(width)} ${item.continuation}`);
370
+ }
371
+ }
372
+ return lines;
373
+ }
374
+ function renderSection(title, lines) {
375
+ if (lines.length === 0)
376
+ return [];
377
+ return [title, ...lines, ''];
378
+ }
379
+ function renderRootHelp() {
380
+ const lines = [
381
+ 'Usage:',
382
+ ' warden [targets...] [options]',
383
+ ' warden <command> [options]',
384
+ '',
385
+ 'Warden watches over your code.',
386
+ '',
387
+ ...renderSection('Commands:', renderTable(ROOT_COMMANDS.map((command) => ({
388
+ label: command.label,
389
+ description: command.summary,
390
+ })))),
391
+ ...renderSection('Global Options:', renderTable([
392
+ { label: HELP_OPTIONS.cwd.label, description: HELP_OPTIONS.cwd.description },
393
+ { label: HELP_OPTIONS.help.label, description: HELP_OPTIONS.help.description },
394
+ { label: HELP_OPTIONS.version.label, description: HELP_OPTIONS.version.description },
395
+ ])),
396
+ ...renderSection('Examples:', [
397
+ ' warden src/auth.ts',
398
+ ' warden HEAD~3 --skill security-review',
399
+ ' warden build security --regenerate',
400
+ ' warden help runs show',
401
+ ]),
402
+ ];
403
+ return lines.join('\n').trimEnd();
404
+ }
405
+ function renderCommandHelp(target) {
406
+ const spec = HELP_COMMANDS[target];
407
+ const lines = [
408
+ 'Usage:',
409
+ ...spec.usage.map((usage) => ` ${usage}`),
410
+ '',
411
+ spec.description,
412
+ '',
413
+ ];
414
+ if (spec.aliases && spec.aliases.length > 0) {
415
+ lines.push(`Aliases: ${spec.aliases.join(', ')}`);
416
+ lines.push('');
417
+ }
418
+ if (spec.arguments && spec.arguments.length > 0) {
419
+ lines.push(...renderSection('Arguments:', renderTable(spec.arguments.map((argument) => ({
420
+ label: argument.label,
421
+ description: argument.description,
422
+ })))));
423
+ }
424
+ if (spec.subcommands && spec.subcommands.length > 0) {
425
+ lines.push(...renderSection('Subcommands:', renderTable(spec.subcommands.map((command) => ({
426
+ label: command.label,
427
+ description: command.summary,
428
+ })))));
429
+ }
430
+ if (spec.options && spec.options.length > 0) {
431
+ lines.push(...renderSection('Options:', renderTable(spec.options.map((option) => ({
432
+ label: HELP_OPTIONS[option].label,
433
+ description: HELP_OPTIONS[option].description,
434
+ continuation: HELP_OPTIONS[option].continuation,
435
+ })))));
436
+ }
437
+ if (spec.examples && spec.examples.length > 0) {
438
+ lines.push(...renderSection('Examples:', spec.examples.map((example) => ` ${example}`)));
439
+ }
440
+ return lines.join('\n').trimEnd();
441
+ }
442
+ export function renderHelp(target) {
443
+ return target ? renderCommandHelp(target) : renderRootHelp();
444
+ }
445
+ export function showHelp(target) {
446
+ console.log(renderHelp(target));
447
+ }
448
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -3,19 +3,8 @@ import { initSentry, Sentry, flushSentry } from '../sentry.js';
3
3
  initSentry('cli');
4
4
  import { main, abortController, interrupted } from './main.js';
5
5
  import { UserAbortError } from './input.js';
6
- let interruptCount = 0;
7
- process.on('SIGINT', () => {
8
- interruptCount++;
9
- abortController.abort();
10
- interrupted.value = true;
11
- if (interruptCount > 1) {
12
- // Second Ctrl+C: force exit immediately
13
- process.exit(130);
14
- }
15
- // First Ctrl+C: let the main flow collect partial results.
16
- // The interrupt message is rendered by Ink (TTY) or logPlain (non-TTY)
17
- // via the abort signal listener -- no direct stderr writes needed here.
18
- });
6
+ import { createSigintHandler } from './signals.js';
7
+ process.on('SIGINT', createSigintHandler({ abortController, interrupted }));
19
8
  main().catch(async (error) => {
20
9
  if (error instanceof UserAbortError) {
21
10
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,UAAU,CAAC,KAAK,CAAC,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;IACxB,cAAc,EAAE,CAAC;IACjB,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;IAEzB,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACvB,wCAAwC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAED,2DAA2D;IAC3D,uEAAuE;IACvE,wEAAwE;AAC1E,CAAC,CAAC,CAAC;AAEH,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,UAAU,CAAC,KAAK,CAAC,CAAC;AAElB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;AAE5E,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IAC3B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,WAAW,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;QACnE,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC/B,MAAM,WAAW,EAAE,CAAC;IACpB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +1,7 @@
1
+ export interface PromptMultilineOptions {
2
+ hint?: string | false;
3
+ prompt?: string;
4
+ }
1
5
  /**
2
6
  * Custom error thrown when the user aborts via Ctrl+C during interactive input.
3
7
  * Allows callers to handle cleanup (e.g. Sentry flush) before exiting.
@@ -9,4 +13,12 @@ export declare class UserAbortError extends Error {
9
13
  * Read a single keypress from stdin in raw mode.
10
14
  */
11
15
  export declare function readSingleKey(): Promise<string>;
16
+ /**
17
+ * Prompt for a single line of text on stderr.
18
+ */
19
+ export declare function promptLine(question: string): Promise<string>;
20
+ /**
21
+ * Prompt for multiline text on stderr. The user finishes with an empty line.
22
+ */
23
+ export declare function promptMultiline(intro: string, options?: PromptMultilineOptions): Promise<string>;
12
24
  //# sourceMappingURL=input.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBrD"}
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,KAAK;;CAKxC;AAED;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAwBrD;AAaD;;GAEG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,MAAM,CAAC,CA2B1G"}
package/dist/cli/input.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createInterface } from 'node:readline/promises';
1
2
  /**
2
3
  * Custom error thrown when the user aborts via Ctrl+C during interactive input.
3
4
  * Allows callers to handle cleanup (e.g. Sentry flush) before exiting.
@@ -31,4 +32,63 @@ export async function readSingleKey() {
31
32
  });
32
33
  });
33
34
  }
35
+ function createPromptInterface() {
36
+ const rl = createInterface({
37
+ input: process.stdin,
38
+ output: process.stderr,
39
+ });
40
+ rl.on('SIGINT', () => {
41
+ rl.close();
42
+ });
43
+ return rl;
44
+ }
45
+ /**
46
+ * Prompt for a single line of text on stderr.
47
+ */
48
+ export async function promptLine(question) {
49
+ const rl = createPromptInterface();
50
+ try {
51
+ const answer = await rl.question(question);
52
+ return answer.trim();
53
+ }
54
+ catch {
55
+ throw new UserAbortError();
56
+ }
57
+ finally {
58
+ rl.close();
59
+ }
60
+ }
61
+ /**
62
+ * Prompt for multiline text on stderr. The user finishes with an empty line.
63
+ */
64
+ export async function promptMultiline(intro, options = {}) {
65
+ const rl = createPromptInterface();
66
+ const lines = [];
67
+ const hint = options.hint === undefined ? 'Finish with an empty line.' : options.hint;
68
+ const prompt = options.prompt ?? '> ';
69
+ try {
70
+ process.stderr.write(`${intro}\n`);
71
+ if (hint) {
72
+ process.stderr.write(`${hint}\n`);
73
+ }
74
+ while (true) {
75
+ const line = await rl.question(prompt);
76
+ if (line.trim() === '' && lines.length > 0) {
77
+ break;
78
+ }
79
+ if (line.trim() === '' && lines.length === 0) {
80
+ continue;
81
+ }
82
+ lines.push(line);
83
+ }
84
+ process.stderr.write('\n');
85
+ return lines.join('\n').trim();
86
+ }
87
+ catch {
88
+ throw new UserAbortError();
89
+ }
90
+ finally {
91
+ rl.close();
92
+ }
93
+ }
34
94
  //# sourceMappingURL=input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvC;QACE,KAAK,CAAC,cAAc,CAAC,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAE3B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1B,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACzB,KAAK,CAAC,KAAK,EAAE,CAAC;YAEd,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE5B,gBAAgB;YAChB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/cli/input.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,9 @@
1
- import type { SkillReport, ConfidenceThreshold } from '../types/index.js';
1
+ import type { WardenConfig } from '../config/schema.js';
2
+ import { type SkillRunnerOptions } from '../sdk/runner.js';
3
+ import type { SkillReport, SeverityThreshold, ConfidenceThreshold } from '../types/index.js';
2
4
  import { type CLIOptions } from './args.js';
3
- import { runSkillTasks } from './output/index.js';
5
+ import { buildLocalEventContext } from './context.js';
6
+ import { Reporter, runSkillTasks, type SkillTaskOptions } from './output/index.js';
4
7
  /**
5
8
  * Global abort controller for graceful shutdown on SIGINT.
6
9
  * Used to cancel in-progress SDK queries.
@@ -13,17 +16,51 @@ export declare const abortController: AbortController;
13
16
  export declare const interrupted: {
14
17
  value: boolean;
15
18
  };
19
+ /** Resolve the directory Warden should treat as the invocation root. */
20
+ export declare function resolveInvocationCwd(baseCwd: string, cliCwd: string | undefined): string;
21
+ export interface RunSkillSpec {
22
+ name: string;
23
+ displayName?: string;
24
+ skill: string;
25
+ remote?: string;
26
+ failOn?: SeverityThreshold;
27
+ minConfidence?: ConfidenceThreshold;
28
+ context: Awaited<ReturnType<typeof buildLocalEventContext>>;
29
+ runnerOptions: SkillRunnerOptions;
30
+ }
16
31
  interface ProcessedResults {
17
32
  reports: SkillReport[];
18
33
  filteredReports: SkillReport[];
19
34
  hasFailure: boolean;
20
35
  failureReasons: string[];
21
36
  }
37
+ type SkillRunnerOptionOverrides = Pick<SkillRunnerOptions, 'model' | 'maxTurns' | 'runtime' | 'auxiliaryModel' | 'synthesisModel' | 'auxiliaryMaxRetries' | 'verifyFindings'>;
38
+ /** Apply per-skill runner overrides on top of the shared execution defaults. */
39
+ export declare function mergeSkillRunnerOptions(base: SkillRunnerOptions, overrides: SkillRunnerOptionOverrides): SkillRunnerOptions;
40
+ /** Expand configured skills into runnable direct tasks. */
41
+ export declare function createSkillTasks(args: {
42
+ specs: RunSkillSpec[];
43
+ repoPath?: string;
44
+ options: CLIOptions;
45
+ parallel: number;
46
+ reporter: Reporter;
47
+ }): Promise<SkillTaskOptions[]>;
48
+ /** Resolve the default analysis model from config, CLI overrides, or environment. */
49
+ export declare function resolveCliDefaultModel(config: Pick<WardenConfig, 'defaults'> | null | undefined, cliModel?: string): string | undefined;
50
+ /** Resolve the default auxiliary model used for helper and repair passes. */
51
+ export declare function resolveCliDefaultAuxiliaryModel(config: Pick<WardenConfig, 'defaults'> | null | undefined): string | undefined;
52
+ /** Resolve the default synthesis model, falling back to the auxiliary lane when unset. */
53
+ export declare function resolveCliDefaultSynthesisModel(config: Pick<WardenConfig, 'defaults'> | null | undefined): string | undefined;
54
+ /** Resolve the model label recorded in JSONL output, including the default sentinel. */
55
+ export declare function resolveCliLogModel(config: Pick<WardenConfig, 'defaults'> | null | undefined, cliModel?: string): string;
22
56
  /**
23
57
  * Process skill task results into reports and check for failures.
24
58
  * Exported for testing; callers inside main.ts use it directly.
25
59
  */
26
60
  export declare function processTaskResults(results: Awaited<ReturnType<typeof runSkillTasks>>, reportOn: CLIOptions['reportOn'], minConfidence?: ConfidenceThreshold): ProcessedResults;
61
+ /** Run one or more skills against an already constructed review context. */
62
+ export declare function runSkills(context: Awaited<ReturnType<typeof buildLocalEventContext>>, options: CLIOptions, reporter: Reporter): Promise<number>;
63
+ /** Parse CLI input, dispatch the selected command, and perform shutdown cleanup. */
27
64
  export declare function main(): Promise<void>;
28
65
  export {};
29
66
  //# sourceMappingURL=main.d.ts.map