claudecode-omc 4.4.4 → 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 (842) 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/state-manager/index.js +2 -2
  173. package/dist/features/state-manager/index.js.map +1 -1
  174. package/dist/features/task-decomposer/index.js +14 -4
  175. package/dist/features/task-decomposer/index.js.map +1 -1
  176. package/dist/hooks/__tests__/bridge-openclaw.test.d.ts +2 -0
  177. package/dist/hooks/__tests__/bridge-openclaw.test.d.ts.map +1 -0
  178. package/dist/hooks/__tests__/bridge-openclaw.test.js +124 -0
  179. package/dist/hooks/__tests__/bridge-openclaw.test.js.map +1 -0
  180. package/dist/hooks/__tests__/bridge-security.test.js +1 -1
  181. package/dist/hooks/__tests__/bridge-security.test.js.map +1 -1
  182. package/dist/hooks/auto-slash-command/executor.d.ts.map +1 -1
  183. package/dist/hooks/auto-slash-command/executor.js +38 -61
  184. package/dist/hooks/auto-slash-command/executor.js.map +1 -1
  185. package/dist/hooks/autopilot/prompts.js +3 -3
  186. package/dist/hooks/bridge.d.ts +11 -0
  187. package/dist/hooks/bridge.d.ts.map +1 -1
  188. package/dist/hooks/bridge.js +154 -82
  189. package/dist/hooks/bridge.js.map +1 -1
  190. package/dist/hooks/comment-checker/index.d.ts.map +1 -1
  191. package/dist/hooks/comment-checker/index.js +3 -1
  192. package/dist/hooks/comment-checker/index.js.map +1 -1
  193. package/dist/hooks/keyword-detector/__tests__/index.test.js +348 -1
  194. package/dist/hooks/keyword-detector/__tests__/index.test.js.map +1 -1
  195. package/dist/hooks/keyword-detector/index.d.ts +29 -0
  196. package/dist/hooks/keyword-detector/index.d.ts.map +1 -1
  197. package/dist/hooks/keyword-detector/index.js +123 -1
  198. package/dist/hooks/keyword-detector/index.js.map +1 -1
  199. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js +40 -0
  200. package/dist/hooks/mode-registry/__tests__/session-isolation.test.js.map +1 -1
  201. package/dist/hooks/mode-registry/index.d.ts.map +1 -1
  202. package/dist/hooks/mode-registry/index.js +135 -52
  203. package/dist/hooks/mode-registry/index.js.map +1 -1
  204. package/dist/hooks/notepad/index.d.ts.map +1 -1
  205. package/dist/hooks/notepad/index.js +5 -3
  206. package/dist/hooks/notepad/index.js.map +1 -1
  207. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts +2 -0
  208. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.d.ts.map +1 -0
  209. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js +73 -0
  210. package/dist/hooks/persistent-mode/__tests__/cancel-race.test.js.map +1 -0
  211. package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js +89 -13
  212. package/dist/hooks/persistent-mode/__tests__/idle-cooldown.test.js.map +1 -1
  213. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts +2 -0
  214. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.d.ts.map +1 -0
  215. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js +156 -0
  216. package/dist/hooks/persistent-mode/__tests__/skill-state-stop.test.js.map +1 -0
  217. package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts +2 -3
  218. package/dist/hooks/persistent-mode/idle-cooldown.test.d.ts.map +1 -1
  219. package/dist/hooks/persistent-mode/idle-cooldown.test.js +19 -4
  220. package/dist/hooks/persistent-mode/idle-cooldown.test.js.map +1 -1
  221. package/dist/hooks/persistent-mode/index.d.ts +2 -2
  222. package/dist/hooks/persistent-mode/index.d.ts.map +1 -1
  223. package/dist/hooks/persistent-mode/index.js +144 -26
  224. package/dist/hooks/persistent-mode/index.js.map +1 -1
  225. package/dist/hooks/plugin-patterns/index.d.ts.map +1 -1
  226. package/dist/hooks/plugin-patterns/index.js +22 -31
  227. package/dist/hooks/plugin-patterns/index.js.map +1 -1
  228. package/dist/hooks/pre-compact/index.js +1 -1
  229. package/dist/hooks/preemptive-compaction/index.d.ts.map +1 -1
  230. package/dist/hooks/preemptive-compaction/index.js +3 -1
  231. package/dist/hooks/preemptive-compaction/index.js.map +1 -1
  232. package/dist/hooks/project-memory/index.d.ts.map +1 -1
  233. package/dist/hooks/project-memory/index.js +9 -0
  234. package/dist/hooks/project-memory/index.js.map +1 -1
  235. package/dist/hooks/project-memory/learner.d.ts.map +1 -1
  236. package/dist/hooks/project-memory/learner.js +107 -85
  237. package/dist/hooks/project-memory/learner.js.map +1 -1
  238. package/dist/hooks/project-memory/storage.d.ts.map +1 -1
  239. package/dist/hooks/project-memory/storage.js +3 -2
  240. package/dist/hooks/project-memory/storage.js.map +1 -1
  241. package/dist/hooks/recovery/context-window.d.ts +4 -0
  242. package/dist/hooks/recovery/context-window.d.ts.map +1 -1
  243. package/dist/hooks/recovery/context-window.js +22 -1
  244. package/dist/hooks/recovery/context-window.js.map +1 -1
  245. package/dist/hooks/recovery/session-recovery.js +1 -1
  246. package/dist/hooks/recovery/session-recovery.js.map +1 -1
  247. package/dist/hooks/session-end/index.d.ts.map +1 -1
  248. package/dist/hooks/session-end/index.js +13 -22
  249. package/dist/hooks/session-end/index.js.map +1 -1
  250. package/dist/hooks/setup/__tests__/windows-patch.test.d.ts +2 -0
  251. package/dist/hooks/setup/__tests__/windows-patch.test.d.ts.map +1 -0
  252. package/dist/hooks/setup/__tests__/windows-patch.test.js +110 -0
  253. package/dist/hooks/setup/__tests__/windows-patch.test.js.map +1 -0
  254. package/dist/hooks/setup/index.d.ts +18 -0
  255. package/dist/hooks/setup/index.d.ts.map +1 -1
  256. package/dist/hooks/setup/index.js +59 -1
  257. package/dist/hooks/setup/index.js.map +1 -1
  258. package/dist/hooks/skill-bridge.cjs +1 -0
  259. package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts +2 -0
  260. package/dist/hooks/skill-state/__tests__/skill-state.test.d.ts.map +1 -0
  261. package/dist/hooks/skill-state/__tests__/skill-state.test.js +301 -0
  262. package/dist/hooks/skill-state/__tests__/skill-state.test.js.map +1 -0
  263. package/dist/hooks/skill-state/index.d.ts +79 -0
  264. package/dist/hooks/skill-state/index.d.ts.map +1 -0
  265. package/dist/hooks/skill-state/index.js +245 -0
  266. package/dist/hooks/skill-state/index.js.map +1 -0
  267. package/dist/hooks/team-pipeline/state.d.ts.map +1 -1
  268. package/dist/hooks/team-pipeline/state.js +5 -0
  269. package/dist/hooks/team-pipeline/state.js.map +1 -1
  270. package/dist/hooks/todo-continuation/index.d.ts +17 -0
  271. package/dist/hooks/todo-continuation/index.d.ts.map +1 -1
  272. package/dist/hooks/todo-continuation/index.js +44 -2
  273. package/dist/hooks/todo-continuation/index.js.map +1 -1
  274. package/dist/hud/elements/call-counts.d.ts.map +1 -1
  275. package/dist/hud/elements/call-counts.js +6 -4
  276. package/dist/hud/elements/call-counts.js.map +1 -1
  277. package/dist/hud/elements/index.d.ts +1 -0
  278. package/dist/hud/elements/index.d.ts.map +1 -1
  279. package/dist/hud/elements/index.js +1 -0
  280. package/dist/hud/elements/index.js.map +1 -1
  281. package/dist/hud/elements/prompt-time.d.ts +13 -0
  282. package/dist/hud/elements/prompt-time.d.ts.map +1 -0
  283. package/dist/hud/elements/prompt-time.js +21 -0
  284. package/dist/hud/elements/prompt-time.js.map +1 -0
  285. package/dist/hud/index.d.ts +2 -1
  286. package/dist/hud/index.d.ts.map +1 -1
  287. package/dist/hud/index.js +40 -215
  288. package/dist/hud/index.js.map +1 -1
  289. package/dist/hud/render.d.ts.map +1 -1
  290. package/dist/hud/render.js +7 -108
  291. package/dist/hud/render.js.map +1 -1
  292. package/dist/hud/state.d.ts.map +1 -1
  293. package/dist/hud/state.js +4 -3
  294. package/dist/hud/state.js.map +1 -1
  295. package/dist/hud/stdin.d.ts +10 -0
  296. package/dist/hud/stdin.d.ts.map +1 -1
  297. package/dist/hud/stdin.js +43 -0
  298. package/dist/hud/stdin.js.map +1 -1
  299. package/dist/hud/types.d.ts +6 -18
  300. package/dist/hud/types.d.ts.map +1 -1
  301. package/dist/hud/types.js +6 -46
  302. package/dist/hud/types.js.map +1 -1
  303. package/dist/index.d.ts +1 -1
  304. package/dist/index.d.ts.map +1 -1
  305. package/dist/index.js +2 -11
  306. package/dist/index.js.map +1 -1
  307. package/dist/installer/hooks.d.ts +5 -0
  308. package/dist/installer/hooks.d.ts.map +1 -1
  309. package/dist/installer/hooks.js +8 -0
  310. package/dist/installer/hooks.js.map +1 -1
  311. package/dist/installer/index.d.ts.map +1 -1
  312. package/dist/installer/index.js +26 -11
  313. package/dist/installer/index.js.map +1 -1
  314. package/dist/interop/omx-team-state.d.ts.map +1 -1
  315. package/dist/interop/omx-team-state.js +38 -6
  316. package/dist/interop/omx-team-state.js.map +1 -1
  317. package/dist/interop/shared-state.d.ts.map +1 -1
  318. package/dist/interop/shared-state.js +58 -7
  319. package/dist/interop/shared-state.js.map +1 -1
  320. package/dist/lib/__tests__/worktree-paths.test.js +250 -1
  321. package/dist/lib/__tests__/worktree-paths.test.js.map +1 -1
  322. package/dist/lib/job-state-db.d.ts +150 -0
  323. package/dist/lib/job-state-db.d.ts.map +1 -0
  324. package/dist/lib/job-state-db.js +650 -0
  325. package/dist/lib/job-state-db.js.map +1 -0
  326. package/dist/lib/mode-names.d.ts +46 -0
  327. package/dist/lib/mode-names.d.ts.map +1 -0
  328. package/dist/lib/mode-names.js +73 -0
  329. package/dist/lib/mode-names.js.map +1 -0
  330. package/dist/lib/session-isolation.d.ts +32 -0
  331. package/dist/lib/session-isolation.d.ts.map +1 -0
  332. package/dist/lib/session-isolation.js +39 -0
  333. package/dist/lib/session-isolation.js.map +1 -0
  334. package/dist/lib/worktree-paths.d.ts +38 -8
  335. package/dist/lib/worktree-paths.d.ts.map +1 -1
  336. package/dist/lib/worktree-paths.js +124 -56
  337. package/dist/lib/worktree-paths.js.map +1 -1
  338. package/dist/mcp/__tests__/team-cleanup.test.d.ts +11 -0
  339. package/dist/mcp/__tests__/team-cleanup.test.d.ts.map +1 -0
  340. package/dist/mcp/__tests__/team-cleanup.test.js +228 -0
  341. package/dist/mcp/__tests__/team-cleanup.test.js.map +1 -0
  342. package/dist/mcp/cli-detection.d.ts +4 -8
  343. package/dist/mcp/cli-detection.d.ts.map +1 -1
  344. package/dist/mcp/cli-detection.js +5 -8
  345. package/dist/mcp/cli-detection.js.map +1 -1
  346. package/dist/mcp/codex-request-normalizer.js +59 -0
  347. package/dist/mcp/codex-server.js +16 -4
  348. package/dist/mcp/codex-standalone-server.js +13 -4
  349. package/dist/mcp/index.d.ts +2 -4
  350. package/dist/mcp/index.d.ts.map +1 -1
  351. package/dist/mcp/index.js +1 -5
  352. package/dist/mcp/index.js.map +1 -1
  353. package/dist/mcp/job-management.d.ts.map +1 -1
  354. package/dist/mcp/job-management.js +11 -9
  355. package/dist/mcp/job-management.js.map +1 -1
  356. package/dist/mcp/job-state-db.d.ts +1 -149
  357. package/dist/mcp/job-state-db.d.ts.map +1 -1
  358. package/dist/mcp/job-state-db.js +2 -649
  359. package/dist/mcp/job-state-db.js.map +1 -1
  360. package/dist/mcp/mcp-config.d.ts +1 -1
  361. package/dist/mcp/mcp-config.js +1 -1
  362. package/dist/mcp/prompt-injection.d.ts +14 -76
  363. package/dist/mcp/prompt-injection.d.ts.map +1 -1
  364. package/dist/mcp/prompt-injection.js +34 -175
  365. package/dist/mcp/prompt-injection.js.map +1 -1
  366. package/dist/mcp/standalone-server.js +2 -0
  367. package/dist/mcp/standalone-server.js.map +1 -1
  368. package/dist/mcp/team-server.d.ts +16 -0
  369. package/dist/mcp/team-server.d.ts.map +1 -0
  370. package/dist/mcp/team-server.js +356 -0
  371. package/dist/mcp/team-server.js.map +1 -0
  372. package/dist/notifications/__tests__/formatter.test.js +62 -0
  373. package/dist/notifications/__tests__/formatter.test.js.map +1 -1
  374. package/dist/notifications/__tests__/hook-config.test.d.ts +14 -0
  375. package/dist/notifications/__tests__/hook-config.test.d.ts.map +1 -0
  376. package/dist/notifications/__tests__/hook-config.test.js +210 -0
  377. package/dist/notifications/__tests__/hook-config.test.js.map +1 -0
  378. package/dist/notifications/__tests__/platform-gating.test.d.ts +12 -0
  379. package/dist/notifications/__tests__/platform-gating.test.d.ts.map +1 -0
  380. package/dist/notifications/__tests__/platform-gating.test.js +140 -0
  381. package/dist/notifications/__tests__/platform-gating.test.js.map +1 -0
  382. package/dist/notifications/__tests__/template-engine.test.d.ts +13 -0
  383. package/dist/notifications/__tests__/template-engine.test.d.ts.map +1 -0
  384. package/dist/notifications/__tests__/template-engine.test.js +378 -0
  385. package/dist/notifications/__tests__/template-engine.test.js.map +1 -0
  386. package/dist/notifications/config.d.ts.map +1 -1
  387. package/dist/notifications/config.js +54 -18
  388. package/dist/notifications/config.js.map +1 -1
  389. package/dist/notifications/dispatcher.d.ts +2 -2
  390. package/dist/notifications/dispatcher.d.ts.map +1 -1
  391. package/dist/notifications/dispatcher.js +10 -6
  392. package/dist/notifications/dispatcher.js.map +1 -1
  393. package/dist/notifications/formatter.d.ts.map +1 -1
  394. package/dist/notifications/formatter.js +22 -0
  395. package/dist/notifications/formatter.js.map +1 -1
  396. package/dist/notifications/hook-config-types.d.ts +44 -0
  397. package/dist/notifications/hook-config-types.d.ts.map +1 -0
  398. package/dist/notifications/hook-config-types.js +8 -0
  399. package/dist/notifications/hook-config-types.js.map +1 -0
  400. package/dist/notifications/hook-config.d.ts +36 -0
  401. package/dist/notifications/hook-config.d.ts.map +1 -0
  402. package/dist/notifications/hook-config.js +95 -0
  403. package/dist/notifications/hook-config.js.map +1 -0
  404. package/dist/notifications/index.d.ts +3 -0
  405. package/dist/notifications/index.d.ts.map +1 -1
  406. package/dist/notifications/index.js +31 -3
  407. package/dist/notifications/index.js.map +1 -1
  408. package/dist/notifications/reply-listener.d.ts.map +1 -1
  409. package/dist/notifications/reply-listener.js +1 -0
  410. package/dist/notifications/reply-listener.js.map +1 -1
  411. package/dist/notifications/session-registry.d.ts.map +1 -1
  412. package/dist/notifications/session-registry.js +13 -5
  413. package/dist/notifications/session-registry.js.map +1 -1
  414. package/dist/notifications/template-engine.d.ts +34 -0
  415. package/dist/notifications/template-engine.d.ts.map +1 -0
  416. package/dist/notifications/template-engine.js +248 -0
  417. package/dist/notifications/template-engine.js.map +1 -0
  418. package/dist/notifications/types.d.ts +0 -2
  419. package/dist/notifications/types.d.ts.map +1 -1
  420. package/dist/openclaw/__tests__/config.test.d.ts +2 -0
  421. package/dist/openclaw/__tests__/config.test.d.ts.map +1 -0
  422. package/dist/openclaw/__tests__/config.test.js +200 -0
  423. package/dist/openclaw/__tests__/config.test.js.map +1 -0
  424. package/dist/openclaw/__tests__/dispatcher.test.d.ts +2 -0
  425. package/dist/openclaw/__tests__/dispatcher.test.d.ts.map +1 -0
  426. package/dist/openclaw/__tests__/dispatcher.test.js +348 -0
  427. package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -0
  428. package/dist/openclaw/__tests__/index.test.d.ts +2 -0
  429. package/dist/openclaw/__tests__/index.test.d.ts.map +1 -0
  430. package/dist/openclaw/__tests__/index.test.js +235 -0
  431. package/dist/openclaw/__tests__/index.test.js.map +1 -0
  432. package/dist/openclaw/config.d.ts +33 -0
  433. package/dist/openclaw/config.d.ts.map +1 -0
  434. package/dist/openclaw/config.js +83 -0
  435. package/dist/openclaw/config.js.map +1 -0
  436. package/dist/openclaw/dispatcher.d.ts +47 -0
  437. package/dist/openclaw/dispatcher.d.ts.map +1 -0
  438. package/dist/openclaw/dispatcher.js +138 -0
  439. package/dist/openclaw/dispatcher.js.map +1 -0
  440. package/dist/openclaw/index.d.ts +25 -0
  441. package/dist/openclaw/index.d.ts.map +1 -0
  442. package/dist/openclaw/index.js +132 -0
  443. package/dist/openclaw/index.js.map +1 -0
  444. package/dist/openclaw/types.d.ts +102 -0
  445. package/dist/openclaw/types.d.ts.map +1 -0
  446. package/dist/openclaw/types.js +8 -0
  447. package/dist/openclaw/types.js.map +1 -0
  448. package/dist/platform/index.d.ts +5 -0
  449. package/dist/platform/index.d.ts.map +1 -1
  450. package/dist/platform/index.js +17 -0
  451. package/dist/platform/index.js.map +1 -1
  452. package/dist/platform/process-utils.d.ts.map +1 -1
  453. package/dist/platform/process-utils.js +55 -9
  454. package/dist/platform/process-utils.js.map +1 -1
  455. package/dist/shared/types.d.ts +7 -5
  456. package/dist/shared/types.d.ts.map +1 -1
  457. package/dist/team/__tests__/bridge-integration.test.js +10 -8
  458. package/dist/team/__tests__/bridge-integration.test.js.map +1 -1
  459. package/dist/team/__tests__/edge-cases.test.js +40 -29
  460. package/dist/team/__tests__/edge-cases.test.js.map +1 -1
  461. package/dist/team/__tests__/idle-nudge.test.d.ts +11 -0
  462. package/dist/team/__tests__/idle-nudge.test.d.ts.map +1 -0
  463. package/dist/team/__tests__/idle-nudge.test.js +282 -0
  464. package/dist/team/__tests__/idle-nudge.test.js.map +1 -0
  465. package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js +2 -2
  466. package/dist/team/__tests__/mcp-team-bridge.spawn-args.test.js.map +1 -1
  467. package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts +2 -0
  468. package/dist/team/__tests__/mcp-team-bridge.usage.test.d.ts.map +1 -0
  469. package/dist/team/__tests__/mcp-team-bridge.usage.test.js +49 -0
  470. package/dist/team/__tests__/mcp-team-bridge.usage.test.js.map +1 -0
  471. package/dist/team/__tests__/model-contract.test.d.ts +2 -0
  472. package/dist/team/__tests__/model-contract.test.d.ts.map +1 -0
  473. package/dist/team/__tests__/model-contract.test.js +121 -0
  474. package/dist/team/__tests__/model-contract.test.js.map +1 -0
  475. package/dist/team/__tests__/phase-controller.test.d.ts +2 -0
  476. package/dist/team/__tests__/phase-controller.test.d.ts.map +1 -0
  477. package/dist/team/__tests__/phase-controller.test.js +45 -0
  478. package/dist/team/__tests__/phase-controller.test.js.map +1 -0
  479. package/dist/team/__tests__/runtime-assign.test.d.ts +2 -0
  480. package/dist/team/__tests__/runtime-assign.test.d.ts.map +1 -0
  481. package/dist/team/__tests__/runtime-assign.test.js +43 -0
  482. package/dist/team/__tests__/runtime-assign.test.js.map +1 -0
  483. package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts +2 -0
  484. package/dist/team/__tests__/runtime-gemini-prompt.test.d.ts.map +1 -0
  485. package/dist/team/__tests__/runtime-gemini-prompt.test.js +153 -0
  486. package/dist/team/__tests__/runtime-gemini-prompt.test.js.map +1 -0
  487. package/dist/team/__tests__/runtime-prompt-mode.test.d.ts +2 -0
  488. package/dist/team/__tests__/runtime-prompt-mode.test.d.ts.map +1 -0
  489. package/dist/team/__tests__/runtime-prompt-mode.test.js +162 -0
  490. package/dist/team/__tests__/runtime-prompt-mode.test.js.map +1 -0
  491. package/dist/team/__tests__/runtime.test.d.ts +2 -0
  492. package/dist/team/__tests__/runtime.test.d.ts.map +1 -0
  493. package/dist/team/__tests__/runtime.test.js +37 -0
  494. package/dist/team/__tests__/runtime.test.js.map +1 -0
  495. package/dist/team/__tests__/task-file-ops.test.js +63 -59
  496. package/dist/team/__tests__/task-file-ops.test.js.map +1 -1
  497. package/dist/team/__tests__/team-name.test.d.ts +2 -0
  498. package/dist/team/__tests__/team-name.test.d.ts.map +1 -0
  499. package/dist/team/__tests__/team-name.test.js +18 -0
  500. package/dist/team/__tests__/team-name.test.js.map +1 -0
  501. package/dist/team/__tests__/team-status.test.js +52 -6
  502. package/dist/team/__tests__/team-status.test.js.map +1 -1
  503. package/dist/team/__tests__/tmux-comm.test.d.ts +2 -0
  504. package/dist/team/__tests__/tmux-comm.test.d.ts.map +1 -0
  505. package/dist/team/__tests__/tmux-comm.test.js +26 -0
  506. package/dist/team/__tests__/tmux-comm.test.js.map +1 -0
  507. package/dist/team/__tests__/tmux-session.create-team.test.d.ts +2 -0
  508. package/dist/team/__tests__/tmux-session.create-team.test.d.ts.map +1 -0
  509. package/dist/team/__tests__/tmux-session.create-team.test.js +104 -0
  510. package/dist/team/__tests__/tmux-session.create-team.test.js.map +1 -0
  511. package/dist/team/__tests__/tmux-session.spawn.test.d.ts +2 -0
  512. package/dist/team/__tests__/tmux-session.spawn.test.d.ts.map +1 -0
  513. package/dist/team/__tests__/tmux-session.spawn.test.js +61 -0
  514. package/dist/team/__tests__/tmux-session.spawn.test.js.map +1 -0
  515. package/dist/team/__tests__/tmux-session.test.js +161 -2
  516. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  517. package/dist/team/__tests__/worker-bootstrap.test.d.ts +2 -0
  518. package/dist/team/__tests__/worker-bootstrap.test.d.ts.map +1 -0
  519. package/dist/team/__tests__/worker-bootstrap.test.js +58 -0
  520. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -0
  521. package/dist/team/bridge-entry.d.ts.map +1 -1
  522. package/dist/team/bridge-entry.js +4 -0
  523. package/dist/team/bridge-entry.js.map +1 -1
  524. package/dist/team/capabilities.d.ts.map +1 -1
  525. package/dist/team/capabilities.js +3 -0
  526. package/dist/team/capabilities.js.map +1 -1
  527. package/dist/team/cli-detection.d.ts +9 -0
  528. package/dist/team/cli-detection.d.ts.map +1 -0
  529. package/dist/team/cli-detection.js +29 -0
  530. package/dist/team/cli-detection.js.map +1 -0
  531. package/dist/team/idle-nudge.d.ts +53 -0
  532. package/dist/team/idle-nudge.d.ts.map +1 -0
  533. package/dist/team/idle-nudge.js +124 -0
  534. package/dist/team/idle-nudge.js.map +1 -0
  535. package/dist/team/inbox-outbox.d.ts.map +1 -1
  536. package/dist/team/inbox-outbox.js +7 -3
  537. package/dist/team/inbox-outbox.js.map +1 -1
  538. package/dist/team/index.d.ts +14 -1
  539. package/dist/team/index.d.ts.map +1 -1
  540. package/dist/team/index.js +12 -1
  541. package/dist/team/index.js.map +1 -1
  542. package/dist/team/mcp-team-bridge.d.ts +9 -0
  543. package/dist/team/mcp-team-bridge.d.ts.map +1 -1
  544. package/dist/team/mcp-team-bridge.js +82 -3
  545. package/dist/team/mcp-team-bridge.js.map +1 -1
  546. package/dist/team/model-contract.d.ts +37 -0
  547. package/dist/team/model-contract.d.ts.map +1 -0
  548. package/dist/team/model-contract.js +139 -0
  549. package/dist/team/model-contract.js.map +1 -0
  550. package/dist/team/phase-controller.d.ts +33 -0
  551. package/dist/team/phase-controller.d.ts.map +1 -0
  552. package/dist/team/phase-controller.js +79 -0
  553. package/dist/team/phase-controller.js.map +1 -0
  554. package/dist/team/runtime-cli.d.ts +9 -0
  555. package/dist/team/runtime-cli.d.ts.map +1 -0
  556. package/dist/team/runtime-cli.js +188 -0
  557. package/dist/team/runtime-cli.js.map +1 -0
  558. package/dist/team/runtime.d.ts +95 -0
  559. package/dist/team/runtime.d.ts.map +1 -0
  560. package/dist/team/runtime.js +692 -0
  561. package/dist/team/runtime.js.map +1 -0
  562. package/dist/team/state-paths.d.ts +72 -0
  563. package/dist/team/state-paths.d.ts.map +1 -0
  564. package/dist/team/state-paths.js +87 -0
  565. package/dist/team/state-paths.js.map +1 -0
  566. package/dist/team/task-file-ops.d.ts +27 -7
  567. package/dist/team/task-file-ops.d.ts.map +1 -1
  568. package/dist/team/task-file-ops.js +116 -55
  569. package/dist/team/task-file-ops.js.map +1 -1
  570. package/dist/team/team-name.d.ts +2 -0
  571. package/dist/team/team-name.d.ts.map +1 -0
  572. package/dist/team/team-name.js +8 -0
  573. package/dist/team/team-name.js.map +1 -0
  574. package/dist/team/team-registration.d.ts +1 -1
  575. package/dist/team/team-registration.d.ts.map +1 -1
  576. package/dist/team/team-registration.js.map +1 -1
  577. package/dist/team/team-status.d.ts +11 -1
  578. package/dist/team/team-status.d.ts.map +1 -1
  579. package/dist/team/team-status.js +32 -3
  580. package/dist/team/team-status.js.map +1 -1
  581. package/dist/team/tmux-comm.d.ts +36 -0
  582. package/dist/team/tmux-comm.d.ts.map +1 -0
  583. package/dist/team/tmux-comm.js +115 -0
  584. package/dist/team/tmux-comm.js.map +1 -0
  585. package/dist/team/tmux-session.d.ts +92 -0
  586. package/dist/team/tmux-session.d.ts.map +1 -1
  587. package/dist/team/tmux-session.js +533 -2
  588. package/dist/team/tmux-session.js.map +1 -1
  589. package/dist/team/types.d.ts +10 -3
  590. package/dist/team/types.d.ts.map +1 -1
  591. package/dist/team/unified-team.d.ts.map +1 -1
  592. package/dist/team/unified-team.js +13 -3
  593. package/dist/team/unified-team.js.map +1 -1
  594. package/dist/team/worker-bootstrap.d.ts +39 -0
  595. package/dist/team/worker-bootstrap.d.ts.map +1 -0
  596. package/dist/team/worker-bootstrap.js +117 -0
  597. package/dist/team/worker-bootstrap.js.map +1 -0
  598. package/dist/team/worker-health.d.ts.map +1 -1
  599. package/dist/team/worker-health.js +15 -3
  600. package/dist/team/worker-health.js.map +1 -1
  601. package/dist/tools/ast-tools.js +1 -1
  602. package/dist/tools/ast-tools.js.map +1 -1
  603. package/dist/tools/diagnostics/lsp-aggregator.d.ts.map +1 -1
  604. package/dist/tools/diagnostics/lsp-aggregator.js +4 -2
  605. package/dist/tools/diagnostics/lsp-aggregator.js.map +1 -1
  606. package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts +2 -0
  607. package/dist/tools/lsp/__tests__/client-handle-data.test.d.ts.map +1 -0
  608. package/dist/tools/lsp/__tests__/client-handle-data.test.js +138 -0
  609. package/dist/tools/lsp/__tests__/client-handle-data.test.js.map +1 -0
  610. package/dist/tools/lsp/client.d.ts +13 -0
  611. package/dist/tools/lsp/client.d.ts.map +1 -1
  612. package/dist/tools/lsp/client.js +64 -8
  613. package/dist/tools/lsp/client.js.map +1 -1
  614. package/dist/tools/lsp/servers.d.ts.map +1 -1
  615. package/dist/tools/lsp/servers.js +4 -9
  616. package/dist/tools/lsp/servers.js.map +1 -1
  617. package/dist/tools/lsp-tools.d.ts.map +1 -1
  618. package/dist/tools/lsp-tools.js +4 -0
  619. package/dist/tools/lsp-tools.js.map +1 -1
  620. package/dist/tools/python-repl/bridge-manager.d.ts.map +1 -1
  621. package/dist/tools/python-repl/bridge-manager.js +15 -1
  622. package/dist/tools/python-repl/bridge-manager.js.map +1 -1
  623. package/dist/tools/python-repl/session-lock.d.ts.map +1 -1
  624. package/dist/tools/python-repl/session-lock.js +35 -15
  625. package/dist/tools/python-repl/session-lock.js.map +1 -1
  626. package/dist/tools/state-tools.d.ts.map +1 -1
  627. package/dist/tools/state-tools.js +10 -0
  628. package/dist/tools/state-tools.js.map +1 -1
  629. package/dist/utils/__tests__/frontmatter.test.d.ts +2 -0
  630. package/dist/utils/__tests__/frontmatter.test.d.ts.map +1 -0
  631. package/dist/utils/__tests__/frontmatter.test.js +147 -0
  632. package/dist/utils/__tests__/frontmatter.test.js.map +1 -0
  633. package/dist/utils/frontmatter.d.ts +24 -0
  634. package/dist/utils/frontmatter.d.ts.map +1 -0
  635. package/dist/utils/frontmatter.js +62 -0
  636. package/dist/utils/frontmatter.js.map +1 -0
  637. package/dist/utils/paths.d.ts.map +1 -1
  638. package/dist/utils/paths.js +4 -2
  639. package/dist/utils/paths.js.map +1 -1
  640. package/dist/utils/string-width.d.ts.map +1 -1
  641. package/dist/utils/string-width.js +15 -4
  642. package/dist/utils/string-width.js.map +1 -1
  643. package/dist/verification/tier-selector.js +1 -1
  644. package/dist/verification/tier-selector.js.map +1 -1
  645. package/docs/AGENTS.md +4 -2
  646. package/docs/CLAUDE.md +8 -48
  647. package/docs/MIGRATION.md +114 -0
  648. package/docs/REFERENCE.md +35 -102
  649. package/hooks/hooks.json +23 -23
  650. package/package.json +8 -8
  651. package/scripts/build-runtime-cli.mjs +24 -0
  652. package/scripts/build-team-server.mjs +28 -0
  653. package/scripts/cleanup-orphans.mjs +22 -5
  654. package/scripts/context-safety.mjs +5 -1
  655. package/scripts/demo-team.mjs +26 -0
  656. package/scripts/keyword-detector.mjs +6 -76
  657. package/scripts/openclaw-gateway-demo.mjs +168 -0
  658. package/scripts/persistent-mode.cjs +30 -4
  659. package/scripts/persistent-mode.mjs +48 -3
  660. package/scripts/plugin-setup.mjs +66 -3
  661. package/scripts/post-tool-use-failure.mjs +20 -2
  662. package/scripts/post-tool-verifier.mjs +57 -6
  663. package/scripts/pre-tool-enforcer.mjs +125 -5
  664. package/scripts/run.cjs +114 -0
  665. package/scripts/session-start.mjs +56 -7
  666. package/scripts/status.mjs +144 -0
  667. package/scripts/test-codex-gemini-team.mjs +78 -0
  668. package/skills/AGENTS.md +5 -2
  669. package/skills/analyze/SKILL.md +5 -11
  670. package/skills/autopilot/SKILL.md +16 -25
  671. package/skills/ccg/SKILL.md +88 -99
  672. package/skills/configure-notifications/SKILL.md +177 -0
  673. package/skills/configure-openclaw/SKILL.md +320 -0
  674. package/skills/external-context/SKILL.md +7 -83
  675. package/skills/hud/SKILL.md +68 -46
  676. package/skills/omc-setup/SKILL.md +58 -19
  677. package/skills/omc-teams/SKILL.md +178 -0
  678. package/skills/pipeline/SKILL.md +4 -4
  679. package/skills/plan/SKILL.md +28 -16
  680. package/skills/ralph/SKILL.md +3 -4
  681. package/skills/ralph-init/SKILL.md +3 -1
  682. package/skills/ralplan/SKILL.md +93 -8
  683. package/skills/security-review/SKILL.md +5 -6
  684. package/skills/tdd/SKILL.md +5 -6
  685. package/skills/team/SKILL.md +35 -34
  686. package/templates/hooks/keyword-detector.mjs +11 -82
  687. package/templates/hooks/persistent-mode.mjs +120 -3
  688. package/templates/hooks/post-tool-use-failure.mjs +20 -2
  689. package/templates/hooks/session-start.mjs +2 -16
  690. package/dist/__tests__/analytics/backfill-dedup.test.d.ts +0 -2
  691. package/dist/__tests__/analytics/backfill-dedup.test.d.ts.map +0 -1
  692. package/dist/__tests__/analytics/backfill-dedup.test.js +0 -179
  693. package/dist/__tests__/analytics/backfill-dedup.test.js.map +0 -1
  694. package/dist/__tests__/analytics/backfill-engine.test.d.ts +0 -2
  695. package/dist/__tests__/analytics/backfill-engine.test.d.ts.map +0 -1
  696. package/dist/__tests__/analytics/backfill-engine.test.js +0 -362
  697. package/dist/__tests__/analytics/backfill-engine.test.js.map +0 -1
  698. package/dist/__tests__/analytics/output-estimator.test.d.ts +0 -2
  699. package/dist/__tests__/analytics/output-estimator.test.d.ts.map +0 -1
  700. package/dist/__tests__/analytics/output-estimator.test.js +0 -124
  701. package/dist/__tests__/analytics/output-estimator.test.js.map +0 -1
  702. package/dist/__tests__/analytics/token-extractor.test.d.ts +0 -2
  703. package/dist/__tests__/analytics/token-extractor.test.d.ts.map +0 -1
  704. package/dist/__tests__/analytics/token-extractor.test.js +0 -165
  705. package/dist/__tests__/analytics/token-extractor.test.js.map +0 -1
  706. package/dist/__tests__/analytics/token-tracker.test.d.ts +0 -2
  707. package/dist/__tests__/analytics/token-tracker.test.d.ts.map +0 -1
  708. package/dist/__tests__/analytics/token-tracker.test.js +0 -189
  709. package/dist/__tests__/analytics/token-tracker.test.js.map +0 -1
  710. package/dist/__tests__/analytics/tokscale-adapter.test.d.ts +0 -2
  711. package/dist/__tests__/analytics/tokscale-adapter.test.d.ts.map +0 -1
  712. package/dist/__tests__/analytics/tokscale-adapter.test.js +0 -79
  713. package/dist/__tests__/analytics/tokscale-adapter.test.js.map +0 -1
  714. package/dist/__tests__/analytics/transcript-parser.test.d.ts +0 -2
  715. package/dist/__tests__/analytics/transcript-parser.test.d.ts.map +0 -1
  716. package/dist/__tests__/analytics/transcript-parser.test.js +0 -285
  717. package/dist/__tests__/analytics/transcript-parser.test.js.map +0 -1
  718. package/dist/__tests__/analytics/transcript-scanner.test.d.ts +0 -2
  719. package/dist/__tests__/analytics/transcript-scanner.test.d.ts.map +0 -1
  720. package/dist/__tests__/analytics/transcript-scanner.test.js +0 -443
  721. package/dist/__tests__/analytics/transcript-scanner.test.js.map +0 -1
  722. package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts +0 -2
  723. package/dist/__tests__/analytics/transcript-token-extractor.test.d.ts.map +0 -1
  724. package/dist/__tests__/analytics/transcript-token-extractor.test.js +0 -177
  725. package/dist/__tests__/analytics/transcript-token-extractor.test.js.map +0 -1
  726. package/dist/analytics/analytics-summary.d.ts +0 -47
  727. package/dist/analytics/analytics-summary.d.ts.map +0 -1
  728. package/dist/analytics/analytics-summary.js +0 -171
  729. package/dist/analytics/analytics-summary.js.map +0 -1
  730. package/dist/analytics/backfill-dedup.d.ts +0 -49
  731. package/dist/analytics/backfill-dedup.d.ts.map +0 -1
  732. package/dist/analytics/backfill-dedup.js +0 -115
  733. package/dist/analytics/backfill-dedup.js.map +0 -1
  734. package/dist/analytics/backfill-engine.d.ts +0 -59
  735. package/dist/analytics/backfill-engine.d.ts.map +0 -1
  736. package/dist/analytics/backfill-engine.js +0 -172
  737. package/dist/analytics/backfill-engine.js.map +0 -1
  738. package/dist/analytics/cost-estimator.d.ts +0 -29
  739. package/dist/analytics/cost-estimator.d.ts.map +0 -1
  740. package/dist/analytics/cost-estimator.js +0 -135
  741. package/dist/analytics/cost-estimator.js.map +0 -1
  742. package/dist/analytics/export.d.ts +0 -7
  743. package/dist/analytics/export.d.ts.map +0 -1
  744. package/dist/analytics/export.js +0 -93
  745. package/dist/analytics/export.js.map +0 -1
  746. package/dist/analytics/index.d.ts +0 -24
  747. package/dist/analytics/index.d.ts.map +0 -1
  748. package/dist/analytics/index.js +0 -30
  749. package/dist/analytics/index.js.map +0 -1
  750. package/dist/analytics/metrics-collector.d.ts +0 -30
  751. package/dist/analytics/metrics-collector.d.ts.map +0 -1
  752. package/dist/analytics/metrics-collector.js +0 -96
  753. package/dist/analytics/metrics-collector.js.map +0 -1
  754. package/dist/analytics/output-estimator.d.ts +0 -26
  755. package/dist/analytics/output-estimator.d.ts.map +0 -1
  756. package/dist/analytics/output-estimator.js +0 -65
  757. package/dist/analytics/output-estimator.js.map +0 -1
  758. package/dist/analytics/query-engine.d.ts +0 -35
  759. package/dist/analytics/query-engine.d.ts.map +0 -1
  760. package/dist/analytics/query-engine.js +0 -239
  761. package/dist/analytics/query-engine.js.map +0 -1
  762. package/dist/analytics/session-catalog.d.ts +0 -45
  763. package/dist/analytics/session-catalog.d.ts.map +0 -1
  764. package/dist/analytics/session-catalog.js +0 -153
  765. package/dist/analytics/session-catalog.js.map +0 -1
  766. package/dist/analytics/session-manager.d.ts +0 -58
  767. package/dist/analytics/session-manager.d.ts.map +0 -1
  768. package/dist/analytics/session-manager.js +0 -396
  769. package/dist/analytics/session-manager.js.map +0 -1
  770. package/dist/analytics/session-types.d.ts +0 -37
  771. package/dist/analytics/session-types.d.ts.map +0 -1
  772. package/dist/analytics/session-types.js +0 -2
  773. package/dist/analytics/session-types.js.map +0 -1
  774. package/dist/analytics/token-extractor.d.ts +0 -31
  775. package/dist/analytics/token-extractor.d.ts.map +0 -1
  776. package/dist/analytics/token-extractor.js +0 -57
  777. package/dist/analytics/token-extractor.js.map +0 -1
  778. package/dist/analytics/token-tracker.d.ts +0 -33
  779. package/dist/analytics/token-tracker.d.ts.map +0 -1
  780. package/dist/analytics/token-tracker.js +0 -443
  781. package/dist/analytics/token-tracker.js.map +0 -1
  782. package/dist/analytics/tokscale-adapter.d.ts +0 -71
  783. package/dist/analytics/tokscale-adapter.d.ts.map +0 -1
  784. package/dist/analytics/tokscale-adapter.js +0 -223
  785. package/dist/analytics/tokscale-adapter.js.map +0 -1
  786. package/dist/analytics/transcript-parser.d.ts +0 -42
  787. package/dist/analytics/transcript-parser.d.ts.map +0 -1
  788. package/dist/analytics/transcript-parser.js +0 -90
  789. package/dist/analytics/transcript-parser.js.map +0 -1
  790. package/dist/analytics/transcript-scanner.d.ts +0 -51
  791. package/dist/analytics/transcript-scanner.d.ts.map +0 -1
  792. package/dist/analytics/transcript-scanner.js +0 -279
  793. package/dist/analytics/transcript-scanner.js.map +0 -1
  794. package/dist/analytics/transcript-token-extractor.d.ts +0 -35
  795. package/dist/analytics/transcript-token-extractor.d.ts.map +0 -1
  796. package/dist/analytics/transcript-token-extractor.js +0 -136
  797. package/dist/analytics/transcript-token-extractor.js.map +0 -1
  798. package/dist/analytics/types.d.ts +0 -119
  799. package/dist/analytics/types.d.ts.map +0 -1
  800. package/dist/analytics/types.js +0 -32
  801. package/dist/analytics/types.js.map +0 -1
  802. package/dist/cli/analytics.d.ts +0 -3
  803. package/dist/cli/analytics.d.ts.map +0 -1
  804. package/dist/cli/analytics.js +0 -105
  805. package/dist/cli/analytics.js.map +0 -1
  806. package/dist/cli/commands/agents.d.ts +0 -5
  807. package/dist/cli/commands/agents.d.ts.map +0 -1
  808. package/dist/cli/commands/agents.js +0 -31
  809. package/dist/cli/commands/agents.js.map +0 -1
  810. package/dist/cli/commands/backfill.d.ts +0 -15
  811. package/dist/cli/commands/backfill.d.ts.map +0 -1
  812. package/dist/cli/commands/backfill.js +0 -146
  813. package/dist/cli/commands/backfill.js.map +0 -1
  814. package/dist/cli/commands/cleanup.d.ts +0 -4
  815. package/dist/cli/commands/cleanup.d.ts.map +0 -1
  816. package/dist/cli/commands/cleanup.js +0 -31
  817. package/dist/cli/commands/cleanup.js.map +0 -1
  818. package/dist/cli/commands/cost.d.ts +0 -4
  819. package/dist/cli/commands/cost.d.ts.map +0 -1
  820. package/dist/cli/commands/cost.js +0 -53
  821. package/dist/cli/commands/cost.js.map +0 -1
  822. package/dist/cli/commands/export.d.ts +0 -5
  823. package/dist/cli/commands/export.d.ts.map +0 -1
  824. package/dist/cli/commands/export.js +0 -30
  825. package/dist/cli/commands/export.js.map +0 -1
  826. package/dist/cli/commands/sessions.d.ts +0 -5
  827. package/dist/cli/commands/sessions.d.ts.map +0 -1
  828. package/dist/cli/commands/sessions.js +0 -89
  829. package/dist/cli/commands/sessions.js.map +0 -1
  830. package/dist/cli/commands/stats.d.ts +0 -5
  831. package/dist/cli/commands/stats.d.ts.map +0 -1
  832. package/dist/cli/commands/stats.js +0 -84
  833. package/dist/cli/commands/stats.js.map +0 -1
  834. package/dist/cli/utils/tokscale-launcher.d.ts +0 -25
  835. package/dist/cli/utils/tokscale-launcher.d.ts.map +0 -1
  836. package/dist/cli/utils/tokscale-launcher.js +0 -70
  837. package/dist/cli/utils/tokscale-launcher.js.map +0 -1
  838. package/dist/hud/analytics-display.d.ts +0 -63
  839. package/dist/hud/analytics-display.d.ts.map +0 -1
  840. package/dist/hud/analytics-display.js +0 -190
  841. package/dist/hud/analytics-display.js.map +0 -1
  842. package/scripts/build-codex-server.mjs +0 -95
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env node
2
+ import * as esbuild from 'esbuild';
3
+ import { mkdir } from 'fs/promises';
4
+
5
+ const outfile = 'bridge/runtime-cli.cjs';
6
+ await mkdir('bridge', { recursive: true });
7
+
8
+ await esbuild.build({
9
+ entryPoints: ['src/team/runtime-cli.ts'],
10
+ bundle: true,
11
+ platform: 'node',
12
+ target: 'node18',
13
+ format: 'cjs',
14
+ outfile,
15
+ // Note: platform:'node' auto-externalizes all Node built-in subpaths (fs/promises, etc.)
16
+ external: [
17
+ 'fs', 'fs/promises', 'path', 'os', 'util', 'stream', 'events',
18
+ 'buffer', 'crypto', 'http', 'https', 'url',
19
+ 'child_process', 'assert', 'module', 'net', 'tls',
20
+ 'dns', 'readline', 'tty', 'worker_threads',
21
+ '@ast-grep/napi', 'better-sqlite3',
22
+ ],
23
+ });
24
+ console.log(`Built ${outfile}`);
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Build script for the Team MCP server bundle.
4
+ * Bundles src/mcp/team-server.ts into bridge/team-mcp.cjs for plugin distribution.
5
+ */
6
+
7
+ import * as esbuild from 'esbuild';
8
+ import { mkdir } from 'fs/promises';
9
+
10
+ const outfile = 'bridge/team-mcp.cjs';
11
+ await mkdir('bridge', { recursive: true });
12
+
13
+ await esbuild.build({
14
+ entryPoints: ['src/mcp/team-server.ts'],
15
+ bundle: true,
16
+ platform: 'node',
17
+ target: 'node18',
18
+ format: 'cjs',
19
+ outfile,
20
+ external: [
21
+ 'fs', 'fs/promises', 'path', 'os', 'util', 'stream', 'events',
22
+ 'buffer', 'crypto', 'http', 'https', 'url',
23
+ 'child_process', 'assert', 'module', 'net', 'tls',
24
+ 'dns', 'readline', 'tty', 'worker_threads',
25
+ ],
26
+ });
27
+
28
+ console.log(`Built ${outfile}`);
@@ -48,11 +48,8 @@ function findOrphanProcesses(filterTeam) {
48
48
 
49
49
  try {
50
50
  if (process.platform === 'win32') {
51
- // Windows: use WMIC to find node/claude processes
52
- const output = execSync(
53
- 'wmic process where "name like \'%node%\' or name like \'%claude%\'" get processid,commandline /format:csv',
54
- { encoding: 'utf-8', timeout: 10000 }
55
- ).trim();
51
+ const output = getWindowsProcessListOutput();
52
+ if (!output) return orphans;
56
53
 
57
54
  for (const line of output.split('\n')) {
58
55
  if (line.includes('--team-name') || line.includes('team_name')) {
@@ -100,6 +97,26 @@ function findOrphanProcesses(filterTeam) {
100
97
  return orphans;
101
98
  }
102
99
 
100
+ function getWindowsProcessListOutput() {
101
+ try {
102
+ // Primary path: WMIC (legacy but still available on some systems).
103
+ return execSync(
104
+ 'wmic process where "name like \'%node%\' or name like \'%claude%\'" get processid,commandline /format:csv',
105
+ { encoding: 'utf-8', timeout: 10000 }
106
+ ).trim();
107
+ } catch {
108
+ // Fallback: PowerShell CIM query for command line + PID.
109
+ try {
110
+ return execSync(
111
+ 'powershell -NoProfile -NonInteractive -Command "$procs = Get-CimInstance Win32_Process -ErrorAction Stop | Where-Object { $_.Name -like \'*node*\' -or $_.Name -like \'*claude*\' }; $procs | ForEach-Object { [string]$_.CommandLine + \',\' + [string]$_.ProcessId }"',
112
+ { encoding: 'utf-8', timeout: 10000 }
113
+ ).trim();
114
+ } catch {
115
+ return '';
116
+ }
117
+ }
118
+ }
119
+
103
120
  /**
104
121
  * Check if a team's config still exists (i.e., team is still active).
105
122
  */
@@ -19,7 +19,11 @@ import { statSync, openSync, readSync, closeSync } from 'node:fs';
19
19
  import { readStdin } from './lib/stdin.mjs';
20
20
 
21
21
  const THRESHOLD = parseInt(process.env.OMC_CONTEXT_SAFETY_THRESHOLD || '55', 10);
22
- const BLOCKED_TOOLS = new Set(['TeamCreate', 'ExitPlanMode']);
22
+ // TeamCreate was removed from BLOCKED_TOOLS in issue #1006.
23
+ // Blocking TeamCreate at high context caused silent fallback to regular subagents,
24
+ // defeating the team orchestration pipeline. TeamCreate is lightweight infrastructure
25
+ // setup, not expensive model inference, so context pressure is not a concern.
26
+ const BLOCKED_TOOLS = new Set(['ExitPlanMode']);
23
27
 
24
28
  /**
25
29
  * Estimate context usage percentage from the transcript file.
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Quick demo: spawn a 2-worker tmux team and show the split panes.
4
+ * Usage: node scripts/demo-team.mjs
5
+ */
6
+ import { startTeam } from '../dist/team/runtime.js';
7
+
8
+ const config = {
9
+ teamName: 'demo',
10
+ workerCount: 2,
11
+ agentTypes: ['claude', 'claude'],
12
+ tasks: [
13
+ { subject: 'Write a haiku about tmux', description: 'Write a short haiku (3 lines, 5-7-5 syllables) about tmux split panes. Output it and exit.' },
14
+ { subject: 'Write a haiku about Claude', description: 'Write a short haiku (3 lines, 5-7-5 syllables) about AI assistants. Output it and exit.' },
15
+ ],
16
+ cwd: process.cwd(),
17
+ };
18
+
19
+ console.log('Starting team "demo" with 2 Claude workers...');
20
+ const runtime = await startTeam(config);
21
+ console.log('\nTeam started!');
22
+ console.log(` tmux session: ${runtime.sessionName}`);
23
+ console.log(` workers: ${runtime.workerNames.join(', ')}`);
24
+ console.log(` pane IDs: ${runtime.workerPaneIds.join(', ')}`);
25
+ console.log('\nAttach with:');
26
+ console.log(` tmux attach -t ${runtime.sessionName}`);
@@ -20,8 +20,6 @@
20
20
  * 13. ultrathink/think: Extended reasoning
21
21
  * 14. deepsearch: Codebase search (restricted patterns)
22
22
  * 15. analyze: Analysis mode (restricted patterns)
23
- * 16. codex/gpt: Delegate to Codex MCP (ask_codex)
24
- * 17. gemini: Delegate to Gemini MCP (ask_gemini)
25
23
  */
26
24
 
27
25
  import { writeFileSync, readFileSync, mkdirSync, existsSync, unlinkSync } from 'fs';
@@ -235,59 +233,14 @@ IMPORTANT: Invoke ALL skills listed above. Start with the first skill IMMEDIATEL
235
233
  }
236
234
 
237
235
  /**
238
- * Create MCP delegation message (NOT a skill invocation)
236
+ * Create combined output for multiple skill matches
239
237
  */
240
- function createMcpDelegation(provider, originalPrompt) {
241
- const configs = {
242
- codex: {
243
- tool: 'ask_codex',
244
- roles: 'architect, planner, critic, analyst, code-reviewer, security-reviewer, tdd-guide',
245
- defaultRole: 'architect',
246
- },
247
- gemini: {
248
- tool: 'ask_gemini',
249
- roles: 'designer, writer, vision',
250
- defaultRole: 'designer',
251
- },
252
- };
253
- const config = configs[provider];
254
- if (!config) return '';
255
-
256
- return `[MAGIC KEYWORD: ${provider.toUpperCase()}]
257
-
258
- You MUST delegate this task to the ${provider === 'codex' ? 'Codex' : 'Gemini'} MCP tool.
259
-
260
- Steps:
261
- 1. Write a prompt file to \`.omc/prompts/${provider}-{purpose}-{timestamp}.md\` containing clear task instructions derived from the user's request
262
- 2. Determine the appropriate agent_role from: ${config.roles}
263
- 3. Call the \`${config.tool}\` MCP tool with:
264
- - agent_role: <detected or default "${config.defaultRole}">
265
- - prompt_file: <path you wrote>
266
- - output_file: <corresponding -summary.md path>
267
- - context_files: <relevant files from user's request>
268
-
269
- User request:
270
- ${originalPrompt}
271
-
272
- IMPORTANT: Do NOT invoke a skill. Delegate to the MCP tool IMMEDIATELY.`;
273
- }
274
-
275
- /**
276
- * Create combined output for skills + MCP delegations
277
- */
278
- function createCombinedOutput(skillMatches, delegationMatches, originalPrompt) {
238
+ function createCombinedOutput(skillMatches, originalPrompt) {
279
239
  const parts = [];
280
-
281
240
  if (skillMatches.length > 0) {
282
241
  parts.push('## Section 1: Skill Invocations\n\n' + createMultiSkillInvocation(skillMatches, originalPrompt));
283
242
  }
284
-
285
- if (delegationMatches.length > 0) {
286
- const delegationParts = delegationMatches.map(d => createMcpDelegation(d.name, originalPrompt));
287
- parts.push('## Section ' + (skillMatches.length > 0 ? '2' : '1') + ': MCP Delegations\n\n' + delegationParts.join('\n\n---\n\n'));
288
- }
289
-
290
- const allNames = [...skillMatches, ...delegationMatches].map(m => m.name.toUpperCase());
243
+ const allNames = skillMatches.map(m => m.name.toUpperCase());
291
244
  return `[MAGIC KEYWORDS DETECTED: ${allNames.join(', ')}]\n\n${parts.join('\n\n---\n\n')}\n\nIMPORTANT: Complete ALL sections above in order.`;
292
245
  }
293
246
 
@@ -320,8 +273,7 @@ function resolveConflicts(matches) {
320
273
 
321
274
  // Sort by priority order
322
275
  const priorityOrder = ['cancel','ralph','autopilot','team','ultrawork',
323
- 'pipeline','ccg','ralplan','plan','tdd','research','ultrathink','deepsearch','analyze',
324
- 'codex','gemini'];
276
+ 'pipeline','ccg','ralplan','plan','tdd','research','ultrathink','deepsearch','analyze'];
325
277
  resolved.sort((a, b) => priorityOrder.indexOf(a.name) - priorityOrder.indexOf(b.name));
326
278
 
327
279
  return resolved;
@@ -463,16 +415,6 @@ async function main() {
463
415
  matches.push({ name: 'analyze', args: '' });
464
416
  }
465
417
 
466
- // Codex keywords (intent-phrase only)
467
- if (/\b(ask|use|delegate\s+to)\s+(codex|gpt)\b/i.test(cleanPrompt)) {
468
- matches.push({ name: 'codex', args: '' });
469
- }
470
-
471
- // Gemini keywords (intent-phrase only)
472
- if (/\b(ask|use|delegate\s+to)\s+gemini\b/i.test(cleanPrompt)) {
473
- matches.push({ name: 'gemini', args: '' });
474
- }
475
-
476
418
  // No matches - pass through
477
419
  if (matches.length === 0) {
478
420
  console.log(JSON.stringify({ continue: true, suppressOutput: true }));
@@ -554,20 +496,8 @@ async function main() {
554
496
  return;
555
497
  }
556
498
 
557
- // Split resolved into skills vs MCP delegations
558
- const MCP_KEYWORDS = ['codex', 'gemini'];
559
- const skillMatches = resolved.filter(m => !MCP_KEYWORDS.includes(m.name));
560
- const delegationMatches = resolved.filter(m => MCP_KEYWORDS.includes(m.name));
561
-
562
- if (skillMatches.length > 0 && delegationMatches.length > 0) {
563
- // Combined: skills + MCP delegations
564
- console.log(JSON.stringify(createHookOutput(createCombinedOutput(skillMatches, delegationMatches, prompt))));
565
- } else if (delegationMatches.length > 0) {
566
- // MCP delegation only
567
- const delegationParts = delegationMatches.map(d => createMcpDelegation(d.name, prompt));
568
- console.log(JSON.stringify(createHookOutput(delegationParts.join('\n\n---\n\n'))));
569
- } else {
570
- // Skills only (existing behavior)
499
+ const skillMatches = resolved;
500
+ if (skillMatches.length > 0) {
571
501
  console.log(JSON.stringify(createHookOutput(createMultiSkillInvocation(skillMatches, prompt))));
572
502
  }
573
503
  } catch (error) {
@@ -0,0 +1,168 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * OpenClaw Gateway Demo
4
+ *
5
+ * A minimal HTTP gateway that receives OpenClaw payloads and wakes
6
+ * a clawdbot agent session via /hooks/agent. The agent processes the
7
+ * instruction and delivers its response to the configured Discord channel.
8
+ *
9
+ * Usage:
10
+ * node scripts/openclaw-gateway-demo.mjs [--port 19876]
11
+ *
12
+ * Environment:
13
+ * CLAWDBOT_GATEWAY_URL - Clawdbot gateway base URL (default: http://127.0.0.1:18789)
14
+ * CLAWDBOT_HOOKS_TOKEN - Hooks auth token (required)
15
+ * OPENCLAW_GATEWAY_PORT - Port to listen on (default: 19876)
16
+ * OPENCLAW_DISCORD_CHANNEL - Discord channel ID for delivery (default: #omc-dev)
17
+ */
18
+
19
+ import { createServer } from "node:http";
20
+
21
+ // Parse args
22
+ const args = process.argv.slice(2);
23
+ function getArg(name, env, fallback) {
24
+ const idx = args.indexOf(name);
25
+ if (idx !== -1 && args[idx + 1]) return args[idx + 1];
26
+ return process.env[env] || fallback;
27
+ }
28
+
29
+ const PORT = Number(getArg("--port", "OPENCLAW_GATEWAY_PORT", "19876"));
30
+ const CLAWDBOT_URL = getArg("--clawdbot-url", "CLAWDBOT_GATEWAY_URL", "http://127.0.0.1:18789");
31
+ const HOOKS_TOKEN = process.env.CLAWDBOT_HOOKS_TOKEN;
32
+ const CHANNEL_ID = getArg("--channel-id", "OPENCLAW_DISCORD_CHANNEL", "1468539002985644084");
33
+
34
+ if (!HOOKS_TOKEN) {
35
+ console.error("[openclaw-gateway] CLAWDBOT_HOOKS_TOKEN is required");
36
+ process.exit(1);
37
+ }
38
+
39
+ /**
40
+ * Wake clawdbot agent via /hooks/agent.
41
+ *
42
+ * The agent receives the instruction as its prompt, processes it,
43
+ * and delivers the response to the target Discord channel.
44
+ */
45
+ async function wakeClawdbotAgent(payload) {
46
+ const agentPayload = {
47
+ message: buildAgentMessage(payload),
48
+ name: "OpenClaw",
49
+ wakeMode: "now",
50
+ sessionKey: `openclaw:${payload.sessionId || "unknown"}`,
51
+ channel: "discord",
52
+ to: CHANNEL_ID,
53
+ deliver: true,
54
+ };
55
+
56
+ const url = `${CLAWDBOT_URL}/hooks/agent`;
57
+ const res = await fetch(url, {
58
+ method: "POST",
59
+ headers: {
60
+ Authorization: `Bearer ${HOOKS_TOKEN}`,
61
+ "Content-Type": "application/json",
62
+ },
63
+ body: JSON.stringify(agentPayload),
64
+ });
65
+
66
+ if (!res.ok) {
67
+ const text = await res.text();
68
+ throw new Error(`Clawdbot hooks ${res.status}: ${text}`);
69
+ }
70
+
71
+ return await res.json();
72
+ }
73
+
74
+ /**
75
+ * Build an agent message from the OpenClaw payload.
76
+ *
77
+ * The agent receives this as its prompt and can respond intelligently
78
+ * based on the event type, project context, and instruction.
79
+ */
80
+ function buildAgentMessage(payload) {
81
+ const parts = [];
82
+ parts.push(`[OpenClaw Event: ${payload.event}]`);
83
+
84
+ if (payload.instruction) {
85
+ parts.push(`Instruction: ${payload.instruction}`);
86
+ }
87
+
88
+ if (payload.projectName) {
89
+ parts.push(`Project: ${payload.projectName}`);
90
+ }
91
+
92
+ if (payload.sessionId) {
93
+ parts.push(`Session: ${payload.sessionId}`);
94
+ }
95
+
96
+ // Add context fields if available
97
+ const ctx = payload.context || {};
98
+ if (ctx.contextSummary) {
99
+ parts.push(`Summary: ${ctx.contextSummary}`);
100
+ }
101
+ if (ctx.reason) {
102
+ parts.push(`Reason: ${ctx.reason}`);
103
+ }
104
+ if (ctx.toolName) {
105
+ parts.push(`Tool: ${ctx.toolName}`);
106
+ }
107
+
108
+ parts.push(`Timestamp: ${payload.timestamp || new Date().toISOString()}`);
109
+
110
+ parts.push("");
111
+ parts.push("Please acknowledge this OMC session event and provide a brief status update to #omc-dev.");
112
+
113
+ return parts.join("\n");
114
+ }
115
+
116
+ /** Read JSON body from request */
117
+ function readBody(req) {
118
+ return new Promise((resolve, reject) => {
119
+ const chunks = [];
120
+ req.on("data", (c) => chunks.push(c));
121
+ req.on("end", () => {
122
+ try {
123
+ resolve(JSON.parse(Buffer.concat(chunks).toString()));
124
+ } catch (e) {
125
+ reject(e);
126
+ }
127
+ });
128
+ req.on("error", reject);
129
+ });
130
+ }
131
+
132
+ const server = createServer(async (req, res) => {
133
+ // Health check
134
+ if (req.method === "GET" && req.url === "/health") {
135
+ res.writeHead(200, { "Content-Type": "application/json" });
136
+ res.end(JSON.stringify({ ok: true, gateway: "openclaw-demo", clawdbot: CLAWDBOT_URL }));
137
+ return;
138
+ }
139
+
140
+ // Only accept POST
141
+ if (req.method !== "POST") {
142
+ res.writeHead(405, { "Content-Type": "text/plain" });
143
+ res.end("Method Not Allowed");
144
+ return;
145
+ }
146
+
147
+ try {
148
+ const payload = await readBody(req);
149
+ const sid = (payload.sessionId || "unknown").slice(0, 8);
150
+ console.log(`[openclaw-gateway] Received: ${payload.event} from session ${sid}`);
151
+
152
+ const result = await wakeClawdbotAgent(payload);
153
+ console.log(`[openclaw-gateway] Woke clawdbot agent (runId: ${result.runId})`);
154
+
155
+ res.writeHead(200, { "Content-Type": "application/json" });
156
+ res.end(JSON.stringify({ ok: true, runId: result.runId }));
157
+ } catch (err) {
158
+ console.error(`[openclaw-gateway] Error:`, err.message);
159
+ res.writeHead(500, { "Content-Type": "application/json" });
160
+ res.end(JSON.stringify({ ok: false, error: err.message }));
161
+ }
162
+ });
163
+
164
+ server.listen(PORT, "127.0.0.1", () => {
165
+ console.log(`[openclaw-gateway] Listening on http://127.0.0.1:${PORT}`);
166
+ console.log(`[openclaw-gateway] Clawdbot: ${CLAWDBOT_URL}/hooks/agent`);
167
+ console.log(`[openclaw-gateway] Target channel: ${CHANNEL_ID}`);
168
+ });
@@ -5,7 +5,7 @@
5
5
  * Minimal continuation enforcer for all OMC modes.
6
6
  * Stripped down for reliability — no optional imports, no PRD, no notepad pruning.
7
7
  *
8
- * Supported modes: ralph, autopilot, ultrapilot, swarm, ultrawork, ultraqa, pipeline
8
+ * Supported modes: ralph, autopilot, ultrapilot, swarm, ultrawork, ultraqa, pipeline, team
9
9
  */
10
10
 
11
11
  const {
@@ -18,7 +18,7 @@ const {
18
18
  const { join, dirname, resolve, normalize } = require("path");
19
19
  const { homedir } = require("os");
20
20
 
21
- async function readStdin(timeoutMs = 5000) {
21
+ async function readStdin(timeoutMs = 2000) {
22
22
  return new Promise((resolve) => {
23
23
  const chunks = [];
24
24
  let settled = false;
@@ -406,6 +406,7 @@ async function main() {
406
406
  const ultrawork = readStateFileWithSession(stateDir, "ultrawork-state.json", sessionId);
407
407
  const ultraqa = readStateFileWithSession(stateDir, "ultraqa-state.json", sessionId);
408
408
  const pipeline = readStateFileWithSession(stateDir, "pipeline-state.json", sessionId);
409
+ const team = readStateFileWithSession(stateDir, "team-state.json", sessionId);
409
410
 
410
411
  // Swarm uses swarm-summary.json (not swarm-state.json) + marker file
411
412
  const swarmMarker = existsSync(join(stateDir, "swarm-active.marker"));
@@ -541,7 +542,32 @@ async function main() {
541
542
  }
542
543
  }
543
544
 
544
- // Priority 6: UltraQA (QA cycling)
545
+ // Priority 6: Team (omc-teams / staged pipeline)
546
+ if (team.state?.active && !isStaleState(team.state) && isSessionMatch(team.state, sessionId)) {
547
+ const phase = team.state.current_phase || "executing";
548
+ const terminalPhases = ["completed", "complete", "failed", "cancelled"];
549
+ if (!terminalPhases.includes(phase)) {
550
+ const newCount = (team.state.reinforcement_count || 0) + 1;
551
+ if (newCount <= 20) {
552
+ team.state.reinforcement_count = newCount;
553
+ team.state.last_checked_at = new Date().toISOString();
554
+ writeJsonFile(team.path, team.state);
555
+
556
+ // Fire-and-forget notification
557
+ sendStopNotification('team', team.state, sessionId, directory).catch(() => {});
558
+
559
+ console.log(
560
+ JSON.stringify({
561
+ decision: "block",
562
+ reason: `[TEAM - Phase: ${phase}] Team mode active. Continue working. When all team tasks complete, run /oh-my-claudecode:cancel to cleanly exit. If cancel fails, retry with /oh-my-claudecode:cancel --force.`,
563
+ }),
564
+ );
565
+ return;
566
+ }
567
+ }
568
+ }
569
+
570
+ // Priority 7: UltraQA (QA cycling)
545
571
  if (ultraqa.state?.active && !isStaleState(ultraqa.state) && isSessionMatch(ultraqa.state, sessionId)) {
546
572
  const cycle = ultraqa.state.cycle || 1;
547
573
  const maxCycles = ultraqa.state.max_cycles || 10;
@@ -563,7 +589,7 @@ async function main() {
563
589
  }
564
590
  }
565
591
 
566
- // Priority 7: Ultrawork - ALWAYS continue while active (not just when tasks exist)
592
+ // Priority 8: Ultrawork - ALWAYS continue while active (not just when tasks exist)
567
593
  // This prevents false stops from bash errors, transient failures, etc.
568
594
  // Session isolation: only block if state belongs to this session (issue #311)
569
595
  // Project isolation: only block if state belongs to this project
@@ -5,7 +5,7 @@
5
5
  * Minimal continuation enforcer for all OMC modes.
6
6
  * Stripped down for reliability — no optional imports, no PRD, no notepad pruning.
7
7
  *
8
- * Supported modes: ralph, autopilot, ultrapilot, swarm, ultrawork, ultraqa, pipeline
8
+ * Supported modes: ralph, autopilot, ultrapilot, swarm, ultrawork, ultraqa, pipeline, team
9
9
  */
10
10
 
11
11
  import {
@@ -444,6 +444,12 @@ async function main() {
444
444
  "pipeline-state.json",
445
445
  sessionId,
446
446
  );
447
+ const team = readStateFileWithSession(
448
+ stateDir,
449
+ globalStateDir,
450
+ "team-state.json",
451
+ sessionId,
452
+ );
447
453
 
448
454
  // Swarm uses swarm-summary.json (not swarm-state.json) + marker file
449
455
  const swarmMarker = existsSync(join(stateDir, "swarm-active.marker"));
@@ -654,7 +660,46 @@ async function main() {
654
660
  }
655
661
  }
656
662
 
657
- // Priority 6: UltraQA (QA cycling)
663
+ // Priority 6: Team (omc-teams / staged pipeline)
664
+ if (
665
+ team.state?.active &&
666
+ !isStaleState(team.state) &&
667
+ isStateForCurrentProject(team.state, directory, team.isGlobal)
668
+ ) {
669
+ const sessionMatches = hasValidSessionId
670
+ ? team.state.session_id === sessionId
671
+ : !team.state.session_id || team.state.session_id === sessionId;
672
+ if (sessionMatches) {
673
+ const phase = team.state.current_phase || "executing";
674
+ const terminalPhases = ["completed", "complete", "failed", "cancelled"];
675
+ if (!terminalPhases.includes(phase)) {
676
+ const newCount = (team.state.reinforcement_count || 0) + 1;
677
+ if (newCount <= 20) {
678
+ const toolError = readLastToolError(stateDir);
679
+ const errorGuidance = getToolErrorRetryGuidance(toolError);
680
+
681
+ team.state.reinforcement_count = newCount;
682
+ team.state.last_checked_at = new Date().toISOString();
683
+ writeJsonFile(team.path, team.state);
684
+
685
+ let reason = `[TEAM - Phase: ${phase}] Team mode active. Continue working. When all team tasks complete, run /oh-my-claudecode:cancel to cleanly exit. If cancel fails, retry with /oh-my-claudecode:cancel --force.`;
686
+ if (errorGuidance) {
687
+ reason = errorGuidance + reason;
688
+ }
689
+
690
+ console.log(
691
+ JSON.stringify({
692
+ decision: "block",
693
+ reason,
694
+ }),
695
+ );
696
+ return;
697
+ }
698
+ }
699
+ }
700
+ }
701
+
702
+ // Priority 7: UltraQA (QA cycling)
658
703
  if (
659
704
  ultraqa.state?.active &&
660
705
  !isStaleState(ultraqa.state) &&
@@ -688,7 +733,7 @@ async function main() {
688
733
  }
689
734
  }
690
735
 
691
- // Priority 7: Ultrawork - ALWAYS continue while active (not just when tasks exist)
736
+ // Priority 8: Ultrawork - ALWAYS continue while active (not just when tasks exist)
692
737
  // This prevents false stops from bash errors, transient failures, etc.
693
738
  // Session isolation: only block if state belongs to this session (issue #311)
694
739
  // If state has session_id, it must match. If no session_id (legacy), allow.
@@ -59,7 +59,9 @@ async function main() {
59
59
  const home = homedir();
60
60
 
61
61
  // 1. Try plugin cache first (marketplace: omc, plugin: oh-my-claudecode)
62
- const pluginCacheBase = join(home, ".claude/plugins/cache/omc/oh-my-claudecode");
62
+ // Respect CLAUDE_CONFIG_DIR so installs under a custom config dir are found
63
+ const configDir = process.env.CLAUDE_CONFIG_DIR || join(home, ".claude");
64
+ const pluginCacheBase = join(configDir, "plugins", "cache", "omc", "oh-my-claudecode");
63
65
  if (existsSync(pluginCacheBase)) {
64
66
  try {
65
67
  const versions = readdirSync(pluginCacheBase);
@@ -90,7 +92,7 @@ async function main() {
90
92
  for (const devPath of devPaths) {
91
93
  if (existsSync(devPath)) {
92
94
  try {
93
- await import(devPath);
95
+ await import(pathToFileURL(devPath).href);
94
96
  return;
95
97
  } catch { /* continue */ }
96
98
  }
@@ -121,7 +123,7 @@ try {
121
123
  const nodeBin = process.execPath || 'node';
122
124
  settings.statusLine = {
123
125
  type: 'command',
124
- command: `${nodeBin} ${hudScriptPath.replace(/\\/g, "/")}`
126
+ command: `"${nodeBin}" "${hudScriptPath.replace(/\\/g, "/")}"`
125
127
  };
126
128
  writeFileSync(SETTINGS_FILE, JSON.stringify(settings, null, 2));
127
129
  console.log('[OMC] Configured HUD statusLine in settings.json');
@@ -145,4 +147,65 @@ try {
145
147
  console.log('[OMC] Warning: Could not configure settings.json:', e.message);
146
148
  }
147
149
 
150
+ // Patch hooks.json to use the absolute node binary path so hooks work on all
151
+ // platforms: Windows (no `sh`), nvm/fnm users (node not on PATH in hooks), etc.
152
+ //
153
+ // The source hooks.json uses `node run.cjs` as a portable template; this step
154
+ // substitutes the real process.execPath so Claude Code always invokes the same
155
+ // Node binary that ran this setup script.
156
+ //
157
+ // Two patterns are handled:
158
+ // 1. New format – node "${CLAUDE_PLUGIN_ROOT}/scripts/run.cjs" ... (all platforms)
159
+ // 2. Old format – sh "${CLAUDE_PLUGIN_ROOT}/scripts/find-node.sh" ... (Windows
160
+ // backward-compat: migrates old installs to the new run.cjs chain)
161
+ //
162
+ // Fixes issues #909, #899, #892, #869.
163
+ try {
164
+ const hooksJsonPath = join(__dirname, '..', 'hooks', 'hooks.json');
165
+ if (existsSync(hooksJsonPath)) {
166
+ const data = JSON.parse(readFileSync(hooksJsonPath, 'utf-8'));
167
+ let patched = false;
168
+
169
+ // Pattern 1 (new): node "${CLAUDE_PLUGIN_ROOT}/scripts/run.cjs" <rest>
170
+ const runCjsPattern =
171
+ /^node ("\$\{CLAUDE_PLUGIN_ROOT\}\/scripts\/run\.cjs".*)$/;
172
+
173
+ // Pattern 2 (old, Windows backward-compat): sh find-node.sh <target> [args]
174
+ const findNodePattern =
175
+ /^sh "\$\{CLAUDE_PLUGIN_ROOT\}\/scripts\/find-node\.sh" "(\$\{CLAUDE_PLUGIN_ROOT\}\/scripts\/[^"]+)"(.*)$/;
176
+
177
+ for (const groups of Object.values(data.hooks ?? {})) {
178
+ for (const group of groups) {
179
+ for (const hook of (group.hooks ?? [])) {
180
+ if (typeof hook.command !== 'string') continue;
181
+
182
+ // New run.cjs format — replace bare `node` with absolute path (all platforms)
183
+ const m1 = hook.command.match(runCjsPattern);
184
+ if (m1) {
185
+ hook.command = `"${nodeBin}" ${m1[1]}`;
186
+ patched = true;
187
+ continue;
188
+ }
189
+
190
+ // Old find-node.sh format — migrate to run.cjs + absolute path (Windows only)
191
+ if (process.platform === 'win32') {
192
+ const m2 = hook.command.match(findNodePattern);
193
+ if (m2) {
194
+ hook.command = `"${nodeBin}" "\${CLAUDE_PLUGIN_ROOT}/scripts/run.cjs" "${m2[1]}"${m2[2]}`;
195
+ patched = true;
196
+ }
197
+ }
198
+ }
199
+ }
200
+ }
201
+
202
+ if (patched) {
203
+ writeFileSync(hooksJsonPath, JSON.stringify(data, null, 2) + '\n');
204
+ console.log(`[OMC] Patched hooks.json with absolute node path (${nodeBin}), fixes issues #909, #899, #892`);
205
+ }
206
+ }
207
+ } catch (e) {
208
+ console.log('[OMC] Warning: Could not patch hooks.json:', e.message);
209
+ }
210
+
148
211
  console.log('[OMC] Setup complete! Restart Claude Code to activate HUD.');