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
@@ -5,10 +5,9 @@
5
5
  * Claude Code session transcripts across all projects.
6
6
  */
7
7
 
8
- import { homedir } from "node:os";
9
- import { join } from "node:path";
10
-
11
- import { getProjectRoot } from "../../../_shared/lib-ts/base/constants.js";
8
+ import { homedir } from "os";
9
+ import { join } from "path";
10
+ import { getProjectRoot } from "../../../_core/lib-ts/runtime/constants.js";
12
11
  import { loadConfig } from "../config.js";
13
12
 
14
13
  // ---------------------------------------------------------------------------
@@ -35,12 +34,12 @@ export const TOP_N_HEAP = 50;
35
34
  // ---------------------------------------------------------------------------
36
35
 
37
36
  export const WEIGHT = {
38
- summary: 3,
39
- segmentTopic: 3,
40
- keywords: 2,
41
- filesTouched: 2,
37
+ summary: 3.0,
38
+ segmentTopic: 3.0,
39
+ keywords: 2.0,
40
+ filesTouched: 2.0,
42
41
  commandsRun: 1.5,
43
- toolCalls: 1,
42
+ toolCalls: 1.0,
44
43
  } as const;
45
44
 
46
45
  // ---------------------------------------------------------------------------
@@ -142,7 +141,7 @@ export const HYDE_NUM_RESPONSES = _ccNativeConfig.numResponses ?? 5;
142
141
  export const HYDE_MAX_TOKENS = _ccNativeConfig.maxTokens ?? 200;
143
142
 
144
143
  /** Per-response generation timeout in milliseconds. Local models usually respond in 500-1500ms. */
145
- export const HYDE_TIMEOUT_MS = _ccNativeConfig.timeoutMs ?? 10_000;
144
+ export const HYDE_TIMEOUT_MS = _ccNativeConfig.timeoutMs ?? 10000;
146
145
 
147
146
  /** Fallback to direct query embedding if HyDE fails? true = graceful degradation (recommended). */
148
147
  export const HYDE_FALLBACK_TO_QUERY = _ccNativeConfig.fallbackToQuery ?? true;
@@ -7,9 +7,8 @@
7
7
 
8
8
  import { Database } from "bun:sqlite";
9
9
  import * as sqliteVec from "sqlite-vec";
10
-
11
- import { logDebug } from "./logger.js";
12
10
  import { RLM_VECTOR_DB_PATH, EMBED_DIMENSIONS, type VectorSearchResult } from "./types.js";
11
+ import { logDebug, logInfo } from "./logger.js";
13
12
 
14
13
  const HOOK_NAME = "rlm_vector";
15
14
 
@@ -155,7 +154,7 @@ export function deleteSessionChunks(
155
154
  `SELECT rowid FROM chunks WHERE session_id = ? AND project = ?`,
156
155
  ).all(sessionId, project);
157
156
 
158
- const rows = (Array.isArray(rawRows) ? rawRows : []).filter((row) => isRowidResult(row));
157
+ const rows = (Array.isArray(rawRows) ? rawRows : []).filter(isRowidResult);
159
158
 
