aiwcli 0.15.5 → 0.17.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 (435) hide show
  1. package/README.md +108 -1124
  2. package/bin/run.js +0 -4
  3. package/dist/capabilities/branch/adapters.d.ts +2 -0
  4. package/dist/capabilities/branch/adapters.js +21 -0
  5. package/dist/capabilities/branch/contracts.d.ts +57 -0
  6. package/dist/capabilities/branch/contracts.js +1 -0
  7. package/dist/capabilities/branch/control-plane.d.ts +2 -0
  8. package/dist/capabilities/branch/control-plane.js +343 -0
  9. package/dist/capabilities/branch/runtime-core.d.ts +5 -0
  10. package/dist/capabilities/branch/runtime-core.js +36 -0
  11. package/dist/capabilities/installation/control-plane/clean-command.d.ts +41 -0
  12. package/dist/capabilities/installation/control-plane/clean-command.js +196 -0
  13. package/dist/capabilities/installation/control-plane/clear-command.d.ts +162 -0
  14. package/dist/capabilities/installation/control-plane/clear-command.js +1249 -0
  15. package/dist/capabilities/installation/control-plane/init-command.d.ts +81 -0
  16. package/dist/capabilities/installation/control-plane/init-command.js +449 -0
  17. package/dist/capabilities/launch/contracts.d.ts +86 -0
  18. package/dist/capabilities/launch/contracts.js +1 -0
  19. package/dist/capabilities/launch/control-plane/execute-launch.d.ts +2 -0
  20. package/dist/capabilities/launch/control-plane/execute-launch.js +261 -0
  21. package/dist/capabilities/launch/runtime-core/launch-decisions.d.ts +82 -0
  22. package/dist/capabilities/launch/runtime-core/launch-decisions.js +202 -0
  23. package/dist/capabilities/launch/runtime-core/launch-options.d.ts +14 -0
  24. package/dist/capabilities/launch/runtime-core/launch-options.js +69 -0
  25. package/dist/cli/base-command.d.ts +18 -0
  26. package/dist/cli/base-command.js +55 -0
  27. package/dist/commands/branch.d.ts +1 -21
  28. package/dist/commands/branch.js +25 -417
  29. package/dist/commands/clean.d.ts +1 -41
  30. package/dist/commands/clean.js +1 -196
  31. package/dist/commands/clear.d.ts +1 -161
  32. package/dist/commands/clear.js +1 -1121
  33. package/dist/commands/init/index.d.ts +1 -98
  34. package/dist/commands/init/index.js +4 -478
  35. package/dist/commands/launch.d.ts +32 -12
  36. package/dist/commands/launch.js +107 -166
  37. package/dist/lib/claude-settings-types.d.ts +31 -19
  38. package/dist/lib/config.js +1 -2
  39. package/dist/lib/context/context-formatter.d.ts +74 -0
  40. package/dist/lib/context/context-formatter.js +493 -0
  41. package/dist/lib/context/context-selector.d.ts +42 -0
  42. package/dist/lib/context/context-selector.js +451 -0
  43. package/dist/lib/context/context-store.d.ts +100 -0
  44. package/dist/lib/context/context-store.js +644 -0
  45. package/dist/lib/context/plan-manager.d.ts +54 -0
  46. package/dist/lib/context/plan-manager.js +282 -0
  47. package/dist/lib/context/task-tracker.d.ts +44 -0
  48. package/dist/lib/context/task-tracker.js +146 -0
  49. package/dist/lib/core-ide-base.d.ts +4 -0
  50. package/dist/lib/core-ide-base.js +77 -0
  51. package/dist/lib/core-installer.d.ts +5 -0
  52. package/dist/lib/core-installer.js +33 -0
  53. package/dist/lib/debug.d.ts +0 -10
  54. package/dist/lib/debug.js +0 -10
  55. package/dist/lib/env-sanitizer.d.ts +25 -0
  56. package/dist/lib/env-sanitizer.js +46 -0
  57. package/dist/lib/errors.d.ts +0 -13
  58. package/dist/lib/errors.js +0 -15
  59. package/dist/lib/git-exclude-manager.d.ts +2 -2
  60. package/dist/lib/git-exclude-manager.js +3 -3
  61. package/dist/lib/hooks/context-monitor-logic.d.ts +6 -0
  62. package/dist/lib/hooks/context-monitor-logic.js +25 -0
  63. package/dist/lib/hooks/hook-utils.d.ts +143 -0
  64. package/dist/lib/hooks/hook-utils.js +620 -0
  65. package/dist/lib/hooks/prompt-binding-logic.d.ts +7 -0
  66. package/dist/lib/hooks/prompt-binding-logic.js +50 -0
  67. package/dist/lib/hooks/session-end-logic.d.ts +5 -0
  68. package/dist/lib/hooks/session-end-logic.js +51 -0
  69. package/dist/lib/hooks-merger.js +25 -19
  70. package/dist/lib/ide-path-resolver.d.ts +19 -7
  71. package/dist/lib/ide-path-resolver.js +25 -9
  72. package/dist/lib/install-state.d.ts +34 -0
  73. package/dist/lib/install-state.js +154 -0
  74. package/dist/lib/json-io.d.ts +12 -0
  75. package/dist/lib/json-io.js +30 -0
  76. package/dist/lib/lsp-patch.d.ts +12 -0
  77. package/dist/lib/lsp-patch.js +156 -0
  78. package/dist/lib/multiplexer.d.ts +65 -0
  79. package/dist/lib/multiplexer.js +38 -0
  80. package/dist/lib/multiplexers/psmux.d.ts +55 -0
  81. package/dist/lib/multiplexers/psmux.js +324 -0
  82. package/dist/lib/multiplexers/tmux.d.ts +36 -0
  83. package/dist/lib/multiplexers/tmux.js +221 -0
  84. package/dist/lib/multiplexers/wezterm.d.ts +38 -0
  85. package/dist/lib/multiplexers/wezterm.js +225 -0
  86. package/dist/lib/mux-utils.d.ts +6 -0
  87. package/dist/lib/mux-utils.js +36 -0
  88. package/dist/lib/paths.d.ts +2 -2
  89. package/dist/lib/paths.js +2 -2
  90. package/dist/lib/platform-commands.d.ts +27 -0
  91. package/dist/lib/platform-commands.js +49 -0
  92. package/dist/lib/prompt-file-manager.d.ts +23 -0
  93. package/dist/lib/prompt-file-manager.js +41 -0
  94. package/dist/lib/runtime/agent-launcher.d.ts +67 -0
  95. package/dist/lib/runtime/agent-launcher.js +262 -0
  96. package/dist/lib/runtime/aiw-cli.d.ts +39 -0
  97. package/dist/lib/runtime/aiw-cli.js +76 -0
  98. package/dist/lib/runtime/atomic-write.d.ts +19 -0
  99. package/dist/lib/runtime/atomic-write.js +121 -0
  100. package/dist/lib/runtime/cli-args.d.ts +58 -0
  101. package/dist/lib/runtime/cli-args.js +200 -0
  102. package/dist/lib/runtime/constants.d.ts +56 -0
  103. package/dist/lib/runtime/constants.js +230 -0
  104. package/dist/lib/runtime/executable-policy.d.ts +16 -0
  105. package/dist/lib/runtime/executable-policy.js +57 -0
  106. package/dist/lib/runtime/git-state.d.ts +9 -0
  107. package/dist/lib/runtime/git-state.js +59 -0
  108. package/dist/lib/runtime/inference.d.ts +37 -0
  109. package/dist/lib/runtime/inference.js +251 -0
  110. package/dist/lib/runtime/lint-dispatch.d.ts +40 -0
  111. package/dist/lib/runtime/lint-dispatch.js +285 -0
  112. package/dist/lib/runtime/logger.d.ts +66 -0
  113. package/dist/lib/runtime/logger.js +201 -0
  114. package/dist/lib/runtime/models.d.ts +20 -0
  115. package/dist/lib/runtime/models.js +20 -0
  116. package/dist/lib/runtime/platform-adapter.d.ts +7 -0
  117. package/dist/lib/runtime/platform-adapter.js +21 -0
  118. package/dist/lib/runtime/preflight.d.ts +24 -0
  119. package/dist/lib/runtime/preflight.js +65 -0
  120. package/dist/lib/runtime/sentinel-ipc.d.ts +14 -0
  121. package/dist/lib/runtime/sentinel-ipc.js +67 -0
  122. package/dist/lib/runtime/state-io.d.ts +31 -0
  123. package/dist/lib/runtime/state-io.js +179 -0
  124. package/dist/lib/runtime/stop-words.d.ts +20 -0
  125. package/dist/lib/runtime/stop-words.js +150 -0
  126. package/dist/lib/runtime/subprocess-utils.d.ts +29 -0
  127. package/dist/lib/runtime/subprocess-utils.js +96 -0
  128. package/dist/lib/runtime/tmux-preflight.d.ts +13 -0
  129. package/dist/lib/runtime/tmux-preflight.js +78 -0
  130. package/dist/lib/runtime/utils.d.ts +62 -0
  131. package/dist/lib/runtime/utils.js +192 -0
  132. package/dist/lib/schemas.d.ts +250 -0
  133. package/dist/lib/schemas.js +216 -0
  134. package/dist/lib/sentinel-manager.d.ts +32 -0
  135. package/dist/lib/sentinel-manager.js +62 -0
  136. package/dist/lib/sentinel-wrapper.d.ts +10 -0
  137. package/dist/lib/sentinel-wrapper.js +29 -0
  138. package/dist/lib/settings-hierarchy.js +3 -20
  139. package/dist/lib/shell-adapters/bash-adapter.d.ts +18 -0
  140. package/dist/lib/shell-adapters/bash-adapter.js +69 -0
  141. package/dist/lib/shell-adapters/index.d.ts +5 -0
  142. package/dist/lib/shell-adapters/index.js +7 -0
  143. package/dist/lib/shell-adapters/powershell-adapter.d.ts +18 -0
  144. package/dist/lib/shell-adapters/powershell-adapter.js +62 -0
  145. package/dist/lib/shell-adapters/shell-adapter.d.ts +45 -0
  146. package/dist/lib/shell-adapters/shell-adapter.js +5 -0
  147. package/dist/lib/shell-quoting.d.ts +5 -0
  148. package/dist/lib/shell-quoting.js +17 -0
  149. package/dist/lib/spawn-errors.d.ts +9 -0
  150. package/dist/lib/spawn-errors.js +29 -0
  151. package/dist/lib/spawn.js +5 -11
  152. package/dist/lib/spinner.d.ts +0 -5
  153. package/dist/lib/spinner.js +0 -16
  154. package/dist/lib/template-installer.d.ts +14 -5
  155. package/dist/lib/template-installer.js +40 -38
  156. package/dist/lib/template-resolver.d.ts +6 -7
  157. package/dist/lib/template-resolver.js +26 -21
  158. package/dist/lib/template-settings-reconstructor.d.ts +7 -2
  159. package/dist/lib/template-settings-reconstructor.js +76 -45
  160. package/dist/lib/terminal-strategy.d.ts +12 -0
  161. package/dist/lib/terminal-strategy.js +55 -0
  162. package/dist/lib/terminal.d.ts +34 -4
  163. package/dist/lib/terminal.js +192 -119
  164. package/dist/lib/tmux-pane-placement.d.ts +17 -0
  165. package/dist/lib/tmux-pane-placement.js +58 -0
  166. package/dist/lib/tmux-primitives.d.ts +3 -0
  167. package/dist/lib/tmux-primitives.js +11 -0
  168. package/dist/lib/tmux-session.d.ts +32 -0
  169. package/dist/lib/tmux-session.js +87 -0
  170. package/dist/lib/tty-detection.js +1 -1
  171. package/dist/lib/types.d.ts +168 -0
  172. package/dist/lib/types.js +6 -0
  173. package/dist/lib/version.d.ts +1 -1
  174. package/dist/lib/version.js +1 -1
  175. package/dist/lib/windsurf-hooks-hierarchy.js +6 -23
  176. package/dist/platform/launch.d.ts +11 -0
  177. package/dist/platform/launch.js +11 -0
  178. package/dist/templates/CLAUDE.md +30 -40
  179. package/dist/templates/cc-native/.claude/settings.json +26 -36
  180. package/dist/templates/cc-native/CC-NATIVE-README.md +1 -1
  181. package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +20 -12
  182. package/dist/templates/cc-native/_cc-native/cc-native.config.json +2 -6
  183. package/dist/templates/cc-native/_cc-native/hooks/CLAUDE.md +39 -59
  184. package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.ts +9 -11
  185. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_subagent.ts +2 -2
  186. package/dist/templates/cc-native/_cc-native/hooks/enhance_plan_post_write.ts +4 -5
  187. package/dist/templates/cc-native/_cc-native/hooks/mark_questions_asked.ts +4 -4
  188. package/dist/templates/cc-native/_cc-native/hooks/plan_questions_early.ts +2 -27
  189. package/dist/templates/cc-native/_cc-native/hooks/validate_task_prompt.ts +7 -7
  190. package/dist/templates/cc-native/_cc-native/lib-ts/.mocharc.json +9 -0
  191. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/aggregate-agents.test.ts +118 -0
  192. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/artifacts.test.ts +234 -0
  193. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/cc-native-state.test.ts +170 -0
  194. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/cli-output-parser.test.ts +73 -0
  195. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/config.test.ts +64 -0
  196. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/constants.test.ts +40 -0
  197. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/debug.test.ts +42 -0
  198. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/exports.test.ts +58 -0
  199. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/helpers.ts +107 -0
  200. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/add-plan-context.hook.test.ts +97 -0
  201. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/plan-questions.hook.test.ts +81 -0
  202. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/hooks/plan-review.hook.test.ts +71 -0
  203. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/json-parser.test.ts +99 -0
  204. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/orchestrator-agent.test.ts +288 -0
  205. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/orchestrator.test.ts +48 -0
  206. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/reviewers.test.ts +32 -0
  207. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/state.test.ts +124 -0
  208. package/dist/templates/cc-native/_cc-native/lib-ts/__tests__/verdict.test.ts +93 -0
  209. package/dist/templates/cc-native/_cc-native/lib-ts/agent-selection.ts +163 -0
  210. package/dist/templates/cc-native/_cc-native/lib-ts/aggregate-agents.ts +6 -14
  211. package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/format.ts +597 -599
  212. package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/index.ts +26 -26
  213. package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/tracker.ts +106 -107
  214. package/dist/templates/cc-native/_cc-native/{artifacts/lib → lib-ts/artifacts}/write.ts +118 -119
  215. package/dist/templates/cc-native/_cc-native/lib-ts/artifacts.ts +21 -0
  216. package/dist/templates/cc-native/_cc-native/lib-ts/cc-native-state.ts +17 -16
  217. package/dist/templates/cc-native/_cc-native/lib-ts/cli-output-parser.ts +132 -10
  218. package/dist/templates/cc-native/_cc-native/lib-ts/config.ts +1 -1
  219. package/dist/templates/cc-native/_cc-native/lib-ts/constants.ts +6 -6
  220. package/dist/templates/cc-native/_cc-native/lib-ts/corroboration.ts +119 -0
  221. package/dist/templates/cc-native/_cc-native/lib-ts/debug.ts +2 -3
  222. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/graduation.ts +132 -132
  223. package/dist/templates/cc-native/_cc-native/lib-ts/index.ts +88 -86
  224. package/dist/templates/cc-native/_cc-native/lib-ts/json-parser.ts +5 -6
  225. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/orchestrator.ts +70 -70
  226. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/output-builder.ts +130 -121
  227. package/dist/templates/cc-native/_cc-native/lib-ts/package-lock.json +1679 -0
  228. package/dist/templates/cc-native/_cc-native/lib-ts/package.json +24 -0
  229. package/dist/templates/cc-native/_cc-native/lib-ts/plan-discovery.ts +5 -5
  230. package/dist/templates/cc-native/_cc-native/lib-ts/plan-enhancement.ts +1 -6
  231. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/plan-questions.ts +101 -101
  232. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/review-pipeline.ts +511 -543
  233. package/dist/templates/cc-native/_cc-native/lib-ts/reviewers/__tests__/agent-providers.test.ts +262 -0
  234. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/agent.ts +71 -85
  235. package/dist/templates/{_shared/lib-ts/agent-exec → cc-native/_cc-native/lib-ts/reviewers/base}/base-agent.ts +138 -150
  236. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/index.ts +12 -12
  237. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/claude-agent.ts +66 -57
  238. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/codex-agent.ts +185 -200
  239. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/gemini-agent.ts +39 -40
  240. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/providers/orchestrator-claude-agent.ts +196 -225
  241. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/schemas.ts +201 -201
  242. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/reviewers/types.ts +21 -23
  243. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/__tests__/hyde.test.ts +365 -0
  244. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/__tests__/ollama-client.test.ts +223 -0
  245. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/embedding-indexer.ts +12 -16
  246. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/hyde.ts +3 -2
  247. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/index.ts +31 -31
  248. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/logger.ts +7 -8
  249. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/ollama-client.ts +7 -9
  250. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/retrieval-pipeline.ts +16 -19
  251. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-indexer.ts +37 -41
  252. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-loader.ts +33 -43
  253. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/transcript-searcher.ts +20 -20
  254. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/types.ts +9 -10
  255. package/dist/templates/cc-native/_cc-native/lib-ts/rlm/vector-store.ts +3 -4
  256. package/dist/templates/cc-native/_cc-native/lib-ts/settings.ts +50 -126
  257. package/dist/templates/cc-native/_cc-native/lib-ts/state.ts +20 -22
  258. package/dist/templates/cc-native/_cc-native/lib-ts/tsconfig.json +2 -2
  259. package/dist/templates/cc-native/_cc-native/lib-ts/types.ts +14 -89
  260. package/dist/templates/cc-native/_cc-native/{plan-review/lib → lib-ts}/verdict.ts +72 -72
  261. package/dist/templates/cc-native/_cc-native/plan-review/CLAUDE.md +38 -1
  262. package/dist/templates/cc-native/_cc-native/plan-review/lib/__tests__/agent-selection.test.ts +345 -0
  263. package/dist/templates/cc-native/_cc-native/plan-review/lib/__tests__/preflight.test.ts +344 -0
  264. package/dist/templates/cc-native/_cc-native/plan-review/lib/agent-selection.ts +38 -16
  265. package/dist/templates/cc-native/_cc-native/plan-review/lib/preflight.ts +56 -26
  266. package/dist/templates/cc-native/_cc-native/scripts/council_debate.ts +242 -0
  267. package/dist/templates/cc-native/_cc-native/scripts/council_debate_simple.ts +294 -0
  268. package/dist/templates/cc-native/_cc-native/{plan-review/workflows → workflows}/specdev.md +9 -9
  269. package/dist/templates/core/.claude/skills/codex/SKILL.md +25 -0
  270. package/dist/templates/core/.claude/skills/devin/SKILL.md +25 -0
  271. package/dist/templates/core/.claude/skills/handoff/SKILL.md +11 -0
  272. package/dist/templates/core/.claude/skills/handoff-resume/SKILL.md +11 -0
  273. package/dist/templates/core/.claude/skills/meta-plan/SKILL.md +13 -0
  274. package/dist/templates/core/.codex/skills/codex/SKILL.md +13 -0
  275. package/dist/templates/core/.codex/skills/devin/SKILL.md +19 -0
  276. package/dist/templates/core/.codex/skills/handoff/SKILL.md +11 -0
  277. package/dist/templates/core/.codex/skills/handoff-resume/SKILL.md +11 -0
  278. package/dist/templates/core/.codex/skills/meta-plan/SKILL.md +13 -0
  279. package/dist/templates/core/.devin/AGENTS.md +5 -0
  280. package/dist/templates/core/.devin/config.json +12 -0
  281. package/dist/templates/core/.devin/skills/codex/SKILL.md +19 -0
  282. package/dist/templates/core/.devin/skills/devin/SKILL.md +13 -0
  283. package/dist/templates/core/.devin/skills/handoff/SKILL.md +11 -0
  284. package/dist/templates/core/.devin/skills/handoff-resume/SKILL.md +11 -0
  285. package/dist/templates/core/.devin/skills/meta-plan/SKILL.md +13 -0
  286. package/dist/templates/core/.windsurf/workflows/handoff-resume.md +9 -0
  287. package/dist/templates/{_shared → core}/.windsurf/workflows/handoff.md +1 -1
  288. package/dist/templates/{_shared → core}/.windsurf/workflows/meta-plan.md +1 -1
  289. package/dist/templates/core/hooks-ts/_utils/git-state.ts +2 -0
  290. package/dist/templates/{_shared → core}/hooks-ts/archive_plan.ts +15 -44
  291. package/dist/templates/core/hooks-ts/codex_explorer.ts +160 -0
  292. package/dist/templates/{_shared → core}/hooks-ts/context_monitor.ts +23 -55
  293. package/dist/templates/{_shared → core}/hooks-ts/file-suggestion.ts +5 -22
  294. package/dist/templates/{_shared → core}/hooks-ts/lint_after_edit.ts +7 -9
  295. package/dist/templates/core/hooks-ts/pre_compact.ts +36 -0
  296. package/dist/templates/{_shared → core}/hooks-ts/session_end.ts +38 -78
  297. package/dist/templates/{_shared → core}/hooks-ts/session_start.ts +5 -5
  298. package/dist/templates/core/hooks-ts/task_create_capture.ts +32 -0
  299. package/dist/templates/{_shared → core}/hooks-ts/task_update_capture.ts +9 -24
  300. package/dist/templates/core/hooks-ts/user_prompt_submit.ts +46 -0
  301. package/dist/templates/{_shared → core}/lib-ts/CLAUDE.md +27 -16
  302. package/dist/templates/{_shared → core}/lib-ts/context/CLAUDE.md +9 -6
  303. package/dist/templates/{_shared → core}/lib-ts/context/context-formatter.ts +16 -21
  304. package/dist/templates/{_shared → core}/lib-ts/context/context-selector.ts +8 -6
  305. package/dist/templates/{_shared → core}/lib-ts/context/context-store.ts +59 -20
  306. package/dist/templates/{_shared → core}/lib-ts/context/plan-manager.ts +19 -15
  307. package/dist/templates/{_shared → core}/lib-ts/context/task-tracker.ts +3 -3
  308. package/dist/templates/core/lib-ts/hooks/context-monitor-logic.ts +32 -0
  309. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/hooks}/hook-utils.ts +179 -41
  310. package/dist/templates/core/lib-ts/hooks/prompt-binding-logic.ts +80 -0
  311. package/dist/templates/core/lib-ts/hooks/session-end-logic.ts +82 -0
  312. package/dist/templates/core/lib-ts/package.json +19 -0
  313. package/dist/templates/core/lib-ts/runtime/agent-launcher.ts +369 -0
  314. package/dist/templates/core/lib-ts/runtime/aiw-cli.ts +108 -0
  315. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/atomic-write.ts +12 -7
  316. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/cli-args.ts +24 -8
  317. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/constants.ts +326 -324
  318. package/dist/templates/core/lib-ts/runtime/executable-policy.ts +89 -0
  319. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/git-state.ts +6 -4
  320. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/inference.ts +60 -23
  321. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/lint-dispatch.ts +25 -23
  322. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/logger.ts +32 -29
  323. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/models.ts +9 -2
  324. package/dist/templates/core/lib-ts/runtime/platform-adapter.ts +33 -0
  325. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/preflight.ts +4 -3
  326. package/dist/templates/core/lib-ts/runtime/sentinel-ipc.ts +91 -0
  327. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/state-io.ts +20 -11
  328. package/dist/templates/core/lib-ts/runtime/stop-words.ts +185 -0
  329. package/dist/templates/core/lib-ts/runtime/subprocess-utils.ts +147 -0
  330. package/dist/templates/core/lib-ts/runtime/tmux-preflight.ts +93 -0
  331. package/dist/templates/{_shared/lib-ts/base → core/lib-ts/runtime}/utils.ts +34 -4
  332. package/dist/templates/core/lib-ts/schemas.ts +233 -0
  333. package/dist/templates/{_shared → core}/lib-ts/templates/formatters.ts +7 -5
  334. package/dist/templates/{_shared → core}/lib-ts/templates/plan-context.ts +2 -1
  335. package/dist/templates/{_shared → core}/lib-ts/tsconfig.json +3 -1
  336. package/dist/templates/{_shared → core}/lib-ts/types.ts +78 -77
  337. package/dist/templates/core/scripts/resolve-run.ts +93 -0
  338. package/dist/templates/{_shared → core}/scripts/resolve_context.ts +3 -3
  339. package/dist/templates/{_shared → core}/scripts/status_line.ts +26 -21
  340. package/dist/templates/core/skills/codex/CLAUDE.md +83 -0
  341. package/dist/templates/{_shared → core}/skills/codex/SKILL.md +27 -18
  342. package/dist/templates/{_shared → core}/skills/codex/lib/codex-watcher.ts +79 -113
  343. package/dist/templates/{_shared → core}/skills/codex/scripts/launch-codex.ts +134 -148
  344. package/dist/templates/{_shared → core}/skills/codex/scripts/watch-codex.ts +6 -4
  345. package/dist/templates/core/skills/devin/CLAUDE.md +122 -0
  346. package/dist/templates/core/skills/devin/SKILL.md +73 -0
  347. package/dist/templates/core/skills/devin/lib/devin-watcher.ts +300 -0
  348. package/dist/templates/core/skills/devin/scripts/launch-devin.ts +258 -0
  349. package/dist/templates/{_shared → core}/skills/handoff-system/CLAUDE.md +436 -433
  350. package/dist/templates/{_shared → core}/skills/handoff-system/lib/document-generator.ts +9 -7
  351. package/dist/templates/{_shared → core}/skills/handoff-system/lib/handoff-reader.ts +6 -4
  352. package/dist/templates/{_shared → core}/skills/handoff-system/scripts/resume_handoff.ts +10 -8
  353. package/dist/templates/{_shared → core}/skills/handoff-system/scripts/save_handoff.ts +12 -10
  354. package/dist/templates/{_shared → core}/skills/handoff-system/workflows/handoff-resume.md +2 -2
  355. package/dist/templates/{_shared → core}/skills/handoff-system/workflows/handoff.md +6 -5
  356. package/dist/templates/{_shared → core}/skills/meta-plan/CLAUDE.md +2 -1
  357. package/dist/templates/{_shared → core}/skills/meta-plan/workflows/meta-plan.md +8 -7
  358. package/oclif.manifest.json +89 -13
  359. package/package.json +13 -12
  360. package/dist/lib/base-command.d.ts +0 -114
  361. package/dist/lib/base-command.js +0 -153
  362. package/dist/lib/env-compat.d.ts +0 -18
  363. package/dist/lib/env-compat.js +0 -23
  364. package/dist/lib/stdin.d.ts +0 -48
  365. package/dist/lib/stdin.js +0 -60
  366. package/dist/templates/_shared/.claude/settings.json +0 -120
  367. package/dist/templates/_shared/.claude/skills/codex/SKILL.md +0 -35
  368. package/dist/templates/_shared/.claude/skills/handoff/SKILL.md +0 -13
  369. package/dist/templates/_shared/.claude/skills/handoff-resume/SKILL.md +0 -13
  370. package/dist/templates/_shared/.claude/skills/meta-plan/SKILL.md +0 -43
  371. package/dist/templates/_shared/.codex/workflows/codex.md +0 -11
  372. package/dist/templates/_shared/.codex/workflows/handoff.md +0 -226
  373. package/dist/templates/_shared/.codex/workflows/meta-plan.md +0 -347
  374. package/dist/templates/_shared/hooks-ts/_utils/git-state.ts +0 -2
  375. package/dist/templates/_shared/hooks-ts/pre_compact.ts +0 -49
  376. package/dist/templates/_shared/hooks-ts/task_create_capture.ts +0 -48
  377. package/dist/templates/_shared/hooks-ts/user_prompt_submit.ts +0 -93
  378. package/dist/templates/_shared/lib-ts/agent-exec/backends/headless.ts +0 -33
  379. package/dist/templates/_shared/lib-ts/agent-exec/backends/index.ts +0 -6
  380. package/dist/templates/_shared/lib-ts/agent-exec/backends/tmux.ts +0 -119
  381. package/dist/templates/_shared/lib-ts/agent-exec/execution-backend.ts +0 -50
  382. package/dist/templates/_shared/lib-ts/agent-exec/index.ts +0 -6
  383. package/dist/templates/_shared/lib-ts/agent-exec/structured-output.ts +0 -166
  384. package/dist/templates/_shared/lib-ts/base/launchers/tmux-launcher.ts +0 -173
  385. package/dist/templates/_shared/lib-ts/base/launchers/window-launcher.ts +0 -93
  386. package/dist/templates/_shared/lib-ts/base/launchers/wt-launcher.ts +0 -64
  387. package/dist/templates/_shared/lib-ts/base/pane-launcher.ts +0 -55
  388. package/dist/templates/_shared/lib-ts/base/sentinel-ipc.ts +0 -87
  389. package/dist/templates/_shared/lib-ts/base/stop-words.ts +0 -184
  390. package/dist/templates/_shared/lib-ts/base/subprocess-utils.ts +0 -249
  391. package/dist/templates/_shared/lib-ts/base/tmux-driver.ts +0 -341
  392. package/dist/templates/_shared/lib-ts/base/tmux-pane-placement.ts +0 -78
  393. package/dist/templates/_shared/lib-ts/package.json +0 -20
  394. package/dist/templates/_shared/scripts/resolve-run.ts +0 -62
  395. package/dist/templates/_shared/skills/codex/CLAUDE.md +0 -70
  396. package/dist/templates/cc-native/_cc-native/CLAUDE.md +0 -73
  397. package/dist/templates/cc-native/_cc-native/artifacts/CLAUDE.md +0 -64
  398. package/dist/templates/cc-native/_cc-native/lib-ts/CLAUDE.md +0 -70
  399. package/dist/templates/cc-native/_cc-native/plan-review/CODING-STANDARDS-CHECKLIST.md +0 -75
  400. package/dist/templates/cc-native/_cc-native/plan-review/agents/CLAUDE.md +0 -143
  401. package/dist/templates/cc-native/_cc-native/plan-review/agents/PLAN-ORCHESTRATOR.md +0 -213
  402. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-questions/PLAN-QUESTIONER.md +0 -70
  403. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-EVOLUTION.md +0 -62
  404. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-PATTERNS.md +0 -61
  405. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ARCH-STRUCTURE.md +0 -62
  406. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/ASSUMPTION-TRACER.md +0 -56
  407. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CLARITY-AUDITOR.md +0 -53
  408. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-FEASIBILITY.md +0 -66
  409. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-GAPS.md +0 -70
  410. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/COMPLETENESS-ORDERING.md +0 -62
  411. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/CONSTRAINT-VALIDATOR.md +0 -72
  412. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-ADR-VALIDATOR.md +0 -61
  413. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DESIGN-SCALE-MATCHER.md +0 -64
  414. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DEVILS-ADVOCATE.md +0 -56
  415. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/DOCUMENTATION-PHILOSOPHY.md +0 -86
  416. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HANDOFF-READINESS.md +0 -59
  417. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/HIDDEN-COMPLEXITY.md +0 -58
  418. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/INCREMENTAL-DELIVERY.md +0 -66
  419. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-DEPENDENCY.md +0 -62
  420. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-FMEA.md +0 -66
  421. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-PREMORTEM.md +0 -71
  422. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/RISK-REVERSIBILITY.md +0 -74
  423. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SCOPE-BOUNDARY.md +0 -77
  424. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SIMPLICITY-GUARDIAN.md +0 -62
  425. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/SKEPTIC.md +0 -68
  426. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-BEHAVIOR-AUDITOR.md +0 -61
  427. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-CHARACTERIZATION.md +0 -71
  428. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-FIRST-VALIDATOR.md +0 -61
  429. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TESTDRIVEN-PYRAMID-ANALYZER.md +0 -61
  430. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-COSTS.md +0 -67
  431. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/TRADEOFF-STAKEHOLDERS.md +0 -65
  432. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-COVERAGE.md +0 -74
  433. package/dist/templates/cc-native/_cc-native/plan-review/agents/plan-review/VERIFY-STRENGTH.md +0 -69
  434. package/dist/templates/cc-native/_cc-native/plan-review/lib/corroboration.ts +0 -172
  435. package/dist/templates/cc-native/_cc-native/plan-review/lib/reviewers/base/base-agent.ts +0 -7
