claudecode-omc 4.4.5 → 4.4.6

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 (839) hide show
  1. package/.mcp.json +2 -6
  2. package/README.es.md +64 -8
  3. package/README.ja.md +64 -8
  4. package/README.ko.md +64 -8
  5. package/README.pt.md +29 -0
  6. package/README.vi.md +29 -0
  7. package/README.zh.md +64 -8
  8. package/agents/architect.md +17 -7
  9. package/agents/code-reviewer.md +6 -7
  10. package/agents/critic.md +14 -1
  11. package/agents/deep-executor.md +6 -7
  12. package/agents/designer.md +6 -8
  13. package/agents/executor.md +6 -7
  14. package/agents/planner.md +21 -0
  15. package/agents/quality-reviewer.md +6 -7
  16. package/agents/security-reviewer.md +6 -7
  17. package/agents/test-engineer.md +6 -7
  18. package/bridge/mcp-server.cjs +517 -202
  19. package/bridge/runtime-cli.cjs +1547 -0
  20. package/bridge/team-bridge.cjs +348 -92
  21. package/bridge/{gemini-server.cjs → team-mcp.cjs} +10914 -10240
  22. package/dist/__tests__/auto-update.test.js +1 -1
  23. package/dist/__tests__/auto-update.test.js.map +1 -1
  24. package/dist/__tests__/cli-win32-warning.test.d.ts +2 -0
  25. package/dist/__tests__/cli-win32-warning.test.d.ts.map +1 -0
  26. package/dist/__tests__/cli-win32-warning.test.js +46 -0
  27. package/dist/__tests__/cli-win32-warning.test.js.map +1 -0
  28. package/dist/__tests__/codex-callsite-normalization.test.js +112 -0
  29. package/dist/__tests__/consensus-execution-handoff.test.d.ts +2 -0
  30. package/dist/__tests__/consensus-execution-handoff.test.d.ts.map +1 -1
  31. package/dist/__tests__/consensus-execution-handoff.test.js +48 -0
  32. package/dist/__tests__/consensus-execution-handoff.test.js.map +1 -1
  33. package/dist/__tests__/context-safety.test.d.ts +2 -0
  34. package/dist/__tests__/context-safety.test.d.ts.map +1 -0
  35. package/dist/__tests__/context-safety.test.js +59 -0
  36. package/dist/__tests__/context-safety.test.js.map +1 -0
  37. package/dist/__tests__/hooks.test.js +15 -0
  38. package/dist/__tests__/hooks.test.js.map +1 -1
  39. package/dist/__tests__/hud/call-counts.test.js +0 -3
  40. package/dist/__tests__/hud/call-counts.test.js.map +1 -1
  41. package/dist/__tests__/hud/defaults.test.js +3 -5
  42. package/dist/__tests__/hud/defaults.test.js.map +1 -1
  43. package/dist/__tests__/hud/prompt-time.test.d.ts +2 -0
  44. package/dist/__tests__/hud/prompt-time.test.d.ts.map +1 -0
  45. package/dist/__tests__/hud/prompt-time.test.js +24 -0
  46. package/dist/__tests__/hud/prompt-time.test.js.map +1 -0
  47. package/dist/__tests__/hud/render.test.js +0 -1
  48. package/dist/__tests__/hud/render.test.js.map +1 -1
  49. package/dist/__tests__/hud/version-display.test.js +1 -0
  50. package/dist/__tests__/hud/version-display.test.js.map +1 -1
  51. package/dist/__tests__/hud/windows-platform.test.js +0 -4
  52. package/dist/__tests__/hud/windows-platform.test.js.map +1 -1
  53. package/dist/__tests__/hud-windows.test.js +5 -3
  54. package/dist/__tests__/hud-windows.test.js.map +1 -1
  55. package/dist/__tests__/installer-hud-skip.test.js +12 -2
  56. package/dist/__tests__/installer-hud-skip.test.js.map +1 -1
  57. package/dist/__tests__/job-management-sqlite.test.js +0 -15
  58. package/dist/__tests__/job-management-sqlite.test.js.map +1 -1
  59. package/dist/__tests__/job-management.test.js +0 -16
  60. package/dist/__tests__/job-management.test.js.map +1 -1
  61. package/dist/__tests__/load-agent-prompt.test.js +0 -23
  62. package/dist/__tests__/load-agent-prompt.test.js.map +1 -1
  63. package/dist/__tests__/model-routing.test.js +3 -2
  64. package/dist/__tests__/model-routing.test.js.map +1 -1
  65. package/dist/__tests__/omc-tools-server-interop.test.js +1 -1
  66. package/dist/__tests__/omc-tools-server-interop.test.js.map +1 -1
  67. package/dist/__tests__/pre-tool-enforcer.test.d.ts +2 -0
  68. package/dist/__tests__/pre-tool-enforcer.test.d.ts.map +1 -0
  69. package/dist/__tests__/pre-tool-enforcer.test.js +194 -0
  70. package/dist/__tests__/pre-tool-enforcer.test.js.map +1 -0
  71. package/dist/__tests__/prompt-injection.test.js +0 -26
  72. package/dist/__tests__/prompt-injection.test.js.map +1 -1
  73. package/dist/__tests__/purge-stale-cache.test.js +3 -2
  74. package/dist/__tests__/purge-stale-cache.test.js.map +1 -1
  75. package/dist/__tests__/run-cjs-graceful-fallback.test.d.ts +2 -0
  76. package/dist/__tests__/run-cjs-graceful-fallback.test.d.ts.map +1 -0
  77. package/dist/__tests__/run-cjs-graceful-fallback.test.js +167 -0
  78. package/dist/__tests__/run-cjs-graceful-fallback.test.js.map +1 -0
  79. package/dist/__tests__/session-start-cache-cleanup.test.d.ts +2 -0
  80. package/dist/__tests__/session-start-cache-cleanup.test.d.ts.map +1 -0
  81. package/dist/__tests__/session-start-cache-cleanup.test.js +150 -0
  82. package/dist/__tests__/session-start-cache-cleanup.test.js.map +1 -0
  83. package/dist/__tests__/skills.test.js +10 -8
  84. package/dist/__tests__/skills.test.js.map +1 -1
  85. package/dist/__tests__/team-server-validation.test.d.ts +2 -0
  86. package/dist/__tests__/team-server-validation.test.d.ts.map +1 -0
  87. package/dist/__tests__/team-server-validation.test.js +122 -0
  88. package/dist/__tests__/team-server-validation.test.js.map +1 -0
  89. package/dist/agents/index.d.ts +0 -1
  90. package/dist/agents/index.d.ts.map +1 -1
  91. package/dist/agents/index.js +0 -2
  92. package/dist/agents/index.js.map +1 -1
  93. package/dist/agents/prompt-helpers.d.ts +74 -0
  94. package/dist/agents/prompt-helpers.d.ts.map +1 -0
  95. package/dist/agents/prompt-helpers.js +187 -0
  96. package/dist/agents/prompt-helpers.js.map +1 -0
  97. package/dist/agents/utils.d.ts +1 -5
  98. package/dist/agents/utils.d.ts.map +1 -1
  99. package/dist/agents/utils.js +1 -34
  100. package/dist/agents/utils.js.map +1 -1
  101. package/dist/cli/__tests__/launch.test.d.ts +1 -2
  102. package/dist/cli/__tests__/launch.test.d.ts.map +1 -1
  103. package/dist/cli/__tests__/launch.test.js +442 -48
  104. package/dist/cli/__tests__/launch.test.js.map +1 -1
  105. package/dist/cli/__tests__/teleport-help.test.d.ts +2 -0
  106. package/dist/cli/__tests__/teleport-help.test.d.ts.map +1 -0
  107. package/dist/cli/__tests__/teleport-help.test.js +17 -0
  108. package/dist/cli/__tests__/teleport-help.test.js.map +1 -0
  109. package/dist/cli/commands/teleport.d.ts +2 -1
  110. package/dist/cli/commands/teleport.d.ts.map +1 -1
  111. package/dist/cli/commands/teleport.js +6 -3
  112. package/dist/cli/commands/teleport.js.map +1 -1
  113. package/dist/cli/index.js +40 -290
  114. package/dist/cli/index.js.map +1 -1
  115. package/dist/cli/launch.d.ts +83 -3
  116. package/dist/cli/launch.d.ts.map +1 -1
  117. package/dist/cli/launch.js +213 -48
  118. package/dist/cli/launch.js.map +1 -1
  119. package/dist/cli/win32-warning.d.ts +6 -0
  120. package/dist/cli/win32-warning.d.ts.map +1 -0
  121. package/dist/cli/win32-warning.js +15 -0
  122. package/dist/cli/win32-warning.js.map +1 -0
  123. package/dist/config/loader.d.ts +9 -1
  124. package/dist/config/loader.d.ts.map +1 -1
  125. package/dist/config/loader.js +29 -19
  126. package/dist/config/loader.js.map +1 -1
  127. package/dist/config/models.d.ts +33 -0
  128. package/dist/config/models.d.ts.map +1 -0
  129. package/dist/config/models.js +49 -0
  130. package/dist/config/models.js.map +1 -0
  131. package/dist/constants/names.d.ts +2 -0
  132. package/dist/constants/names.d.ts.map +1 -1
  133. package/dist/constants/names.js +2 -0
  134. package/dist/constants/names.js.map +1 -1
  135. package/dist/features/auto-update.d.ts.map +1 -1
  136. package/dist/features/auto-update.js +21 -11
  137. package/dist/features/auto-update.js.map +1 -1
  138. package/dist/features/background-agent/manager.d.ts.map +1 -1
  139. package/dist/features/background-agent/manager.js +1 -2
  140. package/dist/features/background-agent/manager.js.map +1 -1
  141. package/dist/features/boulder-state/storage.d.ts.map +1 -1
  142. package/dist/features/boulder-state/storage.js +9 -5
  143. package/dist/features/boulder-state/storage.js.map +1 -1
  144. package/dist/features/boulder-state/types.d.ts +4 -0
  145. package/dist/features/boulder-state/types.d.ts.map +1 -1
  146. package/dist/features/builtin-skills/skills.d.ts.map +1 -1
  147. package/dist/features/builtin-skills/skills.js +25 -78
  148. package/dist/features/builtin-skills/skills.js.map +1 -1
  149. package/dist/features/delegation-enforcer.d.ts.map +1 -1
  150. package/dist/features/delegation-enforcer.js +4 -1
  151. package/dist/features/delegation-enforcer.js.map +1 -1
  152. package/dist/features/delegation-routing/__tests__/resolver.test.js +47 -122
  153. package/dist/features/delegation-routing/__tests__/resolver.test.js.map +1 -1
  154. package/dist/features/delegation-routing/resolver.d.ts.map +1 -1
  155. package/dist/features/delegation-routing/resolver.js +24 -47
  156. package/dist/features/delegation-routing/resolver.js.map +1 -1
  157. package/dist/features/delegation-routing/types.d.ts.map +1 -1
  158. package/dist/features/delegation-routing/types.js +2 -0
  159. package/dist/features/delegation-routing/types.js.map +1 -1
  160. package/dist/features/model-routing/external-model-policy.d.ts.map +1 -1
  161. package/dist/features/model-routing/external-model-policy.js.map +1 -1
  162. package/dist/features/model-routing/router.d.ts.map +1 -1
  163. package/dist/features/model-routing/router.js +12 -2
  164. package/dist/features/model-routing/router.js.map +1 -1
  165. package/dist/features/model-routing/types.d.ts +5 -1
  166. package/dist/features/model-routing/types.d.ts.map +1 -1
  167. package/dist/features/model-routing/types.js +7 -6
  168. package/dist/features/model-routing/types.js.map +1 -1
  169. package/dist/features/rate-limit-wait/daemon.d.ts.map +1 -1
  170. package/dist/features/rate-limit-wait/daemon.js +40 -4
  171. package/dist/features/rate-limit-wait/daemon.js.map +1 -1
  172. package/dist/features/task-decomposer/index.js +14 -4
  173. package/dist/features/task-decomposer/index.js.map +1 -1
  174. package/dist/hooks/__tests__/bridge-openclaw.test.d.ts +2 -0
  175. package/dist/hooks/__tests__/bridge-openclaw.test.d.ts.map +1 -0
  176. package/dist/hooks/__tests__/bridge-openclaw.test.js +124 -0
  177. package/dist/hooks/__tests__/bridge-openclaw.test.js.map +1 -0
  178. package/dist/hooks/__tests__/bridge-security.test.js +1 -1
  179. package/dist/hooks/__tests__/bridge-security.test.js.map +1 -1
  180. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
  181. package/dist/hooks/auto-slash-command/executor.js +38 -61
  182. package/dist/hooks/auto-slash-command/executor.js.map +1 -1
  183. package/dist/hooks/bridge.d.ts +11 -0
  184. package/dist/hooks/bridge.d.ts.map +1 -1
  185. package/dist/hooks/bridge.js +154 -82
  186. package/dist/hooks/bridge.js.map +1 -1
  187. package/dist/hooks/comment-checker/index.d.ts.map +1 -1
  188. package/dist/hooks/comment-checker/index.js +3 -1
  189. package/dist/hooks/comment-checker/index.js.map +1 -1
  190. package/dist/hooks/keyword-detector/__tests__/index.test.js +348 -1
  191. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
  192. package/dist/hooks/keyword-detector/index.d.ts +29 -0
  193. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  194. package/dist/hooks/keyword-detector/index.js +123 -1
  195. package/dist/hooks/keyword-detector/index.js.map +1 -1
  196. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +40 -0
  197. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
  198. package/dist/hooks/mode-registry/index.d.ts.map +1 -1
  199. package/dist/hooks/mode-registry/index.js +135 -52
  200. package/dist/hooks/mode-registry/index.js.map +1 -1
  201. package/dist/hooks/notepad/index.d.ts.map +1 -1
  202. package/dist/hooks/notepad/index.js +5 -3
  203. package/dist/hooks/notepad/index.js.map +1 -1
  204. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts +2 -0
  205. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts.map +1 -0
  206. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js +73 -0
  207. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js.map +1 -0
  208. package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js +89 -13
  209. package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js.map +1 -1
  210. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts +2 -0
  211. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts.map +1 -0
  212. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js +156 -0
  213. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js.map +1 -0
  214. package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts +2 -3
  215. package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts.map +1 -1
  216. package/dist/hooks/persistent-mode/idle-cooldown.test.js +19 -4
  217. package/dist/hooks/persistent-mode/idle-cooldown.test.js.map +1 -1
  218. package/dist/hooks/persistent-mode/index.d.ts +2 -2
  219. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  220. package/dist/hooks/persistent-mode/index.js +144 -26
  221. package/dist/hooks/persistent-mode/index.js.map +1 -1
  222. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
  223. package/dist/hooks/plugin-patterns/index.js +22 -31
  224. package/dist/hooks/plugin-patterns/index.js.map +1 -1
  225. package/dist/hooks/pre-compact/index.js +1 -1
  226. package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -1
  227. package/dist/hooks/preemptive-compaction/index.js +3 -1
  228. package/dist/hooks/preemptive-compaction/index.js.map +1 -1
  229. package/dist/hooks/project-memory/index.d.ts.map +1 -1
  230. package/dist/hooks/project-memory/index.js +9 -0
  231. package/dist/hooks/project-memory/index.js.map +1 -1
  232. package/dist/hooks/project-memory/learner.d.ts.map +1 -1
  233. package/dist/hooks/project-memory/learner.js +107 -85
  234. package/dist/hooks/project-memory/learner.js.map +1 -1
  235. package/dist/hooks/project-memory/storage.d.ts.map +1 -1
  236. package/dist/hooks/project-memory/storage.js +3 -2
  237. package/dist/hooks/project-memory/storage.js.map +1 -1
  238. package/dist/hooks/recovery/context-window.d.ts +4 -0
  239. package/dist/hooks/recovery/context-window.d.ts.map +1 -1
  240. package/dist/hooks/recovery/context-window.js +22 -1
  241. package/dist/hooks/recovery/context-window.js.map +1 -1
  242. package/dist/hooks/recovery/session-recovery.js +1 -1
  243. package/dist/hooks/recovery/session-recovery.js.map +1 -1
  244. package/dist/hooks/session-end/index.d.ts.map +1 -1
  245. package/dist/hooks/session-end/index.js +13 -22
  246. package/dist/hooks/session-end/index.js.map +1 -1
  247. package/dist/hooks/setup/__tests__/windows-patch.test.d.ts +2 -0
  248. package/dist/hooks/setup/__tests__/windows-patch.test.d.ts.map +1 -0
  249. package/dist/hooks/setup/__tests__/windows-patch.test.js +110 -0
  250. package/dist/hooks/setup/__tests__/windows-patch.test.js.map +1 -0
  251. package/dist/hooks/setup/index.d.ts +18 -0
  252. package/dist/hooks/setup/index.d.ts.map +1 -1
  253. package/dist/hooks/setup/index.js +59 -1
  254. package/dist/hooks/setup/index.js.map +1 -1
  255. package/dist/hooks/skill-bridge.cjs +1 -0
  256. package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts +2 -0
  257. package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts.map +1 -0
  258. package/dist/hooks/skill-state/__tests__/skill-state.test.js +301 -0
  259. package/dist/hooks/skill-state/__tests__/skill-state.test.js.map +1 -0
  260. package/dist/hooks/skill-state/index.d.ts +79 -0
  261. package/dist/hooks/skill-state/index.d.ts.map +1 -0
  262. package/dist/hooks/skill-state/index.js +245 -0
  263. package/dist/hooks/skill-state/index.js.map +1 -0
  264. package/dist/hooks/team-pipeline/state.d.ts.map +1 -1
  265. package/dist/hooks/team-pipeline/state.js +5 -0
  266. package/dist/hooks/team-pipeline/state.js.map +1 -1
  267. package/dist/hooks/todo-continuation/index.d.ts +17 -0
  268. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  269. package/dist/hooks/todo-continuation/index.js +44 -2
  270. package/dist/hooks/todo-continuation/index.js.map +1 -1
  271. package/dist/hud/elements/call-counts.d.ts.map +1 -1
  272. package/dist/hud/elements/call-counts.js +6 -4
  273. package/dist/hud/elements/call-counts.js.map +1 -1
  274. package/dist/hud/elements/index.d.ts +1 -0
  275. package/dist/hud/elements/index.d.ts.map +1 -1
  276. package/dist/hud/elements/index.js +1 -0
  277. package/dist/hud/elements/index.js.map +1 -1
  278. package/dist/hud/elements/prompt-time.d.ts +13 -0
  279. package/dist/hud/elements/prompt-time.d.ts.map +1 -0
  280. package/dist/hud/elements/prompt-time.js +21 -0
  281. package/dist/hud/elements/prompt-time.js.map +1 -0
  282. package/dist/hud/index.d.ts +2 -1
  283. package/dist/hud/index.d.ts.map +1 -1
  284. package/dist/hud/index.js +40 -215
  285. package/dist/hud/index.js.map +1 -1
  286. package/dist/hud/render.d.ts.map +1 -1
  287. package/dist/hud/render.js +7 -108
  288. package/dist/hud/render.js.map +1 -1
  289. package/dist/hud/state.d.ts.map +1 -1
  290. package/dist/hud/state.js +4 -3
  291. package/dist/hud/state.js.map +1 -1
  292. package/dist/hud/stdin.d.ts +10 -0
  293. package/dist/hud/stdin.d.ts.map +1 -1
  294. package/dist/hud/stdin.js +43 -0
  295. package/dist/hud/stdin.js.map +1 -1
  296. package/dist/hud/types.d.ts +6 -18
  297. package/dist/hud/types.d.ts.map +1 -1
  298. package/dist/hud/types.js +6 -46
  299. package/dist/hud/types.js.map +1 -1
  300. package/dist/index.d.ts +1 -1
  301. package/dist/index.d.ts.map +1 -1
  302. package/dist/index.js +2 -11
  303. package/dist/index.js.map +1 -1
  304. package/dist/installer/hooks.d.ts +5 -0
  305. package/dist/installer/hooks.d.ts.map +1 -1
  306. package/dist/installer/hooks.js +8 -0
  307. package/dist/installer/hooks.js.map +1 -1
  308. package/dist/installer/index.d.ts.map +1 -1
  309. package/dist/installer/index.js +26 -11
  310. package/dist/installer/index.js.map +1 -1
  311. package/dist/interop/omx-team-state.d.ts.map +1 -1
  312. package/dist/interop/omx-team-state.js +38 -6
  313. package/dist/interop/omx-team-state.js.map +1 -1
  314. package/dist/interop/shared-state.d.ts.map +1 -1
  315. package/dist/interop/shared-state.js +58 -7
  316. package/dist/interop/shared-state.js.map +1 -1
  317. package/dist/lib/__tests__/worktree-paths.test.js +250 -1
  318. package/dist/lib/__tests__/worktree-paths.test.js.map +1 -1
  319. package/dist/lib/job-state-db.d.ts +150 -0
  320. package/dist/lib/job-state-db.d.ts.map +1 -0
  321. package/dist/lib/job-state-db.js +650 -0
  322. package/dist/lib/job-state-db.js.map +1 -0
  323. package/dist/lib/mode-names.d.ts +46 -0
  324. package/dist/lib/mode-names.d.ts.map +1 -0
  325. package/dist/lib/mode-names.js +73 -0
  326. package/dist/lib/mode-names.js.map +1 -0
  327. package/dist/lib/session-isolation.d.ts +32 -0
  328. package/dist/lib/session-isolation.d.ts.map +1 -0
  329. package/dist/lib/session-isolation.js +39 -0
  330. package/dist/lib/session-isolation.js.map +1 -0
  331. package/dist/lib/worktree-paths.d.ts +38 -8
  332. package/dist/lib/worktree-paths.d.ts.map +1 -1
  333. package/dist/lib/worktree-paths.js +124 -56
  334. package/dist/lib/worktree-paths.js.map +1 -1
  335. package/dist/mcp/__tests__/team-cleanup.test.d.ts +11 -0
  336. package/dist/mcp/__tests__/team-cleanup.test.d.ts.map +1 -0
  337. package/dist/mcp/__tests__/team-cleanup.test.js +228 -0
  338. package/dist/mcp/__tests__/team-cleanup.test.js.map +1 -0
  339. package/dist/mcp/cli-detection.d.ts +4 -8
  340. package/dist/mcp/cli-detection.d.ts.map +1 -1
  341. package/dist/mcp/cli-detection.js +5 -8
  342. package/dist/mcp/cli-detection.js.map +1 -1
  343. package/dist/mcp/codex-request-normalizer.js +59 -0
  344. package/dist/mcp/codex-server.js +16 -4
  345. package/dist/mcp/codex-standalone-server.js +13 -4
  346. package/dist/mcp/index.d.ts +2 -4
  347. package/dist/mcp/index.d.ts.map +1 -1
  348. package/dist/mcp/index.js +1 -5
  349. package/dist/mcp/index.js.map +1 -1
  350. package/dist/mcp/job-management.d.ts.map +1 -1
  351. package/dist/mcp/job-management.js +11 -9
  352. package/dist/mcp/job-management.js.map +1 -1
  353. package/dist/mcp/job-state-db.d.ts +1 -149
  354. package/dist/mcp/job-state-db.d.ts.map +1 -1
  355. package/dist/mcp/job-state-db.js +2 -649
  356. package/dist/mcp/job-state-db.js.map +1 -1
  357. package/dist/mcp/mcp-config.d.ts +1 -1
  358. package/dist/mcp/mcp-config.js +1 -1
  359. package/dist/mcp/prompt-injection.d.ts +14 -76
  360. package/dist/mcp/prompt-injection.d.ts.map +1 -1
  361. package/dist/mcp/prompt-injection.js +34 -175
  362. package/dist/mcp/prompt-injection.js.map +1 -1
  363. package/dist/mcp/standalone-server.js +2 -0
  364. package/dist/mcp/standalone-server.js.map +1 -1
  365. package/dist/mcp/team-server.d.ts +16 -0
  366. package/dist/mcp/team-server.d.ts.map +1 -0
  367. package/dist/mcp/team-server.js +356 -0
  368. package/dist/mcp/team-server.js.map +1 -0
  369. package/dist/notifications/__tests__/formatter.test.js +62 -0
  370. package/dist/notifications/__tests__/formatter.test.js.map +1 -1
  371. package/dist/notifications/__tests__/hook-config.test.d.ts +14 -0
  372. package/dist/notifications/__tests__/hook-config.test.d.ts.map +1 -0
  373. package/dist/notifications/__tests__/hook-config.test.js +210 -0
  374. package/dist/notifications/__tests__/hook-config.test.js.map +1 -0
  375. package/dist/notifications/__tests__/platform-gating.test.d.ts +12 -0
  376. package/dist/notifications/__tests__/platform-gating.test.d.ts.map +1 -0
  377. package/dist/notifications/__tests__/platform-gating.test.js +140 -0
  378. package/dist/notifications/__tests__/platform-gating.test.js.map +1 -0
  379. package/dist/notifications/__tests__/template-engine.test.d.ts +13 -0
  380. package/dist/notifications/__tests__/template-engine.test.d.ts.map +1 -0
  381. package/dist/notifications/__tests__/template-engine.test.js +378 -0
  382. package/dist/notifications/__tests__/template-engine.test.js.map +1 -0
  383. package/dist/notifications/config.d.ts.map +1 -1
  384. package/dist/notifications/config.js +54 -18
  385. package/dist/notifications/config.js.map +1 -1
  386. package/dist/notifications/dispatcher.d.ts +2 -2
  387. package/dist/notifications/dispatcher.d.ts.map +1 -1
  388. package/dist/notifications/dispatcher.js +10 -6
  389. package/dist/notifications/dispatcher.js.map +1 -1
  390. package/dist/notifications/formatter.d.ts.map +1 -1
  391. package/dist/notifications/formatter.js +22 -0
  392. package/dist/notifications/formatter.js.map +1 -1
  393. package/dist/notifications/hook-config-types.d.ts +44 -0
  394. package/dist/notifications/hook-config-types.d.ts.map +1 -0
  395. package/dist/notifications/hook-config-types.js +8 -0
  396. package/dist/notifications/hook-config-types.js.map +1 -0
  397. package/dist/notifications/hook-config.d.ts +36 -0
  398. package/dist/notifications/hook-config.d.ts.map +1 -0
  399. package/dist/notifications/hook-config.js +95 -0
  400. package/dist/notifications/hook-config.js.map +1 -0
  401. package/dist/notifications/index.d.ts +3 -0
  402. package/dist/notifications/index.d.ts.map +1 -1
  403. package/dist/notifications/index.js +31 -3
  404. package/dist/notifications/index.js.map +1 -1
  405. package/dist/notifications/reply-listener.d.ts.map +1 -1
  406. package/dist/notifications/reply-listener.js +1 -0
  407. package/dist/notifications/reply-listener.js.map +1 -1
  408. package/dist/notifications/session-registry.d.ts.map +1 -1
  409. package/dist/notifications/session-registry.js +13 -5
  410. package/dist/notifications/session-registry.js.map +1 -1
  411. package/dist/notifications/template-engine.d.ts +34 -0
  412. package/dist/notifications/template-engine.d.ts.map +1 -0
  413. package/dist/notifications/template-engine.js +248 -0
  414. package/dist/notifications/template-engine.js.map +1 -0
  415. package/dist/notifications/types.d.ts +0 -2
  416. package/dist/notifications/types.d.ts.map +1 -1
  417. package/dist/openclaw/__tests__/config.test.d.ts +2 -0
  418. package/dist/openclaw/__tests__/config.test.d.ts.map +1 -0
  419. package/dist/openclaw/__tests__/config.test.js +200 -0
  420. package/dist/openclaw/__tests__/config.test.js.map +1 -0
  421. package/dist/openclaw/__tests__/dispatcher.test.d.ts +2 -0
  422. package/dist/openclaw/__tests__/dispatcher.test.d.ts.map +1 -0
  423. package/dist/openclaw/__tests__/dispatcher.test.js +348 -0
  424. package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -0
  425. package/dist/openclaw/__tests__/index.test.d.ts +2 -0
  426. package/dist/openclaw/__tests__/index.test.d.ts.map +1 -0
  427. package/dist/openclaw/__tests__/index.test.js +235 -0
  428. package/dist/openclaw/__tests__/index.test.js.map +1 -0
  429. package/dist/openclaw/config.d.ts +33 -0
  430. package/dist/openclaw/config.d.ts.map +1 -0
  431. package/dist/openclaw/config.js +83 -0
  432. package/dist/openclaw/config.js.map +1 -0
  433. package/dist/openclaw/dispatcher.d.ts +47 -0
  434. package/dist/openclaw/dispatcher.d.ts.map +1 -0
  435. package/dist/openclaw/dispatcher.js +138 -0
  436. package/dist/openclaw/dispatcher.js.map +1 -0
  437. package/dist/openclaw/index.d.ts +25 -0
  438. package/dist/openclaw/index.d.ts.map +1 -0
  439. package/dist/openclaw/index.js +132 -0
  440. package/dist/openclaw/index.js.map +1 -0
  441. package/dist/openclaw/types.d.ts +102 -0
  442. package/dist/openclaw/types.d.ts.map +1 -0
  443. package/dist/openclaw/types.js +8 -0
  444. package/dist/openclaw/types.js.map +1 -0
  445. package/dist/platform/index.d.ts +5 -0
  446. package/dist/platform/index.d.ts.map +1 -1
  447. package/dist/platform/index.js +17 -0
  448. package/dist/platform/index.js.map +1 -1
  449. package/dist/platform/process-utils.d.ts.map +1 -1
  450. package/dist/platform/process-utils.js +55 -9
  451. package/dist/platform/process-utils.js.map +1 -1
  452. package/dist/shared/types.d.ts +7 -5
  453. package/dist/shared/types.d.ts.map +1 -1
  454. package/dist/team/__tests__/bridge-integration.test.js +10 -8
  455. package/dist/team/__tests__/bridge-integration.test.js.map +1 -1
  456. package/dist/team/__tests__/edge-cases.test.js +40 -29
  457. package/dist/team/__tests__/edge-cases.test.js.map +1 -1
  458. package/dist/team/__tests__/idle-nudge.test.d.ts +11 -0
  459. package/dist/team/__tests__/idle-nudge.test.d.ts.map +1 -0
  460. package/dist/team/__tests__/idle-nudge.test.js +282 -0
  461. package/dist/team/__tests__/idle-nudge.test.js.map +1 -0
  462. package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js +2 -2
  463. package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js.map +1 -1
  464. package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts +2 -0
  465. package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts.map +1 -0
  466. package/dist/team/__tests__/mcp-team-bridge.usage.test.js +49 -0
  467. package/dist/team/__tests__/mcp-team-bridge.usage.test.js.map +1 -0
  468. package/dist/team/__tests__/model-contract.test.d.ts +2 -0
  469. package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
  470. package/dist/team/__tests__/model-contract.test.js +121 -0
  471. package/dist/team/__tests__/model-contract.test.js.map +1 -0
  472. package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
  473. package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
  474. package/dist/team/__tests__/phase-controller.test.js +45 -0
  475. package/dist/team/__tests__/phase-controller.test.js.map +1 -0
  476. package/dist/team/__tests__/runtime-assign.test.d.ts +2 -0
  477. package/dist/team/__tests__/runtime-assign.test.d.ts.map +1 -0
  478. package/dist/team/__tests__/runtime-assign.test.js +43 -0
  479. package/dist/team/__tests__/runtime-assign.test.js.map +1 -0
  480. package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts +2 -0
  481. package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts.map +1 -0
  482. package/dist/team/__tests__/runtime-gemini-prompt.test.js +153 -0
  483. package/dist/team/__tests__/runtime-gemini-prompt.test.js.map +1 -0
  484. package/dist/team/__tests__/runtime-prompt-mode.test.d.ts +2 -0
  485. package/dist/team/__tests__/runtime-prompt-mode.test.d.ts.map +1 -0
  486. package/dist/team/__tests__/runtime-prompt-mode.test.js +162 -0
  487. package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -0
  488. package/dist/team/__tests__/runtime.test.d.ts +2 -0
  489. package/dist/team/__tests__/runtime.test.d.ts.map +1 -0
  490. package/dist/team/__tests__/runtime.test.js +37 -0
  491. package/dist/team/__tests__/runtime.test.js.map +1 -0
  492. package/dist/team/__tests__/task-file-ops.test.js +63 -59
  493. package/dist/team/__tests__/task-file-ops.test.js.map +1 -1
  494. package/dist/team/__tests__/team-name.test.d.ts +2 -0
  495. package/dist/team/__tests__/team-name.test.d.ts.map +1 -0
  496. package/dist/team/__tests__/team-name.test.js +18 -0
  497. package/dist/team/__tests__/team-name.test.js.map +1 -0
  498. package/dist/team/__tests__/team-status.test.js +52 -6
  499. package/dist/team/__tests__/team-status.test.js.map +1 -1
  500. package/dist/team/__tests__/tmux-comm.test.d.ts +2 -0
  501. package/dist/team/__tests__/tmux-comm.test.d.ts.map +1 -0
  502. package/dist/team/__tests__/tmux-comm.test.js +26 -0
  503. package/dist/team/__tests__/tmux-comm.test.js.map +1 -0
  504. package/dist/team/__tests__/tmux-session.create-team.test.d.ts +2 -0
  505. package/dist/team/__tests__/tmux-session.create-team.test.d.ts.map +1 -0
  506. package/dist/team/__tests__/tmux-session.create-team.test.js +104 -0
  507. package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -0
  508. package/dist/team/__tests__/tmux-session.spawn.test.d.ts +2 -0
  509. package/dist/team/__tests__/tmux-session.spawn.test.d.ts.map +1 -0
  510. package/dist/team/__tests__/tmux-session.spawn.test.js +61 -0
  511. package/dist/team/__tests__/tmux-session.spawn.test.js.map +1 -0
  512. package/dist/team/__tests__/tmux-session.test.js +161 -2
  513. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  514. package/dist/team/__tests__/worker-bootstrap.test.d.ts +2 -0
  515. package/dist/team/__tests__/worker-bootstrap.test.d.ts.map +1 -0
  516. package/dist/team/__tests__/worker-bootstrap.test.js +58 -0
  517. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -0
  518. package/dist/team/bridge-entry.d.ts.map +1 -1
  519. package/dist/team/bridge-entry.js +4 -0
  520. package/dist/team/bridge-entry.js.map +1 -1
  521. package/dist/team/capabilities.d.ts.map +1 -1
  522. package/dist/team/capabilities.js +3 -0
  523. package/dist/team/capabilities.js.map +1 -1
  524. package/dist/team/cli-detection.d.ts +9 -0
  525. package/dist/team/cli-detection.d.ts.map +1 -0
  526. package/dist/team/cli-detection.js +29 -0
  527. package/dist/team/cli-detection.js.map +1 -0
  528. package/dist/team/idle-nudge.d.ts +53 -0
  529. package/dist/team/idle-nudge.d.ts.map +1 -0
  530. package/dist/team/idle-nudge.js +124 -0
  531. package/dist/team/idle-nudge.js.map +1 -0
  532. package/dist/team/inbox-outbox.d.ts.map +1 -1
  533. package/dist/team/inbox-outbox.js +7 -3
  534. package/dist/team/inbox-outbox.js.map +1 -1
  535. package/dist/team/index.d.ts +14 -1
  536. package/dist/team/index.d.ts.map +1 -1
  537. package/dist/team/index.js +12 -1
  538. package/dist/team/index.js.map +1 -1
  539. package/dist/team/mcp-team-bridge.d.ts +9 -0
  540. package/dist/team/mcp-team-bridge.d.ts.map +1 -1
  541. package/dist/team/mcp-team-bridge.js +82 -3
  542. package/dist/team/mcp-team-bridge.js.map +1 -1
  543. package/dist/team/model-contract.d.ts +37 -0
  544. package/dist/team/model-contract.d.ts.map +1 -0
  545. package/dist/team/model-contract.js +139 -0
  546. package/dist/team/model-contract.js.map +1 -0
  547. package/dist/team/phase-controller.d.ts +33 -0
  548. package/dist/team/phase-controller.d.ts.map +1 -0
  549. package/dist/team/phase-controller.js +79 -0
  550. package/dist/team/phase-controller.js.map +1 -0
  551. package/dist/team/runtime-cli.d.ts +9 -0
  552. package/dist/team/runtime-cli.d.ts.map +1 -0
  553. package/dist/team/runtime-cli.js +188 -0
  554. package/dist/team/runtime-cli.js.map +1 -0
  555. package/dist/team/runtime.d.ts +95 -0
  556. package/dist/team/runtime.d.ts.map +1 -0
  557. package/dist/team/runtime.js +692 -0
  558. package/dist/team/runtime.js.map +1 -0
  559. package/dist/team/state-paths.d.ts +72 -0
  560. package/dist/team/state-paths.d.ts.map +1 -0
  561. package/dist/team/state-paths.js +87 -0
  562. package/dist/team/state-paths.js.map +1 -0
  563. package/dist/team/task-file-ops.d.ts +27 -7
  564. package/dist/team/task-file-ops.d.ts.map +1 -1
  565. package/dist/team/task-file-ops.js +116 -55
  566. package/dist/team/task-file-ops.js.map +1 -1
  567. package/dist/team/team-name.d.ts +2 -0
  568. package/dist/team/team-name.d.ts.map +1 -0
  569. package/dist/team/team-name.js +8 -0
  570. package/dist/team/team-name.js.map +1 -0
  571. package/dist/team/team-registration.d.ts +1 -1
  572. package/dist/team/team-registration.d.ts.map +1 -1
  573. package/dist/team/team-registration.js.map +1 -1
  574. package/dist/team/team-status.d.ts +11 -1
  575. package/dist/team/team-status.d.ts.map +1 -1
  576. package/dist/team/team-status.js +32 -3
  577. package/dist/team/team-status.js.map +1 -1
  578. package/dist/team/tmux-comm.d.ts +36 -0
  579. package/dist/team/tmux-comm.d.ts.map +1 -0
  580. package/dist/team/tmux-comm.js +115 -0
  581. package/dist/team/tmux-comm.js.map +1 -0
  582. package/dist/team/tmux-session.d.ts +92 -0
  583. package/dist/team/tmux-session.d.ts.map +1 -1
  584. package/dist/team/tmux-session.js +533 -2
  585. package/dist/team/tmux-session.js.map +1 -1
  586. package/dist/team/types.d.ts +10 -3
  587. package/dist/team/types.d.ts.map +1 -1
  588. package/dist/team/unified-team.d.ts.map +1 -1
  589. package/dist/team/unified-team.js +13 -3
  590. package/dist/team/unified-team.js.map +1 -1
  591. package/dist/team/worker-bootstrap.d.ts +39 -0
  592. package/dist/team/worker-bootstrap.d.ts.map +1 -0
  593. package/dist/team/worker-bootstrap.js +117 -0
  594. package/dist/team/worker-bootstrap.js.map +1 -0
  595. package/dist/team/worker-health.d.ts.map +1 -1
  596. package/dist/team/worker-health.js +15 -3
  597. package/dist/team/worker-health.js.map +1 -1
  598. package/dist/tools/ast-tools.js +1 -1
  599. package/dist/tools/ast-tools.js.map +1 -1
  600. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  601. package/dist/tools/diagnostics/lsp-aggregator.js +4 -2
  602. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  603. package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts +2 -0
  604. package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts.map +1 -0
  605. package/dist/tools/lsp/__tests__/client-handle-data.test.js +138 -0
  606. package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -0
  607. package/dist/tools/lsp/client.d.ts +13 -0
  608. package/dist/tools/lsp/client.d.ts.map +1 -1
  609. package/dist/tools/lsp/client.js +64 -8
  610. package/dist/tools/lsp/client.js.map +1 -1
  611. package/dist/tools/lsp/servers.d.ts.map +1 -1
  612. package/dist/tools/lsp/servers.js +4 -9
  613. package/dist/tools/lsp/servers.js.map +1 -1
  614. package/dist/tools/lsp-tools.d.ts.map +1 -1
  615. package/dist/tools/lsp-tools.js +4 -0
  616. package/dist/tools/lsp-tools.js.map +1 -1
  617. package/dist/tools/python-repl/bridge-manager.d.ts.map +1 -1
  618. package/dist/tools/python-repl/bridge-manager.js +15 -1
  619. package/dist/tools/python-repl/bridge-manager.js.map +1 -1
  620. package/dist/tools/python-repl/session-lock.d.ts.map +1 -1
  621. package/dist/tools/python-repl/session-lock.js +35 -15
  622. package/dist/tools/python-repl/session-lock.js.map +1 -1
  623. package/dist/tools/state-tools.d.ts.map +1 -1
  624. package/dist/tools/state-tools.js +10 -0
  625. package/dist/tools/state-tools.js.map +1 -1
  626. package/dist/utils/__tests__/frontmatter.test.d.ts +2 -0
  627. package/dist/utils/__tests__/frontmatter.test.d.ts.map +1 -0
  628. package/dist/utils/__tests__/frontmatter.test.js +147 -0
  629. package/dist/utils/__tests__/frontmatter.test.js.map +1 -0
  630. package/dist/utils/frontmatter.d.ts +24 -0
  631. package/dist/utils/frontmatter.d.ts.map +1 -0
  632. package/dist/utils/frontmatter.js +62 -0
  633. package/dist/utils/frontmatter.js.map +1 -0
  634. package/dist/utils/paths.d.ts.map +1 -1
  635. package/dist/utils/paths.js +4 -2
  636. package/dist/utils/paths.js.map +1 -1
  637. package/dist/utils/string-width.d.ts.map +1 -1
  638. package/dist/utils/string-width.js +15 -4
  639. package/dist/utils/string-width.js.map +1 -1
  640. package/dist/verification/tier-selector.js +1 -1
  641. package/dist/verification/tier-selector.js.map +1 -1
  642. package/docs/AGENTS.md +4 -2
  643. package/docs/CLAUDE.md +8 -48
  644. package/docs/MIGRATION.md +114 -0
  645. package/docs/REFERENCE.md +35 -102
  646. package/hooks/hooks.json +23 -23
  647. package/package.json +8 -8
  648. package/scripts/build-runtime-cli.mjs +24 -0
  649. package/scripts/build-team-server.mjs +28 -0
  650. package/scripts/cleanup-orphans.mjs +22 -5
  651. package/scripts/context-safety.mjs +5 -1
  652. package/scripts/demo-team.mjs +26 -0
  653. package/scripts/keyword-detector.mjs +6 -76
  654. package/scripts/openclaw-gateway-demo.mjs +168 -0
  655. package/scripts/persistent-mode.cjs +30 -4
  656. package/scripts/persistent-mode.mjs +48 -3
  657. package/scripts/plugin-setup.mjs +66 -3
  658. package/scripts/post-tool-use-failure.mjs +20 -2
  659. package/scripts/post-tool-verifier.mjs +57 -6
  660. package/scripts/pre-tool-enforcer.mjs +125 -5
  661. package/scripts/run.cjs +114 -0
  662. package/scripts/session-start.mjs +56 -7
  663. package/scripts/status.mjs +144 -0
  664. package/scripts/test-codex-gemini-team.mjs +78 -0
  665. package/skills/AGENTS.md +5 -2
  666. package/skills/analyze/SKILL.md +5 -11
  667. package/skills/autopilot/SKILL.md +5 -6
  668. package/skills/ccg/SKILL.md +88 -99
  669. package/skills/configure-notifications/SKILL.md +177 -0
  670. package/skills/configure-openclaw/SKILL.md +320 -0
  671. package/skills/external-context/SKILL.md +7 -83
  672. package/skills/hud/SKILL.md +68 -46
  673. package/skills/omc-setup/SKILL.md +58 -19
  674. package/skills/omc-teams/SKILL.md +178 -0
  675. package/skills/pipeline/SKILL.md +4 -4
  676. package/skills/plan/SKILL.md +28 -16
  677. package/skills/ralph/SKILL.md +3 -4
  678. package/skills/ralph-init/SKILL.md +3 -1
  679. package/skills/ralplan/SKILL.md +93 -8
  680. package/skills/security-review/SKILL.md +5 -6
  681. package/skills/tdd/SKILL.md +5 -6
  682. package/skills/team/SKILL.md +35 -34
  683. package/templates/hooks/keyword-detector.mjs +11 -82
  684. package/templates/hooks/persistent-mode.mjs +120 -3
  685. package/templates/hooks/post-tool-use-failure.mjs +20 -2
  686. package/templates/hooks/session-start.mjs +2 -16
  687. package/dist/__tests__/analytics/backfill-dedup.test.d.ts +0 -2
  688. package/dist/__tests__/analytics/backfill-dedup.test.d.ts.map +0 -1
  689. package/dist/__tests__/analytics/backfill-dedup.test.js +0 -179
  690. package/dist/__tests__/analytics/backfill-dedup.test.js.map +0 -1
  691. package/dist/__tests__/analytics/backfill-engine.test.d.ts +0 -2
  692. package/dist/__tests__/analytics/backfill-engine.test.d.ts.map +0 -1
  693. package/dist/__tests__/analytics/backfill-engine.test.js +0 -362
  694. package/dist/__tests__/analytics/backfill-engine.test.js.map +0 -1
  695. package/dist/__tests__/analytics/output-estimator.test.d.ts +0 -2
  696. package/dist/__tests__/analytics/output-estimator.test.d.ts.map +0 -1
  697. package/dist/__tests__/analytics/output-estimator.test.js +0 -124
  698. package/dist/__tests__/analytics/output-estimator.test.js.map +0 -1
  699. package/dist/__tests__/analytics/token-extractor.test.d.ts +0 -2
  700. package/dist/__tests__/analytics/token-extractor.test.d.ts.map +0 -1
  701. package/dist/__tests__/analytics/token-extractor.test.js +0 -165
  702. package/dist/__tests__/analytics/token-extractor.test.js.map +0 -1
  703. package/dist/__tests__/analytics/token-tracker.test.d.ts +0 -2
  704. package/dist/__tests__/analytics/token-tracker.test.d.ts.map +0 -1
  705. package/dist/__tests__/analytics/token-tracker.test.js +0 -189
  706. package/dist/__tests__/analytics/token-tracker.test.js.map +0 -1
  707. package/dist/__tests__/analytics/tokscale-adapter.test.d.ts +0 -2
  708. package/dist/__tests__/analytics/tokscale-adapter.test.d.ts.map +0 -1
  709. package/dist/__tests__/analytics/tokscale-adapter.test.js +0 -79
  710. package/dist/__tests__/analytics/tokscale-adapter.test.js.map +0 -1
  711. package/dist/__tests__/analytics/transcript-parser.test.d.ts +0 -2
  712. package/dist/__tests__/analytics/transcript-parser.test.d.ts.map +0 -1
  713. package/dist/__tests__/analytics/transcript-parser.test.js +0 -285
  714. package/dist/__tests__/analytics/transcript-parser.test.js.map +0 -1
  715. package/dist/__tests__/analytics/transcript-scanner.test.d.ts +0 -2
  716. package/dist/__tests__/analytics/transcript-scanner.test.d.ts.map +0 -1
  717. package/dist/__tests__/analytics/transcript-scanner.test.js +0 -443
  718. package/dist/__tests__/analytics/transcript-scanner.test.js.map +0 -1
  719. package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts +0 -2
  720. package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts.map +0 -1
  721. package/dist/__tests__/analytics/transcript-token-extractor.test.js +0 -177
  722. package/dist/__tests__/analytics/transcript-token-extractor.test.js.map +0 -1
  723. package/dist/analytics/analytics-summary.d.ts +0 -47
  724. package/dist/analytics/analytics-summary.d.ts.map +0 -1
  725. package/dist/analytics/analytics-summary.js +0 -171
  726. package/dist/analytics/analytics-summary.js.map +0 -1
  727. package/dist/analytics/backfill-dedup.d.ts +0 -49
  728. package/dist/analytics/backfill-dedup.d.ts.map +0 -1
  729. package/dist/analytics/backfill-dedup.js +0 -115
  730. package/dist/analytics/backfill-dedup.js.map +0 -1
  731. package/dist/analytics/backfill-engine.d.ts +0 -59
  732. package/dist/analytics/backfill-engine.d.ts.map +0 -1
  733. package/dist/analytics/backfill-engine.js +0 -172
  734. package/dist/analytics/backfill-engine.js.map +0 -1
  735. package/dist/analytics/cost-estimator.d.ts +0 -29
  736. package/dist/analytics/cost-estimator.d.ts.map +0 -1
  737. package/dist/analytics/cost-estimator.js +0 -135
  738. package/dist/analytics/cost-estimator.js.map +0 -1
  739. package/dist/analytics/export.d.ts +0 -7
  740. package/dist/analytics/export.d.ts.map +0 -1
  741. package/dist/analytics/export.js +0 -93
  742. package/dist/analytics/export.js.map +0 -1
  743. package/dist/analytics/index.d.ts +0 -24
  744. package/dist/analytics/index.d.ts.map +0 -1
  745. package/dist/analytics/index.js +0 -30
  746. package/dist/analytics/index.js.map +0 -1
  747. package/dist/analytics/metrics-collector.d.ts +0 -30
  748. package/dist/analytics/metrics-collector.d.ts.map +0 -1
  749. package/dist/analytics/metrics-collector.js +0 -96
  750. package/dist/analytics/metrics-collector.js.map +0 -1
  751. package/dist/analytics/output-estimator.d.ts +0 -26
  752. package/dist/analytics/output-estimator.d.ts.map +0 -1
  753. package/dist/analytics/output-estimator.js +0 -65
  754. package/dist/analytics/output-estimator.js.map +0 -1
  755. package/dist/analytics/query-engine.d.ts +0 -35
  756. package/dist/analytics/query-engine.d.ts.map +0 -1
  757. package/dist/analytics/query-engine.js +0 -239
  758. package/dist/analytics/query-engine.js.map +0 -1
  759. package/dist/analytics/session-catalog.d.ts +0 -45
  760. package/dist/analytics/session-catalog.d.ts.map +0 -1
  761. package/dist/analytics/session-catalog.js +0 -153
  762. package/dist/analytics/session-catalog.js.map +0 -1
  763. package/dist/analytics/session-manager.d.ts +0 -58
  764. package/dist/analytics/session-manager.d.ts.map +0 -1
  765. package/dist/analytics/session-manager.js +0 -396
  766. package/dist/analytics/session-manager.js.map +0 -1
  767. package/dist/analytics/session-types.d.ts +0 -37
  768. package/dist/analytics/session-types.d.ts.map +0 -1
  769. package/dist/analytics/session-types.js +0 -2
  770. package/dist/analytics/session-types.js.map +0 -1
  771. package/dist/analytics/token-extractor.d.ts +0 -31
  772. package/dist/analytics/token-extractor.d.ts.map +0 -1
  773. package/dist/analytics/token-extractor.js +0 -57
  774. package/dist/analytics/token-extractor.js.map +0 -1
  775. package/dist/analytics/token-tracker.d.ts +0 -33
  776. package/dist/analytics/token-tracker.d.ts.map +0 -1
  777. package/dist/analytics/token-tracker.js +0 -443
  778. package/dist/analytics/token-tracker.js.map +0 -1
  779. package/dist/analytics/tokscale-adapter.d.ts +0 -71
  780. package/dist/analytics/tokscale-adapter.d.ts.map +0 -1
  781. package/dist/analytics/tokscale-adapter.js +0 -223
  782. package/dist/analytics/tokscale-adapter.js.map +0 -1
  783. package/dist/analytics/transcript-parser.d.ts +0 -42
  784. package/dist/analytics/transcript-parser.d.ts.map +0 -1
  785. package/dist/analytics/transcript-parser.js +0 -90
  786. package/dist/analytics/transcript-parser.js.map +0 -1
  787. package/dist/analytics/transcript-scanner.d.ts +0 -51
  788. package/dist/analytics/transcript-scanner.d.ts.map +0 -1
  789. package/dist/analytics/transcript-scanner.js +0 -279
  790. package/dist/analytics/transcript-scanner.js.map +0 -1
  791. package/dist/analytics/transcript-token-extractor.d.ts +0 -35
  792. package/dist/analytics/transcript-token-extractor.d.ts.map +0 -1
  793. package/dist/analytics/transcript-token-extractor.js +0 -136
  794. package/dist/analytics/transcript-token-extractor.js.map +0 -1
  795. package/dist/analytics/types.d.ts +0 -119
  796. package/dist/analytics/types.d.ts.map +0 -1
  797. package/dist/analytics/types.js +0 -32
  798. package/dist/analytics/types.js.map +0 -1
  799. package/dist/cli/analytics.d.ts +0 -3
  800. package/dist/cli/analytics.d.ts.map +0 -1
  801. package/dist/cli/analytics.js +0 -105
  802. package/dist/cli/analytics.js.map +0 -1
  803. package/dist/cli/commands/agents.d.ts +0 -5
  804. package/dist/cli/commands/agents.d.ts.map +0 -1
  805. package/dist/cli/commands/agents.js +0 -31
  806. package/dist/cli/commands/agents.js.map +0 -1
  807. package/dist/cli/commands/backfill.d.ts +0 -15
  808. package/dist/cli/commands/backfill.d.ts.map +0 -1
  809. package/dist/cli/commands/backfill.js +0 -146
  810. package/dist/cli/commands/backfill.js.map +0 -1
  811. package/dist/cli/commands/cleanup.d.ts +0 -4
  812. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  813. package/dist/cli/commands/cleanup.js +0 -31
  814. package/dist/cli/commands/cleanup.js.map +0 -1
  815. package/dist/cli/commands/cost.d.ts +0 -4
  816. package/dist/cli/commands/cost.d.ts.map +0 -1
  817. package/dist/cli/commands/cost.js +0 -53
  818. package/dist/cli/commands/cost.js.map +0 -1
  819. package/dist/cli/commands/export.d.ts +0 -5
  820. package/dist/cli/commands/export.d.ts.map +0 -1
  821. package/dist/cli/commands/export.js +0 -30
  822. package/dist/cli/commands/export.js.map +0 -1
  823. package/dist/cli/commands/sessions.d.ts +0 -5
  824. package/dist/cli/commands/sessions.d.ts.map +0 -1
  825. package/dist/cli/commands/sessions.js +0 -89
  826. package/dist/cli/commands/sessions.js.map +0 -1
  827. package/dist/cli/commands/stats.d.ts +0 -5
  828. package/dist/cli/commands/stats.d.ts.map +0 -1
  829. package/dist/cli/commands/stats.js +0 -84
  830. package/dist/cli/commands/stats.js.map +0 -1
  831. package/dist/cli/utils/tokscale-launcher.d.ts +0 -25
  832. package/dist/cli/utils/tokscale-launcher.d.ts.map +0 -1
  833. package/dist/cli/utils/tokscale-launcher.js +0 -70
  834. package/dist/cli/utils/tokscale-launcher.js.map +0 -1
  835. package/dist/hud/analytics-display.d.ts +0 -63
  836. package/dist/hud/analytics-display.d.ts.map +0 -1
  837. package/dist/hud/analytics-display.js +0 -190
  838. package/dist/hud/analytics-display.js.map +0 -1
  839. package/scripts/build-codex-server.mjs +0 -95
