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,233 @@
1
+ /**
2
+ * Zod schemas mirroring types.ts for runtime validation at JSON.parse boundaries.
3
+ * All object schemas use .passthrough() to preserve method-specific extension fields.
4
+ * See types.ts for corresponding TypeScript interfaces.
5
+ */
6
+
7
+ import { z } from "zod";
8
+
9
+ // §1.1
10
+ export const ModeSchema = z.enum(["active", "has_staged_work", "idle"]);
11
+
12
+ // §1.2
13
+ export const GitStateSchema = z
14
+ .object({
15
+ branch: z.string().optional(),
16
+ last_commit_short: z.string().optional(),
17
+ uncommitted_files: z.array(z.string()).optional(),
18
+ })
19
+ .passthrough();
20
+
21
+ export const LastSessionSchema = z
22
+ .object({
23
+ context_remaining_pct: z.number().optional(),
24
+ context_warnings_fired: z.array(z.number()).optional(),
25
+ git_state: GitStateSchema.optional(),
26
+ save_reason: z.string().optional(),
27
+ saved_at: z.string().optional(),
28
+ session_id: z.string().optional(),
29
+ transcript_path: z.string().optional(),
30
+ })
31
+ .passthrough();
32
+
33
+ // §1.3
34
+ export const TaskSchema = z
35
+ .object({
36
+ active_form: z.string(),
37
+ completed_at: z.string().nullable(),
38
+ created_at: z.string(),
39
+ description: z.string(),
40
+ evidence: z.string(),
41
+ files_changed: z.array(z.string()),
42
+ id: z.string(),
43
+ session_id: z.string().optional(),
44
+ status: z.enum(["blocked", "completed", "in_progress", "pending"]),
45
+ subject: z.string(),
46
+ work_summary: z.string(),
47
+ })
48
+ .passthrough();
49
+
50
+ // §1.1 (continued)
51
+ export const ContextStateSchema = z
52
+ .object({
53
+ created_at: z.string(),
54
+ handoff_consumed: z.boolean().optional(), // deprecated
55
+ handoff_path: z.string().nullable().optional(),
56
+ id: z.string(),
57
+ last_active: z.string(),
58
+ last_session: LastSessionSchema.nullable().optional(),
59
+ method: z.string(),
60
+ mode: ModeSchema,
61
+ next_artifact_type: z.enum(["handoff", "plan"]).nullable().optional(),
62
+ plan_anchors: z.array(z.string()).optional(),
63
+ plan_consumed: z.boolean().optional(), // deprecated
64
+ plan_hash: z.string().nullable().optional(),
65
+ plan_hash_consumed: z.string().nullable().optional(),
66
+ plan_id: z.string().nullable().optional(),
67
+ plan_path: z.string().nullable().optional(),
68
+ plan_signature: z.string().nullable().optional(),
69
+ session_ids: z.array(z.string()).optional(),
70
+ status: z.enum(["active", "completed"]),
71
+ summary: z.string(),
72
+ tags: z.array(z.string()).optional(),
73
+ tasks: z.array(TaskSchema).optional(),
74
+ work_consumed: z.boolean().optional(),
75
+ })
76
+ .passthrough();
77
+
78
+ // §1.4
79
+ export const IndexEntrySchema = z
80
+ .object({
81
+ last_active: z.string(),
82
+ mode: z.string(),
83
+ summary: z.string(),
84
+ })
85
+ .passthrough();
86
+
87
+ export const IndexFileSchema = z
88
+ .object({
89
+ contexts: z.record(z.string(), IndexEntrySchema),
90
+ sessions: z.record(z.string(), z.string()),
91
+ updated_at: z.string(),
92
+ version: z.literal("3.0"),
93
+ })
94
+ .passthrough();
95
+
96
+ // §1.5
97
+ export const LogEntrySchema = z
98
+ .object({
99
+ component: z.string().optional(),
100
+ data: z.unknown().optional(),
101
+ hook: z.string(),
102
+ level: z.enum(["debug", "error", "info", "warn"]),
103
+ msg: z.string(),
104
+ tb: z.string().optional(),
105
+ ts: z.string(),
106
+ })
107
+ .passthrough();
108
+
109
+ // §1.6
110
+ export const HookInputSchema = z
111
+ .object({
112
+ context_window: z
113
+ .object({
114
+ context_window_size: z.number().optional(),
115
+ current_usage: z
116
+ .object({
117
+ cache_creation_input_tokens: z.number().optional(),
118
+ cache_read_input_tokens: z.number().optional(),
119
+ input_tokens: z.number().optional(),
120
+ output_tokens: z.number().optional(),
121
+ })
122
+ .passthrough()
123
+ .optional(),
124
+ })
125
+ .passthrough()
126
+ .optional(),
127
+ cwd: z.string().optional(),
128
+ hook_event_name: z.string(),
129
+ permission_mode: z.string().optional(),
130
+ session_id: z.string().optional(),
131
+ source: z.string().optional(),
132
+ tool_input: z.record(z.string(), z.unknown()).optional(),
133
+ tool_name: z.string().optional(),
134
+ tool_result: z.string().optional(),
135
+ transcript_path: z.string().optional(),
136
+ })
137
+ .passthrough();
138
+
139
+ // §1.7
140
+ export const HookOutputSchema = z
141
+ .object({
142
+ decision: z.literal("block").optional(),
143
+ hookSpecificOutput: z
144
+ .object({
145
+ additionalContext: z.string().optional(),
146
+ hookEventName: z.string().optional(),
147
+ permissionDecision: z.enum(["allow", "ask", "deny"]).optional(),
148
+ permissionDecisionReason: z.string().optional(),
149
+ updatedInput: z.record(z.string(), z.unknown()).optional(),
150
+ })
151
+ .passthrough()
152
+ .optional(),
153
+ reason: z.string().optional(),
154
+ })
155
+ .passthrough();
156
+
157
+ // §1.7b
158
+ export const PermissionRequestOutputSchema = z
159
+ .object({
160
+ decision: z.object({
161
+ behavior: z.enum(["allow", "deny"]),
162
+ message: z.string().optional(),
163
+ updatedInput: z.record(z.string(), z.unknown()).optional(),
164
+ updatedPermissions: z.record(z.string(), z.unknown()).optional(),
165
+ }),
166
+ })
167
+ .passthrough();
168
+
169
+ // §1.8
170
+ export const InferenceResultSchema = z
171
+ .object({
172
+ error: z.string().optional(),
173
+ latency_ms: z.number(),
174
+ output: z.string(),
175
+ success: z.boolean(),
176
+ })
177
+ .passthrough();
178
+
179
+ // §1.9
180
+ export const HandoffDocumentSchema = z
181
+ .object({
182
+ active_tasks: z.array(TaskSchema),
183
+ completed_tasks_this_session: z.array(z.object({ subject: z.string() }).passthrough()),
184
+ context_folder: z.string(),
185
+ context_id: z.string(),
186
+ context_summary: z.string(),
187
+ created_at: z.string(),
188
+ events_log_path: z.string(),
189
+ file_path: z.string().nullable(),
190
+ important_notes: z.array(z.string()),
191
+ next_steps: z.array(z.string()),
192
+ plan_path: z.string().nullable(),
193
+ reason: z.string(),
194
+ session_id: z.string(),
195
+ work_summary: z.string(),
196
+ })
197
+ .passthrough();
198
+
199
+ // §1.10
200
+ export const HandoffSectionsSchema = z
201
+ .object({
202
+ completedWork: z.string().nullable(),
203
+ context: z.string().nullable(),
204
+ deadEnds: z.string().nullable(),
205
+ decisions: z.string().nullable(),
206
+ index: z.string().nullable(),
207
+ pending: z.string().nullable(),
208
+ plan: z.string().nullable(),
209
+ })
210
+ .passthrough();
211
+
212
+ // §1.11
213
+ export const CaretCommandSchema = z
214
+ .object({
215
+ ends: z.array(z.string()),
216
+ new_context_desc: z.string().nullable(),
217
+ remaining_prompt: z.string(),
218
+ select: z.string().nullable(),
219
+ })
220
+ .passthrough();
221
+
222
+ // §1.13
223
+ export const AgentConfigSchema = z
224
+ .object({
225
+ categories: z.array(z.string()),
226
+ description: z.string(),
227
+ focus: z.string(),
228
+ model: z.string(),
229
+ name: z.string(),
230
+ provider: z.string(),
231
+ system_prompt: z.string(),
232
+ })
233
+ .passthrough();
@@ -32,13 +32,14 @@ export function getStatusIcon(status: string): string {
32
32
 
33
33
  // §13.3 — Task rendering
34
34
  export function renderTaskItem(
35
- task: Record<string, any> | Task,
35
+ task: Record<string, unknown> | Task,
36
36
  showDescription = true,
37
37
  maxDescriptionLength = 100,
38
38
  ): string {
39
- const status = (task as any).status ?? "pending";
40
- const subject = (task as any).subject ?? "";
41
- const description = (task as any).description ?? "";
39
+ const taskData = task as Partial<Task> & Record<string, unknown>;
40
+ const status = typeof taskData.status === "string" ? taskData.status : "pending";
41
+ const subject = typeof taskData.subject === "string" ? taskData.subject : "";
42
+ const description = typeof taskData.description === "string" ? taskData.description : "";
42
43
 
43
44
  const icon = getStatusIcon(status);
44
45
  const statusText = `[${status.toUpperCase()}]`;
@@ -57,7 +58,7 @@ export function renderTaskItem(
57
58
  }
58
59
 
59
60
  export function renderTaskList(
60
- tasks: Array<Record<string, any> | Task>,
61
+ tasks: Array<Record<string, unknown> | Task>,
61
62
  header = "Active Tasks",
62
63
  showDescription = true,
63
64
  ): string {
@@ -102,3 +103,4 @@ export const REASON_MAP: Record<string, string> = {
102
103
  export function formatReason(reason: string): string {
103
104
  return REASON_MAP[reason] ?? reason;
104
105
  }
106
+
@@ -29,7 +29,7 @@ What exactly to build or change
29
29
  - \`exact/path/to/reference.ext\` — Why relevant (e.g., "pattern to follow at lines 12-30")
30
30
 
31
31
  ## Steps
32
- Numbered steps with specific details. For each step, consider whether any of the skills available in your system-reminder messages would help the implementation agent — if so, reference the skill inline at the point of use.
32
+ Numbered steps with specific details. For each step, consider whether unknown of the skills available in your system-reminder messages would help the implementation agent — if so, reference the skill inline at the point of use.
33
33
 
34
34
  1. [Specific action with function names, patterns, or code snippets]
35
35
  2. [Enough detail for someone who never saw this conversation]
@@ -56,3 +56,4 @@ The implementation agent should document these so the next session inherits what
56
56
  - [ ] Are relevant skills referenced where they add value?
57
57
  - [ ] Are key decisions captured so they survive this session?`;
58
58
  }
59
+
@@ -7,7 +7,9 @@
7
7
  "noUncheckedIndexedAccess": true,
8
8
  "outDir": "dist",
9
9
  "rootDir": ".",
10
- "declaration": true
10
+ "declaration": true,
11
+ "types": ["node", "bun-types"],
12
+ "skipLibCheck": true
11
13
  },
12
14
  "include": ["./**/*.ts"]
13
15
  }
@@ -5,128 +5,128 @@
5
5
  */
6
6
 
7
7
  // §1.1
8
- export type Mode = "idle" | "has_staged_work" | "active";
8
+ export type Mode = "active" | "has_staged_work" | "idle";
9
9
 
10
10
  export interface ContextState {
11
- id: string;
12
- status: "active" | "completed";
13
- summary: string;
14
- method: string;
15
- tags: string[];
16
11
  created_at: string;
12
+ /** @deprecated Use work_consumed instead */
13
+ handoff_consumed?: boolean;
14
+ handoff_path: null | string;
15
+ id: string;
17
16
  last_active: string;
17
+ last_session: LastSession | null;
18
+ method: string;
18
19
  mode: Mode;
19
- plan_path: string | null;
20
- plan_hash: string | null;
21
- plan_signature: string | null;
22
- plan_id: string | null;
20
+ next_artifact_type: "handoff" | "plan" | null; // Explicit artifact type for has_staged_work mode
23
21
  plan_anchors: string[];
24
- plan_hash_consumed: string | null;
25
- handoff_path: string | null;
26
- // Unified lifecycle fields (v0.13.0+)
27
- work_consumed: boolean; // Replaces plan_consumed + handoff_consumed
28
- next_artifact_type: "plan" | "handoff" | null; // Explicit artifact type for has_staged_work mode
29
22
  // Deprecated fields (kept for migration)
30
23
  /** @deprecated Use work_consumed instead */
31
24
  plan_consumed?: boolean;
32
- /** @deprecated Use work_consumed instead */
33
- handoff_consumed?: boolean;
25
+ plan_hash: null | string;
26
+ plan_hash_consumed: null | string;
27
+ plan_id: null | string;
28
+ plan_path: null | string;
29
+ plan_signature: null | string;
34
30
  session_ids: string[];
35
- last_session: LastSession | null;
31
+ status: "active" | "completed";
32
+ summary: string;
33
+ tags: string[];
36
34
  tasks: Task[];
35
+ // Unified lifecycle fields (v0.13.0+)
36
+ work_consumed: boolean; // Replaces plan_consumed + handoff_consumed
37
37
  }
38
38
 
39
39
  // §1.2
40
40
  export interface GitState {
41
41
  branch?: string;
42
- uncommitted_files?: string[];
43
42
  last_commit_short?: string;
43
+ uncommitted_files?: string[];
44
44
  }
45
45
 
46
46
  export interface LastSession {
47
- session_id?: string;
48
- saved_at?: string;
49
- save_reason?: string;
50
- transcript_path?: string;
51
47
  context_remaining_pct?: number;
52
48
  context_warnings_fired?: number[];
53
49
  git_state?: GitState;
50
+ save_reason?: string;
51
+ saved_at?: string;
52
+ session_id?: string;
53
+ transcript_path?: string;
54
54
  }
55
55
 
56
56
  // §1.3
57
57
  export interface Task {
58
- id: string;
59
- subject: string;
60
- description: string;
61
58
  active_form: string;
62
- status: "pending" | "in_progress" | "completed" | "blocked";
59
+ completed_at: null | string;
63
60
  created_at: string;
64
- completed_at: string | null;
61
+ description: string;
65
62
  evidence: string;
66
- work_summary: string;
67
63
  files_changed: string[];
64
+ id: string;
68
65
  session_id?: string;
66
+ status: "blocked" | "completed" | "in_progress" | "pending";
67
+ subject: string;
68
+ work_summary: string;
69
69
  }
70
70
 
71
71
  // §1.4
72
72
  export interface IndexEntry {
73
- summary: string;
74
- mode: string;
75
73
  last_active: string;
74
+ mode: string;
75
+ summary: string;
76
76
  }
77
77
 
78
78
  export interface IndexFile {
79
- version: "3.0";
80
- updated_at: string;
81
- sessions: Record<string, string>;
82
79
  contexts: Record<string, IndexEntry>;
80
+ sessions: Record<string, string>;
81
+ updated_at: string;
82
+ version: "3.0";
83
83
  }
84
84
 
85
85
  // §1.5
86
86
  export interface LogEntry {
87
- ts: string;
88
- level: "debug" | "info" | "warn" | "error";
87
+ component?: string;
88
+ data?: unknown;
89
89
  hook: string;
90
+ level: "debug" | "error" | "info" | "warn";
90
91
  msg: string;
91
- component?: string;
92
- data?: any;
93
92
  tb?: string;
93
+ ts: string;
94
94
  }
95
95
 
96
96
  // §1.6
97
97
  export interface HookInput {
98
- hook_event_name: string;
99
- tool_name?: string;
100
- tool_input?: Record<string, any>;
101
- tool_result?: string;
102
- session_id?: string;
103
- cwd?: string;
104
- transcript_path?: string;
105
98
  context_window?: {
99
+ context_window_size?: number;
106
100
  current_usage?: {
101
+ cache_creation_input_tokens?: number;
107
102
  cache_read_input_tokens?: number;
108
103
  input_tokens?: number;
109
- cache_creation_input_tokens?: number;
110
104
  output_tokens?: number;
111
105
  };
112
- context_window_size?: number;
113
106
  };
107
+ cwd?: string;
108
+ hook_event_name: string;
114
109
  permission_mode?: string;
110
+ session_id?: string;
115
111
  source?: string;
112
+ tool_input?: Record<string, unknown>;
113
+ tool_name?: string;
114
+ tool_result?: string;
115
+ transcript_path?: string;
116
116
  }
117
117
 
118
118
  // §1.7 — Three hook output patterns (see hook-utils.ts for emit functions)
119
119
  export interface HookOutput {
120
+ // Pattern 2: Top-level decision (UserPromptSubmit, Stop, SubagentStop)
121
+ decision?: "block";
120
122
  // Pattern 1: hookSpecificOutput (PreToolUse, PostToolUse, UserPromptSubmit, etc.)
121
123
  hookSpecificOutput?: {
122
- hookEventName?: string;
123
124
  additionalContext?: string;
124
- permissionDecision?: "allow" | "deny" | "ask";
125
+ hookEventName?: string;
126
+ permissionDecision?: "allow" | "ask" | "deny";
125
127
  permissionDecisionReason?: string;
126
128
  updatedInput?: Record<string, unknown>;
127
129
  };
128
- // Pattern 2: Top-level decision (UserPromptSubmit, Stop, SubagentStop)
129
- decision?: "block";
130
130
  reason?: string;
131
131
  }
132
132
 
@@ -142,62 +142,63 @@ export interface PermissionRequestOutput {
142
142
 
143
143
  // §1.8
144
144
  export interface InferenceResult {
145
- success: boolean;
146
- output: string;
147
145
  error?: string;
148
146
  latency_ms: number;
147
+ output: string;
148
+ success: boolean;
149
149
  }
150
150
 
151
151
  // §1.9
152
152
  export interface HandoffDocument {
153
+ active_tasks: Task[];
154
+ completed_tasks_this_session: Array<{ subject: string }>;
155
+ context_folder: string;
153
156
  context_id: string;
154
157
  context_summary: string;
155
- session_id: string;
156
- reason: string;
157
158
  created_at: string;
158
- plan_path: string | null;
159
- context_folder: string;
160
159
  events_log_path: string;
161
- active_tasks: Task[];
162
- completed_tasks_this_session: Array<{ subject: string }>;
163
- work_summary: string;
164
- next_steps: string[];
160
+ file_path: null | string;
165
161
  important_notes: string[];
166
- file_path: string | null;
162
+ next_steps: string[];
163
+ plan_path: null | string;
164
+ reason: string;
165
+ session_id: string;
166
+ work_summary: string;
167
167
  }
168
168
 
169
169
  // §1.10
170
170
  export interface HandoffSections {
171
- index: string | null;
172
- deadEnds: string | null;
173
- pending: string | null;
174
- plan: string | null;
175
- decisions: string | null;
176
- completedWork: string | null;
177
- context: string | null;
171
+ completedWork: null | string;
172
+ context: null | string;
173
+ deadEnds: null | string;
174
+ decisions: null | string;
175
+ index: null | string;
176
+ pending: null | string;
177
+ plan: null | string;
178
178
  }
179
179
 
180
180
  // §1.11
181
181
  export interface CaretCommand {
182
182
  ends: string[];
183
- select: string | null;
184
- new_context_desc: string | null;
183
+ new_context_desc: null | string;
185
184
  remaining_prompt: string;
185
+ select: null | string;
186
186
  }
187
187
 
188
188
  // §1.12 — Preflight types (shared across hooks)
189
- // Re-exported from base/preflight.ts for convenience
190
- export type { PreflightCommandConfig, PreflightCheckResult } from "./base/preflight.js";
189
+ // Re-exported from runtime/preflight.ts for convenience
190
+ export type { PreflightCheckResult, PreflightCommandConfig } from "./runtime/preflight.js";
191
191
 
192
192
  // §1.13 — Agent configuration (shared across templates)
193
193
 
194
194
  /** Configuration for a CLI review agent */
195
195
  export interface AgentConfig {
196
- name: string;
197
- model: string;
198
- provider: string; // e.g. "claude" | "codex" — assigned at runtime by assignModelsToAgents()
199
- focus: string;
200
196
  categories: string[];
201
197
  description: string;
198
+ focus: string;
199
+ model: string;
200
+ name: string;
201
+ provider: string; // e.g. "claude" | "codex" — assigned at runtime by assignModelsToAgents()
202
202
  system_prompt: string; // Markdown body content for --system-prompt
203
203
  }
204
+
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * Cross-platform project root resolver for hook and status line commands.
4
+ *
5
+ * Finds the project root, sets cwd, then dynamically imports the target script
6
+ * in-process (no second bun spawn). stdin/stdout/stderr pass through naturally.
7
+ *
8
+ * Root detection strategy (fastest first):
9
+ * 1. Derive from this script's own location (O(1) — no I/O)
10
+ * 2. git rev-parse --show-toplevel (works from any subdirectory)
11
+ * 3. Walk up from cwd to find .aiwcli/ anchor (O(depth) — a few stat calls)
12
+ *
13
+ * Strategy 2 is critical when this script is installed globally at ~/.aiwcli/bin/
14
+ * (strategy 1 fails) and the cwd is a subdirectory that has its own .aiwcli/
15
+ * (strategy 3 finds the wrong root).
16
+ *
17
+ * Usage: bun .aiwcli/_core/scripts/resolve-run.ts .aiwcli/_core/hooks-ts/hook.ts
18
+ */
19
+ import { execSync } from "node:child_process";
20
+ import * as fs from "node:fs";
21
+ import path from "node:path";
22
+
23
+ /**
24
+ * Convert MSYS2/Git-Bash POSIX path to native Windows path.
25
+ * /c/Users/foo → C:/Users/foo
26
+ */
27
+ function fromMsysPosixPath(p: string): string {
28
+ if (process.platform !== "win32") return p;
29
+ const m = p.match(/^\/([a-zA-Z])\/(.*)/);
30
+ return m ? `${m[1]!.toUpperCase()}:/${m[2]!}` : p;
31
+ }
32
+
33
+ function findProjectRoot(): string {
34
+ // 1. Derive from script location: .aiwcli/_core/scripts/resolve-run.ts → 3 levels up
35
+ const derived = path.resolve(import.meta.dir, "..", "..", "..");
36
+ if (fs.existsSync(path.join(derived, ".aiwcli"))) return derived;
37
+
38
+ // 2. git rev-parse (works from any subdirectory, even when cwd has its own .aiwcli/)
39
+ try {
40
+ let root = execSync("git rev-parse --show-toplevel", {
41
+ encoding: "utf-8",
42
+ stdio: ["pipe", "pipe", "pipe"],
43
+ timeout: 2000,
44
+ }).trim();
45
+ root = fromMsysPosixPath(root);
46
+ if (root && fs.existsSync(path.join(root, ".aiwcli"))) return root;
47
+ } catch { /* not a git repo or git not available */ }
48
+
49
+ // 3. Walk up from cwd to find .aiwcli/ anchor
50
+ let dir = process.cwd();
51
+ while (true) {
52
+ if (fs.existsSync(path.join(dir, ".aiwcli"))) return dir;
53
+ const parent = path.dirname(dir);
54
+ if (parent === dir) break;
55
+ dir = parent;
56
+ }
57
+
58
+ return process.cwd(); // last resort
59
+ }
60
+
61
+ const target = process.argv[2];
62
+ if (!target) {
63
+ process.stderr.write("resolve-run: missing script path argument\n");
64
+ process.exit(1);
65
+ }
66
+
67
+ const root = findProjectRoot();
68
+ const fullPath = path.resolve(root, target);
69
+
70
+ if (!fs.existsSync(fullPath)) {
71
+ process.stderr.write(`resolve-run: script not found: ${fullPath}\n`);
72
+ process.exit(1);
73
+ }
74
+
75
+ // Set up environment before importing the hook
76
+ process.env.AIW_CALLER_CWD = process.cwd();
77
+
78
+ // Scope FORCE_COLOR to status line only — other hooks may emit structured
79
+ // output that should not contain ANSI escape codes.
80
+ if (fullPath.endsWith("status_line.ts")) {
81
+ process.env.FORCE_COLOR ??= "2";
82
+ }
83
+
84
+ // Strip the consumed target-script argument so the imported script sees only
85
+ // its own flags in process.argv.slice(2). Without this, the script path
86
+ // leaks into the args and can end up as literal prompt text sent to agents.
87
+ process.argv.splice(2, 1);
88
+
89
+ process.chdir(root);
90
+ await import(fullPath);
91
+
92
+
93
+
@@ -3,7 +3,7 @@
3
3
  * Resolve and print the active context ID.
4
4
  *
5
5
  * Usage:
6
- * bun .aiwcli/_shared/scripts/resolve_context.ts
6
+ * bun .aiwcli/_core/scripts/resolve_context.ts
7
7
  *
8
8
  * Prints the context ID to stdout. Exits 1 if no active context found.
9
9
  * Used by command templates (/handoff, /handoff-resume) to programmatically
@@ -11,9 +11,9 @@
11
11
  *
12
12
  * Requires CLAUDE_SESSION_ID environment variable (set by Claude Code).
13
13
  */
14
- import { getProjectRoot } from "../lib-ts/base/constants.js";
15
- import { eprint } from "../lib-ts/base/utils.js";
16
14
  import { getContextBySessionId } from "../lib-ts/context/context-store.js";
15
+ import { getProjectRoot } from "../lib-ts/runtime/constants.js";
16
+ import { eprint } from "../lib-ts/runtime/utils.js";
17
17
 
18
18
  const projectRoot = getProjectRoot(process.cwd());
19
19
  const sessionId = process.env.CLAUDE_SESSION_ID;