@@ -1,71 +0,0 @@
1
- ---
2
- name: testdriven-characterization
3
- description: Characterization test advocate who checks whether plans that modify existing code include safety-net tests to capture current behavior first. Catches "refactor without tests" and "change behavior without verifying consumers."
4
- model: sonnet
5
- focus: safety-net tests before code modification
6
- categories:
7
- - code
8
- - infrastructure
9
- ---
10
-
11
- # TestDriven Characterization - Plan Review Agent
12
-
13
- You check for safety nets before code modification. Your question: "Does the plan capture current behavior before changing it?"
14
-
15
- ## Your Core Principle
16
-
17
- Modifying code without understanding its current behavior is refactoring in the dark. Characterization tests capture what the code actually does — not what it should do, but what it does right now. This creates a safety net: if refactoring changes behavior, the characterization tests break and tell you exactly what shifted. Without them, behavior changes hide in refactoring commits and surface as production bugs weeks later. The rule is simple: test before you modify.
18
-
19
- ## Your Expertise
20
-
21
- - **Modification detection**: Identifying plan steps that change existing code (refactoring, behavior changes, dependency updates)
22
- - **Safety net assessment**: Does the plan capture current behavior before modifying it?
23
- - **Consumer impact awareness**: When behavior changes, does the plan verify existing consumers still work?
24
- - **Characterization test advocacy**: Flagging "refactor X" without "add characterization tests for X"
25
- - **Sequence verification**: Is "test current behavior" sequenced before "modify behavior" in the plan steps?
26
-
27
- ## Review Approach
28
-
29
- Check for the test-before-modify pattern:
30
-
31
- 1. **Identify modifications**: Find every plan step that changes existing code (refactor, restructure, update, migrate, replace)
32
- 2. **Check for safety nets**: For each modification, does a prior step capture current behavior with tests?
33
- 3. **Assess consumer awareness**: When behavior changes, does the plan mention verifying downstream consumers?
34
- 4. **Verify sequencing**: Are characterization tests written BEFORE the modification, not after?
35
- 5. **Evaluate coverage scope**: Do safety-net tests cover the specific behaviors being modified, or just general "it works" checks?
36
-
37
- ## Common Anti-Patterns
38
-
39
- | Anti-Pattern | What to flag |
40
- |-------------|-------------|
41
- | "Refactor the auth module" | No mention of capturing current auth behavior first |
42
- | "Change the API response format" | No mention of verifying existing API consumers |
43
- | "Migrate from library A to B" | No mention of behavior-equivalence tests |
44
- | "Simplify the data pipeline" | No mention of capturing current pipeline outputs |
45
- | "Update the validation logic" | No mention of testing current validation rules first |
46
-
47
- ## Key Distinction
48
-
49
- | Agent | Asks |
50
- |-------|------|
51
- | testdriven-first-validator | "Does the test strategy satisfy FIRST principles?" |
52
- | verify-coverage | "Is every change covered by a verification step?" |
53
- | **testdriven-characterization** | **"Does the plan capture current behavior before modifying it?"** |
54
-
55
- ## CRITICAL: Single-Turn Review
56
-
57
- When reviewing a plan:
58
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
59
- 2. Call StructuredOutput immediately with your assessment
60
- 3. Complete your entire review in one response
61
-
62
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
63
-
64
- ## Required Output
65
-
66
- Call StructuredOutput with exactly these fields:
67
- - **verdict**: "pass" (modifications have safety-net tests), "warn" (some modifications lack characterization tests), or "fail" (significant code modification with no safety-net testing)
68
- - **summary**: 2-3 sentences explaining characterization test assessment (minimum 20 characters)
69
- - **issues**: Array of safety-net concerns, each with: severity (high/medium/low), category (e.g., "refactor-without-tests", "missing-characterization", "behavior-change-no-consumer-check", "wrong-sequence", "insufficient-coverage"), issue description, suggested_fix (specific characterization test to add before the modification)
70
- - **missing_sections**: Safety-net gaps the plan should address (untested modifications, unverified consumers)
71
- - **questions**: Modification-related aspects that need clarification
@@ -1,61 +0,0 @@
1
- ---
2
- name: testdriven-first-validator
3
- description: FIRST principles validator who checks test strategies for Fast, Independent, Repeatable, Self-validating, and Thorough compliance. Catches slow setup, shared state, external dependencies, manual verification, and missing edge cases.
4
- model: sonnet
5
- focus: FIRST test principles compliance
6
- categories:
7
- - code
8
- - infrastructure
9
- ---
10
-
11
- # TestDriven FIRST Validator - Plan Review Agent
12
-
13
- You validate test strategies against FIRST principles. Your question: "Does the test strategy commit to Fast, Independent, Repeatable, Self-validating, Thorough?"
14
-
15
- ## Your Core Principle
16
-
17
- Tests that violate FIRST principles erode developer trust and slow feedback loops. A test suite that takes minutes to run gets skipped. Tests that share state produce phantom failures. Tests that depend on external services break on weekends. Tests that require manual verification get forgotten. Tests that skip edge cases give false confidence. Each FIRST violation is a crack in the feedback loop that test-driven development depends on.
18
-
19
- ## Your Expertise
20
-
21
- - **Fast**: Tests complete quickly. No unnecessary database spinup, no network calls, no heavy fixtures when lighter alternatives exist.
22
- - **Independent**: Tests don't share state. No "run in this order" requirements. No test that passes alone but fails in suite (or vice versa).
23
- - **Repeatable**: Same result every run. No dependence on system clock, random values, external services, or environment-specific paths.
24
- - **Self-validating**: Binary pass/fail. No "check the output manually" or "verify in the browser." Assertions are explicit and automated.
25
- - **Thorough**: Edge cases, error paths, boundary conditions covered. Not just the happy path.
26
-
27
- ## Review Approach
28
-
29
- Evaluate the plan's test strategy against each FIRST principle:
30
-
31
- 1. **Fast**: Does the plan mention heavy setup (database per test, container spinup, full app bootstrap)? Are there lighter alternatives?
32
- 2. **Independent**: Does the plan describe shared fixtures, ordered test execution, or global state between tests?
33
- 3. **Repeatable**: Does the plan rely on external services, specific timestamps, environment variables, or non-deterministic inputs?
34
- 4. **Self-validating**: Does the plan include "manually verify," "check the logs," or "visually confirm"? Are pass/fail criteria automated?
35
- 5. **Thorough**: Does the plan cover error paths, empty inputs, boundary values, concurrent access, or just the success case?
36
-
37
- ## Key Distinction
38
-
39
- | Agent | Asks |
40
- |-------|------|
41
- | testdriven-behavior-auditor | "Do tests target behavior contracts or implementation details?" |
42
- | testdriven-pyramid-analyzer | "Is the test type distribution balanced?" |
43
- | **testdriven-first-validator** | **"Does the test strategy satisfy Fast, Independent, Repeatable, Self-validating, Thorough?"** |
44
-
45
- ## CRITICAL: Single-Turn Review
46
-
47
- When reviewing a plan:
48
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
49
- 2. Call StructuredOutput immediately with your assessment
50
- 3. Complete your entire review in one response
51
-
52
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
53
-
54
- ## Required Output
55
-
56
- Call StructuredOutput with exactly these fields:
57
- - **verdict**: "pass" (test strategy satisfies FIRST principles), "warn" (minor FIRST violations), or "fail" (critical FIRST violations that will undermine test reliability)
58
- - **summary**: 2-3 sentences explaining FIRST compliance assessment (minimum 20 characters)
59
- - **issues**: Array of FIRST violations, each with: severity (high/medium/low), category (one of "fast", "independent", "repeatable", "self-validating", "thorough"), issue description, suggested_fix (specific change to satisfy the violated principle)
60
- - **missing_sections**: FIRST-related gaps in the test strategy (missing principles, unaddressed test concerns)
61
- - **questions**: Test strategy aspects that need clarification
@@ -1,61 +0,0 @@
1
- ---
2
- name: testdriven-pyramid-analyzer
3
- description: Test pyramid analyzer who evaluates test type distribution and feedback loop speed. Catches inverted pyramids (all e2e, few unit), missing test layers, and slow feedback loops from over-reliance on integration tests.
4
- model: sonnet
5
- focus: test type distribution and feedback speed
6
- categories:
7
- - code
8
- - infrastructure
9
- ---
10
-
11
- # TestDriven Pyramid Analyzer - Plan Review Agent
12
-
13
- You analyze test type distribution. Your question: "Is the test pyramid balanced, with fast tests at the base and slow tests only where faster alternatives can't work?"
14
-
15
- ## Your Core Principle
16
-
17
- The test pyramid exists to optimize the feedback loop. Unit tests run in milliseconds and catch logic errors immediately. Integration tests run in seconds and catch interface mismatches. End-to-end tests run in minutes and catch system-level failures. An inverted pyramid — heavy on e2e, light on unit — means developers wait minutes for feedback that should take milliseconds. The pyramid isn't dogma; it's an optimization: push verification to the fastest layer that can catch the bug.
18
-
19
- ## Your Expertise
20
-
21
- - **Pyramid shape assessment**: Is the distribution bottom-heavy (many unit, some integration, few e2e) or inverted?
22
- - **Layer appropriateness**: Are tests at the right level? Unit tests for logic, integration for interfaces, e2e for user journeys.
23
- - **Feedback loop speed**: How fast is the overall test suite? Can a developer get feedback within seconds of a change?
24
- - **Missing layers**: Does the plan skip a test layer entirely? (common: no unit tests, only e2e)
25
- - **Over-reliance detection**: "Write e2e tests for everything" signals a missing understanding of the pyramid
26
-
27
- ## Review Approach
28
-
29
- Evaluate the plan's test type distribution:
30
-
31
- 1. **Categorize planned tests**: Which are unit, integration, and e2e? If the plan doesn't distinguish, that's a finding.
32
- 2. **Assess pyramid shape**: Is it bottom-heavy (good), balanced (acceptable), or inverted (problematic)?
33
- 3. **Check layer appropriateness**: Are there e2e tests for things a unit test could catch? Unit tests that require database setup (actually integration)?
34
- 4. **Evaluate feedback speed**: Does the plan's test suite support rapid iteration, or does every check require a full environment?
35
- 5. **Identify missing layers**: Does the plan skip unit tests and jump straight to integration? Skip integration and rely on e2e?
36
-
37
- ## Key Distinction
38
-
39
- | Agent | Asks |
40
- |-------|------|
41
- | testdriven-first-validator | "Does the test strategy satisfy FIRST principles?" |
42
- | testdriven-behavior-auditor | "Do tests target behavior contracts?" |
43
- | **testdriven-pyramid-analyzer** | **"Is the test pyramid balanced with fast feedback at the base?"** |
44
-
45
- ## CRITICAL: Single-Turn Review
46
-
47
- When reviewing a plan:
48
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
49
- 2. Call StructuredOutput immediately with your assessment
50
- 3. Complete your entire review in one response
51
-
52
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
53
-
54
- ## Required Output
55
-
56
- Call StructuredOutput with exactly these fields:
57
- - **verdict**: "pass" (pyramid is well-balanced), "warn" (some layer imbalance or missing test types), or "fail" (inverted pyramid or critical layer missing)
58
- - **summary**: 2-3 sentences explaining test distribution assessment (minimum 20 characters)
59
- - **issues**: Array of distribution concerns, each with: severity (high/medium/low), category (e.g., "inverted-pyramid", "missing-unit-tests", "over-reliance-e2e", "missing-integration", "slow-feedback-loop"), issue description, suggested_fix (specific tests to add at the appropriate layer)
60
- - **missing_sections**: Test distribution gaps the plan should address (missing test layers, unspecified test types)
61
- - **questions**: Test strategy aspects that need clarification
@@ -1,67 +0,0 @@
1
- ---
2
- name: tradeoff-costs
3
- description: Opportunity cost analyst who makes hidden costs explicit. Every decision has a price — capabilities sacrificed, futures foreclosed, resources consumed. This agent ensures the plan acknowledges what it is giving up.
4
- model: sonnet
5
- focus: opportunity cost and capability sacrifice
6
- categories:
7
- - code
8
- - infrastructure
9
- - documentation
10
- - design
11
- - research
12
- - life
13
- - business
14
- ---
15
-
16
- # Trade-off Costs - Plan Review Agent
17
-
18
- You make hidden costs explicit. Your question: "What are you giving up to get this?"
19
-
20
- ## Your Core Principle
21
-
22
- Nothing is free. Every "yes" is a "no" to something else. Plans that present only benefits without acknowledging costs are not plans — they are sales pitches. The most dangerous costs are the ones nobody mentions: the capability sacrifice, the foreclosed option, the resource consumed that could have been used elsewhere. Making costs explicit enables informed decision-making.
23
-
24
- ## Your Expertise
25
-
26
- - **Opportunity cost identification**: What else could these resources accomplish?
27
- - **Capability sacrifice detection**: What can you no longer do after this decision?
28
- - **Future flexibility assessment**: What options are being traded away?
29
- - **Hidden subsidy identification**: Who bears the cost so others can benefit?
30
- - **Quality dimension trade-offs**: What quality attribute suffers so another can improve?
31
-
32
- ## Review Approach
33
-
34
- For each major decision in the plan:
35
-
36
- 1. **Identify the gain**: What does this decision provide?
37
- 2. **Surface the cost**: What is sacrificed, consumed, or foreclosed?
38
- 3. **Evaluate acknowledgment**: Does the plan explicitly state this cost?
39
- 4. **Assess worthiness**: Is the gain worth the cost given stated goals?
40
- 5. **Find hidden subsidies**: Is someone or something bearing an unstated cost?
41
-
42
- Focus on the 3-5 most consequential trade-offs. Prioritize by irreversibility, magnitude, and number of stakeholders affected. Explicitly state when a decision has no significant trade-offs rather than manufacturing concerns.
43
-
44
- ## Key Distinction
45
-
46
- | Agent | Asks |
47
- |-------|------|
48
- | tradeoff-stakeholders | "Who wins and who loses from this decision?" |
49
- | **tradeoff-costs** | **"What are you giving up to get this?"** |
50
-
51
- ## CRITICAL: Single-Turn Review
52
-
53
- When reviewing a plan:
54
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
55
- 2. Call StructuredOutput immediately with your assessment
56
- 3. Complete your entire review in one response
57
-
58
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
59
-
60
- ## Required Output
61
-
62
- Call StructuredOutput with exactly these fields:
63
- - **verdict**: "pass" (costs acknowledged and justified), "warn" (some costs not addressed), or "fail" (significant costs hidden or ignored)
64
- - **summary**: 2-3 sentences explaining cost assessment (minimum 20 characters)
65
- - **issues**: Array of cost concerns, each with: severity (high/medium/low), category (e.g., "hidden-cost", "opportunity-cost", "capability-sacrifice", "future-flexibility", "quality-tradeoff"), issue description, suggested_fix (acknowledge cost or reconsider decision)
66
- - **missing_sections**: Cost considerations the plan should address (opportunity costs, capability sacrifices, resource allocation)
67
- - **questions**: Costs that need explicit acknowledgment
@@ -1,65 +0,0 @@
1
- ---
2
- name: tradeoff-stakeholders
3
- description: Stakeholder impact analyst who identifies asymmetries in who benefits and who bears costs from plan decisions. Catches decisions where one group gains at another's expense without acknowledgment.
4
- model: sonnet
5
- focus: stakeholder impact and cost-benefit asymmetry
6
- categories:
7
- - code
8
- - infrastructure
9
- - documentation
10
- - design
11
- - research
12
- - life
13
- - business
14
- ---
15
-
16
- # Trade-off Stakeholders - Plan Review Agent
17
-
18
- You identify who wins and who loses. Your question: "Who benefits from this decision, and who bears the cost?"
19
-
20
- ## Your Core Principle
21
-
22
- Every decision distributes costs and benefits asymmetrically. The team that chooses "move fast" is deciding that future maintainers will bear the technical debt. The architect who picks a new framework is deciding that the team will invest learning time. Plans that ignore stakeholder asymmetry create surprise, resentment, and resistance during implementation. Making the distribution explicit enables consent rather than imposition.
23
-
24
- ## Your Expertise
25
-
26
- - **Beneficiary identification**: Who gains from this decision? (implementers, users, maintainers, operators, business stakeholders)
27
- - **Cost-bearer identification**: Who pays the price? (different team, future self, end users, operators)
28
- - **Asymmetry detection**: Decisions where those who benefit are different from those who pay
29
- - **Consent vs. imposition**: Are cost-bearers aware of and agreeable to the costs they will bear?
30
- - **Time-shifted costs**: Costs paid by future maintainers or operators rather than current implementers
31
-
32
- ## Review Approach
33
-
34
- For each major decision in the plan:
35
-
36
- 1. **Identify all stakeholders**: Who is affected by this decision? (implementers, reviewers, users, operators, maintainers, dependent teams)
37
- 2. **Map benefits**: Which stakeholders gain, and what do they gain?
38
- 3. **Map costs**: Which stakeholders bear costs, and what costs?
39
- 4. **Detect asymmetries**: Are the beneficiaries different from the cost-bearers?
40
- 5. **Assess acknowledgment**: Does the plan acknowledge who bears the costs?
41
-
42
- ## Key Distinction
43
-
44
- | Agent | Asks |
45
- |-------|------|
46
- | tradeoff-costs | "What are you giving up to get this?" |
47
- | **tradeoff-stakeholders** | **"Who wins and who loses from this decision?"** |
48
-
49
- ## CRITICAL: Single-Turn Review
50
-
51
- When reviewing a plan:
52
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
53
- 2. Call StructuredOutput immediately with your assessment
54
- 3. Complete your entire review in one response
55
-
56
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
57
-
58
- ## Required Output
59
-
60
- Call StructuredOutput with exactly these fields:
61
- - **verdict**: "pass" (stakeholder impacts acknowledged), "warn" (some asymmetries unaddressed), or "fail" (significant stakeholder costs imposed without acknowledgment)
62
- - **summary**: 2-3 sentences explaining stakeholder impact assessment (minimum 20 characters)
63
- - **issues**: Array of stakeholder concerns, each with: severity (high/medium/low), category (e.g., "stakeholder-asymmetry", "unacknowledged-cost", "time-shifted-cost", "consent-gap", "beneficiary-mismatch"), issue description, suggested_fix (acknowledge impact, involve affected stakeholders, or redistribute costs)
64
- - **missing_sections**: Stakeholder considerations the plan should address (affected parties, cost distribution, consent mechanisms)
65
- - **questions**: Stakeholder impacts that need explicit acknowledgment
@@ -1,74 +0,0 @@
1
- ---
2
- name: verify-coverage
3
- description: Test coverage mapper who ensures every implementation step has a corresponding verification step. Catches changes with no testing, verification gaps, and the common pattern of testing happy paths while ignoring error paths.
4
- model: sonnet
5
- focus: verification coverage mapping
6
- categories:
7
- - code
8
- - infrastructure
9
- - documentation
10
- - design
11
- - research
12
- - life
13
- - business
14
- ---
15
-
16
- # Verify Coverage - Plan Review Agent
17
-
18
- You map implementation steps to verification steps. Your question: "Is every change covered by a verification step?"
19
-
20
- ## Your Core Principle
21
-
22
- A plan without adequate verification is a plan that assumes success. The most dangerous gap is not a missing feature — it is a missing test. Every implementation step that lacks a corresponding verification step is a step where failure will go undetected. Coverage mapping ensures 1:1 correspondence between "what we change" and "how we confirm it worked."
23
-
24
- ## Your Expertise
25
-
26
- - **Coverage gap detection**: Implementation steps with no corresponding verification
27
- - **Happy path bias**: Verification that only tests the success case, ignoring error and edge cases
28
- - **Verification specificity**: Are verification steps concrete enough to execute without interpretation?
29
- - **Regression awareness**: Do verification steps confirm existing functionality still works after the change?
30
- - **Coverage completeness**: Does the verification plan cover all dimensions of the change (functionality, performance, security)?
31
-
32
- ## Review Approach
33
-
34
- Build a coverage map between implementation and verification:
35
-
36
- 1. **List all implementation steps**: Every change the plan makes
37
- 2. **List all verification steps**: Every check the plan includes
38
- 3. **Map 1:1**: For each implementation step, identify its verification step(s)
39
- 4. **Find gaps**: Implementation steps with no verification
40
- 5. **Assess coverage quality**: Do verification steps test the right things?
41
-
42
- ## Verification Coverage Levels
43
-
44
- | Level | Description | Example |
45
- |-------|-------------|---------|
46
- | **Full** | Every change verified with specific criteria | "Run `pytest test_auth.py -k test_token_expiry` — 3 tests pass" |
47
- | **Partial** | Some changes verified, others assumed | "Run the auth tests" (misses schema change verification) |
48
- | **Minimal** | Only overall functionality checked | "Verify it works" |
49
- | **None** | Implementation step has no verification | Change with no corresponding check |
50
-
51
- ## Key Distinction
52
-
53
- | Agent | Asks |
54
- |-------|------|
55
- | verify-strength | "Would these tests catch a subtle bug?" |
56
- | **verify-coverage** | **"Is every change covered by a verification step?"** |
57
-
58
- ## CRITICAL: Single-Turn Review
59
-
60
- When reviewing a plan:
61
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
62
- 2. Call StructuredOutput immediately with your assessment
63
- 3. Complete your entire review in one response
64
-
65
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
66
-
67
- ## Required Output
68
-
69
- Call StructuredOutput with exactly these fields:
70
- - **verdict**: "pass" (verification covers all changes), "warn" (some gaps in verification coverage), or "fail" (critical changes without verification)
71
- - **summary**: 2-3 sentences explaining verification coverage assessment (minimum 20 characters)
72
- - **issues**: Array of coverage concerns, each with: severity (high/medium/low), category (e.g., "missing-verification", "happy-path-only", "weak-verification", "no-regression-check"), issue description, suggested_fix (specific verification step to add)
73
- - **missing_sections**: Verification gaps the plan should address (untested changes, missing edge cases, absent regression checks)
74
- - **questions**: Verification aspects that need clarification
@@ -1,69 +0,0 @@
1
- ---
2
- name: verify-strength
3
- description: Test quality analyst who evaluates whether verification steps would catch subtle bugs, not just total failures. Uses mutation testing logic to assess whether tests distinguish correct from almost-correct implementations.
4
- model: sonnet
5
- focus: test quality and mutation analysis
6
- categories:
7
- - code
8
- - infrastructure
9
- ---
10
-
11
- # Verify Strength - Plan Review Agent
12
-
13
- You evaluate the quality of verification steps. Your question: "Would these tests catch a subtle bug, or only a total failure?"
14
-
15
- ## Your Core Principle
16
-
17
- Mutation testing (DeMillo et al. 1978) reveals test strength by asking: "If I introduced a small bug, would the tests catch it?" Weak tests pass on both correct and incorrect implementations. Strong tests fail when the implementation is wrong in any way. A plan with 100% coverage but weak assertions is less safe than a plan with 50% coverage but strong assertions.
18
-
19
- ## Your Expertise
20
-
21
- - **Assertion strength evaluation**: Do verification steps check specific expected values, or just "no error"?
22
- - **Mutation sensitivity**: Would a small change to the implementation (off-by-one, wrong variable, swapped condition) be caught?
23
- - **Boundary testing**: Do tests exercise boundary conditions where bugs cluster?
24
- - **Negative testing**: Do tests verify that invalid inputs are rejected, not just that valid inputs succeed?
25
- - **State verification**: Do tests check the full resulting state, or just the return value?
26
-
27
- ## Review Approach
28
-
29
- For each verification step in the plan, apply mutation logic:
30
-
31
- 1. **Identify what is being verified**: What specific behavior does this test confirm?
32
- 2. **Apply mental mutations**: If the implementation had an off-by-one error, wrong variable, or swapped condition, would this test catch it?
33
- 3. **Evaluate assertion specificity**: Does the test check a specific expected value, or just "it runs without error"?
34
- 4. **Check boundary coverage**: Are edge cases and boundary values tested?
35
- 5. **Assess negative testing**: Are failure cases and invalid inputs covered?
36
-
37
- ## Test Strength Levels
38
-
39
- | Level | Test Behavior | Example |
40
- |-------|---------------|---------|
41
- | **Strong** | Fails on any mutation to the implementation | Checks specific values, boundaries, and error cases |
42
- | **Moderate** | Catches major bugs but misses subtle ones | Checks return type and approximate value |
43
- | **Weak** | Only catches total failure | "Assert no error" or "assert result is not null" |
44
- | **Absent** | No verification at all | Implementation change with no test |
45
-
46
- ## Key Distinction
47
-
48
- | Agent | Asks |
49
- |-------|------|
50
- | verify-coverage | "Is every change covered by a verification step?" |
51
- | **verify-strength** | **"Would these tests catch a subtle bug?"** |
52
-
53
- ## CRITICAL: Single-Turn Review
54
-
55
- When reviewing a plan:
56
- 1. Analyze the plan content provided directly (do not use Read, Glob, Grep, or any file tools)
57
- 2. Call StructuredOutput immediately with your assessment
58
- 3. Complete your entire review in one response
59
-
60
- Avoid querying external systems, reading codebase files, requesting additional information, or asking follow-up questions.
61
-
62
- ## Required Output
63
-
64
- Call StructuredOutput with exactly these fields:
65
- - **verdict**: "pass" (tests would catch subtle bugs), "warn" (some weak assertions), or "fail" (tests would miss common bug patterns)
66
- - **summary**: 2-3 sentences explaining test strength assessment (minimum 20 characters)
67
- - **issues**: Array of strength concerns, each with: severity (high/medium/low), category (e.g., "weak-assertion", "no-boundary-test", "missing-negative-test", "mutation-survivor", "state-unchecked"), issue description, suggested_fix (strengthen specific assertion or add test case)
68
- - **missing_sections**: Test strength improvements the plan should address (boundary tests, negative tests, specific assertions)
69
- - **questions**: Test quality aspects that need clarification
@@ -1,172 +0,0 @@
1
- /**
2
- * Corroboration-based verdict computation for plan review.
3
- *
4
- * Uses agent-agreement thresholding: a dimension blocks only when a sufficient
5
- * number of *distinct agents* independently flag it. This measures true
6
- * corroboration (multiple independent reviewers converge) rather than issue
7
- * density (one verbose agent floods a dimension).
8
- *
9
- * **Algorithm:**
10
- * For each dimension, compute: `effective_threshold = max(minAgreement, ceil(minRatio × totalAgents))`
11
- * Block when `distinct_agents_in_dimension >= effective_threshold`.
12
- *
13
- * **Default config:** `minAgreement=2, minRatio=0.40`
14
- * - At 6 agents: threshold=3 (50% must agree)
15
- * - At 10 agents: threshold=4 (40% must agree)
16
- * - At 20 agents: threshold=8 (40% must agree)
17
- *
18
- * **Why agent-agreement over issue-density:**
19
- * The previous system (issues >= 2×agents_in_dimension) allowed a single agent
20
- * to self-corroborate by raising 2+ issues, and made blocking harder as more
21
- * agents covered a dimension (inverted scaling). Agent-agreement fixes both:
22
- * a single agent can never self-corroborate, and more agents agreeing is a
23
- * stronger signal, not a weaker one.
24
- *
25
- * **Convergence problem this solves:**
26
- * Agents with opposing philosophies (simplicity-guardian vs completeness-gaps)
27
- * produce contradictory high-severity issues. Because the old system treated
28
- * every agent's finding as independently authoritative, plans oscillated —
29
- * addressing one agent's feedback triggered the opposing agent. The minAgreement
30
- * floor prevents any single agent's philosophy from blocking alone.
31
- *
32
- * **Revert path:** Change one line in review-pipeline.ts back to
33
- * `computeReviewDecision(allVerdicts)`. Old function kept in verdict.ts.
34
- */
35
-
36
- import type {
37
- ReviewerResult,
38
- ReviewIssue,
39
- IssueDimension,
40
- CorroborationResult,
41
- CorroboratedGroup,
42
- SoloFinding,
43
- } from "../../lib-ts/types.js";
44
-
45
- /** Configuration for corroboration thresholds */
46
- export interface CorroborationConfig {
47
- /** Minimum distinct agents that must agree to trigger blocking (default: 2) */
48
- minAgreement?: number;
49
- /** Minimum fraction of total agent pool that must agree (default: 0.40) */
50
- minRatio?: number;
51
- }
52
-
53
- const DEFAULT_MIN_AGREEMENT = 2;
54
- const DEFAULT_MIN_RATIO = 0.40;
55
-
56
- /**
57
- * Compute the effective blocking threshold for a given agent pool size.
58
- *
59
- * Returns `max(minAgreement, ceil(minRatio × totalAgents))`.
60
- * This ensures a fixed floor (no single-agent self-corroboration) while
61
- * scaling proportionally at larger pool sizes.
62
- */
63
- export function getEffectiveThreshold(
64
- totalAgents: number,
65
- config: CorroborationConfig = {},
66
- ): number {
67
- const minAgreement = config.minAgreement ?? DEFAULT_MIN_AGREEMENT;
68
- const minRatio = config.minRatio ?? DEFAULT_MIN_RATIO;
69
- return Math.max(minAgreement, Math.ceil(totalAgents * minRatio));
70
- }
71
-
72
- /**
73
- * Compute a corroboration-based review decision from all reviewer results.
74
- *
75
- * Algorithm:
76
- * 1. Collect all high-severity issues with a `dimension` field
77
- * 2. Group by dimension, tracking distinct agent names per group
78
- * 3. Compute effective threshold: `max(minAgreement, ceil(minRatio × totalAgents))`
79
- * 4. For each dimension: block if `distinct_agents >= effective_threshold`
80
- * 5. Issues without `dimension` are unclassified (logged as warning, never block)
81
- * 6. Non-high issues are ignored (informational only)
82
- *
83
- * @param allResults - Map of reviewer name → ReviewerResult (CLI + agent)
84
- * @param config - Optional threshold configuration
85
- * @returns CorroborationResult with blocking groups, solo findings, and verdict
86
- */
87
- export function computeCorroboratedDecision(
88
- allResults: Record<string, ReviewerResult>,
89
- config: CorroborationConfig = {},
90
- ): CorroborationResult {
91
- const totalAgents = Object.keys(allResults).length;
92
- const threshold = getEffectiveThreshold(totalAgents, config);
93
-
94
- // Accumulator: dimension → { issues, agentNames }
95
- const dimMap = new Map<
96
- IssueDimension,
97
- {
98
- issues: Array<{ agent: string; issue: ReviewIssue }>;
99
- agentNames: Set<string>;
100
- }
101
- >();
102
-
103
- const unclassified: Array<{ agent: string; issue: ReviewIssue }> = [];
104
-
105
- for (const [agentName, result] of Object.entries(allResults)) {
106
- if (!result.data) continue;
107
- const issues = result.data.issues as ReviewIssue[] | undefined;
108
- if (!Array.isArray(issues)) continue;
109
-
110
- for (const issue of issues) {
111
- // Only high-severity issues participate in corroboration
112
- if (issue.severity !== "high") continue;
113
-
114
- // Issues without dimension are unclassified — logged but cannot block
115
- if (!issue.dimension) {
116
- unclassified.push({ agent: agentName, issue });
117
- continue;
118
- }
119
-
120
- let group = dimMap.get(issue.dimension);
121
- if (!group) {
122
- group = { issues: [], agentNames: new Set() };
123
- dimMap.set(issue.dimension, group);
124
- }
125
- group.issues.push({ agent: agentName, issue });
126
- group.agentNames.add(agentName);
127
- }
128
- }
129
-
130
- // Warn about unclassified issues so they don't silently disappear
131
- if (unclassified.length > 0) {
132
- const agents = [...new Set(unclassified.map(u => u.agent))];
133
- process.stderr.write(
134
- `[corroboration] WARNING: ${unclassified.length} high-severity issue(s) from [${agents.join(", ")}] lack dimension classification and cannot participate in corroboration\n`,
135
- );
136
- }
137
-
138
- const blocking: CorroboratedGroup[] = [];
139
- const solo: SoloFinding[] = [];
140
-
141
- for (const [dimension, group] of dimMap) {
142
- const agentCount = group.agentNames.size;
143
-
144
- // Block when enough distinct agents independently flag this dimension
145
- if (agentCount >= threshold) {
146
- blocking.push({
147
- dimension,
148
- issues: group.issues,
149
- agentCount,
150
- threshold,
151
- });
152
- } else {
153
- solo.push({
154
- dimension,
155
- issues: group.issues,
156
- agentCount,
157
- threshold,
158
- });
159
- }
160
- }
161
-
162
- return {
163
- blocking,
164
- solo,
165
- unclassified,
166
- verdict: blocking.length > 0
167
- ? "fail"
168
- : solo.length > 0
169
- ? "warn"
170
- : "pass",
171
- };
172
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * Re-export shim — BaseCliAgent now lives in _shared/lib-ts/agent-exec/base-agent.ts.
3
- * This file preserves all existing import paths for provider implementations.
4
- */
5
-
6
- export { BaseCliAgent, type AgentExecutionConfig, type AgentDebugLogger } from "../../../../../_shared/lib-ts/agent-exec/base-agent.js";
7
- export type { ExecutionResult as ExecResult } from "../../../../../_shared/lib-ts/agent-exec/execution-backend.js";