@@ -9,42 +9,31 @@ import { existsSync, readdirSync, readFileSync } from 'fs';
9
9
  import { join, basename } from 'path';
10
10
  import { getClaudeConfigDir } from '../../utils/paths.js';
11
11
  import { resolveLiveData } from './live-data.js';
12
+ import { parseFrontmatter, parseFrontmatterAliases, stripOptionalQuotes } from '../../utils/frontmatter.js';
12
13
  /** Claude config directory */
13
14
  const CLAUDE_CONFIG_DIR = getClaudeConfigDir();
14
15
  /**
15
- * Parse YAML-like frontmatter from markdown file
16
- * Simple implementation - supports basic key: value format
16
+ * Claude Code native commands that must not be shadowed by user skills.
17
+ * Skills whose canonical name or alias matches one of these will be prefixed
18
+ * with `omc-` to avoid overriding built-in CC slash commands.
17
19
  */
18
- function parseFrontmatter(content) {
19
- const frontmatterRegex = /^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/;
20
- const match = content.match(frontmatterRegex);
21
- if (!match) {
22
- return { data: {}, body: content };
23
- }
24
- const [, yamlContent, body] = match;
25
- const data = {};
26
- for (const line of yamlContent.split('\n')) {
27
- const colonIndex = line.indexOf(':');
28
- if (colonIndex === -1)
29
- continue;
30
- const key = line.slice(0, colonIndex).trim();
31
- let value = line.slice(colonIndex + 1).trim();
32
- // Remove surrounding quotes
33
- if ((value.startsWith('"') && value.endsWith('"')) ||
34
- (value.startsWith("'") && value.endsWith("'"))) {
35
- value = value.slice(1, -1);
36
- }
37
- data[key] = value;
38
- }
39
- return { data, body };
40
- }
41
- function stripOptionalQuotes(value) {
42
- const trimmed = value.trim();
43
- if ((trimmed.startsWith('"') && trimmed.endsWith('"')) ||
44
- (trimmed.startsWith("'") && trimmed.endsWith("'"))) {
45
- return trimmed.slice(1, -1).trim();
46
- }
47
- return trimmed;
20
+ const CC_NATIVE_COMMANDS = new Set([
21
+ 'review',
22
+ 'plan',
23
+ 'security-review',
24
+ 'init',
25
+ 'doctor',
26
+ 'help',
27
+ 'config',
28
+ 'clear',
29
+ 'compact',
30
+ 'memory',
31
+ ]);
32
+ function toSafeSkillName(name) {
33
+ const normalized = name.trim();
34
+ return CC_NATIVE_COMMANDS.has(normalized.toLowerCase())
35
+ ? `omc-${normalized}`
36
+ : normalized;
48
37
  }
49
38
  function getFrontmatterString(data, key) {
50
39
  const value = data[key];
@@ -53,21 +42,6 @@ function getFrontmatterString(data, key) {
53
42
  const normalized = stripOptionalQuotes(value);
54
43
  return normalized.length > 0 ? normalized : undefined;
55
44
  }
56
- function getFrontmatterAliases(data) {
57
- const rawAliases = getFrontmatterString(data, 'aliases');
58
- if (!rawAliases)
59
- return [];
60
- if (rawAliases.startsWith('[') && rawAliases.endsWith(']')) {
61
- const inner = rawAliases.slice(1, -1).trim();
62
- if (!inner)
63
- return [];
64
- return inner
65
- .split(',')
66
- .map(alias => stripOptionalQuotes(alias))
67
- .filter(alias => alias.length > 0);
68
- }
69
- return [rawAliases];
70
- }
71
45
  /**
72
46
  * Discover commands from a directory
73
47
  */
@@ -91,18 +65,18 @@ function discoverCommandsFromDir(commandsDir, scope) {
91
65
  const commandName = basename(entry.name, '.md');
92
66
  try {
93
67
  const content = readFileSync(commandPath, 'utf-8');
94
- const { data, body } = parseFrontmatter(content);
95
- const metadata = {
68
+ const { metadata: fm, body } = parseFrontmatter(content);
69
+ const commandMetadata = {
96
70
  name: commandName,
97
- description: data.description || '',
98
- argumentHint: data['argument-hint'],
99
- model: data.model,
100
- agent: data.agent,
71
+ description: fm.description || '',
72
+ argumentHint: fm['argument-hint'],
73
+ model: fm.model,
74
+ agent: fm.agent,
101
75
  };
102
76
  commands.push({
103
77
  name: commandName,
104
78
  path: commandPath,
105
- metadata,
79
+ metadata: commandMetadata,
106
80
  content: body,
107
81
  scope,
108
82
  });
@@ -134,14 +108,17 @@ export function discoverAllCommands() {
134
108
  if (existsSync(skillPath)) {
135
109
  try {
136
110
  const content = readFileSync(skillPath, 'utf-8');
137
- const { data, body } = parseFrontmatter(content);
138
- const canonicalName = getFrontmatterString(data, 'name') || dir.name;
139
- const aliases = Array.from(new Set(getFrontmatterAliases(data).filter(alias => alias.toLowerCase() !== canonicalName.toLowerCase())));
111
+ const { metadata: fm, body } = parseFrontmatter(content);
112
+ const rawName = getFrontmatterString(fm, 'name') || dir.name;
113
+ const canonicalName = toSafeSkillName(rawName);
114
+ const aliases = Array.from(new Set(parseFrontmatterAliases(fm.aliases)
115
+ .map((alias) => toSafeSkillName(alias))
116
+ .filter((alias) => alias.toLowerCase() !== canonicalName.toLowerCase())));
140
117
  const commandNames = [canonicalName, ...aliases];
141
- const description = getFrontmatterString(data, 'description') || '';
142
- const argumentHint = getFrontmatterString(data, 'argument-hint');
143
- const model = getFrontmatterString(data, 'model');
144
- const agent = getFrontmatterString(data, 'agent');
118
+ const description = getFrontmatterString(fm, 'description') || '';
119
+ const argumentHint = getFrontmatterString(fm, 'argument-hint');
120
+ const model = getFrontmatterString(fm, 'model');
121
+ const agent = getFrontmatterString(fm, 'agent');
145
122
  for (const commandName of commandNames) {
146
123
  const isAlias = commandName !== canonicalName;
147
124
  const metadata = {
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/hooks/auto-slash-command/executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/hooks/auto-slash-command/executor.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,17 @@ export declare function dispatchAskUserQuestionNotification(sessionId: string, d
70
70
  export declare const _notify: {
71
71
  askUserQuestion: typeof dispatchAskUserQuestionNotification;
72
72
  };
73
+ /**
74
+ * @internal Object wrapper for OpenClaw gateway dispatch.
75
+ * Mirrors the _notify pattern for testability (tests spy on _openclaw.wake
76
+ * instead of mocking dynamic imports).
77
+ *
78
+ * Fire-and-forget: the lazy import + double .catch() ensures OpenClaw
79
+ * never blocks hooks or surfaces errors.
80
+ */
81
+ export declare const _openclaw: {
82
+ wake: (event: import("../openclaw/types.js").OpenClawHookEvent, context: import("../openclaw/types.js").OpenClawContext) => void;
83
+ };
73
84
  /**
74
85
  * Reset the skip hooks cache (for testing only)
75
86
  */
@@ -1 +1 @@
1
- {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/hooks/bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+IH;;;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;AAigBhB;;;;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;AAkSF;;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,CAwMrB;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;AAkJH;;;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;AAugBhB;;;;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;AA8UF;;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"}
@@ -17,12 +17,14 @@ import { existsSync, readFileSync } from "fs";
17
17
  import { join } from "path";
18
18
  import { resolveToWorktreeRoot } from "../lib/worktree-paths.js";
19
19
  // Hot-path imports: needed on every/most hook invocations (keyword-detector, pre/post-tool-use)
20
- import { removeCodeBlocks, getAllKeywordsWithSizeCheck } from "./keyword-detector/index.js";
20
+ import { removeCodeBlocks, getAllKeywordsWithSizeCheck, applyRalplanGate, sanitizeForKeywordDetection, NON_LATIN_SCRIPT_PATTERN } from "./keyword-detector/index.js";
21
21
  import { processOrchestratorPreTool, processOrchestratorPostTool } from "./omc-orchestrator/index.js";
22
22
  import { normalizeHookInput } from "./bridge-normalize.js";
23
23
  import { addBackgroundTask, getRunningTaskCount, } from "../hud/background-tasks.js";
24
+ import { readHudState, writeHudState } from "../hud/state.js";
24
25
  import { loadConfig } from "../config/loader.js";
25
- import { ULTRAWORK_MESSAGE, ULTRATHINK_MESSAGE, SEARCH_MESSAGE, ANALYZE_MESSAGE, RALPH_MESSAGE, } from "../installer/hooks.js";
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";
26
28
  // Agent dashboard is used in pre/post-tool-use hot path
27
29
  import { getAgentDashboard, } from "./subagent-tracker/index.js";
28
30
  // Session replay recordFileTouch is used in pre-tool-use hot path
@@ -164,6 +166,19 @@ async function processKeywordDetector(input) {
164
166
  const sessionId = input.sessionId;
165
167
  const directory = resolveToWorktreeRoot(input.directory);
166
168
  const messages = [];
169
+ // Record prompt submission time in HUD state
170
+ try {
171
+ const hudState = readHudState(directory) || {
172
+ timestamp: new Date().toISOString(),
173
+ backgroundTasks: [],
174
+ };
175
+ hudState.lastPromptTimestamp = new Date().toISOString();
176
+ hudState.timestamp = new Date().toISOString();
177
+ writeHudState(hudState, directory);
178
+ }
179
+ catch {
180
+ // Silent failure - don't break keyword detection
181
+ }
167
182
  // Load config for task-size detection settings
168
183
  const config = loadConfig();
169
184
  const taskSizeConfig = config.taskSizeDetection ?? {};
@@ -174,16 +189,48 @@ async function processKeywordDetector(input) {
174
189
  largeWordLimit: taskSizeConfig.largeWordLimit ?? 200,
175
190
  suppressHeavyModesForSmallTasks: taskSizeConfig.suppressHeavyModesForSmallTasks !== false,
176
191
  });
177
- const keywords = sizeCheckResult.keywords;
178
- // Notify user when heavy modes were suppressed for a small task
179
- if (sizeCheckResult.suppressedKeywords.length > 0 && sizeCheckResult.taskSizeResult) {
180
- const suppressed = sizeCheckResult.suppressedKeywords.join(', ');
181
- const reason = sizeCheckResult.taskSizeResult.reason;
182
- messages.push(`[TASK-SIZE: SMALL] Heavy orchestration mode(s) suppressed: ${suppressed}.\n` +
183
- `Reason: ${reason}\n` +
184
- `Running directly without heavy agent stacking. ` +
185
- `Prefix with \`quick:\`, \`simple:\`, or \`tiny:\` to always use lightweight mode. ` +
186
- `Use explicit mode keywords (e.g. \`ralph\`) only when you need full orchestration.`);
192
+ // Apply ralplan-first gate BEFORE task-size suppression (issue #997).
193
+ // Reconstruct the full keyword set so the gate sees execution keywords
194
+ // that task-size suppression may have already removed for small tasks.
195
+ const fullKeywords = [...sizeCheckResult.keywords, ...sizeCheckResult.suppressedKeywords];
196
+ const gateResult = applyRalplanGate(fullKeywords, cleanedText);
197
+ let keywords;
198
+ if (gateResult.gateApplied) {
199
+ // Gate fired: redirect to ralplan (task-size suppression is moot — we're planning, not executing)
200
+ keywords = gateResult.keywords;
201
+ const gated = gateResult.gatedKeywords.join(', ');
202
+ messages.push(`[RALPLAN GATE] Redirecting ${gated} → ralplan for scoping.\n` +
203
+ `Tip: add a concrete anchor to run directly next time:\n` +
204
+ ` \u2022 "ralph fix the bug in src/auth.ts" (file path)\n` +
205
+ ` \u2022 "ralph implement #42" (issue number)\n` +
206
+ ` \u2022 "ralph fix processKeyword" (symbol name)\n` +
207
+ `Or prefix with \`force:\` / \`!\` to bypass.`);
208
+ }
209
+ else {
210
+ // Gate did not fire: use task-size-suppressed result as normal
211
+ keywords = sizeCheckResult.keywords;
212
+ // Notify user when heavy modes were suppressed for a small task
213
+ if (sizeCheckResult.suppressedKeywords.length > 0 && sizeCheckResult.taskSizeResult) {
214
+ const suppressed = sizeCheckResult.suppressedKeywords.join(', ');
215
+ const reason = sizeCheckResult.taskSizeResult.reason;
216
+ messages.push(`[TASK-SIZE: SMALL] Heavy orchestration mode(s) suppressed: ${suppressed}.\n` +
217
+ `Reason: ${reason}\n` +
218
+ `Running directly without heavy agent stacking. ` +
219
+ `Prefix with \`quick:\`, \`simple:\`, or \`tiny:\` to always use lightweight mode. ` +
220
+ `Use explicit mode keywords (e.g. \`ralph\`) only when you need full orchestration.`);
221
+ }
222
+ }
223
+ const sanitizedText = sanitizeForKeywordDetection(cleanedText);
224
+ if (NON_LATIN_SCRIPT_PATTERN.test(sanitizedText)) {
225
+ messages.push(PROMPT_TRANSLATION_MESSAGE);
226
+ }
227
+ // Wake OpenClaw gateway for keyword-detector (non-blocking, fires for all prompts)
228
+ if (input.sessionId) {
229
+ _openclaw.wake("keyword-detector", {
230
+ sessionId: input.sessionId,
231
+ projectPath: directory,
232
+ prompt: cleanedText,
233
+ });
187
234
  }
188
235
  if (keywords.length === 0) {
189
236
  if (messages.length > 0) {
@@ -230,6 +277,14 @@ async function processKeywordDetector(input) {
230
277
  case "tdd":
231
278
  messages.push(`[MODE: ${keywordType.toUpperCase()}] Skill invocation handled by UserPromptSubmit hook.`);
232
279
  break;
280
+ case "codex":
281
+ case "gemini": {
282
+ messages.push(`[MAGIC KEYWORD: omc-teams]\n` +
283
+ `User intent: delegate to ${keywordType} CLI workers via omc-teams.\n` +
284
+ `Agent type: ${keywordType}. Parse N from user message (default 1).\n` +
285
+ `Invoke: /omc-teams N:${keywordType} "<task from user message>"`);
286
+ break;
287
+ }
233
288
  default:
234
289
  // Skip unknown keywords
235
290
  break;
@@ -253,85 +308,36 @@ async function processStopContinuation(_input) {
253
308
  // Always allow stop - no hard blocking
254
309
  return { continue: true };
255
310
  }
256
- /**
257
- * Process Ralph hook (session.idle event)
258
- * Continues work loops until completion promise is detected and architect verifies
259
- */
260
- async function processRalph(input) {
261
- const sessionId = input.sessionId;
262
- const directory = resolveToWorktreeRoot(input.directory);
263
- if (!sessionId) {
264
- return { continue: true };
265
- }
266
- // Lazy-load ralph module
267
- const { readRalphState, incrementRalphIteration, clearRalphState, readVerificationState, getArchitectVerificationPrompt, clearVerificationState, } = await import("./ralph/index.js");
268
- // Read Ralph state
269
- const state = readRalphState(directory);
270
- if (!state || !state.active) {
271
- return { continue: true };
272
- }
273
- // Strict session isolation: only process state for matching session
274
- if (state.session_id !== sessionId) {
275
- return { continue: true };
276
- }
277
- // Check for existing verification state (architect verification in progress)
278
- const verificationState = readVerificationState(directory);
279
- if (verificationState?.pending) {
280
- // Check if architect has approved (by looking for the tag in transcript)
281
- // This is handled more thoroughly in persistent-mode hook
282
- // Here we just remind to spawn architect if verification is pending
283
- const verificationPrompt = getArchitectVerificationPrompt(verificationState);
284
- return {
285
- continue: true,
286
- message: verificationPrompt,
287
- };
288
- }
289
- // Check max iterations
290
- if (state.iteration >= state.max_iterations) {
291
- clearRalphState(directory);
292
- clearVerificationState(directory);
293
- return {
294
- continue: true,
295
- message: `[RALPH LOOP STOPPED] Max iterations (${state.max_iterations}) reached without completion.`,
296
- };
297
- }
298
- // Increment and continue
299
- const newState = incrementRalphIteration(directory);
300
- if (!newState) {
301
- return { continue: true };
302
- }
303
- const continuationPrompt = `[RALPH LOOP - ITERATION ${newState.iteration}/${newState.max_iterations}]
304
-
305
- The task is NOT complete yet. Continue working.
306
-
307
- IMPORTANT:
308
- - Review your progress so far
309
- - Continue from where you left off
310
- - When FULLY complete (after Architect verification), run \`/oh-my-claudecode:cancel\` to cleanly exit and clean up state files. If cancel fails, retry with \`/oh-my-claudecode:cancel --force\`.
311
- - Do not stop until the task is truly done
312
-
313
- Original task:
314
- ${newState.prompt}`;
315
- return {
316
- continue: true,
317
- message: continuationPrompt,
318
- };
319
- }
320
311
  /**
321
312
  * Process persistent mode hook (enhanced stop continuation)
322
- * Unified handler for ultrawork, ralph, and todo-continuation
313
+ * Unified handler for ultrawork, ralph, and todo-continuation.
314
+ *
315
+ * NOTE: The legacy `processRalph` function was removed in issue #1058.
316
+ * Ralph is now handled exclusively by `checkRalphLoop` inside
317
+ * `persistent-mode/index.ts`, which has richer logic (PRD checks,
318
+ * team pipeline coordination, tool-error injection, cancel caching,
319
+ * ultrawork self-heal, and architect rejection handling).
323
320
  */
324
321
  async function processPersistentMode(input) {
325
- const sessionId = input.sessionId;
322
+ const rawSessionId = input.session_id;
323
+ const sessionId = input.sessionId ?? rawSessionId;
326
324
  const directory = resolveToWorktreeRoot(input.directory);
327
325
  // Lazy-load persistent-mode and todo-continuation modules
328
326
  const { checkPersistentModes, createHookOutput, shouldSendIdleNotification, recordIdleNotificationSent } = await import("./persistent-mode/index.js");
327
+ const { isExplicitCancelCommand } = await import("./todo-continuation/index.js");
329
328
  // Extract stop context for abort detection (supports both camelCase and snake_case)
330
329
  const stopContext = {
331
330
  stop_reason: input.stop_reason,
332
331
  stopReason: input.stopReason,
332
+ end_turn_reason: input.end_turn_reason,
333
+ endTurnReason: input.endTurnReason,
333
334
  user_requested: input.user_requested,
334
335
  userRequested: input.userRequested,
336
+ prompt: input.prompt,
337
+ tool_name: input.tool_name,
338
+ toolName: input.toolName,
339
+ tool_input: input.tool_input,
340
+ toolInput: input.toolInput,
335
341
  };
336
342
  const result = await checkPersistentModes(sessionId, directory, stopContext);
337
343
  const output = createHookOutput(result);
@@ -344,15 +350,17 @@ async function processPersistentMode(input) {
344
350
  const isContextLimit = stopContext.stop_reason === "context_limit" || stopContext.stopReason === "context_limit";
345
351
  if (!isAbort && !isContextLimit) {
346
352
  // Per-session cooldown: prevent notification spam when the session idles repeatedly.
347
- // Mirrors the cooldown logic in scripts/persistent-mode.cjs (closes #842).
353
+ // Uses session-scoped state so one session does not suppress another.
348
354
  const stateDir = join(directory, ".omc", "state");
349
- if (shouldSendIdleNotification(stateDir)) {
350
- recordIdleNotificationSent(stateDir);
355
+ if (shouldSendIdleNotification(stateDir, sessionId)) {
356
+ recordIdleNotificationSent(stateDir, sessionId);
351
357
  import("../notifications/index.js").then(({ notify }) => notify("session-idle", {
352
358
  sessionId,
353
359
  projectPath: directory,
354
360
  profileName: process.env.OMC_NOTIFY_PROFILE,
355
361
  }).catch(() => { })).catch(() => { });
362
+ // Wake OpenClaw gateway for stop event (non-blocking)
363
+ _openclaw.wake("stop", { sessionId, projectPath: directory });
356
364
  }
357
365
  }
358
366
  // IMPORTANT: Do NOT clean up reply-listener/session-registry on Stop hooks.
@@ -361,6 +369,10 @@ async function processPersistentMode(input) {
361
369
  }
362
370
  return output;
363
371
  }
372
+ // Explicit cancel should suppress team continuation prompts.
373
+ if (isExplicitCancelCommand(stopContext)) {
374
+ return output;
375
+ }
364
376
  const stage = getTeamStage(teamState);
365
377
  const stagePrompt = getTeamStagePrompt(stage);
366
378
  const teamName = teamState.team_name || teamState.teamName || "team";
@@ -406,6 +418,8 @@ async function processSessionStart(input) {
406
418
  projectPath: directory,
407
419
  profileName: process.env.OMC_NOTIFY_PROFILE,
408
420
  }).catch(() => { })).catch(() => { });
421
+ // Wake OpenClaw gateway for session-start (non-blocking)
422
+ _openclaw.wake("session-start", { sessionId, projectPath: directory });
409
423
  }
410
424
  // Start reply listener daemon if configured (non-blocking, swallows errors)
411
425
  if (sessionId) {
@@ -584,6 +598,21 @@ export function dispatchAskUserQuestionNotification(sessionId, directory, toolIn
584
598
  export const _notify = {
585
599
  askUserQuestion: dispatchAskUserQuestionNotification,
586
600
  };
601
+ /**
602
+ * @internal Object wrapper for OpenClaw gateway dispatch.
603
+ * Mirrors the _notify pattern for testability (tests spy on _openclaw.wake
604
+ * instead of mocking dynamic imports).
605
+ *
606
+ * Fire-and-forget: the lazy import + double .catch() ensures OpenClaw
607
+ * never blocks hooks or surfaces errors.
608
+ */
609
+ export const _openclaw = {
610
+ wake: (event, context) => {
611
+ if (process.env.OMC_OPENCLAW !== "1")
612
+ return;
613
+ import("../openclaw/index.js").then(({ wakeOpenClaw }) => wakeOpenClaw(event, context).catch(() => { })).catch(() => { });
614
+ },
615
+ };
587
616
  /**
588
617
  * Process pre-tool-use hook
589
618
  * Checks delegation enforcement and tracks background tasks
@@ -609,6 +638,32 @@ function processPreToolUse(input) {
609
638
  // Fire-and-forget: notify users that input is needed BEFORE the tool blocks
610
639
  if (input.toolName === "AskUserQuestion" && input.sessionId) {
611
640
  _notify.askUserQuestion(input.sessionId, directory, input.toolInput);
641
+ // Wake OpenClaw gateway for ask-user-question (non-blocking)
642
+ _openclaw.wake("ask-user-question", {
643
+ sessionId: input.sessionId,
644
+ projectPath: directory,
645
+ question: (() => {
646
+ const ti = input.toolInput;
647
+ return ti?.questions?.map(q => q.question || "").filter(Boolean).join("; ") || "";
648
+ })(),
649
+ });
650
+ }
651
+ // Activate skill state when Skill tool is invoked (issue #1033)
652
+ // This writes skill-active-state.json so the Stop hook can prevent premature
653
+ // session termination while a skill is executing.
654
+ if (input.toolName === "Skill") {
655
+ const skillName = getInvokedSkillName(input.toolInput);
656
+ if (skillName) {
657
+ // Use the statically-imported synchronous write so it completes before
658
+ // the Stop hook can fire. The previous fire-and-forget .then() raced with
659
+ // the Stop hook in short-lived processes.
660
+ try {
661
+ writeSkillActiveState(directory, skillName, input.sessionId);
662
+ }
663
+ catch {
664
+ // Skill-state write is best-effort; don't fail the hook on error.
665
+ }
666
+ }
612
667
  }
613
668
  // Notify when a new agent is spawned via Task tool (issue #761)
614
669
  // Fire-and-forget: verbosity filtering is handled inside notify()
@@ -692,6 +747,14 @@ function processPreToolUse(input) {
692
747
  };
693
748
  }
694
749
  }
750
+ // Wake OpenClaw gateway for pre-tool-use (non-blocking, fires only for allowed tools)
751
+ if (input.sessionId) {
752
+ _openclaw.wake("pre-tool-use", {
753
+ sessionId: input.sessionId,
754
+ projectPath: directory,
755
+ toolName: input.toolName,
756
+ });
757
+ }
695
758
  return {
696
759
  continue: true,
697
760
  ...(enforcementResult.message ? { message: enforcementResult.message } : {}),
@@ -753,6 +816,14 @@ async function processPostToolUse(input) {
753
816
  messages.push(dashboard);
754
817
  }
755
818
  }
819
+ // Wake OpenClaw gateway for post-tool-use (non-blocking, fires for all tools)
820
+ if (input.sessionId) {
821
+ _openclaw.wake("post-tool-use", {
822
+ sessionId: input.sessionId,
823
+ projectPath: directory,
824
+ toolName: input.toolName,
825
+ });
826
+ }
756
827
  if (messages.length > 0) {
757
828
  return {
758
829
  continue: true,
@@ -829,7 +900,8 @@ export async function processHook(hookType, rawInput) {
829
900
  case "stop-continuation":
830
901
  return await processStopContinuation(input);
831
902
  case "ralph":
832
- return await processRalph(input);
903
+ // Ralph is now handled by the unified persistent-mode handler (issue #1058).
904
+ return await processPersistentMode(input);
833
905
  case "persistent-mode":
834
906
  return await processPersistentMode(input);
835
907
  case "session-start":