160
159
  if (rows.length > 0) {
161
160
  const tx = db.transaction(() => {
@@ -238,7 +237,7 @@ export function searchKnn(
238
237
  }
239
238
 
240
239
  const rawRows = db.query(sql).all(...params);
241
- const rows = (Array.isArray(rawRows) ? rawRows : []).filter((row) => isSearchResultRow(row));
240
+ const rows = (Array.isArray(rawRows) ? rawRows : []).filter(isSearchResultRow);
242
241
 
243
242
  return rows.map((r) => ({
244
243
  chunk_id: r.rowid,
@@ -5,22 +5,18 @@
5
5
 
6
6
  import * as path from "node:path";
7
7
 
8
+ import { logInfo } from "../../_core/lib-ts/runtime/logger.js";
8
9
 
9
- import { aggregateAgents } from "./aggregate-agents.js";
10
- import { loadConfig, getDisplaySettings } from "./config.js";
11
- import { DEFAULT_REVIEW_ITERATIONS } from "./state.js";
12
10
  import type {
13
11
  AgentConfig,
14
- AgentReviewSettings,
15
- AgentSelectionConfig,
16
- LoadedSettings,
17
- ModelsConfig,
18
- PlanReviewSettings,
12
+ OrchestratorConfig,
19
13
  ProviderConfig,
14
+ ModelsConfig,
20
15
  } from "./types.js";
21
16
  import { DEFAULT_DISPLAY, DEFAULT_SANITIZATION } from "./types.js";
22
- import { logInfo } from "../../_shared/lib-ts/base/logger.js";
23
- import { CODEX_MODELS } from "../../_shared/lib-ts/base/models.js";
17
+ import { loadConfig, getDisplaySettings } from "./config.js";
18
+ import { aggregateAgents } from "./aggregate-agents.js";
19
+ import { DEFAULT_REVIEW_ITERATIONS } from "./state.js";
24
20
 
25
21
  const HOOK = "settings";
26
22
 
@@ -61,10 +57,10 @@ export const DEFAULT_AGENTS: Array<{ name: string; model: string; provider: stri
61
57
  { ...AGENT_DEFAULTS, name: "constraint-validator", focus: "constraint identification and satisfaction", categories: ALL_CATEGORIES },
62
58
  ];
63
59
 
64
- export const DEFAULT_ORCHESTRATOR = { enabled: true, model: CODEX_MODELS.codex, provider: "codex", timeout: 60 } as const;
60
+ export const DEFAULT_ORCHESTRATOR: { enabled: boolean; model: string; timeout: number } = { enabled: true, model: "opus", timeout: 60 };
65
61
  export const DEFAULT_AGENT_MODEL = "sonnet";
66
62
 
67
- export const DEFAULT_AGENT_SELECTION: AgentSelectionConfig = {
63
+ export const DEFAULT_AGENT_SELECTION: Record<string, unknown> = {
68
64
  simple: { min: 3, max: 3 },
69
65
  medium: { min: 5, max: 5 },
70
66
  high: { min: 7, max: 7 },
@@ -75,8 +71,8 @@ export const DEFAULT_COMPLEXITY_CATEGORIES = ["code", "infrastructure", "documen
75
71
 
76
72
  export const DEFAULT_MODELS_CONFIG: ModelsConfig = {
77
73
  providers: {
78
- claude: { enabled: false, models: ["sonnet"] },
79
- codex: { enabled: true, models: [CODEX_MODELS.codex] },
74
+ claude: { enabled: true, models: ["sonnet"] },
75
+ codex: { enabled: true, models: ["gpt-5.4"], reasoning_effort: "low" },
80
76
  },
81
77
  };
82
78
 
@@ -84,131 +80,58 @@ export const DEFAULT_MODELS_CONFIG: ModelsConfig = {
84
80
  // Settings Loading
85
81
  // ---------------------------------------------------------------------------
86
82
 
87
- function asRecord(value: unknown): Record<string, unknown> | undefined {
88
- return value && typeof value === "object" && !Array.isArray(value)
89
- ? value as Record<string, unknown>
90
- : undefined;
91
- }
92
-
93
- function asStringArray(value: unknown): string[] | undefined {
94
- if (!Array.isArray(value)) return undefined;
95
- const filtered = value.filter((item): item is string => typeof item === "string" && item.trim().length > 0);
96
- return filtered.length > 0 ? filtered : undefined;
97
- }
98
-
99
- export function loadSettings(projDir: string): LoadedSettings {
100
- const defaultPlan: PlanReviewSettings = {
101
- enabled: true,
102
- reviewers: {
103
- codex: { enabled: true, model: "", timeout: 120 },
104
- gemini: { enabled: false, model: "", timeout: 120 },
83
+ export function loadSettings(projDir: string): Record<string, unknown> {
84
+ const defaults: Record<string, unknown> = {
85
+ planReview: {
86
+ enabled: true,
87
+ reviewers: {
88
+ codex: { enabled: true, model: "", timeout: 120 },
89
+ gemini: { enabled: false, model: "", timeout: 120 },
90
+ },
91
+ display: { ...DEFAULT_DISPLAY },
92
+ },
93
+ agentReview: {
94
+ enabled: true,
95
+ orchestrator: { ...DEFAULT_ORCHESTRATOR },
96
+ timeout: 180,
97
+ highIssueThreshold: 3,
98
+ legacyMode: false,
99
+ display: { ...DEFAULT_DISPLAY },
100
+ agentSelection: { ...DEFAULT_AGENT_SELECTION },
101
+ agentDefaults: { model: DEFAULT_AGENT_MODEL },
102
+ complexityCategories: [...DEFAULT_COMPLEXITY_CATEGORIES],
103
+ sanitization: { ...DEFAULT_SANITIZATION },
105
104
  },
106
- display: { ...DEFAULT_DISPLAY },
107
- };
108
-
109
- const defaultAgent: AgentReviewSettings = {
110
- enabled: true,
111
- orchestrator: { ...DEFAULT_ORCHESTRATOR },
112
- timeout: 180,
113
- highIssueThreshold: 3,
114
- legacyMode: false,
115
- display: { ...DEFAULT_DISPLAY },
116
- agentSelection: { ...DEFAULT_AGENT_SELECTION },
117
- agentDefaults: { model: DEFAULT_AGENT_MODEL },
118
- complexityCategories: [...DEFAULT_COMPLEXITY_CATEGORIES],
119
- sanitization: { ...DEFAULT_SANITIZATION },
120
105
  };
121
106
 
122
107
  const config = loadConfig(projDir);
123
- if (!config || Object.keys(config).length === 0) {
124
- return { planReview: defaultPlan, agentReview: defaultAgent, models: {} };
125
- }
126
-
127
- // Cast raw config to access arbitrary keys from JSON
128
- const raw = config as Record<string, unknown>;
108
+ if (!config || Object.keys(config).length === 0) return { ...defaults, models: {} };
129
109
 
130
110
  // Merge planReview
131
- const planReviewRaw = (asRecord(raw.planReview) ?? {}) as Partial<PlanReviewSettings>;
132
- const mergedPlan: PlanReviewSettings = { ...defaultPlan, ...planReviewRaw };
133
- if (planReviewRaw.reviewers) {
134
- mergedPlan.reviewers = { ...defaultPlan.reviewers, ...planReviewRaw.reviewers };
111
+ const planReview = config.planReview ?? {};
112
+ const mergedPlan = { ...defaults.planReview, ...planReview };
113
+ if (planReview.reviewers) {
114
+ mergedPlan.reviewers = { ...defaults.planReview.reviewers, ...planReview.reviewers };
135
115
  }
136
116
  mergedPlan.display = getDisplaySettings(config, "planReview");
137
117
 
138
118
  // Merge agentReview
139
- const agentReviewRawRecord = asRecord(raw.agentReview);
140
- const agentReviewRaw = (agentReviewRawRecord ?? {}) as Partial<AgentReviewSettings>;
141
- const mergedAgent: AgentReviewSettings = { ...defaultAgent, ...agentReviewRaw };
119
+ const agentReview = (config as Record<string, unknown>).agentReview ?? {};
120
+ const mergedAgent = { ...defaults.agentReview, ...agentReview };
142
121
  if (!mergedAgent.orchestrator || typeof mergedAgent.orchestrator !== "object") {
143
122
  mergedAgent.orchestrator = { ...DEFAULT_ORCHESTRATOR };
144
123
  } else {
145
124
  mergedAgent.orchestrator = { ...DEFAULT_ORCHESTRATOR, ...mergedAgent.orchestrator };
146
125
  }
147
126
  mergedAgent.display = getDisplaySettings(config, "agentReview");
148
-
149
- const nestedAgentSelection = asRecord(agentReviewRawRecord?.agentSelection) as AgentSelectionConfig | undefined;
150
- const topLevelAgentSelection = asRecord(raw.agentSelection) as AgentSelectionConfig | undefined;
151
- mergedAgent.agentSelection = {
152
- ...DEFAULT_AGENT_SELECTION,
153
- ...nestedAgentSelection,
154
- ...topLevelAgentSelection,
155
- };
156
-
157
- const nestedAgentDefaults = asRecord(agentReviewRawRecord?.agentDefaults) as { model?: string } | undefined;
158
- const topLevelAgentDefaults = asRecord(raw.agentDefaults) as { model?: string } | undefined;
159
- mergedAgent.agentDefaults = {
160
- model: DEFAULT_AGENT_MODEL,
161
- ...nestedAgentDefaults,
162
- ...topLevelAgentDefaults,
163
- };
164
-
165
- const nestedComplexityCategories = asStringArray(agentReviewRawRecord?.complexityCategories);
166
- const topLevelComplexityCategories = asStringArray(raw.complexityCategories);
167
- mergedAgent.complexityCategories = topLevelComplexityCategories
168
- ?? nestedComplexityCategories
169
- ?? [...DEFAULT_COMPLEXITY_CATEGORIES];
170
-
171
- const nestedSanitization = asRecord(agentReviewRawRecord?.sanitization);
172
- const topLevelSanitization = asRecord(raw.sanitization);
173
- mergedAgent.sanitization = {
174
- ...DEFAULT_SANITIZATION,
175
- ...nestedSanitization,
176
- ...topLevelSanitization,
177
- };
178
-
179
- const nestedFallbackByComplexity = asRecord(agentReviewRawRecord?.fallbackByComplexity) as Record<string, number> | undefined;
180
- const topLevelFallbackByComplexity = asRecord(raw.fallbackByComplexity) as Record<string, number> | undefined;
181
- if (nestedFallbackByComplexity || topLevelFallbackByComplexity) {
182
- mergedAgent.fallbackByComplexity = {
183
- ...(nestedFallbackByComplexity ?? {}),
184
- ...(topLevelFallbackByComplexity ?? {}),
185
- };
186
- }
187
-
188
- const nestedMandatoryAgents = agentReviewRawRecord?.mandatoryAgents as AgentReviewSettings["mandatoryAgents"] | undefined;
189
- const topLevelMandatoryAgents = raw.mandatoryAgents as AgentReviewSettings["mandatoryAgents"] | undefined;
190
- if (nestedMandatoryAgents !== undefined || topLevelMandatoryAgents !== undefined) {
191
- mergedAgent.mandatoryAgents = topLevelMandatoryAgents ?? nestedMandatoryAgents;
192
- }
193
-
194
- const nestedPreflight = asRecord(agentReviewRawRecord?.preflight);
195
- const topLevelPreflight = asRecord(raw.preflight);
196
- if (nestedPreflight || topLevelPreflight) {
197
- mergedAgent.preflight = {
198
- ...(nestedPreflight ?? {}),
199
- ...(topLevelPreflight ?? {}),
200
- };
201
- }
202
-
203
- const nestedReviewIterations = asRecord(agentReviewRawRecord?.reviewIterations) as Record<string, number> | undefined;
204
- const topLevelReviewIterations = asRecord(raw.reviewIterations) as Record<string, number> | undefined;
205
- mergedAgent.reviewIterations = {
206
- ...DEFAULT_REVIEW_ITERATIONS,
207
- ...(nestedReviewIterations ?? {}),
208
- ...(topLevelReviewIterations ?? {}),
209
- };
210
-
211
- const modelsRaw = (raw.models ?? {}) as Record<string, unknown>;
127
+ const configRecord = config as Record<string, unknown>;
128
+ mergedAgent.agentSelection = { ...DEFAULT_AGENT_SELECTION, ...((configRecord.agentSelection as Record<string, unknown>) ?? {}) };
129
+ mergedAgent.agentDefaults = { model: DEFAULT_AGENT_MODEL, ...((configRecord.agentDefaults as Record<string, unknown>) ?? {}) };
130
+ mergedAgent.complexityCategories = (configRecord.complexityCategories as string[]) ?? [...DEFAULT_COMPLEXITY_CATEGORIES];
131
+ mergedAgent.sanitization = { ...DEFAULT_SANITIZATION, ...((configRecord.sanitization as Record<string, unknown>) ?? {}) };
132
+ mergedAgent.reviewIterations = { ...DEFAULT_REVIEW_ITERATIONS, ...agentReview.reviewIterations ?? {} };
133
+
134
+ const modelsRaw = (config as Record<string, unknown>).models ?? {};
212
135
  return { planReview: mergedPlan, agentReview: mergedAgent, models: modelsRaw };
213
136
  }
214
137
 
@@ -216,7 +139,7 @@ export function loadSettings(projDir: string): LoadedSettings {
216
139
  // Models Config
217
140
  // ---------------------------------------------------------------------------
218
141
 
219
- export function loadModelsConfig(settings: LoadedSettings): ModelsConfig {
142
+ export function loadModelsConfig(settings: Record<string, unknown>): ModelsConfig {
220
143
  const raw = settings.models as Record<string, unknown> | undefined;
221
144
  if (!raw?.providers || typeof raw.providers !== "object") {
222
145
  return DEFAULT_MODELS_CONFIG;
@@ -227,6 +150,7 @@ export function loadModelsConfig(settings: LoadedSettings): ModelsConfig {
227
150
  providers[name] = {
228
151
  enabled: c.enabled !== false,
229
152
  models: Array.isArray(c.models) ? (c.models as string[]).filter(Boolean) : [],
153
+ ...(typeof c.reasoning_effort === "string" ? { reasoning_effort: c.reasoning_effort } : {}),
230
154
  };
231
155
  }
232
156
  return { providers };
@@ -238,9 +162,9 @@ export function loadModelsConfig(settings: LoadedSettings): ModelsConfig {
238
162
 
239
163
  export function loadAgentLibrary(
240
164
  projDir: string,
241
- settings?: AgentReviewSettings,
165
+ settings?: Record<string, unknown>,
242
166
  ): AgentConfig[] {
243
- const agentsData = aggregateAgents(path.join(projDir, "_cc-native", "plan-review", "agents", "plan-review"));
167
+ const agentsData = aggregateAgents(path.join(projDir, "_cc-native", "agents", "plan-review"));
244
168
  const defaultModel = settings?.agentDefaults?.model ?? DEFAULT_AGENT_MODEL;
245
169
 
246
170
  if (!agentsData || agentsData.length === 0) {
@@ -6,12 +6,11 @@
6
6
 
7
7
  import * as fs from "node:fs";
8
8
  import * as path from "node:path";
9
-
9
+ import { atomicWrite } from "../../_core/lib-ts/runtime/atomic-write.js";
10
+ import { logInfo, logWarn, logError } from "../../_core/lib-ts/runtime/logger.js";
11
+ import { nowIso } from "../../_core/lib-ts/runtime/utils.js";
10
12
  import { validatePlanPath } from "./constants.js";
11
13
  import type { IterationState, IterationEntry } from "./types.js";
12
- import { atomicWrite } from "../../_shared/lib-ts/base/atomic-write.js";
13
- import { logInfo, logWarn, logError } from "../../_shared/lib-ts/base/logger.js";
14
- import { nowIso } from "../../_shared/lib-ts/base/utils.js";
15
14
 
16
15
  // ---------------------------------------------------------------------------
17
16
  // Constants
@@ -73,11 +72,11 @@ export function loadState(planPath: string): Record<string, unknown> | null {
73
72
  }
74
73
 
75
74
  return state;
76
- } catch (error: unknown) {
77
- if (error instanceof Error && error.message.includes("Invalid plan path")) {
78
- logError("state", `SECURITY: Invalid plan path: ${error}`);
75
+ } catch (e: unknown) {
76
+ if (e instanceof Error && e.message.includes("Invalid plan path")) {
77
+ logError("state", `SECURITY: Invalid plan path: ${e}`);
79
78
  } else {
80
- logError("state", `Failed to load state: ${error}`);
79
+ logError("state", `Failed to load state: ${e}`);
81
80
  }
82
81
  return null;
83
82
  }
@@ -110,11 +109,11 @@ export function saveStateToPlan(
110
109
  }
111
110
 
112
111
  return true;
113
- } catch (error: unknown) {
114
- if (error instanceof Error && error.message.includes("Invalid plan path")) {
115
- logError("state", `SECURITY: Invalid plan path: ${error}`);
112
+ } catch (e: unknown) {
113
+ if (e instanceof Error && e.message.includes("Invalid plan path")) {
114
+ logError("state", `SECURITY: Invalid plan path: ${e}`);
116
115
  } else {
117
- logError("state", String(error));
116
+ logError("state", String(e));
118
117
  }
119
118
  return false;
120
119
  }
@@ -132,12 +131,12 @@ export function deleteState(planPath: string): boolean {
132
131
  logInfo("state", `Deleted state file: ${stateFile}`);
133
132
  }
134
133
  return true;
135
- } catch (error: unknown) {
136
- if (error instanceof Error && error.message.includes("Invalid plan path")) {
137
- logError("state", `SECURITY: Invalid plan path in delete: ${error}`);
134
+ } catch (e: unknown) {
135
+ if (e instanceof Error && e.message.includes("Invalid plan path")) {
136
+ logError("state", `SECURITY: Invalid plan path in delete: ${e}`);
138
137
  return false;
139
138
  }
140
- logWarn("state", `Failed to delete state file: ${error}`);
139
+ logWarn("state", `Failed to delete state file: ${e}`);
141
140
  return false;
142
141
  }
143
142
  }
@@ -178,7 +177,6 @@ export function getIterationState(
178
177
  passStreaks: {},
179
178
  lastPlanHash: "",
180
179
  lastPlanPath: "",
181
- sessionId: "",
182
180
  };
183
181
  }
184
182
 
@@ -210,7 +208,7 @@ export function shouldContinueIterating(
210
208
  verdict: string,
211
209
  config?: Record<string, unknown>,
212
210
  ): boolean {
213
- const {current} = iteration;
211
+ const current = iteration.current;
214
212
  const maxIter = iteration.max;
215
213
 
216
214
  // At or past max iterations
@@ -254,8 +252,8 @@ export function loadIterationState(reviewsDir: string): IterationState | null {
254
252
  if (!fs.existsSync(iterationFile)) return null;
255
253
  try {
256
254
  return JSON.parse(fs.readFileSync(iterationFile, "utf-8")) as IterationState;
257
- } catch (error) {
258
- logError("state", `Failed to load iteration state: ${error}`);
255
+ } catch (e) {
256
+ logError("state", `Failed to load iteration state: ${e}`);
259
257
  return null;
260
258
  }
261
259
  }
@@ -270,8 +268,8 @@ export function saveIterationState(reviewsDir: string, state: IterationState): b
270
268
  const toWrite = { ...state, schema_version: "1.0.0" };
271
269
  fs.writeFileSync(iterationFile, JSON.stringify(toWrite, null, 2), "utf-8");
272
270
  return true;
273
- } catch (error) {
274
- logError("state", `Failed to save iteration state: ${error}`);
271
+ } catch (e) {
272
+ logError("state", `Failed to save iteration state: ${e}`);
275
273
  return false;
276
274
  }
277
275
  }
@@ -13,6 +13,6 @@
13
13
  "types": ["bun-types"],
14
14
  "skipLibCheck": true
15
15
  },
16
- "include": ["./**/*.ts", "../../_shared/lib-ts/**/*.ts"],
17
- "exclude": ["../../_shared/lib-ts/__tests__/**"]
16
+ "include": ["./**/*.ts", "../../_core/lib-ts/**/*.ts"],
17
+ "exclude": ["../../_core/lib-ts/__tests__/**"]
18
18
  }
@@ -5,11 +5,7 @@
5
5
  */
6
6
 
7
7
  // Re-export shared types used by cc-native consumers
8
- export type { ContextState, HookInput, HookOutput } from "../../_shared/lib-ts/types.js";
9
-
10
- // Import AgentConfig for local use and re-export
11
- import type { AgentConfig as _AgentConfig } from "../../_shared/lib-ts/types.js";
12
- export type AgentConfig = _AgentConfig;
8
+ export type { ContextState, HookInput, HookOutput } from "../../_core/lib-ts/types.js";
13
9
 
14
10
  // ---------------------------------------------------------------------------
15
11
  // Verdict & Decision Types
@@ -122,13 +118,22 @@ export interface ReviewDecisionResult {
122
118
  // Agent & Orchestrator Configuration
123
119
  // ---------------------------------------------------------------------------
124
120
 
125
- // AgentConfig re-exported from _shared/lib-ts/types.ts above
121
+ /** Configuration for a Claude Code review agent */
122
+ export interface AgentConfig {
123
+ name: string;
124
+ model: string;
125
+ provider: string; // e.g. "claude" | "codex" — assigned at runtime by assignModelsToAgents()
126
+ focus: string;
127
+ categories: string[];
128
+ description: string;
129
+ system_prompt: string; // Markdown body content for --system-prompt
130
+ reasoning_effort?: string; // e.g. "low" | "medium" | "high" — passed from ProviderConfig
131
+ }
126
132
 
127
133
  /** Configuration for the plan orchestrator */
128
134
  export interface OrchestratorConfig {
129
135
  enabled: boolean;
130
136
  model: string;
131
- provider?: string;
132
137
  timeout: number;
133
138
  }
134
139
 
@@ -136,6 +141,7 @@ export interface OrchestratorConfig {
136
141
  export interface ProviderConfig {
137
142
  enabled: boolean;
138
143
  models: string[];
144
+ reasoning_effort?: string; // e.g. "low" | "medium" | "high" — applied to all models in this provider
139
145
  }
140
146
 
141
147
  /** Model provider pool configuration */
@@ -143,66 +149,6 @@ export interface ModelsConfig {
143
149
  providers: Record<string, ProviderConfig>;
144
150
  }
145
151
 
146
- // ---------------------------------------------------------------------------
147
- // Settings Interfaces (typed output of loadSettings())
148
- // ---------------------------------------------------------------------------
149
-
150
- /** Agent selection count range for a single complexity tier */
151
- export interface AgentSelectionRange {
152
- min: number;
153
- max: number;
154
- }
155
-
156
- /** Agent selection configuration (per-tier ranges + fallback) */
157
- export interface AgentSelectionConfig {
158
- simple?: AgentSelectionRange;
159
- medium?: AgentSelectionRange;
160
- high?: AgentSelectionRange;
161
- fallbackCount?: number;
162
- }
163
-
164
- /** Preflight health-check configuration */
165
- export interface PreflightSettings {
166
- enabled?: boolean;
167
- timeoutMs?: number;
168
- }
169
-
170
- /** Plan review section of merged settings (the "planReview" key) */
171
- export interface PlanReviewSettings {
172
- enabled?: boolean;
173
- reviewers?: {
174
- codex?: { enabled?: boolean; model?: string; timeout?: number };
175
- gemini?: { enabled?: boolean; model?: string; timeout?: number };
176
- };
177
- display?: Partial<DisplaySettings>;
178
- }
179
-
180
- /** Agent review section of merged settings (the "agentReview" key) */
181
- export interface AgentReviewSettings {
182
- enabled?: boolean;
183
- timeout?: number;
184
- orchestrator?: OrchestratorConfig;
185
- legacyMode?: boolean;
186
- highIssueThreshold?: number;
187
- maxIssuesPerAgent?: number;
188
- mandatoryAgents?: string[] | Record<string, string[]>;
189
- agentSelection?: AgentSelectionConfig;
190
- agentDefaults?: { model?: string };
191
- complexityCategories?: string[];
192
- sanitization?: { maxSessionIdLength?: number; maxTitleLength?: number };
193
- reviewIterations?: Record<string, number>;
194
- display?: Partial<DisplaySettings>;
195
- preflight?: PreflightSettings;
196
- fallbackByComplexity?: Record<string, number>;
197
- }
198
-
199
- /** Top-level settings object returned by loadSettings() */
200
- export interface LoadedSettings {
201
- planReview: PlanReviewSettings;
202
- agentReview: AgentReviewSettings;
203
- models: Record<string, unknown>;
204
- }
205
-
206
152
  // ---------------------------------------------------------------------------
207
153
  // State Interfaces
208
154
  // ---------------------------------------------------------------------------
@@ -329,7 +275,7 @@ export interface Reviewer {
329
275
  // JSON Schemas (moved to reviewers/schemas.ts)
330
276
  // ---------------------------------------------------------------------------
331
277
  // Re-export for backwards compatibility
332
- export { AGENT_REVIEW_PROMPT_PREFIX, ORCHESTRATOR_SCHEMA, REVIEW_PROMPT_PREFIX, REVIEW_SCHEMA } from "../plan-review/lib/reviewers/schemas.js";
278
+ export { REVIEW_SCHEMA, ORCHESTRATOR_SCHEMA, REVIEW_PROMPT_PREFIX, AGENT_REVIEW_PROMPT_PREFIX } from "./reviewers/schemas.js";
333
279
 
334
280
  // ---------------------------------------------------------------------------
335
281
  // Display Defaults
@@ -383,24 +329,3 @@ export interface IterationAdvancement {
383
329
  updatedState: IterationState;
384
330
  newGraduates: string[];
385
331
  }
386
-
387
- // ---------------------------------------------------------------------------
388
- // Preflight Types
389
- // ---------------------------------------------------------------------------
390
-
391
- /** Result from a single provider+model preflight check */
392
- export interface PreflightCheckResult {
393
- provider: string;
394
- model: string;
395
- available: boolean;
396
- latencyMs: number;
397
- error?: string;
398
- }
399
-
400
- /** Aggregated preflight report across all provider+model combos */
401
- export interface PreflightReport {
402
- checks: PreflightCheckResult[];
403
- available: Map<string, Set<string>>; // provider → set of working models
404
- allFailed: boolean;
405
- totalMs: number;
406
- }