claudecode-omc 4.8.1 → 4.8.3

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 (667) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +3 -3
  3. package/README.de.md +60 -0
  4. package/README.es.md +60 -0
  5. package/README.fr.md +60 -0
  6. package/README.it.md +60 -0
  7. package/README.ja.md +60 -0
  8. package/README.ko.md +60 -0
  9. package/README.md +101 -16
  10. package/README.pt.md +60 -0
  11. package/README.ru.md +60 -0
  12. package/README.tr.md +60 -0
  13. package/README.vi.md +60 -0
  14. package/README.zh.md +60 -0
  15. package/agents/code-reviewer.md +107 -6
  16. package/agents/critic.md +212 -42
  17. package/agents/debugger.md +52 -4
  18. package/agents/document-specialist.md +39 -60
  19. package/agents/executor.md +29 -9
  20. package/agents/explore.md +3 -1
  21. package/agents/security-reviewer.md +57 -0
  22. package/agents/test-engineer.md +21 -0
  23. package/agents/verifier.md +2 -0
  24. package/agents/writer.md +2 -0
  25. package/bridge/cli.cjs +7412 -3577
  26. package/bridge/mcp-server.cjs +558 -43
  27. package/bridge/runtime-cli.cjs +3034 -1801
  28. package/bridge/team-bridge.cjs +25 -1
  29. package/bridge/team-mcp.cjs +257 -88
  30. package/bridge/team.js +5226 -413
  31. package/dist/__tests__/agent-boundary-guidance.test.d.ts +2 -0
  32. package/dist/__tests__/agent-boundary-guidance.test.d.ts.map +1 -0
  33. package/dist/__tests__/agent-boundary-guidance.test.js +48 -0
  34. package/dist/__tests__/agent-boundary-guidance.test.js.map +1 -0
  35. package/dist/__tests__/agent-registry.test.js +48 -11
  36. package/dist/__tests__/agent-registry.test.js.map +1 -1
  37. package/dist/__tests__/auto-slash-aliases.test.js +25 -0
  38. package/dist/__tests__/auto-slash-aliases.test.js.map +1 -1
  39. package/dist/__tests__/bedrock-model-routing.test.d.ts +21 -0
  40. package/dist/__tests__/bedrock-model-routing.test.d.ts.map +1 -0
  41. package/dist/__tests__/bedrock-model-routing.test.js +397 -0
  42. package/dist/__tests__/bedrock-model-routing.test.js.map +1 -0
  43. package/dist/__tests__/cleanup-validation.test.js +7 -3
  44. package/dist/__tests__/cleanup-validation.test.js.map +1 -1
  45. package/dist/__tests__/cli-win32-warning.test.js +15 -2
  46. package/dist/__tests__/cli-win32-warning.test.js.map +1 -1
  47. package/dist/__tests__/consolidation-contracts.test.js +28 -3
  48. package/dist/__tests__/consolidation-contracts.test.js.map +1 -1
  49. package/dist/__tests__/context-guard-stop.test.d.ts +2 -0
  50. package/dist/__tests__/context-guard-stop.test.d.ts.map +1 -0
  51. package/dist/__tests__/context-guard-stop.test.js +58 -0
  52. package/dist/__tests__/context-guard-stop.test.js.map +1 -0
  53. package/dist/__tests__/delegation-enforcer.test.js +76 -11
  54. package/dist/__tests__/delegation-enforcer.test.js.map +1 -1
  55. package/dist/__tests__/doctor-conflicts.test.js +62 -1
  56. package/dist/__tests__/doctor-conflicts.test.js.map +1 -1
  57. package/dist/__tests__/hooks.test.js +165 -4
  58. package/dist/__tests__/hooks.test.js.map +1 -1
  59. package/dist/__tests__/hud/defaults.test.js +4 -0
  60. package/dist/__tests__/hud/defaults.test.js.map +1 -1
  61. package/dist/__tests__/hud/limits-error.test.js +2 -4
  62. package/dist/__tests__/hud/limits-error.test.js.map +1 -1
  63. package/dist/__tests__/hud/mission-board-state.test.d.ts +2 -0
  64. package/dist/__tests__/hud/mission-board-state.test.d.ts.map +1 -0
  65. package/dist/__tests__/hud/mission-board-state.test.js +170 -0
  66. package/dist/__tests__/hud/mission-board-state.test.js.map +1 -0
  67. package/dist/__tests__/hud/mission-board.test.d.ts +2 -0
  68. package/dist/__tests__/hud/mission-board.test.d.ts.map +1 -0
  69. package/dist/__tests__/hud/mission-board.test.js +143 -0
  70. package/dist/__tests__/hud/mission-board.test.js.map +1 -0
  71. package/dist/__tests__/hud/rate-limits-error.test.js +13 -0
  72. package/dist/__tests__/hud/rate-limits-error.test.js.map +1 -1
  73. package/dist/__tests__/hud/render-rate-limits-priority.test.d.ts +8 -0
  74. package/dist/__tests__/hud/render-rate-limits-priority.test.d.ts.map +1 -0
  75. package/dist/__tests__/hud/render-rate-limits-priority.test.js +145 -0
  76. package/dist/__tests__/hud/render-rate-limits-priority.test.js.map +1 -0
  77. package/dist/__tests__/hud/render.test.js +22 -0
  78. package/dist/__tests__/hud/render.test.js.map +1 -1
  79. package/dist/__tests__/hud/stale-indicator.test.d.ts +9 -0
  80. package/dist/__tests__/hud/stale-indicator.test.d.ts.map +1 -0
  81. package/dist/__tests__/hud/stale-indicator.test.js +81 -0
  82. package/dist/__tests__/hud/stale-indicator.test.js.map +1 -0
  83. package/dist/__tests__/hud/state.test.js +30 -0
  84. package/dist/__tests__/hud/state.test.js.map +1 -1
  85. package/dist/__tests__/hud/usage-api-lock.test.d.ts +2 -0
  86. package/dist/__tests__/hud/usage-api-lock.test.d.ts.map +1 -0
  87. package/dist/__tests__/hud/usage-api-lock.test.js +245 -0
  88. package/dist/__tests__/hud/usage-api-lock.test.js.map +1 -0
  89. package/dist/__tests__/hud/usage-api-stale.test.d.ts +9 -0
  90. package/dist/__tests__/hud/usage-api-stale.test.d.ts.map +1 -0
  91. package/dist/__tests__/hud/usage-api-stale.test.js +297 -0
  92. package/dist/__tests__/hud/usage-api-stale.test.js.map +1 -0
  93. package/dist/__tests__/hud/usage-api.test.js +223 -0
  94. package/dist/__tests__/hud/usage-api.test.js.map +1 -1
  95. package/dist/__tests__/hud/watch-mode-init.test.d.ts +2 -0
  96. package/dist/__tests__/hud/watch-mode-init.test.d.ts.map +1 -0
  97. package/dist/__tests__/hud/watch-mode-init.test.js +133 -0
  98. package/dist/__tests__/hud/watch-mode-init.test.js.map +1 -0
  99. package/dist/__tests__/hud-agents.test.js +12 -10
  100. package/dist/__tests__/hud-agents.test.js.map +1 -1
  101. package/dist/__tests__/hud-build-guidance.test.js +6 -2
  102. package/dist/__tests__/hud-build-guidance.test.js.map +1 -1
  103. package/dist/__tests__/hud-marketplace-resolution.test.d.ts +2 -0
  104. package/dist/__tests__/hud-marketplace-resolution.test.d.ts.map +1 -0
  105. package/dist/__tests__/hud-marketplace-resolution.test.js +53 -0
  106. package/dist/__tests__/hud-marketplace-resolution.test.js.map +1 -0
  107. package/dist/__tests__/installer-hud-skip.test.js +12 -0
  108. package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
  109. package/dist/__tests__/installer-plugin-agents.test.d.ts +2 -0
  110. package/dist/__tests__/installer-plugin-agents.test.d.ts.map +1 -0
  111. package/dist/__tests__/installer-plugin-agents.test.js +111 -0
  112. package/dist/__tests__/installer-plugin-agents.test.js.map +1 -0
  113. package/dist/__tests__/installer-version-guard.test.d.ts +2 -0
  114. package/dist/__tests__/installer-version-guard.test.d.ts.map +1 -0
  115. package/dist/__tests__/installer-version-guard.test.js +75 -0
  116. package/dist/__tests__/installer-version-guard.test.js.map +1 -0
  117. package/dist/__tests__/installer.test.js +58 -4
  118. package/dist/__tests__/installer.test.js.map +1 -1
  119. package/dist/__tests__/omc-tools-server.test.js +8 -5
  120. package/dist/__tests__/omc-tools-server.test.js.map +1 -1
  121. package/dist/__tests__/pre-tool-enforcer.test.js +38 -0
  122. package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -1
  123. package/dist/__tests__/prompt-injection.test.js +3 -3
  124. package/dist/__tests__/prompt-injection.test.js.map +1 -1
  125. package/dist/__tests__/ralph-prd-mandatory.test.js +53 -2
  126. package/dist/__tests__/ralph-prd-mandatory.test.js.map +1 -1
  127. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js +42 -0
  128. package/dist/__tests__/rate-limit-wait/rate-limit-monitor.test.js.map +1 -1
  129. package/dist/__tests__/rate-limit-wait/tmux-detector.test.js +1 -1
  130. package/dist/__tests__/session-history-search.test.d.ts +2 -0
  131. package/dist/__tests__/session-history-search.test.d.ts.map +1 -0
  132. package/dist/__tests__/session-history-search.test.js +115 -0
  133. package/dist/__tests__/session-history-search.test.js.map +1 -0
  134. package/dist/__tests__/session-start-script-context.test.d.ts +2 -0
  135. package/dist/__tests__/session-start-script-context.test.d.ts.map +1 -0
  136. package/dist/__tests__/session-start-script-context.test.js +49 -0
  137. package/dist/__tests__/session-start-script-context.test.js.map +1 -0
  138. package/dist/__tests__/skills.test.js +71 -24
  139. package/dist/__tests__/skills.test.js.map +1 -1
  140. package/dist/__tests__/standalone-server.test.js +8 -4
  141. package/dist/__tests__/standalone-server.test.js.map +1 -1
  142. package/dist/__tests__/tier0-docs-consistency.test.js +10 -2
  143. package/dist/__tests__/tier0-docs-consistency.test.js.map +1 -1
  144. package/dist/agents/definitions.d.ts +5 -15
  145. package/dist/agents/definitions.d.ts.map +1 -1
  146. package/dist/agents/definitions.js +48 -49
  147. package/dist/agents/definitions.js.map +1 -1
  148. package/dist/agents/document-specialist.d.ts +1 -1
  149. package/dist/agents/document-specialist.d.ts.map +1 -1
  150. package/dist/agents/document-specialist.js +46 -21
  151. package/dist/agents/document-specialist.js.map +1 -1
  152. package/dist/agents/explore.d.ts.map +1 -1
  153. package/dist/agents/explore.js +3 -2
  154. package/dist/agents/explore.js.map +1 -1
  155. package/dist/agents/index.d.ts +2 -4
  156. package/dist/agents/index.d.ts.map +1 -1
  157. package/dist/agents/index.js +3 -6
  158. package/dist/agents/index.js.map +1 -1
  159. package/dist/agents/types.d.ts +2 -2
  160. package/dist/agents/types.d.ts.map +1 -1
  161. package/dist/cli/__tests__/ask.test.js +255 -8
  162. package/dist/cli/__tests__/ask.test.js.map +1 -1
  163. package/dist/cli/__tests__/session-search-help.test.d.ts +2 -0
  164. package/dist/cli/__tests__/session-search-help.test.d.ts.map +1 -0
  165. package/dist/cli/__tests__/session-search-help.test.js +13 -0
  166. package/dist/cli/__tests__/session-search-help.test.js.map +1 -0
  167. package/dist/cli/__tests__/session-search.test.d.ts +2 -0
  168. package/dist/cli/__tests__/session-search.test.d.ts.map +1 -0
  169. package/dist/cli/__tests__/session-search.test.js +72 -0
  170. package/dist/cli/__tests__/session-search.test.js.map +1 -0
  171. package/dist/cli/__tests__/team-help.test.js +1 -1
  172. package/dist/cli/__tests__/team-help.test.js.map +1 -1
  173. package/dist/cli/__tests__/team.test.js +256 -4
  174. package/dist/cli/__tests__/team.test.js.map +1 -1
  175. package/dist/cli/commands/__tests__/team.test.js +52 -2
  176. package/dist/cli/commands/__tests__/team.test.js.map +1 -1
  177. package/dist/cli/commands/doctor-conflicts.d.ts.map +1 -1
  178. package/dist/cli/commands/doctor-conflicts.js +15 -1
  179. package/dist/cli/commands/doctor-conflicts.js.map +1 -1
  180. package/dist/cli/commands/session-search.d.ts +18 -0
  181. package/dist/cli/commands/session-search.d.ts.map +1 -0
  182. package/dist/cli/commands/session-search.js +47 -0
  183. package/dist/cli/commands/session-search.js.map +1 -0
  184. package/dist/cli/commands/team.d.ts +11 -0
  185. package/dist/cli/commands/team.d.ts.map +1 -1
  186. package/dist/cli/commands/team.js +94 -24
  187. package/dist/cli/commands/team.js.map +1 -1
  188. package/dist/cli/commands/wait.d.ts.map +1 -1
  189. package/dist/cli/commands/wait.js +12 -1
  190. package/dist/cli/commands/wait.js.map +1 -1
  191. package/dist/cli/index.js +70 -2
  192. package/dist/cli/index.js.map +1 -1
  193. package/dist/cli/team.d.ts +1 -0
  194. package/dist/cli/team.d.ts.map +1 -1
  195. package/dist/cli/team.js +100 -214
  196. package/dist/cli/team.js.map +1 -1
  197. package/dist/cli/win32-warning.d.ts +2 -1
  198. package/dist/cli/win32-warning.d.ts.map +1 -1
  199. package/dist/cli/win32-warning.js +20 -6
  200. package/dist/cli/win32-warning.js.map +1 -1
  201. package/dist/config/__tests__/loader.test.d.ts +2 -0
  202. package/dist/config/__tests__/loader.test.d.ts.map +1 -0
  203. package/dist/config/__tests__/loader.test.js +145 -0
  204. package/dist/config/__tests__/loader.test.js.map +1 -0
  205. package/dist/config/__tests__/models.test.d.ts +2 -0
  206. package/dist/config/__tests__/models.test.d.ts.map +1 -0
  207. package/dist/config/__tests__/models.test.js +147 -0
  208. package/dist/config/__tests__/models.test.js.map +1 -0
  209. package/dist/config/__tests__/test-helpers.d.ts +3 -0
  210. package/dist/config/__tests__/test-helpers.d.ts.map +1 -0
  211. package/dist/config/__tests__/test-helpers.js +19 -0
  212. package/dist/config/__tests__/test-helpers.js.map +1 -0
  213. package/dist/config/loader.d.ts +3 -1
  214. package/dist/config/loader.d.ts.map +1 -1
  215. package/dist/config/loader.js +140 -126
  216. package/dist/config/loader.js.map +1 -1
  217. package/dist/config/models.d.ts +29 -10
  218. package/dist/config/models.d.ts.map +1 -1
  219. package/dist/config/models.js +96 -10
  220. package/dist/config/models.js.map +1 -1
  221. package/dist/features/builtin-skills/skills.d.ts.map +1 -1
  222. package/dist/features/builtin-skills/skills.js +8 -1
  223. package/dist/features/builtin-skills/skills.js.map +1 -1
  224. package/dist/features/builtin-skills/types.d.ts +3 -0
  225. package/dist/features/builtin-skills/types.d.ts.map +1 -1
  226. package/dist/features/delegation-enforcer.d.ts +5 -12
  227. package/dist/features/delegation-enforcer.d.ts.map +1 -1
  228. package/dist/features/delegation-enforcer.js +48 -54
  229. package/dist/features/delegation-enforcer.js.map +1 -1
  230. package/dist/features/delegation-routing/__tests__/resolver.test.js +4 -3
  231. package/dist/features/delegation-routing/__tests__/resolver.test.js.map +1 -1
  232. package/dist/features/delegation-routing/types.d.ts.map +1 -1
  233. package/dist/features/delegation-routing/types.js +7 -4
  234. package/dist/features/delegation-routing/types.js.map +1 -1
  235. package/dist/features/index.d.ts +1 -0
  236. package/dist/features/index.d.ts.map +1 -1
  237. package/dist/features/index.js +2 -0
  238. package/dist/features/index.js.map +1 -1
  239. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
  240. package/dist/features/rate-limit-wait/daemon.js +8 -5
  241. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  242. package/dist/features/rate-limit-wait/index.d.ts +1 -1
  243. package/dist/features/rate-limit-wait/index.d.ts.map +1 -1
  244. package/dist/features/rate-limit-wait/index.js +1 -1
  245. package/dist/features/rate-limit-wait/index.js.map +1 -1
  246. package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts +9 -0
  247. package/dist/features/rate-limit-wait/rate-limit-monitor.d.ts.map +1 -1
  248. package/dist/features/rate-limit-wait/rate-limit-monitor.js +38 -0
  249. package/dist/features/rate-limit-wait/rate-limit-monitor.js.map +1 -1
  250. package/dist/features/rate-limit-wait/tmux-detector.d.ts +2 -1
  251. package/dist/features/rate-limit-wait/tmux-detector.d.ts.map +1 -1
  252. package/dist/features/rate-limit-wait/tmux-detector.js +8 -9
  253. package/dist/features/rate-limit-wait/tmux-detector.js.map +1 -1
  254. package/dist/features/rate-limit-wait/types.d.ts +11 -0
  255. package/dist/features/rate-limit-wait/types.d.ts.map +1 -1
  256. package/dist/features/session-history-search/index.d.ts +6 -0
  257. package/dist/features/session-history-search/index.d.ts.map +1 -0
  258. package/dist/features/session-history-search/index.js +480 -0
  259. package/dist/features/session-history-search/index.js.map +1 -0
  260. package/dist/features/session-history-search/types.d.ts +36 -0
  261. package/dist/features/session-history-search/types.d.ts.map +1 -0
  262. package/dist/features/session-history-search/types.js +2 -0
  263. package/dist/features/session-history-search/types.js.map +1 -0
  264. package/dist/hooks/__tests__/background-process-guard.test.js +101 -5
  265. package/dist/hooks/__tests__/background-process-guard.test.js.map +1 -1
  266. package/dist/hooks/__tests__/bridge-openclaw.test.js +16 -5
  267. package/dist/hooks/__tests__/bridge-openclaw.test.js.map +1 -1
  268. package/dist/hooks/__tests__/bridge-routing.test.js +48 -1
  269. package/dist/hooks/__tests__/bridge-routing.test.js.map +1 -1
  270. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
  271. package/dist/hooks/auto-slash-command/executor.js +9 -1
  272. package/dist/hooks/auto-slash-command/executor.js.map +1 -1
  273. package/dist/hooks/auto-slash-command/types.d.ts +2 -0
  274. package/dist/hooks/auto-slash-command/types.d.ts.map +1 -1
  275. package/dist/hooks/auto-slash-command/types.js +0 -7
  276. package/dist/hooks/auto-slash-command/types.js.map +1 -1
  277. package/dist/hooks/autopilot/adapters/execution-adapter.js +3 -3
  278. package/dist/hooks/autopilot/prompts.js +1 -1
  279. package/dist/hooks/bridge-normalize.d.ts.map +1 -1
  280. package/dist/hooks/bridge-normalize.js +2 -0
  281. package/dist/hooks/bridge-normalize.js.map +1 -1
  282. package/dist/hooks/bridge.d.ts.map +1 -1
  283. package/dist/hooks/bridge.js +248 -39
  284. package/dist/hooks/bridge.js.map +1 -1
  285. package/dist/hooks/keyword-detector/__tests__/index.test.js +41 -0
  286. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
  287. package/dist/hooks/keyword-detector/index.d.ts +1 -1
  288. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  289. package/dist/hooks/keyword-detector/index.js +3 -1
  290. package/dist/hooks/keyword-detector/index.js.map +1 -1
  291. package/dist/hooks/permission-handler/index.d.ts +8 -0
  292. package/dist/hooks/permission-handler/index.d.ts.map +1 -1
  293. package/dist/hooks/permission-handler/index.js +76 -0
  294. package/dist/hooks/permission-handler/index.js.map +1 -1
  295. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.d.ts +2 -0
  296. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.d.ts.map +1 -0
  297. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js +90 -0
  298. package/dist/hooks/persistent-mode/__tests__/ralph-verification-flow.test.js.map +1 -0
  299. package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.d.ts +2 -0
  300. package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.d.ts.map +1 -0
  301. package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.js +535 -0
  302. package/dist/hooks/persistent-mode/__tests__/team-ralplan-stop.test.js.map +1 -0
  303. package/dist/hooks/persistent-mode/index.d.ts +1 -1
  304. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  305. package/dist/hooks/persistent-mode/index.js +296 -21
  306. package/dist/hooks/persistent-mode/index.js.map +1 -1
  307. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js +156 -0
  308. package/dist/hooks/persistent-mode/stop-hook-blocking.test.js.map +1 -1
  309. package/dist/hooks/project-memory/__tests__/integration.test.js +27 -2
  310. package/dist/hooks/project-memory/__tests__/integration.test.js.map +1 -1
  311. package/dist/hooks/project-memory/__tests__/storage.test.js +37 -0
  312. package/dist/hooks/project-memory/__tests__/storage.test.js.map +1 -1
  313. package/dist/hooks/project-memory/storage.d.ts +1 -1
  314. package/dist/hooks/project-memory/storage.d.ts.map +1 -1
  315. package/dist/hooks/project-memory/storage.js +5 -4
  316. package/dist/hooks/project-memory/storage.js.map +1 -1
  317. package/dist/hooks/ralph/index.d.ts +1 -1
  318. package/dist/hooks/ralph/index.d.ts.map +1 -1
  319. package/dist/hooks/ralph/index.js +1 -1
  320. package/dist/hooks/ralph/index.js.map +1 -1
  321. package/dist/hooks/ralph/loop.d.ts +18 -0
  322. package/dist/hooks/ralph/loop.d.ts.map +1 -1
  323. package/dist/hooks/ralph/loop.js +31 -0
  324. package/dist/hooks/ralph/loop.js.map +1 -1
  325. package/dist/hooks/ralph/verifier.d.ts +4 -1
  326. package/dist/hooks/ralph/verifier.d.ts.map +1 -1
  327. package/dist/hooks/ralph/verifier.js +56 -21
  328. package/dist/hooks/ralph/verifier.js.map +1 -1
  329. package/dist/hooks/recovery/__tests__/storage.test.d.ts +2 -0
  330. package/dist/hooks/recovery/__tests__/storage.test.d.ts.map +1 -0
  331. package/dist/hooks/recovery/__tests__/storage.test.js +65 -0
  332. package/dist/hooks/recovery/__tests__/storage.test.js.map +1 -0
  333. package/dist/hooks/recovery/storage.d.ts +5 -1
  334. package/dist/hooks/recovery/storage.d.ts.map +1 -1
  335. package/dist/hooks/recovery/storage.js +7 -29
  336. package/dist/hooks/recovery/storage.js.map +1 -1
  337. package/dist/hooks/recovery/types.d.ts +1 -1
  338. package/dist/hooks/recovery/types.d.ts.map +1 -1
  339. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.d.ts +2 -0
  340. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.d.ts.map +1 -0
  341. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js +140 -0
  342. package/dist/hooks/session-end/__tests__/duplicate-notifications.test.js.map +1 -0
  343. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.d.ts +2 -0
  344. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.d.ts.map +1 -0
  345. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js +122 -0
  346. package/dist/hooks/session-end/__tests__/mode-state-cleanup.test.js.map +1 -0
  347. package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js +38 -12
  348. package/dist/hooks/session-end/__tests__/openclaw-session-end.test.js.map +1 -1
  349. package/dist/hooks/session-end/callbacks.d.ts +4 -1
  350. package/dist/hooks/session-end/callbacks.d.ts.map +1 -1
  351. package/dist/hooks/session-end/callbacks.js +5 -4
  352. package/dist/hooks/session-end/callbacks.js.map +1 -1
  353. package/dist/hooks/session-end/index.d.ts.map +1 -1
  354. package/dist/hooks/session-end/index.js +162 -36
  355. package/dist/hooks/session-end/index.js.map +1 -1
  356. package/dist/hooks/skill-state/__tests__/skill-state.test.js +35 -33
  357. package/dist/hooks/skill-state/__tests__/skill-state.test.js.map +1 -1
  358. package/dist/hooks/skill-state/index.d.ts +3 -3
  359. package/dist/hooks/skill-state/index.d.ts.map +1 -1
  360. package/dist/hooks/skill-state/index.js +7 -11
  361. package/dist/hooks/skill-state/index.js.map +1 -1
  362. package/dist/hooks/subagent-tracker/index.d.ts.map +1 -1
  363. package/dist/hooks/subagent-tracker/index.js +22 -0
  364. package/dist/hooks/subagent-tracker/index.js.map +1 -1
  365. package/dist/hooks/think-mode/__tests__/index.test.js +20 -20
  366. package/dist/hooks/think-mode/__tests__/index.test.js.map +1 -1
  367. package/dist/hooks/think-mode/switcher.d.ts.map +1 -1
  368. package/dist/hooks/think-mode/switcher.js +13 -10
  369. package/dist/hooks/think-mode/switcher.js.map +1 -1
  370. package/dist/hooks/thinking-block-validator/__tests__/index.test.d.ts +2 -0
  371. package/dist/hooks/thinking-block-validator/__tests__/index.test.d.ts.map +1 -0
  372. package/dist/hooks/thinking-block-validator/__tests__/index.test.js +56 -0
  373. package/dist/hooks/thinking-block-validator/__tests__/index.test.js.map +1 -0
  374. package/dist/hooks/thinking-block-validator/index.d.ts.map +1 -1
  375. package/dist/hooks/thinking-block-validator/index.js +7 -6
  376. package/dist/hooks/thinking-block-validator/index.js.map +1 -1
  377. package/dist/hooks/todo-continuation/index.d.ts +6 -0
  378. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  379. package/dist/hooks/todo-continuation/index.js +14 -5
  380. package/dist/hooks/todo-continuation/index.js.map +1 -1
  381. package/dist/hud/elements/agents.d.ts.map +1 -1
  382. package/dist/hud/elements/agents.js +8 -14
  383. package/dist/hud/elements/agents.js.map +1 -1
  384. package/dist/hud/elements/index.d.ts +1 -0
  385. package/dist/hud/elements/index.d.ts.map +1 -1
  386. package/dist/hud/elements/index.js +1 -0
  387. package/dist/hud/elements/index.js.map +1 -1
  388. package/dist/hud/elements/limits.d.ts +3 -3
  389. package/dist/hud/elements/limits.d.ts.map +1 -1
  390. package/dist/hud/elements/limits.js +26 -18
  391. package/dist/hud/elements/limits.js.map +1 -1
  392. package/dist/hud/elements/mission-board.d.ts +2 -0
  393. package/dist/hud/elements/mission-board.d.ts.map +1 -0
  394. package/dist/hud/elements/mission-board.js +2 -0
  395. package/dist/hud/elements/mission-board.js.map +1 -0
  396. package/dist/hud/index.d.ts +1 -1
  397. package/dist/hud/index.d.ts.map +1 -1
  398. package/dist/hud/index.js +10 -2
  399. package/dist/hud/index.js.map +1 -1
  400. package/dist/hud/mission-board.d.ts +75 -0
  401. package/dist/hud/mission-board.d.ts.map +1 -0
  402. package/dist/hud/mission-board.js +420 -0
  403. package/dist/hud/mission-board.js.map +1 -0
  404. package/dist/hud/render.d.ts.map +1 -1
  405. package/dist/hud/render.js +16 -8
  406. package/dist/hud/render.js.map +1 -1
  407. package/dist/hud/state.d.ts.map +1 -1
  408. package/dist/hud/state.js +13 -0
  409. package/dist/hud/state.js.map +1 -1
  410. package/dist/hud/types.d.ts +11 -0
  411. package/dist/hud/types.d.ts.map +1 -1
  412. package/dist/hud/types.js +10 -0
  413. package/dist/hud/types.js.map +1 -1
  414. package/dist/hud/usage-api.d.ts +2 -1
  415. package/dist/hud/usage-api.d.ts.map +1 -1
  416. package/dist/hud/usage-api.js +219 -103
  417. package/dist/hud/usage-api.js.map +1 -1
  418. package/dist/index.d.ts +1 -0
  419. package/dist/index.d.ts.map +1 -1
  420. package/dist/index.js +2 -3
  421. package/dist/index.js.map +1 -1
  422. package/dist/installer/__tests__/claude-md-merge.test.js +53 -9
  423. package/dist/installer/__tests__/claude-md-merge.test.js.map +1 -1
  424. package/dist/installer/__tests__/hook-templates.test.d.ts +2 -0
  425. package/dist/installer/__tests__/hook-templates.test.d.ts.map +1 -0
  426. package/dist/installer/__tests__/hook-templates.test.js +76 -0
  427. package/dist/installer/__tests__/hook-templates.test.js.map +1 -0
  428. package/dist/installer/hooks.d.ts +15 -0
  429. package/dist/installer/hooks.d.ts.map +1 -1
  430. package/dist/installer/hooks.js +51 -0
  431. package/dist/installer/hooks.js.map +1 -1
  432. package/dist/installer/index.d.ts +25 -0
  433. package/dist/installer/index.d.ts.map +1 -1
  434. package/dist/installer/index.js +273 -64
  435. package/dist/installer/index.js.map +1 -1
  436. package/dist/lib/mode-names.d.ts.map +1 -1
  437. package/dist/lib/mode-names.js +2 -0
  438. package/dist/lib/mode-names.js.map +1 -1
  439. package/dist/mcp/__tests__/team-server-artifact-convergence.test.js +30 -3
  440. package/dist/mcp/__tests__/team-server-artifact-convergence.test.js.map +1 -1
  441. package/dist/mcp/__tests__/team-server-deprecation.test.js +2 -0
  442. package/dist/mcp/__tests__/team-server-deprecation.test.js.map +1 -1
  443. package/dist/mcp/team-job-convergence.d.ts.map +1 -1
  444. package/dist/mcp/team-job-convergence.js +12 -3
  445. package/dist/mcp/team-job-convergence.js.map +1 -1
  446. package/dist/mcp/team-server.d.ts.map +1 -1
  447. package/dist/mcp/team-server.js +18 -4
  448. package/dist/mcp/team-server.js.map +1 -1
  449. package/dist/notifications/__tests__/config-merge.test.js +36 -1
  450. package/dist/notifications/__tests__/config-merge.test.js.map +1 -1
  451. package/dist/notifications/__tests__/formatter.test.js +13 -5
  452. package/dist/notifications/__tests__/formatter.test.js.map +1 -1
  453. package/dist/notifications/__tests__/notify-registry-integration.test.js +27 -1
  454. package/dist/notifications/__tests__/notify-registry-integration.test.js.map +1 -1
  455. package/dist/notifications/__tests__/verbosity.test.js +33 -1
  456. package/dist/notifications/__tests__/verbosity.test.js.map +1 -1
  457. package/dist/notifications/config.d.ts +7 -0
  458. package/dist/notifications/config.d.ts.map +1 -1
  459. package/dist/notifications/config.js +18 -0
  460. package/dist/notifications/config.js.map +1 -1
  461. package/dist/notifications/formatter.d.ts +2 -2
  462. package/dist/notifications/formatter.d.ts.map +1 -1
  463. package/dist/notifications/formatter.js +7 -6
  464. package/dist/notifications/formatter.js.map +1 -1
  465. package/dist/notifications/index.d.ts +1 -1
  466. package/dist/notifications/index.d.ts.map +1 -1
  467. package/dist/notifications/index.js +5 -3
  468. package/dist/notifications/index.js.map +1 -1
  469. package/dist/notifications/template-engine.js +1 -1
  470. package/dist/notifications/template-engine.js.map +1 -1
  471. package/dist/notifications/types.d.ts +4 -0
  472. package/dist/notifications/types.d.ts.map +1 -1
  473. package/dist/openclaw/__tests__/dispatcher.test.js +26 -0
  474. package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -1
  475. package/dist/openclaw/__tests__/index.test.js +42 -0
  476. package/dist/openclaw/__tests__/index.test.js.map +1 -1
  477. package/dist/openclaw/__tests__/signal.test.d.ts +2 -0
  478. package/dist/openclaw/__tests__/signal.test.d.ts.map +1 -0
  479. package/dist/openclaw/__tests__/signal.test.js +69 -0
  480. package/dist/openclaw/__tests__/signal.test.js.map +1 -0
  481. package/dist/openclaw/dispatcher.d.ts +5 -1
  482. package/dist/openclaw/dispatcher.d.ts.map +1 -1
  483. package/dist/openclaw/dispatcher.js +13 -2
  484. package/dist/openclaw/dispatcher.js.map +1 -1
  485. package/dist/openclaw/index.d.ts +2 -1
  486. package/dist/openclaw/index.d.ts.map +1 -1
  487. package/dist/openclaw/index.js +29 -15
  488. package/dist/openclaw/index.js.map +1 -1
  489. package/dist/openclaw/signal.d.ts +3 -0
  490. package/dist/openclaw/signal.d.ts.map +1 -0
  491. package/dist/openclaw/signal.js +215 -0
  492. package/dist/openclaw/signal.js.map +1 -0
  493. package/dist/openclaw/types.d.ts +35 -0
  494. package/dist/openclaw/types.d.ts.map +1 -1
  495. package/dist/shared/types.d.ts +2 -12
  496. package/dist/shared/types.d.ts.map +1 -1
  497. package/dist/skills/__tests__/mingw-escape.test.js +41 -11
  498. package/dist/skills/__tests__/mingw-escape.test.js.map +1 -1
  499. package/dist/team/__tests__/api-interop.cwd-resolution.test.d.ts +2 -0
  500. package/dist/team/__tests__/api-interop.cwd-resolution.test.d.ts.map +1 -0
  501. package/dist/team/__tests__/api-interop.cwd-resolution.test.js +78 -0
  502. package/dist/team/__tests__/api-interop.cwd-resolution.test.js.map +1 -0
  503. package/dist/team/__tests__/api-interop.dispatch.test.d.ts +2 -0
  504. package/dist/team/__tests__/api-interop.dispatch.test.d.ts.map +1 -0
  505. package/dist/team/__tests__/api-interop.dispatch.test.js +125 -0
  506. package/dist/team/__tests__/api-interop.dispatch.test.js.map +1 -0
  507. package/dist/team/__tests__/cli-detection.test.d.ts +2 -0
  508. package/dist/team/__tests__/cli-detection.test.d.ts.map +1 -0
  509. package/dist/team/__tests__/cli-detection.test.js +36 -0
  510. package/dist/team/__tests__/cli-detection.test.js.map +1 -0
  511. package/dist/team/__tests__/model-contract.test.js +79 -2
  512. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  513. package/dist/team/__tests__/runtime-done-recovery.test.js +1 -0
  514. package/dist/team/__tests__/runtime-done-recovery.test.js.map +1 -1
  515. package/dist/team/__tests__/runtime-prompt-mode.test.js +84 -8
  516. package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -1
  517. package/dist/team/__tests__/runtime-v2.dispatch.test.d.ts +2 -0
  518. package/dist/team/__tests__/runtime-v2.dispatch.test.d.ts.map +1 -0
  519. package/dist/team/__tests__/runtime-v2.dispatch.test.js +237 -0
  520. package/dist/team/__tests__/runtime-v2.dispatch.test.js.map +1 -0
  521. package/dist/team/__tests__/runtime-v2.monitor.test.d.ts +2 -0
  522. package/dist/team/__tests__/runtime-v2.monitor.test.d.ts.map +1 -0
  523. package/dist/team/__tests__/runtime-v2.monitor.test.js +103 -0
  524. package/dist/team/__tests__/runtime-v2.monitor.test.js.map +1 -0
  525. package/dist/team/__tests__/runtime-v2.shutdown.test.d.ts +2 -0
  526. package/dist/team/__tests__/runtime-v2.shutdown.test.d.ts.map +1 -0
  527. package/dist/team/__tests__/runtime-v2.shutdown.test.js +49 -0
  528. package/dist/team/__tests__/runtime-v2.shutdown.test.js.map +1 -0
  529. package/dist/team/__tests__/runtime-watchdog-retry.test.js +3 -0
  530. package/dist/team/__tests__/runtime-watchdog-retry.test.js.map +1 -1
  531. package/dist/team/__tests__/tmux-session.create-team.test.js +29 -12
  532. package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -1
  533. package/dist/team/__tests__/tmux-session.kill-team-session.test.js +6 -0
  534. package/dist/team/__tests__/tmux-session.kill-team-session.test.js.map +1 -1
  535. package/dist/team/__tests__/tmux-session.test.js +9 -0
  536. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  537. package/dist/team/__tests__/worker-bootstrap.test.js +32 -3
  538. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  539. package/dist/team/api-interop.d.ts.map +1 -1
  540. package/dist/team/api-interop.js +153 -2
  541. package/dist/team/api-interop.js.map +1 -1
  542. package/dist/team/cli-detection.d.ts.map +1 -1
  543. package/dist/team/cli-detection.js +6 -2
  544. package/dist/team/cli-detection.js.map +1 -1
  545. package/dist/team/idle-nudge.js +1 -1
  546. package/dist/team/idle-nudge.js.map +1 -1
  547. package/dist/team/mcp-team-bridge.d.ts.map +1 -1
  548. package/dist/team/mcp-team-bridge.js +2 -1
  549. package/dist/team/mcp-team-bridge.js.map +1 -1
  550. package/dist/team/model-contract.d.ts +1 -1
  551. package/dist/team/model-contract.d.ts.map +1 -1
  552. package/dist/team/model-contract.js +35 -4
  553. package/dist/team/model-contract.js.map +1 -1
  554. package/dist/team/runtime-cli.d.ts.map +1 -1
  555. package/dist/team/runtime-cli.js +10 -7
  556. package/dist/team/runtime-cli.js.map +1 -1
  557. package/dist/team/runtime-v2.d.ts +4 -0
  558. package/dist/team/runtime-v2.d.ts.map +1 -1
  559. package/dist/team/runtime-v2.js +231 -59
  560. package/dist/team/runtime-v2.js.map +1 -1
  561. package/dist/team/runtime.d.ts +6 -1
  562. package/dist/team/runtime.d.ts.map +1 -1
  563. package/dist/team/runtime.js +39 -14
  564. package/dist/team/runtime.js.map +1 -1
  565. package/dist/team/tmux-session.d.ts +20 -11
  566. package/dist/team/tmux-session.d.ts.map +1 -1
  567. package/dist/team/tmux-session.js +108 -51
  568. package/dist/team/tmux-session.js.map +1 -1
  569. package/dist/team/types.d.ts +1 -0
  570. package/dist/team/types.d.ts.map +1 -1
  571. package/dist/team/types.js.map +1 -1
  572. package/dist/team/worker-bootstrap.d.ts +2 -0
  573. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  574. package/dist/team/worker-bootstrap.js +46 -12
  575. package/dist/team/worker-bootstrap.js.map +1 -1
  576. package/dist/tools/__tests__/memory-tools.test.js +29 -1
  577. package/dist/tools/__tests__/memory-tools.test.js.map +1 -1
  578. package/dist/tools/lsp/client.d.ts +11 -0
  579. package/dist/tools/lsp/client.d.ts.map +1 -1
  580. package/dist/tools/lsp/client.js +46 -0
  581. package/dist/tools/lsp/client.js.map +1 -1
  582. package/dist/tools/session-history-tools.d.ts +23 -0
  583. package/dist/tools/session-history-tools.d.ts.map +1 -0
  584. package/dist/tools/session-history-tools.js +41 -0
  585. package/dist/tools/session-history-tools.js.map +1 -0
  586. package/dist/tools/trace-tools.d.ts +9 -0
  587. package/dist/tools/trace-tools.d.ts.map +1 -1
  588. package/dist/tools/trace-tools.js +2 -1
  589. package/dist/tools/trace-tools.js.map +1 -1
  590. package/dist/utils/frontmatter.d.ts +5 -0
  591. package/dist/utils/frontmatter.d.ts.map +1 -1
  592. package/dist/utils/frontmatter.js +22 -0
  593. package/dist/utils/frontmatter.js.map +1 -1
  594. package/dist/utils/skill-pipeline.d.ts +9 -0
  595. package/dist/utils/skill-pipeline.d.ts.map +1 -0
  596. package/dist/utils/skill-pipeline.js +97 -0
  597. package/dist/utils/skill-pipeline.js.map +1 -0
  598. package/docs/AGENTS.md +1 -1
  599. package/docs/ANALYTICS-SYSTEM.md +23 -132
  600. package/docs/CLAUDE.md +40 -139
  601. package/docs/MIGRATION.md +4 -4
  602. package/docs/OPENCLAW-ROUTING.md +102 -0
  603. package/docs/PERFORMANCE-MONITORING.md +30 -55
  604. package/docs/REFERENCE.md +62 -35
  605. package/docs/TIERED_AGENTS_V2.md +3 -2
  606. package/docs/design/SKILL_AUDIT_1445.md +75 -0
  607. package/docs/ko/MIGRATION.md +2 -2
  608. package/docs/ko/REFERENCE.md +14 -22
  609. package/docs/partials/agent-tiers.md +11 -15
  610. package/docs/partials/features.md +2 -2
  611. package/docs/partials/mode-selection-guide.md +2 -2
  612. package/docs/shared/agent-tiers.md +11 -15
  613. package/docs/shared/features.md +2 -2
  614. package/docs/shared/mode-selection-guide.md +2 -2
  615. package/package.json +4 -1
  616. package/scripts/code-simplifier.mjs +1 -1
  617. package/scripts/context-guard-stop.mjs +26 -10
  618. package/scripts/keyword-detector.mjs +99 -39
  619. package/scripts/persistent-mode.cjs +295 -34
  620. package/scripts/persistent-mode.mjs +79 -21
  621. package/scripts/plugin-setup.mjs +10 -1
  622. package/scripts/post-tool-verifier.mjs +57 -3
  623. package/scripts/pre-tool-enforcer.mjs +207 -2
  624. package/scripts/run-provider-advisor.js +30 -3
  625. package/scripts/session-start.mjs +3 -3
  626. package/scripts/setup-claude-md.sh +159 -0
  627. package/scripts/setup-progress.sh +123 -0
  628. package/scripts/sync-metadata.ts +11 -1
  629. package/skills/AGENTS.md +13 -17
  630. package/skills/ai-slop-cleaner/SKILL.md +130 -0
  631. package/skills/ask/SKILL.md +51 -0
  632. package/skills/ccg/SKILL.md +6 -6
  633. package/skills/deep-interview/SKILL.md +4 -0
  634. package/skills/omc-doctor/SKILL.md +2 -2
  635. package/skills/omc-setup/SKILL.md +75 -1206
  636. package/skills/omc-setup/phases/01-install-claude-md.md +76 -0
  637. package/skills/omc-setup/phases/02-configure.md +211 -0
  638. package/skills/omc-setup/phases/03-integrations.md +192 -0
  639. package/skills/omc-setup/phases/04-welcome.md +192 -0
  640. package/skills/omc-teams/SKILL.md +35 -2
  641. package/skills/plan/SKILL.md +3 -0
  642. package/skills/ralph/SKILL.md +16 -10
  643. package/skills/release/SKILL.md +4 -0
  644. package/skills/setup/SKILL.md +40 -0
  645. package/skills/team/SKILL.md +6 -6
  646. package/templates/hooks/code-simplifier.mjs +1 -1
  647. package/templates/hooks/keyword-detector.mjs +100 -32
  648. package/templates/hooks/persistent-mode.mjs +43 -4
  649. package/templates/hooks/pre-tool-use.mjs +115 -1
  650. package/templates/hooks/session-start.mjs +1 -1
  651. package/agents/build-fixer.md +0 -90
  652. package/agents/deep-executor.md +0 -112
  653. package/agents/harsh-critic.md +0 -254
  654. package/agents/quality-reviewer.md +0 -151
  655. package/skills/analyze/SKILL.md +0 -87
  656. package/skills/ask-codex/SKILL.md +0 -47
  657. package/skills/ask-gemini/SKILL.md +0 -47
  658. package/skills/build-fix/SKILL.md +0 -123
  659. package/skills/code-review/SKILL.md +0 -573
  660. package/skills/configure-openclaw/SKILL.md +0 -383
  661. package/skills/learn-about-omc/SKILL.md +0 -37
  662. package/skills/note/SKILL.md +0 -62
  663. package/skills/omc-help/SKILL.md +0 -192
  664. package/skills/ralph-init/SKILL.md +0 -40
  665. package/skills/security-review/SKILL.md +0 -282
  666. package/skills/tdd/SKILL.md +0 -104
  667. package/skills/trace/SKILL.md +0 -33
