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
@@ -0,0 +1,242 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Council debate runner for architectural decisions.
4
+ * Uses multi-agent infrastructure to simulate structured debate.
5
+ */
6
+
7
+ import { runAgentReview } from "../lib-ts/reviewers/agent.js";
8
+ import type { AgentConfig } from "../lib-ts/reviewers/types.js";
9
+ import { logInfo, logError } from "../../_core/lib-ts/runtime/logger.js";
10
+
11
+ // Debate schema - each agent responds with their perspective
12
+ const DEBATE_SCHEMA = {
13
+ type: "object",
14
+ properties: {
15
+ agent_name: { type: "string", description: "Name of this agent/perspective" },
16
+ position: {
17
+ type: "string",
18
+ enum: ["approach_a", "approach_b", "hybrid", "neither"],
19
+ description: "Which approach this agent supports"
20
+ },
21
+ reasoning: {
22
+ type: "array",
23
+ items: { type: "string" },
24
+ description: "Key reasoning points (3-5 bullet points)"
25
+ },
26
+ rebuttals: {
27
+ type: "array",
28
+ items: {
29
+ type: "object",
30
+ properties: {
31
+ concern: { type: "string" },
32
+ response: { type: "string" }
33
+ },
34
+ required: ["concern", "response"]
35
+ },
36
+ description: "Responses to anticipated counterarguments"
37
+ },
38
+ verdict: {
39
+ type: "string",
40
+ description: "Final recommendation with confidence level"
41
+ }
42
+ },
43
+ required: ["agent_name", "position", "reasoning", "rebuttals", "verdict"]
44
+ };
45
+
46
+ // Define 3 council agents with different perspectives
47
+ const COUNCIL_AGENTS: AgentConfig[] = [
48
+ {
49
+ name: "Correctness Advocate",
50
+ provider: "claude",
51
+ model: "claude-sonnet-4-5",
52
+ enabled: true,
53
+ system_prompt: `You are the Correctness Advocate in this architectural council.
54
+
55
+ YOUR MANDATE: Prioritize system correctness and data integrity above all else.
56
+
57
+ EVALUATION CRITERIA:
58
+ - What happens if timing assumptions break?
59
+ - Can the system enter invalid states?
60
+ - Are there race conditions or ordering dependencies?
61
+ - What's the blast radius of bugs in each approach?
62
+ - Which approach has fewer failure modes?
63
+
64
+ STYLE:
65
+ - Be skeptical of "it should work" assumptions
66
+ - Point out edge cases and failure scenarios
67
+ - Ask "what breaks when X happens before Y?"
68
+ - Favor defensive, fail-safe designs`
69
+ },
70
+ {
71
+ name: "Simplicity Champion",
72
+ provider: "claude",
73
+ model: "claude-sonnet-4-5",
74
+ enabled: true,
75
+ system_prompt: `You are the Simplicity Champion in this architectural council.
76
+
77
+ YOUR MANDATE: Advocate for the simplest solution that could possibly work.
78
+
79
+ EVALUATION CRITERIA:
80
+ - Which approach has fewer moving parts?
81
+ - Can a new developer understand it in 5 minutes?
82
+ - How many state transitions are required?
83
+ - Is the responsibility of each component clear?
84
+ - Which approach requires less documentation?
85
+
86
+ STYLE:
87
+ - Challenge unnecessary complexity
88
+ - Prefer explicit over implicit behavior
89
+ - Ask "do we really need this?"
90
+ - Value readability and maintainability
91
+ - Distrust "clever" solutions`
92
+ },
93
+ {
94
+ name: "Pragmatist",
95
+ provider: "claude",
96
+ model: "claude-sonnet-4-5",
97
+ enabled: true,
98
+ system_prompt: `You are the Pragmatist in this architectural council.
99
+
100
+ YOUR MANDATE: Balance theoretical correctness with practical engineering constraints.
101
+
102
+ EVALUATION CRITERIA:
103
+ - What's the migration cost from current state?
104
+ - How much code needs to change?
105
+ - What's the testing burden?
106
+ - Are there real-world scenarios that break each approach?
107
+ - Which approach is easier to debug when things go wrong?
108
+
109
+ STYLE:
110
+ - Consider operational reality
111
+ - Value incremental improvements over rewrites
112
+ - Ask "what problem are we actually solving?"
113
+ - Challenge both over-engineering and under-engineering
114
+ - Focus on developer experience`
115
+ }
116
+ ];
117
+
118
+ interface DebateResult {
119
+ agent_name: string;
120
+ position: string;
121
+ reasoning: string[];
122
+ rebuttals: Array<{ concern: string; response: string }>;
123
+ verdict: string;
124
+ }
125
+
126
+ async function runCouncilDebate(topic: string): Promise<void> {
127
+ logInfo("council", "Starting council debate");
128
+ console.log("\n=== COUNCIL DEBATE ===\n");
129
+ console.log(topic);
130
+ console.log("\n" + "=".repeat(80) + "\n");
131
+
132
+ const results: DebateResult[] = [];
133
+
134
+ // Run all agents in parallel
135
+ const promises = COUNCIL_AGENTS.map(async (agent) => {
136
+ logInfo("council", `Running agent: ${agent.name}`);
137
+
138
+ const result = await runAgentReview(
139
+ topic,
140
+ agent,
141
+ DEBATE_SCHEMA,
142
+ 90000, // 90 second timeout
143
+ undefined,
144
+ "council-debate"
145
+ );
146
+
147
+ if (!result.ok) {
148
+ logError("council", `Agent ${agent.name} failed: ${result.error}`);
149
+ console.error(`\n[ERROR] ${agent.name} failed: ${result.error}\n`);
150
+ return null;
151
+ }
152
+
153
+ return result.normalized as unknown as DebateResult;
154
+ });
155
+
156
+ const responses = await Promise.all(promises);
157
+
158
+ // Filter out failed agents
159
+ for (const response of responses) {
160
+ if (response) {
161
+ results.push(response);
162
+ }
163
+ }
164
+
165
+ if (results.length === 0) {
166
+ console.error("\n[FATAL] All agents failed to respond\n");
167
+ process.exit(1);
168
+ }
169
+
170
+ // Display results
171
+ for (const result of results) {
172
+ console.log(`\n### ${result.agent_name}\n`);
173
+ console.log(`**Position:** ${result.position}\n`);
174
+
175
+ console.log("**Reasoning:**");
176
+ for (const point of result.reasoning) {
177
+ console.log(`- ${point}`);
178
+ }
179
+
180
+ if (result.rebuttals.length > 0) {
181
+ console.log("\n**Rebuttals:**");
182
+ for (const rebuttal of result.rebuttals) {
183
+ console.log(`- *${rebuttal.concern}*`);
184
+ console.log(` → ${rebuttal.response}`);
185
+ }
186
+ }
187
+
188
+ console.log(`\n**Verdict:** ${result.verdict}\n`);
189
+ console.log("-".repeat(80));
190
+ }
191
+
192
+ // Compute consensus
193
+ console.log("\n=== CONSENSUS ANALYSIS ===\n");
194
+
195
+ const positionCounts = new Map<string, number>();
196
+ for (const result of results) {
197
+ positionCounts.set(result.position, (positionCounts.get(result.position) || 0) + 1);
198
+ }
199
+
200
+ console.log("**Position Distribution:**");
201
+ for (const [position, count] of positionCounts.entries()) {
202
+ console.log(`- ${position}: ${count}/${results.length} agents`);
203
+ }
204
+
205
+ const majorityPosition = Array.from(positionCounts.entries())
206
+ .sort((a, b) => b[1] - a[1])[0];
207
+
208
+ if (majorityPosition[1] >= 2) {
209
+ console.log(`\n**Majority Decision:** ${majorityPosition[0]} (${majorityPosition[1]}/${results.length} agents)`);
210
+ } else {
211
+ console.log("\n**No clear majority** - further investigation needed");
212
+ }
213
+
214
+ console.log("\n" + "=".repeat(80) + "\n");
215
+ logInfo("council", "Debate complete");
216
+ }
217
+
218
+ // Read debate topic from args or stdin
219
+ const args = process.argv.slice(2);
220
+ let topic: string;
221
+
222
+ if (args.length > 0) {
223
+ topic = args.join(" ");
224
+ } else {
225
+ // Read from stdin (pipe mode)
226
+ const chunks: Buffer[] = [];
227
+ for await (const chunk of process.stdin) {
228
+ chunks.push(chunk);
229
+ }
230
+ topic = Buffer.concat(chunks).toString("utf-8").trim();
231
+ }
232
+
233
+ if (!topic) {
234
+ console.error("Usage: council_debate.ts <topic> OR echo '<topic>' | council_debate.ts");
235
+ process.exit(1);
236
+ }
237
+
238
+ runCouncilDebate(topic).catch((e) => {
239
+ logError("council", `Fatal error: ${e}`);
240
+ console.error(`\n[FATAL] ${e}\n`);
241
+ process.exit(1);
242
+ });
@@ -0,0 +1,294 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Simplified council debate runner - bypasses review infrastructure.
4
+ * Directly invokes claude CLI and parses debate-specific schema.
5
+ */
6
+
7
+ import { spawn } from "child_process";
8
+ import { shellQuoteWin } from "../../_core/lib-ts/runtime/subprocess-utils.js";
9
+
10
+ const DEBATE_SCHEMA = {
11
+ type: "object",
12
+ properties: {
13
+ agent_name: { type: "string" },
14
+ position: {
15
+ type: "string",
16
+ enum: ["approach_a", "approach_b", "hybrid", "neither"],
17
+ },
18
+ reasoning: {
19
+ type: "array",
20
+ items: { type: "string" },
21
+ },
22
+ rebuttals: {
23
+ type: "array",
24
+ items: {
25
+ type: "object",
26
+ properties: {
27
+ concern: { type: "string" },
28
+ response: { type: "string" },
29
+ },
30
+ required: ["concern", "response"],
31
+ },
32
+ },
33
+ verdict: { type: "string" },
34
+ },
35
+ required: ["agent_name", "position", "reasoning", "rebuttals", "verdict"],
36
+ };
37
+
38
+ const AGENTS = [
39
+ {
40
+ name: "Correctness Advocate",
41
+ system: `You are the Correctness Advocate in this architectural council.
42
+
43
+ YOUR MANDATE: Prioritize system correctness and data integrity above all else.
44
+
45
+ EVALUATION CRITERIA:
46
+ - What happens if timing assumptions break?
47
+ - Can the system enter invalid states?
48
+ - Are there race conditions or ordering dependencies?
49
+ - What's the blast radius of bugs in each approach?
50
+ - Which approach has fewer failure modes?
51
+
52
+ STYLE:
53
+ - Be skeptical of "it should work" assumptions
54
+ - Point out edge cases and failure scenarios
55
+ - Ask "what breaks when X happens before Y?"
56
+ - Favor defensive, fail-safe designs`,
57
+ },
58
+ {
59
+ name: "Simplicity Champion",
60
+ system: `You are the Simplicity Champion in this architectural council.
61
+
62
+ YOUR MANDATE: Advocate for the simplest solution that could possibly work.
63
+
64
+ EVALUATION CRITERIA:
65
+ - Which approach has fewer moving parts?
66
+ - Can a new developer understand it in 5 minutes?
67
+ - How many state transitions are required?
68
+ - Is the responsibility of each component clear?
69
+ - Which approach requires less documentation?
70
+
71
+ STYLE:
72
+ - Challenge unnecessary complexity
73
+ - Prefer explicit over implicit behavior
74
+ - Ask "do we really need this?"
75
+ - Value readability and maintainability
76
+ - Distrust "clever" solutions`,
77
+ },
78
+ {
79
+ name: "Pragmatist",
80
+ system: `You are the Pragmatist in this architectural council.
81
+
82
+ YOUR MANDATE: Balance theoretical correctness with practical engineering constraints.
83
+
84
+ EVALUATION CRITERIA:
85
+ - What's the migration cost from current state?
86
+ - How much code needs to change?
87
+ - What's the testing burden?
88
+ - Are there real-world scenarios that break each approach?
89
+ - Which approach is easier to debug when things go wrong?
90
+
91
+ STYLE:
92
+ - Consider operational reality
93
+ - Value incremental improvements over rewrites
94
+ - Ask "what problem are we actually solving?"
95
+ - Challenge both over-engineering and under-engineering
96
+ - Focus on developer experience`,
97
+ },
98
+ ];
99
+
100
+ interface DebateResult {
101
+ agent_name: string;
102
+ position: string;
103
+ reasoning: string[];
104
+ rebuttals: Array<{ concern: string; response: string }>;
105
+ verdict: string;
106
+ }
107
+
108
+ async function runAgent(
109
+ topic: string,
110
+ agentName: string,
111
+ systemPrompt: string,
112
+ ): Promise<DebateResult | null> {
113
+ return new Promise((resolve) => {
114
+ const schemaJson = JSON.stringify(DEBATE_SCHEMA);
115
+ const promptText = `IMMEDIATELY call StructuredOutput with your council debate response.
116
+ Do NOT output any text before calling StructuredOutput.
117
+
118
+ TOPIC:
119
+ <<<
120
+ ${topic}
121
+ >>>
122
+ `;
123
+
124
+ const args = [
125
+ "--model",
126
+ "claude-sonnet-4-5",
127
+ "--output-format",
128
+ "json",
129
+ "--json-schema",
130
+ shellQuoteWin(schemaJson),
131
+ "--max-turns",
132
+ "3",
133
+ "--setting-sources",
134
+ process.platform === "win32" ? '""' : "",
135
+ "-p",
136
+ "--no-session-persistence",
137
+ "--system-prompt",
138
+ shellQuoteWin(systemPrompt),
139
+ ];
140
+
141
+ const claudeCmd = process.platform === "win32"
142
+ ? "C:\\Users\\fujos\\AppData\\Roaming\\npm\\claude.cmd"
143
+ : "claude";
144
+
145
+ console.error(`\n[${agentName}] Starting...`);
146
+
147
+ const proc = spawn(claudeCmd, args, {
148
+ shell: true,
149
+ env: {
150
+ ...process.env,
151
+ CLAUDECODE: undefined,
152
+ CLAUDE_CODE_ENTRYPOINT: undefined,
153
+ },
154
+ });
155
+
156
+ let stdout = "";
157
+ let stderr = "";
158
+
159
+ proc.stdout?.on("data", (chunk) => {
160
+ stdout += chunk.toString();
161
+ });
162
+
163
+ proc.stderr?.on("data", (chunk) => {
164
+ stderr += chunk.toString();
165
+ });
166
+
167
+ proc.on("close", (code) => {
168
+ if (code !== 0) {
169
+ console.error(`[${agentName}] Failed with exit code ${code}`);
170
+ console.error(`[${agentName}] stderr: ${stderr}`);
171
+ resolve(null);
172
+ return;
173
+ }
174
+
175
+ // Parse CLI wrapper output
176
+ try {
177
+ const wrapper = JSON.parse(stdout);
178
+ if (wrapper.type !== "result" || !wrapper.structured_output) {
179
+ console.error(`[${agentName}] No structured_output in wrapper`);
180
+ console.error(`[${agentName}] wrapper keys: ${Object.keys(wrapper).join(", ")}`);
181
+ resolve(null);
182
+ return;
183
+ }
184
+
185
+ const result = wrapper.structured_output as DebateResult;
186
+ console.error(`[${agentName}] ✓ Position: ${result.position}`);
187
+ resolve(result);
188
+ } catch (e) {
189
+ console.error(`[${agentName}] Parse error: ${e}`);
190
+ console.error(`[${agentName}] stdout: ${stdout.slice(0, 500)}`);
191
+ resolve(null);
192
+ }
193
+ });
194
+
195
+ // Send prompt to stdin
196
+ proc.stdin?.write(promptText);
197
+ proc.stdin?.end();
198
+ });
199
+ }
200
+
201
+ async function main() {
202
+ const args = process.argv.slice(2);
203
+ let topic: string;
204
+
205
+ if (args.length > 0) {
206
+ topic = args.join(" ");
207
+ } else {
208
+ const chunks: Buffer[] = [];
209
+ for await (const chunk of process.stdin) {
210
+ chunks.push(chunk);
211
+ }
212
+ topic = Buffer.concat(chunks).toString("utf-8").trim();
213
+ }
214
+
215
+ if (!topic) {
216
+ console.error("Usage: council_debate_simple.ts <topic>");
217
+ process.exit(1);
218
+ }
219
+
220
+ console.log("\n=== COUNCIL DEBATE ===\n");
221
+ console.log(topic.slice(0, 200) + "...\n");
222
+ console.log("=".repeat(80) + "\n");
223
+
224
+ // Run all agents in parallel
225
+ const promises = AGENTS.map((agent) =>
226
+ runAgent(topic, agent.name, agent.system),
227
+ );
228
+
229
+ const results = (await Promise.all(promises)).filter(
230
+ (r): r is DebateResult => r !== null,
231
+ );
232
+
233
+ if (results.length === 0) {
234
+ console.error("\n[FATAL] All agents failed\n");
235
+ process.exit(1);
236
+ }
237
+
238
+ // Display results
239
+ for (const result of results) {
240
+ console.log(`\n### ${result.agent_name}\n`);
241
+ console.log(`**Position:** ${result.position}\n`);
242
+
243
+ console.log("**Reasoning:**");
244
+ for (const point of result.reasoning) {
245
+ console.log(`- ${point}`);
246
+ }
247
+
248
+ if (result.rebuttals.length > 0) {
249
+ console.log("\n**Rebuttals:**");
250
+ for (const rebuttal of result.rebuttals) {
251
+ console.log(`- *${rebuttal.concern}*`);
252
+ console.log(` → ${rebuttal.response}`);
253
+ }
254
+ }
255
+
256
+ console.log(`\n**Verdict:** ${result.verdict}\n`);
257
+ console.log("-".repeat(80));
258
+ }
259
+
260
+ // Compute consensus
261
+ console.log("\n=== CONSENSUS ANALYSIS ===\n");
262
+
263
+ const positionCounts = new Map<string, number>();
264
+ for (const result of results) {
265
+ positionCounts.set(
266
+ result.position,
267
+ (positionCounts.get(result.position) || 0) + 1,
268
+ );
269
+ }
270
+
271
+ console.log("**Position Distribution:**");
272
+ for (const [position, count] of positionCounts.entries()) {
273
+ console.log(`- ${position}: ${count}/${results.length} agents`);
274
+ }
275
+
276
+ const majorityPosition = Array.from(positionCounts.entries()).sort(
277
+ (a, b) => b[1] - a[1],
278
+ )[0];
279
+
280
+ if (majorityPosition && majorityPosition[1] >= 2) {
281
+ console.log(
282
+ `\n**Majority Decision:** ${majorityPosition[0]} (${majorityPosition[1]}/${results.length} agents)`,
283
+ );
284
+ } else {
285
+ console.log("\n**No clear majority** - further investigation needed");
286
+ }
287
+
288
+ console.log("\n" + "=".repeat(80) + "\n");
289
+ }
290
+
291
+ main().catch((e) => {
292
+ console.error(`\n[FATAL] ${e}\n`);
293
+ process.exit(1);
294
+ });
@@ -1,9 +1,9 @@
1
- Read this spec and interview me in detail using the AskUserQuestionTool about literally anything:
2
- - Technical implementation
3
- - UI & UX
4
- - Concerns
5
- - Tradeoffs, etc.
6
-
7
- But make sure the questions are not obvious
8
-
9
- Be very in-depth and continue interviewing me continually until it's complete, then write the spec to the file.
1
+ Read this spec and interview me in detail using the AskUserQuestionTool about literally anything:
2
+ - Technical implementation
3
+ - UI & UX
4
+ - Concerns
5
+ - Tradeoffs, etc.
6
+
7
+ But make sure the questions are not obvious
8
+
9
+ Be very in-depth and continue interviewing me continually until it's complete, then write the spec to the file.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: codex
3
+ description: Delegate implementation to Codex sub-agents. USE WHEN codex OR send to codex OR codex implement OR hand off to codex OR launch codex OR run codex.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /codex
8
+
9
+ Delegate work to a Codex sub-agent. The launch script handles prompt construction internally — you just run the command and pass the mode/flags.
10
+
11
+ **IMPORTANT:** Never include the launch command path, script path, or any `.aiwcli/` internal paths in the delegation prompt or inline text arguments. The script constructs Codex's prompt internally. Leaking internal paths into the prompt causes Codex to recurse.
12
+
13
+ ## Command
14
+
15
+ `bun ~/.aiwcli/bin/resolve-run.ts .aiwcli/_core/skills/codex/scripts/launch-codex.ts [flags] <mode>`
16
+
17
+ **Modes:** `plan` | `--file <path>` | `<inline text...>`
18
+
19
+ **Flags:** `--model <name>`, `--sandbox <mode>`, `--context <id>`, `--prompt <text>`, `--no-yolo`, `--no-watch`
20
+
21
+ ## Usage
22
+
23
+ Run with `run_in_background: true`. The script blocks until Codex exits and prints a session summary.
24
+
25
+ For detailed delegation patterns (parallel, one-shot, ad-hoc), read `.aiwcli/_core/skills/codex/SKILL.md`.
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: devin
3
+ description: Delegate implementation to Devin sub-agents. USE WHEN devin OR send to devin OR devin implement OR hand off to devin OR launch devin OR run devin.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /devin
8
+
9
+ Delegate work to a Devin sub-agent. The launch script handles prompt construction internally — you just run the command and pass the mode/flags.
10
+
11
+ **IMPORTANT:** Never include the launch command path, script path, or any `.aiwcli/` internal paths in the delegation prompt or inline text arguments. The script constructs Devin's prompt internally. Leaking internal paths into the prompt causes Devin to recurse.
12
+
13
+ ## Command
14
+
15
+ `bun ~/.aiwcli/bin/resolve-run.ts .aiwcli/_core/skills/devin/scripts/launch-devin.ts [flags] <mode>`
16
+
17
+ **Modes:** `plan` | `--file <path>` | `<inline text...>`
18
+
19
+ **Flags:** `--model <name>`, `--context <id>`, `--prompt <text>`, `--no-watch`
20
+
21
+ ## Usage
22
+
23
+ Run with `run_in_background: true`. The script blocks until Devin exits and prints a session summary.
24
+
25
+ For detailed delegation patterns (parallel, one-shot, ad-hoc), read `.aiwcli/_core/skills/devin/SKILL.md`.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: handoff
3
+ description: Create handoff document to preserve session context for future sessions. USE WHEN handoff OR write a handoff OR create session summary OR document what we did OR end session with notes.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /handoff
8
+
9
+ Load and execute the handoff workflow from `.aiwcli/_core/skills/handoff-system/workflows/handoff.md`.
10
+
11
+ **Triggers:** "/handoff", "write a handoff", "create a session summary", "document what we did", "end session with notes"
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: handoff-resume
3
+ description: Resume session from a handoff document. USE WHEN resume handoff OR continue from handoff OR restore session context OR pick up where we left off.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /handoff-resume
8
+
9
+ Load and execute the handoff resume workflow from `.aiwcli/_core/skills/handoff-system/workflows/handoff-resume.md`.
10
+
11
+ **Triggers:** "/handoff-resume", "resume handoff", "continue from handoff", "restore session", "pick up where we left off"
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: meta-plan
3
+ description: Prompt amplifier for complex problems. USE WHEN meta-plan OR chain reasoning OR dissect problem OR help me figure out the right approach.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # /meta-plan -- Prompt Amplifier
8
+
9
+ Load and engage with the reasoning framework at `.aiwcli/_core/skills/meta-plan/workflows/meta-plan.md`. Apply each category as a lens for deeper analysis -- not as steps to execute.
10
+
11
+ **Triggers:** "meta-plan", "chain reasoning", "dissect problem", "help me figure out the right approach"
12
+
13
+ **Produces:** An amplified request document (problem decomposition, approaches, trade-offs, risks, recommendation). Does NOT produce implementation steps -- those are the next session's job.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: codex
3
+ description: "Self-reference guard: you ARE Codex. Do not invoke this skill."
4
+ user-invocable: false
5
+ ---
6
+
7
+ # Codex (Self-Reference Guard)
8
+
9
+ **You are already running as Codex.** Do not attempt to launch another Codex instance.
10
+
11
+ If asked to delegate work to Codex, you should perform the work directly — you are the Codex agent.
12
+
13
+ To delegate to a *different* agent, use the devin skill instead.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: devin
3
+ description: Delegate implementation to Devin sub-agents. USE WHEN devin OR send to devin OR devin implement OR hand off to devin OR launch devin OR run devin.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Devin Workflow
8
+
9
+ Delegate work to a Devin sub-agent. The launch script handles prompt construction internally — you just run the command and pass the mode/flags.
10
+
11
+ **IMPORTANT:** Never include the launch command path, script path, or any `.aiwcli/` internal paths in the delegation prompt or inline text arguments. The script constructs Devin's prompt internally. Leaking internal paths into the prompt causes Devin to recurse.
12
+
13
+ ## Command
14
+
15
+ `bun ~/.aiwcli/bin/resolve-run.ts .aiwcli/_core/skills/devin/scripts/launch-devin.ts [flags] <mode>`
16
+
17
+ **Modes:** `plan` | `--file <path>` | `<inline text...>`
18
+
19
+ **Flags:** `--model <name>`, `--context <id>`, `--prompt <text>`, `--no-watch`
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: handoff
3
+ description: Create handoff document to preserve session context for future sessions. USE WHEN handoff OR write a handoff OR create session summary OR document what we did OR end session with notes.
4
+ user-invocable: true
5
+ ---
6
+
7
+ # Handoff
8
+
9
+ Load and execute the handoff workflow from `.aiwcli/_core/skills/handoff-system/workflows/handoff.md`.
10
+
11
+ **Triggers:** "/handoff", "write a handoff", "create a session summary", "document what we did", "end session with notes"