@sentry/warden 0.21.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 (326) hide show
  1. package/.oxlintrc.json +169 -0
  2. package/CHANGELOG.md +390 -0
  3. package/README.md +4 -4
  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 +79 -15
  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/log-cleanup.d.ts.map +1 -1
  41. package/dist/cli/log-cleanup.js +4 -0
  42. package/dist/cli/log-cleanup.js.map +1 -1
  43. package/dist/cli/main.d.ts +39 -2
  44. package/dist/cli/main.d.ts.map +1 -1
  45. package/dist/cli/main.js +482 -100
  46. package/dist/cli/main.js.map +1 -1
  47. package/dist/cli/output/box.js +1 -1
  48. package/dist/cli/output/formatters.d.ts +10 -2
  49. package/dist/cli/output/formatters.d.ts.map +1 -1
  50. package/dist/cli/output/formatters.js +32 -9
  51. package/dist/cli/output/formatters.js.map +1 -1
  52. package/dist/cli/output/index.d.ts +2 -2
  53. package/dist/cli/output/index.d.ts.map +1 -1
  54. package/dist/cli/output/index.js +2 -2
  55. package/dist/cli/output/index.js.map +1 -1
  56. package/dist/cli/output/ink-runner.d.ts +3 -1
  57. package/dist/cli/output/ink-runner.d.ts.map +1 -1
  58. package/dist/cli/output/ink-runner.js +79 -25
  59. package/dist/cli/output/ink-runner.js.map +1 -1
  60. package/dist/cli/output/jsonl-schema-gen.d.ts.map +1 -1
  61. package/dist/cli/output/jsonl-schema-gen.js +4 -2
  62. package/dist/cli/output/jsonl-schema-gen.js.map +1 -1
  63. package/dist/cli/output/jsonl.d.ts +147 -4
  64. package/dist/cli/output/jsonl.d.ts.map +1 -1
  65. package/dist/cli/output/jsonl.js +183 -7
  66. package/dist/cli/output/jsonl.js.map +1 -1
  67. package/dist/cli/output/live-status.d.ts +48 -0
  68. package/dist/cli/output/live-status.d.ts.map +1 -0
  69. package/dist/cli/output/live-status.js +173 -0
  70. package/dist/cli/output/live-status.js.map +1 -0
  71. package/dist/cli/output/reporter.d.ts +4 -0
  72. package/dist/cli/output/reporter.d.ts.map +1 -1
  73. package/dist/cli/output/reporter.js +20 -3
  74. package/dist/cli/output/reporter.js.map +1 -1
  75. package/dist/cli/output/tasks.d.ts +11 -5
  76. package/dist/cli/output/tasks.d.ts.map +1 -1
  77. package/dist/cli/output/tasks.js +126 -68
  78. package/dist/cli/output/tasks.js.map +1 -1
  79. package/dist/cli/signals.d.ts +15 -0
  80. package/dist/cli/signals.d.ts.map +1 -0
  81. package/dist/cli/signals.js +26 -0
  82. package/dist/cli/signals.js.map +1 -0
  83. package/dist/config/loader.d.ts +48 -7
  84. package/dist/config/loader.d.ts.map +1 -1
  85. package/dist/config/loader.js +228 -32
  86. package/dist/config/loader.js.map +1 -1
  87. package/dist/config/schema.d.ts +55 -0
  88. package/dist/config/schema.d.ts.map +1 -1
  89. package/dist/config/schema.js +34 -2
  90. package/dist/config/schema.js.map +1 -1
  91. package/dist/diff/context.d.ts +9 -2
  92. package/dist/diff/context.d.ts.map +1 -1
  93. package/dist/diff/context.js +65 -17
  94. package/dist/diff/context.js.map +1 -1
  95. package/dist/evals/runner.d.ts.map +1 -1
  96. package/dist/evals/runner.js +16 -0
  97. package/dist/evals/runner.js.map +1 -1
  98. package/dist/event/context.d.ts.map +1 -1
  99. package/dist/event/context.js +1 -0
  100. package/dist/event/context.js.map +1 -1
  101. package/dist/event/schedule-context.d.ts.map +1 -1
  102. package/dist/event/schedule-context.js +1 -0
  103. package/dist/event/schedule-context.js.map +1 -1
  104. package/dist/index.d.ts +6 -6
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +3 -3
  107. package/dist/index.js.map +1 -1
  108. package/dist/output/dedup.d.ts +8 -11
  109. package/dist/output/dedup.d.ts.map +1 -1
  110. package/dist/output/dedup.js +39 -37
  111. package/dist/output/dedup.js.map +1 -1
  112. package/dist/output/github-checks.d.ts +1 -0
  113. package/dist/output/github-checks.d.ts.map +1 -1
  114. package/dist/output/github-checks.js +9 -7
  115. package/dist/output/github-checks.js.map +1 -1
  116. package/dist/sdk/analyze.d.ts.map +1 -1
  117. package/dist/sdk/analyze.js +166 -276
  118. package/dist/sdk/analyze.js.map +1 -1
  119. package/dist/sdk/circuit-breaker.d.ts +26 -0
  120. package/dist/sdk/circuit-breaker.d.ts.map +1 -0
  121. package/dist/sdk/circuit-breaker.js +53 -0
  122. package/dist/sdk/circuit-breaker.js.map +1 -0
  123. package/dist/sdk/errors.d.ts +5 -0
  124. package/dist/sdk/errors.d.ts.map +1 -1
  125. package/dist/sdk/errors.js +27 -0
  126. package/dist/sdk/errors.js.map +1 -1
  127. package/dist/sdk/extract.d.ts +18 -9
  128. package/dist/sdk/extract.d.ts.map +1 -1
  129. package/dist/sdk/extract.js +95 -87
  130. package/dist/sdk/extract.js.map +1 -1
  131. package/dist/sdk/fix-quality.d.ts +5 -0
  132. package/dist/sdk/fix-quality.d.ts.map +1 -1
  133. package/dist/sdk/fix-quality.js +42 -23
  134. package/dist/sdk/fix-quality.js.map +1 -1
  135. package/dist/sdk/haiku.d.ts +6 -0
  136. package/dist/sdk/haiku.d.ts.map +1 -1
  137. package/dist/sdk/haiku.js +75 -49
  138. package/dist/sdk/haiku.js.map +1 -1
  139. package/dist/sdk/json-output.d.ts +31 -0
  140. package/dist/sdk/json-output.d.ts.map +1 -0
  141. package/dist/sdk/json-output.js +98 -0
  142. package/dist/sdk/json-output.js.map +1 -0
  143. package/dist/sdk/model-pricing.json +56 -16
  144. package/dist/sdk/post-process.d.ts +29 -0
  145. package/dist/sdk/post-process.d.ts.map +1 -0
  146. package/dist/sdk/post-process.js +65 -0
  147. package/dist/sdk/post-process.js.map +1 -0
  148. package/dist/sdk/prepare.d.ts.map +1 -1
  149. package/dist/sdk/prepare.js +4 -1
  150. package/dist/sdk/prepare.js.map +1 -1
  151. package/dist/sdk/pricing.d.ts +18 -0
  152. package/dist/sdk/pricing.d.ts.map +1 -1
  153. package/dist/sdk/pricing.js +108 -3
  154. package/dist/sdk/pricing.js.map +1 -1
  155. package/dist/sdk/prompt-sections.d.ts +56 -0
  156. package/dist/sdk/prompt-sections.d.ts.map +1 -0
  157. package/dist/sdk/prompt-sections.js +118 -0
  158. package/dist/sdk/prompt-sections.js.map +1 -0
  159. package/dist/sdk/prompt.d.ts +2 -17
  160. package/dist/sdk/prompt.d.ts.map +1 -1
  161. package/dist/sdk/prompt.js +15 -37
  162. package/dist/sdk/prompt.js.map +1 -1
  163. package/dist/sdk/report-files.d.ts +15 -0
  164. package/dist/sdk/report-files.d.ts.map +1 -0
  165. package/dist/sdk/report-files.js +20 -0
  166. package/dist/sdk/report-files.js.map +1 -0
  167. package/dist/sdk/runner.d.ts +9 -1
  168. package/dist/sdk/runner.d.ts.map +1 -1
  169. package/dist/sdk/runner.js +6 -0
  170. package/dist/sdk/runner.js.map +1 -1
  171. package/dist/sdk/runtimes/claude.d.ts +3 -0
  172. package/dist/sdk/runtimes/claude.d.ts.map +1 -0
  173. package/dist/sdk/runtimes/claude.js +376 -0
  174. package/dist/sdk/runtimes/claude.js.map +1 -0
  175. package/dist/sdk/runtimes/index.d.ts +12 -0
  176. package/dist/sdk/runtimes/index.d.ts.map +1 -0
  177. package/dist/sdk/runtimes/index.js +22 -0
  178. package/dist/sdk/runtimes/index.js.map +1 -0
  179. package/dist/sdk/runtimes/types.d.ts +116 -0
  180. package/dist/sdk/runtimes/types.d.ts.map +1 -0
  181. package/dist/sdk/runtimes/types.js +17 -0
  182. package/dist/sdk/runtimes/types.js.map +1 -0
  183. package/dist/sdk/types.d.ts +42 -2
  184. package/dist/sdk/types.d.ts.map +1 -1
  185. package/dist/sdk/types.js.map +1 -1
  186. package/dist/sdk/usage.d.ts +21 -6
  187. package/dist/sdk/usage.d.ts.map +1 -1
  188. package/dist/sdk/usage.js +36 -23
  189. package/dist/sdk/usage.js.map +1 -1
  190. package/dist/sdk/verify.d.ts +25 -0
  191. package/dist/sdk/verify.d.ts.map +1 -0
  192. package/dist/sdk/verify.js +226 -0
  193. package/dist/sdk/verify.js.map +1 -0
  194. package/dist/skill-builder/agentic.d.ts +33 -0
  195. package/dist/skill-builder/agentic.d.ts.map +1 -0
  196. package/dist/skill-builder/agentic.js +240 -0
  197. package/dist/skill-builder/agentic.js.map +1 -0
  198. package/dist/skill-builder/authoring-provider.d.ts +5 -0
  199. package/dist/skill-builder/authoring-provider.d.ts.map +1 -0
  200. package/dist/skill-builder/authoring-provider.js +70 -0
  201. package/dist/skill-builder/authoring-provider.js.map +1 -0
  202. package/dist/skill-builder/definition.d.ts +46 -0
  203. package/dist/skill-builder/definition.d.ts.map +1 -0
  204. package/dist/skill-builder/definition.js +171 -0
  205. package/dist/skill-builder/definition.js.map +1 -0
  206. package/dist/skill-builder/outline-contract.d.ts +113 -0
  207. package/dist/skill-builder/outline-contract.d.ts.map +1 -0
  208. package/dist/skill-builder/outline-contract.js +73 -0
  209. package/dist/skill-builder/outline-contract.js.map +1 -0
  210. package/dist/skill-builder/outline-state.d.ts +158 -0
  211. package/dist/skill-builder/outline-state.d.ts.map +1 -0
  212. package/dist/skill-builder/outline-state.js +87 -0
  213. package/dist/skill-builder/outline-state.js.map +1 -0
  214. package/dist/skill-builder/outline.d.ts +36 -0
  215. package/dist/skill-builder/outline.d.ts.map +1 -0
  216. package/dist/skill-builder/outline.js +345 -0
  217. package/dist/skill-builder/outline.js.map +1 -0
  218. package/dist/skill-builder/skill-contract.d.ts +97 -0
  219. package/dist/skill-builder/skill-contract.d.ts.map +1 -0
  220. package/dist/skill-builder/skill-contract.js +58 -0
  221. package/dist/skill-builder/skill-contract.js.map +1 -0
  222. package/dist/skill-builder/skill-prompts.d.ts +61 -0
  223. package/dist/skill-builder/skill-prompts.d.ts.map +1 -0
  224. package/dist/skill-builder/skill-prompts.js +285 -0
  225. package/dist/skill-builder/skill-prompts.js.map +1 -0
  226. package/dist/skill-builder/skill.d.ts +23 -0
  227. package/dist/skill-builder/skill.d.ts.map +1 -0
  228. package/dist/skill-builder/skill.js +563 -0
  229. package/dist/skill-builder/skill.js.map +1 -0
  230. package/dist/skills/index.d.ts +2 -2
  231. package/dist/skills/index.d.ts.map +1 -1
  232. package/dist/skills/index.js +1 -1
  233. package/dist/skills/index.js.map +1 -1
  234. package/dist/skills/loader.d.ts +20 -6
  235. package/dist/skills/loader.d.ts.map +1 -1
  236. package/dist/skills/loader.js +88 -141
  237. package/dist/skills/loader.js.map +1 -1
  238. package/dist/skills/remote.d.ts +11 -7
  239. package/dist/skills/remote.d.ts.map +1 -1
  240. package/dist/skills/remote.js +62 -162
  241. package/dist/skills/remote.js.map +1 -1
  242. package/dist/triggers/matcher.d.ts.map +1 -1
  243. package/dist/triggers/matcher.js +28 -15
  244. package/dist/triggers/matcher.js.map +1 -1
  245. package/dist/types/index.d.ts +41 -0
  246. package/dist/types/index.d.ts.map +1 -1
  247. package/dist/types/index.js +24 -0
  248. package/dist/types/index.js.map +1 -1
  249. package/dist/utils/index.d.ts +1 -0
  250. package/dist/utils/index.d.ts.map +1 -1
  251. package/dist/utils/index.js +1 -0
  252. package/dist/utils/index.js.map +1 -1
  253. package/dist/utils/path.d.ts +17 -0
  254. package/dist/utils/path.d.ts.map +1 -0
  255. package/dist/utils/path.js +36 -0
  256. package/dist/utils/path.js.map +1 -0
  257. package/package.json +8 -8
  258. package/policies/README.md +22 -0
  259. package/policies/code-comments.md +20 -0
  260. package/policies/policy-template.md +14 -0
  261. package/skills/warden/SKILL.md +5 -5
  262. package/skills/warden/SOURCES.md +39 -0
  263. package/skills/warden/SPEC.md +112 -0
  264. package/skills/warden/references/cli-reference.md +11 -4
  265. package/skills/warden/references/config-schema.md +38 -13
  266. package/skills/warden/references/configuration.md +29 -8
  267. package/skills/warden-sweep/SKILL.md +43 -365
  268. package/skills/warden-sweep/SOURCES.md +43 -0
  269. package/skills/warden-sweep/SPEC.md +126 -0
  270. package/skills/warden-sweep/references/issue-phase.md +24 -0
  271. package/skills/warden-sweep/references/organize-phase.md +31 -0
  272. package/skills/warden-sweep/references/patch-phase.md +142 -0
  273. package/skills/warden-sweep/references/resume-and-artifacts.md +51 -0
  274. package/skills/warden-sweep/references/scan-phase.md +46 -0
  275. package/skills/warden-sweep/references/script-interfaces.md +127 -0
  276. package/skills/warden-sweep/references/verify-phase.md +69 -0
  277. package/src/builtin-skills/security-review/SKILL.md +81 -0
  278. package/src/builtin-skills/security-review/SPEC.md +77 -0
  279. package/src/builtin-skills/security-review/references/github-workflows.md +186 -0
  280. package/src/builtin-skills/security-review/references/javascript-typescript.md +69 -0
  281. package/src/builtin-skills/security-review/references/python.md +70 -0
  282. package/src/internal-skills/skill-writer/EVAL.md +124 -0
  283. package/src/internal-skills/skill-writer/SKILL.md +159 -0
  284. package/src/internal-skills/skill-writer/SOURCES.md +94 -0
  285. package/src/internal-skills/skill-writer/SPEC.md +153 -0
  286. package/src/internal-skills/skill-writer/references/artifact-layouts/argument-driven-skill-layout.md +32 -0
  287. package/src/internal-skills/skill-writer/references/artifact-layouts/asset-template-skill-layout.md +30 -0
  288. package/src/internal-skills/skill-writer/references/artifact-layouts/inline-skill-layout.md +28 -0
  289. package/src/internal-skills/skill-writer/references/artifact-layouts/reference-backed-skill-layout.md +35 -0
  290. package/src/internal-skills/skill-writer/references/artifact-layouts/script-backed-skill-layout.md +31 -0
  291. package/src/internal-skills/skill-writer/references/authoring-path.md +91 -0
  292. package/src/internal-skills/skill-writer/references/claude-code/argument-substitutions.md +20 -0
  293. package/src/internal-skills/skill-writer/references/claude-code/dynamic-context.md +16 -0
  294. package/src/internal-skills/skill-writer/references/claude-code/frontmatter-and-invocation.md +33 -0
  295. package/src/internal-skills/skill-writer/references/claude-code/hook-backed-skills.md +28 -0
  296. package/src/internal-skills/skill-writer/references/claude-code/subagent-fork-skills.md +22 -0
  297. package/src/internal-skills/skill-writer/references/description-optimization.md +28 -0
  298. package/src/internal-skills/skill-writer/references/design-principles.md +74 -0
  299. package/src/internal-skills/skill-writer/references/evaluation-path.md +73 -0
  300. package/src/internal-skills/skill-writer/references/examples/documentation-skill.md +70 -0
  301. package/src/internal-skills/skill-writer/references/examples/evaluator-loop-skill.md +38 -0
  302. package/src/internal-skills/skill-writer/references/examples/hook-backed-skill.md +39 -0
  303. package/src/internal-skills/skill-writer/references/examples/router-skill.md +41 -0
  304. package/src/internal-skills/skill-writer/references/examples/security-review-skill.md +69 -0
  305. package/src/internal-skills/skill-writer/references/examples/subagent-fork-skill.md +39 -0
  306. package/src/internal-skills/skill-writer/references/examples/workflow-process-skill.md +65 -0
  307. package/src/internal-skills/skill-writer/references/execution-shapes.md +68 -0
  308. package/src/internal-skills/skill-writer/references/iteration-evidence.md +82 -0
  309. package/src/internal-skills/skill-writer/references/iteration-path.md +40 -0
  310. package/src/internal-skills/skill-writer/references/mode-selection.md +67 -0
  311. package/src/internal-skills/skill-writer/references/output-contracts.md +68 -0
  312. package/src/internal-skills/skill-writer/references/reference-architecture.md +71 -0
  313. package/src/internal-skills/skill-writer/references/registration-validation.md +67 -0
  314. package/src/internal-skills/skill-writer/references/source-discovery.md +60 -0
  315. package/src/internal-skills/skill-writer/references/spec-template.md +118 -0
  316. package/src/internal-skills/skill-writer/references/structure-troubleshooting.md +111 -0
  317. package/src/internal-skills/skill-writer/references/synthesis-path.md +119 -0
  318. package/src/internal-skills/skill-writer/references/workflow-mechanics/evaluator-loops.md +25 -0
  319. package/src/internal-skills/skill-writer/references/workflow-mechanics/orchestrator-workers.md +25 -0
  320. package/src/internal-skills/skill-writer/references/workflow-mechanics/parallel-workflows.md +21 -0
  321. package/src/internal-skills/skill-writer/references/workflow-mechanics/plan-validate-execute.md +26 -0
  322. package/src/internal-skills/skill-writer/references/workflow-mechanics/prompt-chaining.md +24 -0
  323. package/src/internal-skills/skill-writer/references/workflow-mechanics/routing-workflows.md +28 -0
  324. package/src/internal-skills/skill-writer/references/workflow-mechanics/validation-loops.md +26 -0
  325. package/src/internal-skills/skill-writer/scripts/quick_validate.py +158 -0
  326. package/src/internal-skills/skill-writer/scripts/quick_validate_test.py +79 -0