@@ -42,8 +42,8 @@ Use the Team orchestrator to execute tasks in parallel:
42
42
  Match agent types to task complexity:
43
43
  - Simple tasks (single file, config): \`executor\` with \`model="haiku"\`
44
44
  - Standard implementation: \`executor\` with \`model="sonnet"\`
45
- - Complex work (architecture, refactoring): \`deep-executor\` with \`model="opus"\`
46
- - Build issues: \`build-fixer\` with \`model="sonnet"\`
45
+ - Complex work (architecture, refactoring): \`executor\` with \`model="opus"\`
46
+ - Build issues: \`debugger\` with \`model="sonnet"\`
47
47
  - Test creation: \`test-engineer\` with \`model="sonnet"\`
48
48
  - UI work: \`designer\` with \`model="sonnet"\`
49
49
 
@@ -89,7 +89,7 @@ Task(subagent_type="oh-my-claudecode:executor", model="haiku", prompt="...")
89
89
  Task(subagent_type="oh-my-claudecode:executor", model="sonnet", prompt="...")
90
90
 
91
91
  // For complex work (architecture, debugging, refactoring)
92
- Task(subagent_type="oh-my-claudecode:deep-executor", model="opus", prompt="...")
92
+ Task(subagent_type="oh-my-claudecode:executor", model="opus", prompt="...")
93
93
  \`\`\`
94
94
 
95
95
  ### Progress Tracking
@@ -248,7 +248,7 @@ Task(
248
248
  2. **Fix** - Apply the fix
249
249
  \`\`\`
250
250
  Task(
251
- subagent_type="oh-my-claudecode:build-fixer",
251
+ subagent_type="oh-my-claudecode:debugger",
252
252
  model="sonnet",
253
253
  prompt="Fix this error with minimal changes: [ERROR]"
254
254
  )
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-normalize.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,0FAA0F;AAC1F,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BL,CAAC;AAkCjB,qEAAqE;AACrE,QAAA,MAAM,eAAe,aAKnB,CAAC;AAEH,2EAA2E;AAC3E,QAAA,MAAM,YAAY,aAYhB,CAAC;AAeH,8EAA8E;AAC9E,iBAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAYjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CA6D7E;AA2CD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"bridge-normalize.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAK7C,0FAA0F;AAC1F,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCA4BL,CAAC;AAkCjB,qEAAqE;AACrE,QAAA,MAAM,eAAe,aAKnB,CAAC;AAEH,2EAA2E;AAC3E,QAAA,MAAM,YAAY,aAchB,CAAC;AAeH,8EAA8E;AAC9E,iBAAS,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAYjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CA6D7E;AA2CD,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,CAAC"}
@@ -60,6 +60,8 @@ const KNOWN_FIELDS = new Set([
60
60
  'agent_id', 'agent_name', 'agent_type', 'parent_session_id',
61
61
  // Common extra fields from Claude Code
62
62
  'input', 'output', 'result', 'error', 'status',
63
+ // Session-end fields
64
+ 'reason',
63
65
  ]);
64
66
  // --- Fast-path detection ---
65
67
  /** Typical camelCase keys that indicate already-normalized input */
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-normalize.js","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-normalize.js","sourceRoot":"","sources":["../../src/hooks/bridge-normalize.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA4KH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AA0BD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,4CAA4C;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,WAAW,CAAC;AAwiBhB;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,IAAI,CAaN;AAED,sEAAsE;AACtE,eAAO,MAAM,OAAO;;CAEnB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS;kBACN,OAAO,sBAAsB,EAAE,iBAAiB,WAAW,OAAO,sBAAsB,EAAE,eAAe;CAMxH,CAAC;AAmZF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,GAClB,OAAO,CAAC,UAAU,CAAC,CAyMrB;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC1C"}
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuRH;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAc9D;AA0BD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE;QACR,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,4CAA4C;IAC5C,KAAK,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC,CAAC;IACH,iCAAiC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,QAAQ,EAAE,OAAO,CAAC;IAClB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,OAAO,GACP,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,iBAAiB,GACjB,WAAW,CAAC;AA0mBhB;;;;GAIG;AACH,wBAAgB,mCAAmC,CACjD,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,IAAI,CAaN;AAED,sEAAsE;AACtE,eAAO,MAAM,OAAO;;CAEnB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS;kBACN,OAAO,sBAAsB,EAAE,iBAAiB,WAAW,OAAO,sBAAsB,EAAE,eAAe;CAMxH,CAAC;AAsdF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,GAClB,OAAO,CAAC,UAAU,CAAC,CA+MrB;AAED;;;GAGG;AACH,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC1C"}
@@ -13,8 +13,8 @@
13
13
  * ```