@@ -6,6 +6,7 @@ import { formatDuration, formatFindingCounts, formatFindingCountsPlain, formatUs
6
6
  import { BoxRenderer } from './box.js';
7
7
  import { ICON_CHECK } from './icons.js';
8
8
  import { getVersion } from '../../utils/index.js';
9
+ import { mergeAuxiliaryUsage } from '../../sdk/usage.js';
9
10
  /**
10
11
  * Map a file change status to its single-character symbol.
11
12
  */
@@ -36,7 +37,7 @@ const LOGO = `
36
37
  \\ \\/ \\/ / _\` | '__/ _\` |/ _ \\ '_ \\
37
38
  \\ /\\ / (_| | | | (_| | __/ | | |
38
39
  \\/ \\/ \\__,_|_| \\__,_|\\___|_| |_|
39
- `.trimStart();
40
+ `.replace(/^\n/, '');
40
41
  /**
41
42
  * Main reporter class for CLI output.
42
43
  * Handles different verbosity levels and TTY/non-TTY modes.
@@ -144,9 +145,24 @@ export class Reporter {
144
145
  outputTokens: acc.outputTokens + u.outputTokens,
145
146
  cacheReadInputTokens: (acc.cacheReadInputTokens ?? 0) + (u.cacheReadInputTokens ?? 0),
146
147
  cacheCreationInputTokens: (acc.cacheCreationInputTokens ?? 0) + (u.cacheCreationInputTokens ?? 0),
148
+ cacheCreation5mInputTokens: (acc.cacheCreation5mInputTokens ?? 0) + (u.cacheCreation5mInputTokens ?? 0),
149
+ cacheCreation1hInputTokens: (acc.cacheCreation1hInputTokens ?? 0) + (u.cacheCreation1hInputTokens ?? 0),
150
+ webSearchRequests: (acc.webSearchRequests ?? 0) + (u.webSearchRequests ?? 0),
147
151
  costUSD: acc.costUSD + u.costUSD,
148
152
  }));
149
153
  }
154
+ /**
155
+ * Aggregate auxiliary usage stats from multiple reports.
156
+ */
157
+ aggregateAuxiliaryUsage(reports) {
158
+ let totalAuxiliaryUsage;
159
+ for (const report of reports) {
160
+ if (report.auxiliaryUsage) {
161
+ totalAuxiliaryUsage = mergeAuxiliaryUsage(totalAuxiliaryUsage, report.auxiliaryUsage);
162
+ }
163
+ }
164
+ return totalAuxiliaryUsage;
165
+ }
150
166
  /**
151
167
  * Render the summary section.
152
168
  */
@@ -163,6 +179,7 @@ export class Reporter {
163
179
  }
164
180
  const counts = countBySeverity(allFindings);
165
181
  const totalUsage = this.aggregateUsage(reports);
182
+ const totalAuxiliaryUsage = this.aggregateAuxiliaryUsage(reports);
166
183
  if (this.verbosity === Verbosity.Quiet) {
167
184
  // Quiet mode: just output the summary line
168
185
  const countStr = formatFindingCountsPlain(counts);
@@ -186,7 +203,7 @@ export class Reporter {
186
203
  }
187
204
  const durationLine = `Analysis completed in ${formatDuration(totalDuration)}`;
188
205
  if (totalUsage) {
189
- this.log(chalk.dim(`${durationLine} · ${formatUsage(totalUsage)}`));
206
+ this.log(chalk.dim(`${durationLine} · ${formatUsage(totalUsage, totalAuxiliaryUsage)}`));
190
207
  }
191
208
  else {
192
209
  this.log(chalk.dim(durationLine));
@@ -210,7 +227,7 @@ export class Reporter {
210
227
  this.logPlain(`${totalSkippedFiles} ${pluralize(totalSkippedFiles, 'file')} skipped`);
211
228
  }
212
229
  if (totalUsage) {
213
- this.logPlain(`Usage: ${formatUsagePlain(totalUsage)}`);
230
+ this.logPlain(`Usage: ${formatUsagePlain(totalUsage, totalAuxiliaryUsage)}`);
214
231
  }
215
232
  this.logPlain(`Total time: ${formatDuration(totalDuration)}`);
216
233
  if (options?.traceId && this.verbosity >= Verbosity.Verbose) {
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/cli/output/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../../src/cli/output/reporter.ts"],"names":[],"mappings":"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"}
@@ -4,9 +4,10 @@
4
4
  *
5
5
  * Reporter spec: specs/reporters.md
6
6
  */
7
- import type { SkillReport, SeverityThreshold, ConfidenceThreshold, Finding, UsageStats, EventContext } from '../../types/index.js';
7
+ import type { SkillReport, SeverityThreshold, ConfidenceThreshold, Finding, UsageStats, EventContext, AuxiliaryUsageMap } from '../../types/index.js';
8
8
  import type { SkillDefinition } from '../../config/schema.js';
9
- import { type SkillRunnerOptions } from '../../sdk/runner.js';
9
+ import { type SkillRunnerOptions, type ChunkAnalysisResult, type FindingProcessingEvent } from '../../sdk/runner.js';
10
+ import { ProviderFailureCircuitBreaker } from '../../sdk/circuit-breaker.js';
10
11
  import { Verbosity } from './verbosity.js';
11
12
  import type { OutputMode } from './tty.js';
12
13
  import { Semaphore } from '../../utils/index.js';
@@ -34,6 +35,7 @@ export interface SkillState {
34
35
  files: FileState[];
35
36
  findings: Finding[];
36
37
  usage?: UsageStats;
38
+ auxiliaryUsage?: AuxiliaryUsageMap;
37
39
  error?: string;
38
40
  }
39
41
  /**
@@ -72,6 +74,8 @@ export interface RunTasksOptions {
72
74
  failFastController?: AbortController;
73
75
  /** Hook fired after each skill finishes; used by the CLI to stream JSONL to disk. */
74
76
  onSkillComplete?: (report: SkillReport) => void;
77
+ /** Hook fired after each chunk finishes; used by the CLI to stream JSONL to disk. */
78
+ onChunkComplete?: (skillName: string, chunk: ChunkAnalysisResult) => void;
75
79
  }
76
80
  /**
77
81
  * Callbacks for reporting skill execution progress to the UI.
@@ -82,6 +86,7 @@ export interface SkillProgressCallbacks {
82
86
  onFileUpdate: (skillName: string, filename: string, updates: Partial<FileState>) => void;
83
87
  /** Called when a hunk analysis starts (one SDK invocation per hunk) */
84
88
  onHunkStart?: (skillName: string, filename: string, hunkNum: number, totalHunks: number, lineRange: string) => void;
89
+ onChunkComplete?: (skillName: string, chunk: ChunkAnalysisResult) => void;
85
90
  onSkillComplete: (name: string, report: SkillReport) => void;
86
91
  onSkillSkipped: (name: string) => void;
87
92
  onSkillError: (name: string, error: string) => void;
@@ -91,6 +96,8 @@ export interface SkillProgressCallbacks {
91
96
  onPromptSize?: (skillName: string, filename: string, lineRange: string, systemChars: number, userChars: number, totalChars: number, estimatedTokens: number) => void;
92
97
  /** Called with extraction result details (debug mode) */
93
98
  onExtractionResult?: (skillName: string, filename: string, lineRange: string, findingsCount: number, method: 'regex' | 'llm' | 'none') => void;
99
+ /** Called when findings are dropped, revised, merged, or stripped after analysis */
100
+ onFindingProcessing?: (skillName: string, event: FindingProcessingEvent) => void;
94
101
  /** Called when hunk analysis fails (SDK error, API error, abort) */
95
102
  onHunkFailed?: (skillName: string, filename: string, lineRange: string, error: string) => void;
96
103
  /** Called when findings extraction fails (both regex and LLM fallback failed) */
@@ -109,10 +116,9 @@ export declare function runSkillTask(options: SkillTaskOptions, fileConcurrency:
109
116
  */
110
117
  export declare function createDefaultCallbacks(tasks: SkillTaskOptions[], mode: OutputMode, verbosity: Verbosity): SkillProgressCallbacks;
111
118
  /**
112
- * Overlay a fail-fast abort controller onto each task's runner options.
113
- * Returns the original tasks unchanged when no controller is provided.
119
+ * Share abort/circuit state across task runner options.
114
120
  */
115
- export declare function composeTasksWithFailFast(tasks: SkillTaskOptions[], failFastController?: AbortController): SkillTaskOptions[];
121
+ export declare function composeTasksWithFailFast(tasks: SkillTaskOptions[], failFastController?: AbortController, circuitBreaker?: ProviderFailureCircuitBreaker, circuitAbortController?: AbortController): SkillTaskOptions[];
116
122
  /**
117
123
  * Launch all skill tasks in parallel using a shared semaphore for concurrency.
118
124
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks.d.ts","sourceRoot":"","sources":["../../../src/cli/output/tasks.ts"],"names":[],"mappings":"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"}
@@ -4,10 +4,11 @@
4
4
  *
5
5
  * Reporter spec: specs/reporters.md
6
6
  */
7
- import { Sentry, emitSkillMetrics, emitDedupMetrics, emitFixGateMetrics, logger } from '../../sentry.js';
7
+ import { Sentry, emitSkillMetrics, logger } from '../../sentry.js';
8
8
  import { SkillRunnerError, WardenAuthenticationError, classifyError } from '../../sdk/errors.js';
9
- import { prepareFiles, analyzeFile, aggregateUsage, aggregateAuxiliaryUsage, deduplicateFindings, mergeCrossLocationFindings, generateSummary, } from '../../sdk/runner.js';
10
- import { sanitizeFindingsSuggestedFixes } from '../../sdk/fix-quality.js';
9
+ import { prepareFiles, analyzeFile, aggregateUsage, aggregateAuxiliaryUsage, postProcessFindings, generateSummary, } from '../../sdk/runner.js';
10
+ import { ProviderFailureCircuitBreaker } from '../../sdk/circuit-breaker.js';
11
+ import { buildFileReports } from '../../sdk/report-files.js';
11
12
  import chalk from 'chalk';
12
13
  import figures from 'figures';
13
14
  import { Verbosity } from './verbosity.js';
@@ -15,6 +16,35 @@ import { ICON_CHECK, ICON_SKIPPED } from './icons.js';
15
16
  import { timestamp } from './tty.js';
16
17
  import { formatDuration, formatCost, formatLocation, formatSeverityPlain, formatFindingCountsPlain, countBySeverity, pluralize } from './formatters.js';
17
18
  import { runPool, Semaphore } from '../../utils/index.js';
19
+ function allAnalysisFailuresHaveCode(hunkFailures, code) {
20
+ const analysisFailures = hunkFailures.filter((failure) => failure.type === 'analysis');
21
+ return (analysisFailures.length > 0
22
+ && analysisFailures.every((failure) => failure.code === code));
23
+ }
24
+ function summarizeRunFailure(args) {
25
+ const { totalHunks, hunkFailures, circuitReason } = args;
26
+ if (circuitReason) {
27
+ return circuitReason;
28
+ }
29
+ if (allAnalysisFailuresHaveCode(hunkFailures, 'auth_failed')) {
30
+ return {
31
+ code: 'auth_failed',
32
+ message: 'Authentication failed. Warden stopped early.',
33
+ };
34
+ }
35
+ if (allAnalysisFailuresHaveCode(hunkFailures, 'provider_unavailable')) {
36
+ return {
37
+ code: 'provider_unavailable',
38
+ message: `Provider unavailable: all ${totalHunks} chunk${totalHunks === 1 ? '' : 's'} failed to analyze. Warden stopped early.`,
39
+ };
40
+ }
41
+ return {
42
+ code: 'all_hunks_failed',
43
+ message: `All ${totalHunks} chunk${totalHunks === 1 ? '' : 's'} failed to analyze. ` +
44
+ `This usually indicates an authentication problem. ` +
45
+ `Verify WARDEN_ANTHROPIC_API_KEY is set correctly, or run 'claude login' if using Claude Code subscription.`,
46
+ };
47
+ }
18
48
  /**
19
49
  * Write a log-mode message to stderr with timestamp prefix.
20
50
  * Used for non-TTY / plain output.
@@ -42,6 +72,14 @@ function findingLocation(finding) {
42
72
  return 'unknown';
43
73
  return formatLocation(finding.location.path, finding.location.startLine, finding.location.endLine);
44
74
  }
75
+ function findingSummary(finding) {
76
+ return `${findingLocation(finding)}: ${finding.title}`;
77
+ }
78
+ function formatFindingProcessingEvent(event) {
79
+ const reason = event.reason ? ` (${event.reason})` : '';
80
+ const replacement = event.replacement ? ` -> ${findingSummary(event.replacement)}` : '';
81
+ return `${event.stage}:${event.action} ${findingSummary(event.finding)}${replacement}${reason}`;
82
+ }
45
83
  /**
46
84
  * Run a single skill task.
47
85
  */
@@ -158,6 +196,15 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
158
196
  if (usage.cacheCreationInputTokens) {
159
197
  current.usage.cacheCreationInputTokens = (current.usage.cacheCreationInputTokens ?? 0) + usage.cacheCreationInputTokens;
160
198
  }
199
+ if (usage.cacheCreation5mInputTokens) {
200
+ current.usage.cacheCreation5mInputTokens = (current.usage.cacheCreation5mInputTokens ?? 0) + usage.cacheCreation5mInputTokens;
201
+ }
202
+ if (usage.cacheCreation1hInputTokens) {
203
+ current.usage.cacheCreation1hInputTokens = (current.usage.cacheCreation1hInputTokens ?? 0) + usage.cacheCreation1hInputTokens;
204
+ }
205
+ if (usage.webSearchRequests) {
206
+ current.usage.webSearchRequests = (current.usage.webSearchRequests ?? 0) + usage.webSearchRequests;
207
+ }
161
208
  }
162
209
  else {
163
210
  current.usage = { ...usage };
@@ -180,6 +227,11 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
180
227
  callbacks.onExtractionResult?.(name, filename, lineRange, findingsCount, method);
181
228
  }
182
229
  : undefined,
230
+ onChunkComplete: callbacks.onChunkComplete
231
+ ? (chunk) => {
232
+ callbacks.onChunkComplete?.(skill.name, chunk);
233
+ }
234
+ : undefined,
183
235
  onHunkFailed: callbacks.onHunkFailed
184
236
  ? (lineRange, error) => {
185
237
  callbacks.onHunkFailed?.(name, filename, lineRange, error);
@@ -275,14 +327,22 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
275
327
  // scenario where every hunk's SDK call succeeded but every extraction
276
328
  // failed — a silent zero-findings run otherwise.
277
329
  const totalAttemptFailures = totalFailedHunks + totalFailedExtractions;
278
- if (totalHunks > 0 && totalAttemptFailures === totalHunks && allFindings.length === 0) {
330
+ const circuitReason = runnerOptions.circuitBreaker?.reason;
331
+ if (totalHunks > 0
332
+ && allFindings.length === 0
333
+ && totalAttemptFailures > 0
334
+ && (circuitReason
335
+ || (totalAttemptFailures === totalHunks
336
+ && !(runnerOptions.abortController?.signal.aborted ?? false)))) {
279
337
  const auxUsage = aggregateAuxiliaryUsage(allAuxEntries);
280
- const errorMessage = `All ${totalHunks} chunk${totalHunks === 1 ? '' : 's'} failed to analyze. ` +
281
- `This usually indicates an authentication problem. ` +
282
- `Verify WARDEN_ANTHROPIC_API_KEY is set correctly, or run 'claude login' if using Claude Code subscription.`;
338
+ const error = summarizeRunFailure({
339
+ totalHunks,
340
+ hunkFailures: allHunkFailures,
341
+ circuitReason,
342
+ });
283
343
  const errorReport = {
284
344
  skill: skill.name,
285
- summary: `${skill.name}: all chunks failed`,
345
+ summary: `${skill.name}: failed (${error.code})`,
286
346
  findings: [],
287
347
  usage: aggregateUsage(allUsage),
288
348
  durationMs: duration,
@@ -303,8 +363,8 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
303
363
  failedHunks: totalFailedHunks,
304
364
  hunkFailures: allHunkFailures,
305
365
  error: {
306
- code: 'all_hunks_failed',
307
- message: errorMessage,
366
+ code: error.code,
367
+ message: error.message,
308
368
  timestamp: new Date().toISOString(),
309
369
  },
310
370
  };
@@ -314,7 +374,7 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
314
374
  errorReport.skippedFiles = skippedFiles;
315
375
  if (auxUsage)
316
376
  errorReport.auxiliaryUsage = auxUsage;
317
- callbacks.onSkillError(name, errorMessage);
377
+ callbacks.onSkillError(name, error.message);
318
378
  // Mirror the success path: emit a final completion event with the
319
379
  // (errored) report so terminal renderers print the per-skill
320
380
  // summary line. Without this, console mode shows the error string
@@ -323,59 +383,49 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
323
383
  status: 'error',
324
384
  durationMs: duration,
325
385
  findings: [],
386
+ usage: errorReport.usage,
387
+ auxiliaryUsage: errorReport.auxiliaryUsage,
326
388
  });
327
389
  callbacks.onSkillComplete(name, errorReport);
328
390
  // Carry a typed error alongside the report so consumers that re-throw
329
391
  // (action executor, Sentry.captureException) preserve the ErrorCode.
330
- const runnerError = new SkillRunnerError(errorMessage, { code: 'all_hunks_failed' });
392
+ const runnerError = new SkillRunnerError(error.message, { code: error.code });
331
393
  return { name, report: errorReport, error: runnerError, failOn, minConfidence };
332
394
  }
333
- const uniqueFindings = deduplicateFindings(allFindings);
334
- emitDedupMetrics(skill.name, allFindings.length, uniqueFindings.length);
335
- // Merge findings that describe the same issue at different locations
336
- const mergeResult = await mergeCrossLocationFindings(uniqueFindings, {
337
- apiKey: runnerOptions.apiKey,
338
- repoPath: context.repoPath,
339
- maxRetries: runnerOptions.auxiliaryMaxRetries,
340
- });
341
- let mergedFindings = mergeResult.findings;
342
- if (mergeResult.usage) {
343
- allAuxEntries.push({ agent: 'merge', usage: mergeResult.usage });
344
- }
345
- const sanitized = await sanitizeFindingsSuggestedFixes(mergedFindings, {
395
+ const processed = await postProcessFindings(allFindings, {
396
+ skill,
346
397
  repoPath: context.repoPath,
347
398
  apiKey: runnerOptions.apiKey,
348
- maxRetries: runnerOptions.auxiliaryMaxRetries,
399
+ runtime: runnerOptions.runtime,
400
+ auxiliaryModel: runnerOptions.auxiliaryModel,
401
+ synthesisModel: runnerOptions.synthesisModel,
402
+ auxiliaryMaxRetries: runnerOptions.auxiliaryMaxRetries,
403
+ verifyFindings: runnerOptions.verifyFindings,
404
+ maxTurns: runnerOptions.maxTurns,
405
+ abortController: runnerOptions.abortController,
406
+ pathToClaudeCodeExecutable: runnerOptions.pathToClaudeCodeExecutable,
407
+ prContext,
408
+ onFindingProcessing: (event) => {
409
+ callbacks.onFindingProcessing?.(name, event);
410
+ },
349
411
  });
350
- mergedFindings = sanitized.findings;
351
- if (sanitized.usage) {
352
- allAuxEntries.push({ agent: 'fix_gate', usage: sanitized.usage });
353
- }
354
- emitFixGateMetrics(skill.name, sanitized.stats.checked, sanitized.stats.strippedDeterministic, sanitized.stats.strippedSemantic, sanitized.stats.semanticUnavailable);
355
- if (sanitized.stats.checked > 0) {
356
- logger.info('Suggested fix quality gate', {
357
- 'fix_gate.checked': sanitized.stats.checked,
358
- 'fix_gate.stripped_deterministic': sanitized.stats.strippedDeterministic,
359
- 'fix_gate.stripped_semantic': sanitized.stats.strippedSemantic,
360
- 'fix_gate.semantic_unavailable': sanitized.stats.semanticUnavailable,
361
- });
362
- }
412
+ const finalFindings = processed.findings;
413
+ allAuxEntries.push(...processed.auxiliaryUsage);
363
414
  const report = {
364
415
  skill: skill.name,
365
- summary: generateSummary(skill.name, mergedFindings),
366
- findings: mergedFindings,
416
+ summary: generateSummary(skill.name, finalFindings),
417
+ findings: finalFindings,
367
418
  usage: aggregateUsage(allUsage),
368
419
  durationMs: duration,
369
420
  model: runnerOptions?.model,
370
- files: preparedFiles.map((file, i) => {
421
+ files: buildFileReports(preparedFiles.map((file, i) => {
371
422
  const r = allResults[i];
372
423
  return {
373
424
  filename: file.filename,
374
- findings: r?.findings.length ?? 0,
375
425
  durationMs: r?.durationMs,
376
426
  usage: r?.usage,
377
427
  };
378
- }),
428
+ }), finalFindings),
379
429
  };
380
430
  if (skippedFiles.length > 0) {
381
431
  report.skippedFiles = skippedFiles;
@@ -403,8 +453,9 @@ export async function runSkillTask(options, fileConcurrency, callbacks, semaphor
403
453
  callbacks.onSkillUpdate(name, {
404
454
  status: 'done',
405
455
  durationMs: duration,
406
- findings: mergedFindings,
456
+ findings: finalFindings,
407
457
  usage: report.usage,
458
+ auxiliaryUsage: report.auxiliaryUsage,
408
459
  });
409
460
  callbacks.onSkillComplete(name, report);
410
461
  return { name, report, failOn, minConfidence };
@@ -591,6 +642,11 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
591
642
  debugLog(mode, `Extracted ${findingsCount} ${pluralize(findingsCount, 'finding')} from ${filename}:${lineRange} via ${method}`);
592
643
  }
593
644
  : undefined,
645
+ onFindingProcessing: verbosity >= Verbosity.Debug
646
+ ? (_skillName, event) => {
647
+ debugLog(mode, formatFindingProcessingEvent(event));
648
+ }
649
+ : undefined,
594
650
  // Verbose mode: show per-hunk analysis failures (spec: event #16 hunk_failed)
595
651
  onHunkFailed: verbosity >= Verbosity.Verbose
596
652
  ? (_skillName, filename, lineRange, error) => {
@@ -637,12 +693,9 @@ export function createDefaultCallbacks(tasks, mode, verbosity) {
637
693
  : undefined,
638
694
  };
639
695
  }
640
- /**
641
- * Create an AbortController that fires when either of two controllers abort.
642
- */
643
- function composeAbortControllers(a, b) {
696
+ function composeAbortControllers(...controllers) {
644
697
  const composed = new AbortController();
645
- for (const ctrl of [a, b]) {
698
+ for (const ctrl of controllers) {
646
699
  if (ctrl?.signal.aborted) {
647
700
  composed.abort();
648
701
  return composed;
@@ -652,17 +705,17 @@ function composeAbortControllers(a, b) {
652
705
  return composed;
653
706
  }
654
707
  /**
655
- * Overlay a fail-fast abort controller onto each task's runner options.
656
- * Returns the original tasks unchanged when no controller is provided.
708
+ * Share abort/circuit state across task runner options.
657
709
  */
658
- export function composeTasksWithFailFast(tasks, failFastController) {
659
- if (!failFastController)
710
+ export function composeTasksWithFailFast(tasks, failFastController, circuitBreaker, circuitAbortController) {
711
+ if (!failFastController && !circuitBreaker && !circuitAbortController)
660
712
  return tasks;
661
713
  return tasks.map((task) => ({
662
714
  ...task,
663
715
  runnerOptions: {
664
716
  ...task.runnerOptions,
665
- abortController: composeAbortControllers(task.runnerOptions?.abortController, failFastController),
717
+ abortController: composeAbortControllers(task.runnerOptions?.abortController, failFastController, circuitAbortController),
718
+ circuitBreaker: task.runnerOptions?.circuitBreaker ?? circuitBreaker,
666
719
  },
667
720
  }));
668
721
  }
@@ -678,7 +731,7 @@ export async function runComposedSkillTasks(tasks, callbacks, semaphore) {
678
731
  * Uses callbacks to report progress for Ink rendering.
679
732
  */
680
733
  export async function runSkillTasks(tasks, options, callbacks) {
681
- const { mode, verbosity, concurrency, failFastController, onSkillComplete } = options;
734
+ const { mode, verbosity, concurrency, failFastController, onSkillComplete, onChunkComplete } = options;
682
735
  // Global semaphore gates file-level work across all skills.
683
736
  // All skills launch immediately so the UI shows them as "running",
684
737
  // but only `concurrency` files will be analysed at any time.
@@ -686,22 +739,26 @@ export async function runSkillTasks(tasks, options, callbacks) {
686
739
  const effectiveCallbacks = callbacks ?? createDefaultCallbacks(tasks, mode, verbosity);
687
740
  const wrappedCallbacks = {
688
741
  ...effectiveCallbacks,
689
- ...(failFastController
742
+ ...(onSkillComplete || failFastController
690
743
  ? {
691
- onFileUpdate: (skillName, filename, updates) => {
692
- effectiveCallbacks.onFileUpdate(skillName, filename, updates);
693
- if (updates.status === 'done' && updates.findings && updates.findings.length > 0) {
744
+ onSkillComplete: (name, report) => {
745
+ effectiveCallbacks.onSkillComplete(name, report);
746
+ try {
747
+ onSkillComplete?.(report);
748
+ }
749
+ catch { /* streaming hook must not break the run */ }
750
+ if (failFastController && report.findings.length > 0) {
694
751
  failFastController.abort();
695
752
  }
696
753
  },
697
754
  }
698
755
  : {}),
699
- ...(onSkillComplete
756
+ ...(onChunkComplete
700
757
  ? {
701
- onSkillComplete: (name, report) => {
702
- effectiveCallbacks.onSkillComplete(name, report);
758
+ onChunkComplete: (name, chunk) => {
759
+ effectiveCallbacks.onChunkComplete?.(name, chunk);
703
760
  try {
704
- onSkillComplete(report);
761
+ onChunkComplete(name, chunk);
705
762
  }
706
763
  catch { /* streaming hook must not break the run */ }
707
764
  },
@@ -712,12 +769,15 @@ export async function runSkillTasks(tasks, options, callbacks) {
712
769
  if (verbosity !== Verbosity.Quiet && tasks.length > 0 && mode.isTTY) {
713
770
  console.error(chalk.bold('SKILLS'));
714
771
  }
772
+ const circuitAbortController = new AbortController();
773
+ const circuitBreaker = new ProviderFailureCircuitBreaker({ abortController: circuitAbortController });
774
+ const composedTasks = composeTasksWithFailFast(tasks, failFastController, circuitBreaker, circuitAbortController);
715
775
  // Listen for abort signal to show interrupt message (non-TTY only; Ink handles TTY)
716
- const abortSignal = tasks[0]?.runnerOptions?.abortController?.signal;
776
+ const abortSignal = composedTasks[0]?.runnerOptions?.abortController?.signal;
717
777
  if (abortSignal && !abortSignal.aborted && !mode.isTTY && verbosity !== Verbosity.Quiet) {
718
778
  abortSignal.addEventListener('abort', () => {
719
779
  // Only show interrupt message for user SIGINT, not fail-fast
720
- if (!failFastController?.signal.aborted) {
780
+ if (!failFastController?.signal.aborted && !circuitAbortController.signal.aborted) {
721
781
  logPlain('Interrupted, finishing up... (press Ctrl+C again to force exit)');
722
782
  }
723
783
  }, { once: true });
@@ -728,8 +788,6 @@ export async function runSkillTasks(tasks, options, callbacks) {
728
788
  logPlain('Stopping \u2014 finding detected (--fail-fast)');
729
789
  }, { once: true });
730
790
  }
731
- // Compose per-task abort controllers: fire on either SIGINT or fail-fast
732
- const composedTasks = composeTasksWithFailFast(tasks, failFastController);
733
791
  // Launch all skills in parallel; the semaphore is the sole concurrency gate.
734
792
  return runComposedSkillTasks(composedTasks, wrappedCallbacks, semaphore);
735
793
  }