14
14
  */
15
15
  import { pathToFileURL } from 'url';
16
- import { existsSync, readFileSync } from "fs";
17
- import { join } from "path";
16
+ import { existsSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "fs";
17
+ import { dirname, join } from "path";
18
18
  import { resolveToWorktreeRoot, getOmcRoot } from "../lib/worktree-paths.js";
19
19
  // Hot-path imports: needed on every/most hook invocations (keyword-detector, pre/post-tool-use)
20
20
  import { removeCodeBlocks, getAllKeywordsWithSizeCheck, applyRalplanGate, sanitizeForKeywordDetection, NON_LATIN_SCRIPT_PATTERN } from "./keyword-detector/index.js";
@@ -22,13 +22,14 @@ import { processOrchestratorPreTool, processOrchestratorPostTool } from "./omc-o
22
22
  import { normalizeHookInput } from "./bridge-normalize.js";
23
23
  import { addBackgroundTask, getRunningTaskCount, } from "../hud/background-tasks.js";
24
24
  import { readHudState, writeHudState } from "../hud/state.js";
25
- import { loadConfig } from "../config/loader.js";
25
+ import { compactOmcStartupGuidance, loadConfig } from "../config/loader.js";
26
26
  import { writeSkillActiveState } from "./skill-state/index.js";
27
- import { ULTRAWORK_MESSAGE, ULTRATHINK_MESSAGE, SEARCH_MESSAGE, ANALYZE_MESSAGE, RALPH_MESSAGE, PROMPT_TRANSLATION_MESSAGE, } from "../installer/hooks.js";
27
+ import { ULTRAWORK_MESSAGE, ULTRATHINK_MESSAGE, SEARCH_MESSAGE, ANALYZE_MESSAGE, TDD_MESSAGE, CODE_REVIEW_MESSAGE, SECURITY_REVIEW_MESSAGE, RALPH_MESSAGE, PROMPT_TRANSLATION_MESSAGE, } from "../installer/hooks.js";
28
28
  // Agent dashboard is used in pre/post-tool-use hot path
29
29
  import { getAgentDashboard, } from "./subagent-tracker/index.js";
30
30
  // Session replay recordFileTouch is used in pre-tool-use hot path
31
31
  import { recordFileTouch, } from "./subagent-tracker/session-replay.js";
32
+ import { getBackgroundBashPermissionFallback, getBackgroundTaskPermissionFallback, } from "./permission-handler/index.js";
32
33
  // Security: wrap untrusted file content to prevent prompt injection
33
34
  import { wrapUntrustedFileContent } from "../agents/prompt-helpers.js";
34
35
  const PKILL_F_FLAG_PATTERN = /\bpkill\b.*\s-f\b/;
@@ -47,6 +48,25 @@ const TEAM_TERMINAL_VALUES = new Set([
47
48
  "terminated",
48
49
  "done",
49
50
  ]);
51
+ const TEAM_ACTIVE_STAGES = new Set([
52
+ "team-plan",
53
+ "team-prd",
54
+ "team-exec",
55
+ "team-verify",
56
+ "team-fix",
57
+ ]);
58
+ const TEAM_STOP_BLOCKER_MAX = 20;
59
+ const TEAM_STOP_BLOCKER_TTL_MS = 5 * 60 * 1000;
60
+ const TEAM_STAGE_ALIASES = {
61
+ planning: "team-plan",
62
+ prd: "team-prd",
63
+ executing: "team-exec",
64
+ execution: "team-exec",
65
+ verify: "team-verify",
66
+ verification: "team-verify",
67
+ fix: "team-fix",
68
+ fixing: "team-fix",
69
+ };
50
70
  function readTeamStagedState(directory, sessionId) {
51
71
  const stateDir = join(getOmcRoot(directory), "state");
52
72
  const statePaths = sessionId
@@ -77,7 +97,75 @@ function readTeamStagedState(directory, sessionId) {
77
97
  return null;
78
98
  }
79
99
  function getTeamStage(state) {
80
- return state.stage || state.current_stage || state.currentStage || "team-exec";
100
+ return (state.stage ||
101
+ state.current_stage ||
102
+ state.currentStage ||
103
+ state.current_phase ||
104
+ state.phase ||
105
+ "team-exec");
106
+ }
107
+ function getTeamStageForEnforcement(state) {
108
+ const rawStage = state.stage ?? state.current_stage ?? state.currentStage ?? state.current_phase ?? state.phase;
109
+ if (typeof rawStage !== "string") {
110
+ return null;
111
+ }
112
+ const stage = rawStage.trim().toLowerCase();
113
+ if (!stage) {
114
+ return null;
115
+ }
116
+ if (TEAM_ACTIVE_STAGES.has(stage)) {
117
+ return stage;
118
+ }
119
+ const alias = TEAM_STAGE_ALIASES[stage];
120
+ return alias && TEAM_ACTIVE_STAGES.has(alias) ? alias : null;
121
+ }
122
+ function readTeamStopBreakerCount(directory, sessionId) {
123
+ const stateDir = join(getOmcRoot(directory), "state");
124
+ const breakerPath = sessionId
125
+ ? join(stateDir, "sessions", sessionId, "team-stop-breaker.json")
126
+ : join(stateDir, "team-stop-breaker.json");
127
+ try {
128
+ if (!existsSync(breakerPath)) {
129
+ return 0;
130
+ }
131
+ const parsed = JSON.parse(readFileSync(breakerPath, "utf-8"));
132
+ if (typeof parsed.updated_at === "string") {
133
+ const updatedAt = new Date(parsed.updated_at).getTime();
134
+ if (Number.isFinite(updatedAt) && Date.now() - updatedAt > TEAM_STOP_BLOCKER_TTL_MS) {
135
+ return 0;
136
+ }
137
+ }
138
+ const count = typeof parsed.count === "number" ? parsed.count : Number.NaN;
139
+ return Number.isFinite(count) && count >= 0 ? Math.floor(count) : 0;
140
+ }
141
+ catch {
142
+ return 0;
143
+ }
144
+ }
145
+ function writeTeamStopBreakerCount(directory, sessionId, count) {
146
+ const stateDir = join(getOmcRoot(directory), "state");
147
+ const breakerPath = sessionId
148
+ ? join(stateDir, "sessions", sessionId, "team-stop-breaker.json")
149
+ : join(stateDir, "team-stop-breaker.json");
150
+ const safeCount = Number.isFinite(count) && count > 0 ? Math.floor(count) : 0;
151
+ if (safeCount === 0) {
152
+ try {
153
+ if (existsSync(breakerPath)) {
154
+ unlinkSync(breakerPath);
155
+ }
156
+ }
157
+ catch {
158
+ // no-op
159
+ }
160
+ return;
161
+ }
162
+ try {
163
+ mkdirSync(dirname(breakerPath), { recursive: true });
164
+ writeFileSync(breakerPath, JSON.stringify({ count: safeCount, updated_at: new Date().toISOString() }, null, 2), "utf-8");
165
+ }
166
+ catch {
167
+ // no-op
168
+ }
81
169
  }
82
170
  function isTeamStateTerminal(state) {
83
171
  if (state.terminal === true || state.cancelled === true || state.canceled === true || state.completed === true) {
@@ -274,10 +362,12 @@ async function processKeywordDetector(input) {
274
362
  switch (keywordType) {
275
363
  case "ralph": {
276
364
  // Lazy-load ralph module
277
- const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd } = await import("./ralph/index.js");
365
+ const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd, detectCriticModeFlag, stripCriticModeFlag } = await import("./ralph/index.js");
278
366
  // Handle --no-prd flag
279
367
  const noPrd = detectNoPrd(promptText);
280
- const cleanPrompt = noPrd ? stripNoPrd(promptText) : promptText;
368
+ const criticMode = detectCriticModeFlag(promptText) ?? undefined;
369
+ const promptWithoutCriticFlag = stripCriticModeFlag(promptText);
370
+ const cleanPrompt = noPrd ? stripNoPrd(promptWithoutCriticFlag) : promptWithoutCriticFlag;
281
371
  // Auto-generate scaffold PRD if none exists and --no-prd not set
282
372
  const existingPrd = findPrd(directory);
283
373
  if (!noPrd && !existingPrd) {
@@ -296,7 +386,7 @@ async function processKeywordDetector(input) {
296
386
  }
297
387
  // Activate ralph state which also auto-activates ultrawork
298
388
  const hook = createRalphLoopHook(directory);
299
- hook.startLoop(sessionId, cleanPrompt);
389
+ hook.startLoop(sessionId, cleanPrompt, criticMode ? { criticMode } : undefined);
300
390
  messages.push(RALPH_MESSAGE);
301
391
  break;
302
392
  }
@@ -317,12 +407,21 @@ async function processKeywordDetector(input) {
317
407
  case "analyze":
318
408
  messages.push(ANALYZE_MESSAGE);
319
409
  break;
410
+ case "tdd":
411
+ messages.push(TDD_MESSAGE);
412
+ break;
413
+ case "code-review":
414
+ messages.push(CODE_REVIEW_MESSAGE);
415
+ break;
416
+ case "security-review":
417
+ messages.push(SECURITY_REVIEW_MESSAGE);
418
+ break;
320
419
  // For modes without dedicated message constants, return generic activation message
321
420
  // These are handled by UserPromptSubmit hook for skill invocation
322
421
  case "cancel":
323
422
  case "autopilot":
324
423
  case "ralplan":
325
- case "tdd":
424
+ case "deep-interview":
326
425
  messages.push(`[MODE: ${keywordType.toUpperCase()}] Skill invocation handled by UserPromptSubmit hook.`);
327
426
  break;
328
427
  case "codex":
@@ -385,11 +484,21 @@ async function processPersistentMode(input) {
385
484
  toolName: input.toolName,
386
485
  tool_input: input.tool_input,
387
486
  toolInput: input.toolInput,
487
+ reason: input.reason,
488
+ transcript_path: input.transcript_path,
489
+ transcriptPath: input.transcriptPath,
388
490
  };
389
491
  const result = await checkPersistentModes(sessionId, directory, stopContext);
390
492
  const output = createHookOutput(result);
493
+ // Skip legacy bridge.ts team enforcement if persistent-mode already
494
+ // handled this stop event (or intentionally emitted a stop message).
495
+ // Prevents mixed/double continuation prompts across modes.
496
+ if (result.mode !== 'none' || Boolean(output.message)) {
497
+ return output;
498
+ }
391
499
  const teamState = readTeamStagedState(directory, sessionId);
392
500
  if (!teamState || teamState.active !== true || isTeamStateTerminal(teamState)) {
501
+ writeTeamStopBreakerCount(directory, sessionId, 0);
393
502
  // No persistent mode and no active team — Claude is truly idle.
394
503
  // Send session-idle notification (non-blocking) unless this was a user abort or context limit.
395
504
  if (result.mode === "none" && sessionId) {
@@ -418,14 +527,28 @@ async function processPersistentMode(input) {
418
527
  }
419
528
  // Explicit cancel should suppress team continuation prompts.
420
529
  if (isExplicitCancelCommand(stopContext)) {
530
+ writeTeamStopBreakerCount(directory, sessionId, 0);
421
531
  return output;
422
532
  }
423
533
  // Auth failures (401/403/expired OAuth) should not inject Team continuation.
424
534
  // Otherwise stop hooks can force a retry loop while credentials are invalid.
425
535
  if (isAuthenticationError(stopContext)) {
536
+ writeTeamStopBreakerCount(directory, sessionId, 0);
426
537
  return output;
427
538
  }
428
- const stage = getTeamStage(teamState);
539
+ const stage = getTeamStageForEnforcement(teamState);
540
+ if (!stage) {
541
+ // Fail-open for missing/corrupt/unknown phase/state values.
542
+ writeTeamStopBreakerCount(directory, sessionId, 0);
543
+ return output;
544
+ }
545
+ const newBreakerCount = readTeamStopBreakerCount(directory, sessionId) + 1;
546
+ if (newBreakerCount > TEAM_STOP_BLOCKER_MAX) {
547
+ // Circuit breaker: never allow infinite stop-hook blocking loops.
548
+ writeTeamStopBreakerCount(directory, sessionId, 0);
549
+ return output;
550
+ }
551
+ writeTeamStopBreakerCount(directory, sessionId, newBreakerCount);
429
552
  const stagePrompt = getTeamStagePrompt(stage);
430
553
  const teamName = teamState.team_name || teamState.teamName || "team";
431
554
  const currentMessage = output.message ? `${output.message}\n` : "";
@@ -513,7 +636,7 @@ You have an active autopilot session from ${autopilotState.started_at}.
513
636
  Original idea: ${autopilotState.originalIdea}
514
637
  Current phase: ${autopilotState.phase}
515
638
 
516
- Continue autopilot execution until complete.
639
+ Treat this as prior-session context only. Prioritize the user's newest request, and resume autopilot only if the user explicitly asks to continue it.
517
640
 
518
641
  </session-restore>
519
642
 
@@ -531,7 +654,7 @@ Continue autopilot execution until complete.
531
654
  You have an active ultrawork session from ${ultraworkState.started_at}.
532
655
  Original task: ${ultraworkState.original_prompt}
533
656
 
534
- Continue working in ultrawork mode until all tasks are complete.
657
+ Treat this as prior-session context only. Prioritize the user's newest request, and resume ultrawork only if the user explicitly asks to continue it.
535
658
 
536
659
  </session-restore>
537
660
 
@@ -566,7 +689,7 @@ You have an active Team staged run for "${teamName}".
566
689
  Current stage: ${stage}
567
690
  ${getTeamStagePrompt(stage)}
568
691
 
569
- Resume from this stage and continue the staged Team workflow.
692
+ Treat this as prior-session context only. Prioritize the user's newest request, and resume the staged Team workflow only if the user explicitly asks to continue it.
570
693
 
571
694
  </session-restore>
572
695
 
@@ -579,7 +702,7 @@ Resume from this stage and continue the staged Team workflow.
579
702
  const agentsMdPath = join(directory, 'AGENTS.md');
580
703
  if (existsSync(agentsMdPath)) {
581
704
  try {
582
- let agentsContent = readFileSync(agentsMdPath, 'utf-8').trim();
705
+ let agentsContent = compactOmcStartupGuidance(readFileSync(agentsMdPath, 'utf-8')).trim();
583
706
  if (agentsContent) {
584
707
  // Truncate to ~5000 tokens (20000 chars) to avoid context bloat
585
708
  const MAX_AGENTS_CHARS = 20000;
@@ -623,6 +746,27 @@ Please continue working on these tasks.
623
746
 
624
747
  `);
625
748
  }
749
+ // Bedrock/Vertex/proxy override: tell the LLM not to pass model on Task calls.
750
+ // This prevents the LLM from following the static CLAUDE.md instruction
751
+ // "Pass model on Task calls: haiku, sonnet, opus" which produces invalid
752
+ // model IDs on non-standard providers. (issues #1135, #1201)
753
+ try {
754
+ const sessionConfig = loadConfig();
755
+ if (sessionConfig.routing?.forceInherit) {
756
+ messages.push(`<system-reminder>
757
+
758
+ [MODEL ROUTING OVERRIDE — NON-STANDARD PROVIDER DETECTED]
759
+
760
+ This environment uses a non-standard model provider (AWS Bedrock, Google Vertex AI, or a proxy).
761
+ Do NOT pass the \`model\` parameter on Task/Agent calls. Omit it entirely so agents inherit the parent session's model.
762
+ The CLAUDE.md instruction "Pass model on Task calls: haiku, sonnet, opus" does NOT apply here.
763
+
764
+ </system-reminder>`);
765
+ }
766
+ }
767
+ catch {
768
+ // Non-blocking: config load failure must never break session start
769
+ }
626
770
  if (messages.length > 0) {
627
771
  return {
628
772
  continue: true,
@@ -716,16 +860,64 @@ function processPreToolUse(input) {
716
860
  message: enforcementResult.message,
717
861
  };
718
862
  }
719
- // Force-inherit: strip `model` parameter from Task calls so agents inherit
720
- // the user's Claude Code model setting instead of OMC per-agent routing (issue #1135)
721
- let forceInheritInput;
863
+ const preToolMessages = enforcementResult.message ? [enforcementResult.message] : [];
864
+ let modifiedToolInput;
865
+ // Force-inherit: deny Task calls that carry a `model` parameter when
866
+ // forceInherit is enabled (Bedrock, Vertex, CC Switch, etc.).
867
+ // Claude Code's hook protocol does not support modifiedInput, so we cannot
868
+ // silently strip the model. Instead, deny the call so Claude retries without
869
+ // the model param, letting agents inherit the parent session's model.
870
+ // (issues #1135, #1201)
722
871
  if (input.toolName === "Task") {
723
- const taskInput = input.toolInput;
724
- if (taskInput?.model) {
872
+ const originalTaskInput = input.toolInput;
873
+ const taskModel = originalTaskInput?.model;
874
+ if (taskModel) {
725
875
  const config = loadConfig();
726
876
  if (config.routing?.forceInherit) {
727
- const { model: _stripped, ...rest } = taskInput;
728
- forceInheritInput = rest;
877
+ // Use permissionDecision:"deny" the only PreToolUse mechanism
878
+ // Claude Code supports for blocking a specific tool call with
879
+ // feedback. modifiedInput is NOT supported by the hook protocol.
880
+ const denyReason = `[MODEL ROUTING] This environment uses a non-standard provider (Bedrock/Vertex/proxy). Do NOT pass the \`model\` parameter on Task calls — remove \`model\` and retry so agents inherit the parent session's model. The model "${taskModel}" is not valid for this provider.`;
881
+ return {
882
+ continue: true,
883
+ hookSpecificOutput: {
884
+ hookEventName: "PreToolUse",
885
+ permissionDecision: "deny",
886
+ permissionDecisionReason: denyReason,
887
+ },
888
+ };
889
+ }
890
+ }
891
+ if (originalTaskInput?.run_in_background === true) {
892
+ const subagentType = typeof originalTaskInput.subagent_type === "string"
893
+ ? originalTaskInput.subagent_type
894
+ : undefined;
895
+ const permissionFallback = getBackgroundTaskPermissionFallback(directory, subagentType);
896
+ if (permissionFallback.shouldFallback) {
897
+ const reason = `[BACKGROUND PERMISSIONS] ${subagentType || "This background agent"} may need ${permissionFallback.missingTools.join(", ")} permissions, but background agents cannot request interactive approval. Re-run without \`run_in_background=true\` or pre-approve ${permissionFallback.missingTools.join(", ")} in Claude Code settings.`;
898
+ return {
899
+ continue: false,
900
+ reason,
901
+ message: reason,
902
+ };
903
+ }
904
+ }
905
+ }
906
+ if (input.toolName === "Bash") {
907
+ const originalBashInput = input.toolInput;
908
+ const nextBashInput = originalBashInput ? { ...originalBashInput } : {};
909
+ if (nextBashInput.run_in_background === true) {
910
+ const command = typeof nextBashInput.command === "string"
911
+ ? nextBashInput.command
912
+ : undefined;
913
+ const permissionFallback = getBackgroundBashPermissionFallback(directory, command);
914
+ if (permissionFallback.shouldFallback) {
915
+ const reason = "[BACKGROUND PERMISSIONS] This Bash command is not auto-approved for background execution. Re-run without `run_in_background=true` or pre-approve the command in Claude Code settings.";
916
+ return {
917
+ continue: false,
918
+ reason,
919
+ message: reason,
920
+ };
729
921
  }
730
922
  }
731
923
  }
@@ -779,7 +971,8 @@ function processPreToolUse(input) {
779
971
  // Warn about pkill -f self-termination risk (issue #210)
780
972
  // Matches: pkill -f, pkill -9 -f, pkill --full, etc.
781
973
  if (input.toolName === "Bash") {
782
- const command = input.toolInput?.command ?? "";
974
+ const effectiveBashInput = (modifiedToolInput ?? input.toolInput);
975
+ const command = effectiveBashInput?.command ?? "";
783
976
  if (PKILL_F_FLAG_PATTERN.test(command) ||
784
977
  PKILL_FULL_FLAG_PATTERN.test(command)) {
785
978
  return {
@@ -791,13 +984,14 @@ function processPreToolUse(input) {
791
984
  ' - `kill $(pgrep -f "pattern")` (pgrep does not kill itself)',
792
985
  "Proceeding anyway, but the command may kill this shell session.",
793
986
  ].join("\n"),
987
+ ...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
794
988
  };
795
989
  }
796
990
  }
797
991
  // Background process guard - prevent forkbomb (issue #302)
798
992
  // Block new background tasks if limit is exceeded
799
993
  if (input.toolName === "Task" || input.toolName === "Bash") {
800
- const toolInput = input.toolInput;
994
+ const toolInput = (modifiedToolInput ?? input.toolInput);
801
995
  if (toolInput?.run_in_background) {
802
996
  const config = loadConfig();
803
997
  const maxBgTasks = config.permissions?.maxBackgroundTasks ?? 5;
@@ -814,7 +1008,7 @@ function processPreToolUse(input) {
814
1008
  }
815
1009
  // Track Task tool invocations for HUD background tasks display
816
1010
  if (input.toolName === "Task") {
817
- const toolInput = input.toolInput;
1011
+ const toolInput = (modifiedToolInput ?? input.toolInput);
818
1012
  if (toolInput?.description) {
819
1013
  const taskId = `task-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
820
1014
  addBackgroundTask(taskId, toolInput.description, toolInput.subagent_type, directory);
@@ -833,28 +1027,28 @@ function processPreToolUse(input) {
833
1027
  if (input.toolName === "Task") {
834
1028
  const dashboard = getAgentDashboard(directory);
835
1029
  if (dashboard) {
836
- const combined = enforcementResult.message
837
- ? `${enforcementResult.message}\n\n${dashboard}`
838
- : dashboard;
1030
+ const combined = [...preToolMessages, dashboard].filter(Boolean).join("\n\n");
839
1031
  return {
840
1032
  continue: true,
841
- message: combined,
842
- ...(forceInheritInput ? { modifiedInput: forceInheritInput } : {}),
1033
+ ...(combined ? { message: combined } : {}),
1034
+ ...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
843
1035
  };
844
1036
  }
845
1037
  }
846
- // Wake OpenClaw gateway for pre-tool-use (non-blocking, fires only for allowed tools)
847
- if (input.sessionId) {
1038
+ // Wake OpenClaw gateway for pre-tool-use (non-blocking, fires only for allowed tools).
1039
+ // AskUserQuestion already has a dedicated high-signal OpenClaw event.
1040
+ if (input.sessionId && input.toolName !== "AskUserQuestion") {
848
1041
  _openclaw.wake("pre-tool-use", {
849
1042
  sessionId: input.sessionId,
850
1043
  projectPath: directory,
851
1044
  toolName: input.toolName,
1045
+ toolInput: input.toolInput,
852
1046
  });
853
1047
  }
854
1048
  return {
855
1049
  continue: true,
856
- ...(enforcementResult.message ? { message: enforcementResult.message } : {}),
857
- ...(forceInheritInput ? { modifiedInput: forceInheritInput } : {}),
1050
+ ...(preToolMessages.length > 0 ? { message: preToolMessages.join("\n\n") } : {}),
1051
+ ...(modifiedToolInput ? { modifiedInput: modifiedToolInput } : {}),
858
1052
  };
859
1053
  }
860
1054
  /**
@@ -888,13 +1082,15 @@ async function processPostToolUse(input) {
888
1082
  if (toolName === "skill") {
889
1083
  const skillName = getInvokedSkillName(input.toolInput);
890
1084
  if (skillName === "ralph") {
891
- const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd } = await import("./ralph/index.js");
1085
+ const { createRalphLoopHook, findPrdPath: findPrd, initPrd: initPrdFn, initProgress: initProgressFn, detectNoPrdFlag: detectNoPrd, stripNoPrdFlag: stripNoPrd, detectCriticModeFlag, stripCriticModeFlag } = await import("./ralph/index.js");
892
1086
  const rawPrompt = typeof input.prompt === "string" && input.prompt.trim().length > 0
893
1087
  ? input.prompt
894
1088
  : "Ralph loop activated via Skill tool";
895
1089
  // Handle --no-prd flag
896
1090
  const noPrd = detectNoPrd(rawPrompt);
897
- const cleanPrompt = noPrd ? stripNoPrd(rawPrompt) : rawPrompt;
1091
+ const criticMode = detectCriticModeFlag(rawPrompt) ?? undefined;
1092
+ const promptWithoutCriticFlag = stripCriticModeFlag(rawPrompt);
1093
+ const cleanPrompt = noPrd ? stripNoPrd(promptWithoutCriticFlag) : promptWithoutCriticFlag;
898
1094
  // Auto-generate scaffold PRD if none exists and --no-prd not set
899
1095
  const existingPrd = findPrd(directory);
900
1096
  if (!noPrd && !existingPrd) {
@@ -912,8 +1108,12 @@ async function processPostToolUse(input) {
912
1108
  initProgressFn(directory);
913
1109
  }
914
1110
  const hook = createRalphLoopHook(directory);
915
- hook.startLoop(input.sessionId, cleanPrompt);
1111
+ hook.startLoop(input.sessionId, cleanPrompt, criticMode ? { criticMode } : undefined);
916
1112
  }
1113
+ // Clear skill-active state on skill completion to prevent false-blocking.
1114
+ // Without this, every non-'none' skill falsely blocks stops until TTL expires.
1115
+ const { clearSkillActiveState } = await import("./skill-state/index.js");
1116
+ clearSkillActiveState(directory, input.sessionId);
917
1117
  }
918
1118
  // Run orchestrator post-tool processing (remember tags, verification reminders, etc.)
919
1119
  const orchestratorResult = processOrchestratorPostTool({
@@ -932,12 +1132,15 @@ async function processPostToolUse(input) {
932
1132
  messages.push(dashboard);
933
1133
  }
934
1134
  }
935
- // Wake OpenClaw gateway for post-tool-use (non-blocking, fires for all tools)
936
- if (input.sessionId) {
1135
+ // Wake OpenClaw gateway for post-tool-use (non-blocking, fires for all tools).
1136
+ // AskUserQuestion already emitted a dedicated question.requested signal.
1137
+ if (input.sessionId && input.toolName !== "AskUserQuestion") {
937
1138
  _openclaw.wake("post-tool-use", {
938
1139
  sessionId: input.sessionId,
939
1140
  projectPath: directory,
940
1141
  toolName: input.toolName,
1142
+ toolInput: input.toolInput,
1143
+ toolOutput: input.toolOutput,
941
1144
  });
942
1145
  }
943
1146
  if (messages.length > 0) {
@@ -1046,7 +1249,13 @@ export async function processHook(hookType, rawInput) {
1046
1249
  hook_event_name: "SessionEnd",
1047
1250
  reason: rawSE.reason ?? "other",
1048
1251
  };
1049
- return await handleSessionEnd(sessionEndInput);
1252
+ const result = await handleSessionEnd(sessionEndInput);
1253
+ _openclaw.wake("session-end", {
1254
+ sessionId: sessionEndInput.session_id,
1255
+ projectPath: sessionEndInput.cwd,
1256
+ reason: sessionEndInput.reason,
1257
+ });
1258
+ return result;
1050
1259
  }
1051
1260
  case "subagent-start": {
1052
1261
  if (!validateHookInput(input, requiredKeysForHook("subagent-start"), "subagent-start")) {