oh-my-codex 0.6.3 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/README.md +19 -9
  2. package/bin/omx.js +3 -5
  3. package/dist/agents/__tests__/definitions.test.d.ts +2 -0
  4. package/dist/agents/__tests__/definitions.test.d.ts.map +1 -0
  5. package/dist/agents/__tests__/definitions.test.js +35 -0
  6. package/dist/agents/__tests__/definitions.test.js.map +1 -0
  7. package/dist/agents/__tests__/native-config.test.d.ts +2 -0
  8. package/dist/agents/__tests__/native-config.test.d.ts.map +1 -0
  9. package/dist/agents/__tests__/native-config.test.js +48 -0
  10. package/dist/agents/__tests__/native-config.test.js.map +1 -0
  11. package/dist/catalog/__tests__/schema.test.js +15 -0
  12. package/dist/catalog/__tests__/schema.test.js.map +1 -1
  13. package/dist/catalog/schema.d.ts.map +1 -1
  14. package/dist/catalog/schema.js +6 -0
  15. package/dist/catalog/schema.js.map +1 -1
  16. package/dist/cli/__tests__/catalog-contract.test.d.ts +2 -0
  17. package/dist/cli/__tests__/catalog-contract.test.d.ts.map +1 -0
  18. package/dist/cli/__tests__/catalog-contract.test.js +18 -0
  19. package/dist/cli/__tests__/catalog-contract.test.js.map +1 -0
  20. package/dist/cli/__tests__/doctor-team.test.js +3 -2
  21. package/dist/cli/__tests__/doctor-team.test.js.map +1 -1
  22. package/dist/cli/__tests__/error-handling-warnings.test.d.ts +2 -0
  23. package/dist/cli/__tests__/error-handling-warnings.test.d.ts.map +1 -0
  24. package/dist/cli/__tests__/error-handling-warnings.test.js +35 -0
  25. package/dist/cli/__tests__/error-handling-warnings.test.js.map +1 -0
  26. package/dist/cli/__tests__/index.test.js +81 -8
  27. package/dist/cli/__tests__/index.test.js.map +1 -1
  28. package/dist/cli/__tests__/setup-agents-overwrite.test.d.ts +2 -0
  29. package/dist/cli/__tests__/setup-agents-overwrite.test.d.ts.map +1 -0
  30. package/dist/cli/__tests__/setup-agents-overwrite.test.js +124 -0
  31. package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -0
  32. package/dist/cli/__tests__/setup-scope.test.js +79 -21
  33. package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
  34. package/dist/cli/__tests__/setup-skills-overwrite.test.d.ts +2 -0
  35. package/dist/cli/__tests__/setup-skills-overwrite.test.d.ts.map +1 -0
  36. package/dist/cli/__tests__/setup-skills-overwrite.test.js +32 -0
  37. package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -0
  38. package/dist/cli/__tests__/star-prompt.test.js +74 -0
  39. package/dist/cli/__tests__/star-prompt.test.js.map +1 -1
  40. package/dist/cli/__tests__/team.test.js +8 -0
  41. package/dist/cli/__tests__/team.test.js.map +1 -1
  42. package/dist/cli/doctor.d.ts.map +1 -1
  43. package/dist/cli/doctor.js +75 -18
  44. package/dist/cli/doctor.js.map +1 -1
  45. package/dist/cli/index.d.ts +10 -1
  46. package/dist/cli/index.d.ts.map +1 -1
  47. package/dist/cli/index.js +153 -45
  48. package/dist/cli/index.js.map +1 -1
  49. package/dist/cli/setup.d.ts +2 -1
  50. package/dist/cli/setup.d.ts.map +1 -1
  51. package/dist/cli/setup.js +104 -60
  52. package/dist/cli/setup.js.map +1 -1
  53. package/dist/cli/star-prompt.d.ts +21 -1
  54. package/dist/cli/star-prompt.d.ts.map +1 -1
  55. package/dist/cli/star-prompt.js +34 -13
  56. package/dist/cli/star-prompt.js.map +1 -1
  57. package/dist/cli/team.d.ts.map +1 -1
  58. package/dist/cli/team.js +10 -3
  59. package/dist/cli/team.js.map +1 -1
  60. package/dist/cli/update.d.ts.map +1 -1
  61. package/dist/cli/update.js.map +1 -1
  62. package/dist/config/__tests__/generator-notify.test.js +16 -0
  63. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  64. package/dist/config/__tests__/models.test.js +9 -1
  65. package/dist/config/__tests__/models.test.js.map +1 -1
  66. package/dist/config/generator.js +9 -10
  67. package/dist/config/generator.js.map +1 -1
  68. package/dist/config/models.d.ts +8 -1
  69. package/dist/config/models.d.ts.map +1 -1
  70. package/dist/config/models.js +27 -5
  71. package/dist/config/models.js.map +1 -1
  72. package/dist/hooks/__tests__/agents-overlay.test.js +24 -0
  73. package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
  74. package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts +18 -0
  75. package/dist/hooks/__tests__/consensus-execution-handoff.test.d.ts.map +1 -0
  76. package/dist/hooks/__tests__/consensus-execution-handoff.test.js +204 -0
  77. package/dist/hooks/__tests__/consensus-execution-handoff.test.js.map +1 -0
  78. package/dist/hooks/__tests__/emulator.test.d.ts +2 -0
  79. package/dist/hooks/__tests__/emulator.test.d.ts.map +1 -0
  80. package/dist/hooks/__tests__/emulator.test.js +47 -0
  81. package/dist/hooks/__tests__/emulator.test.js.map +1 -0
  82. package/dist/hooks/__tests__/keyword-detector.test.js +330 -4
  83. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  84. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +101 -0
  85. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js.map +1 -1
  86. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js +13 -7
  87. package/dist/hooks/__tests__/notify-hook-cross-worktree-heartbeat.test.js.map +1 -1
  88. package/dist/hooks/__tests__/notify-hook-modules.test.js +61 -0
  89. package/dist/hooks/__tests__/notify-hook-modules.test.js.map +1 -1
  90. package/dist/hooks/__tests__/notify-hook-session-scope.test.js +47 -0
  91. package/dist/hooks/__tests__/notify-hook-session-scope.test.js.map +1 -1
  92. package/dist/hooks/__tests__/notify-hook-worker-idle.test.d.ts +2 -0
  93. package/dist/hooks/__tests__/notify-hook-worker-idle.test.d.ts.map +1 -0
  94. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js +560 -0
  95. package/dist/hooks/__tests__/notify-hook-worker-idle.test.js.map +1 -0
  96. package/dist/hooks/__tests__/session.test.d.ts +2 -0
  97. package/dist/hooks/__tests__/session.test.d.ts.map +1 -0
  98. package/dist/hooks/__tests__/session.test.js +161 -0
  99. package/dist/hooks/__tests__/session.test.js.map +1 -0
  100. package/dist/hooks/__tests__/task-size-detector.test.d.ts +2 -0
  101. package/dist/hooks/__tests__/task-size-detector.test.d.ts.map +1 -0
  102. package/dist/hooks/__tests__/task-size-detector.test.js +336 -0
  103. package/dist/hooks/__tests__/task-size-detector.test.js.map +1 -0
  104. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.d.ts +2 -0
  105. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.d.ts.map +1 -0
  106. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.js +24 -0
  107. package/dist/hooks/__tests__/tmux-hook-engine-types-sync.test.js.map +1 -0
  108. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  109. package/dist/hooks/agents-overlay.js +46 -2
  110. package/dist/hooks/agents-overlay.js.map +1 -1
  111. package/dist/hooks/code-simplifier/__tests__/index.test.js +67 -15
  112. package/dist/hooks/code-simplifier/__tests__/index.test.js.map +1 -1
  113. package/dist/hooks/code-simplifier/index.d.ts +10 -4
  114. package/dist/hooks/code-simplifier/index.d.ts.map +1 -1
  115. package/dist/hooks/code-simplifier/index.js +38 -12
  116. package/dist/hooks/code-simplifier/index.js.map +1 -1
  117. package/dist/hooks/codebase-map.d.ts.map +1 -1
  118. package/dist/hooks/codebase-map.js +5 -32
  119. package/dist/hooks/codebase-map.js.map +1 -1
  120. package/dist/hooks/emulator.d.ts.map +1 -1
  121. package/dist/hooks/emulator.js +11 -18
  122. package/dist/hooks/emulator.js.map +1 -1
  123. package/dist/hooks/extensibility/__tests__/dispatcher.test.js +59 -1
  124. package/dist/hooks/extensibility/__tests__/dispatcher.test.js.map +1 -1
  125. package/dist/hooks/extensibility/__tests__/loader.test.js +19 -0
  126. package/dist/hooks/extensibility/__tests__/loader.test.js.map +1 -1
  127. package/dist/hooks/extensibility/dispatcher.d.ts.map +1 -1
  128. package/dist/hooks/extensibility/dispatcher.js +51 -39
  129. package/dist/hooks/extensibility/dispatcher.js.map +1 -1
  130. package/dist/hooks/extensibility/loader.d.ts.map +1 -1
  131. package/dist/hooks/extensibility/loader.js +25 -13
  132. package/dist/hooks/extensibility/loader.js.map +1 -1
  133. package/dist/hooks/extensibility/logging.d.ts.map +1 -1
  134. package/dist/hooks/extensibility/logging.js +6 -1
  135. package/dist/hooks/extensibility/logging.js.map +1 -1
  136. package/dist/hooks/extensibility/sdk.js.map +1 -1
  137. package/dist/hooks/keyword-detector.d.ts +87 -0
  138. package/dist/hooks/keyword-detector.d.ts.map +1 -1
  139. package/dist/hooks/keyword-detector.js +235 -23
  140. package/dist/hooks/keyword-detector.js.map +1 -1
  141. package/dist/hooks/keyword-registry.d.ts +15 -0
  142. package/dist/hooks/keyword-registry.d.ts.map +1 -0
  143. package/dist/hooks/keyword-registry.js +41 -0
  144. package/dist/hooks/keyword-registry.js.map +1 -0
  145. package/dist/hooks/session.d.ts +18 -2
  146. package/dist/hooks/session.d.ts.map +1 -1
  147. package/dist/hooks/session.js +84 -11
  148. package/dist/hooks/session.js.map +1 -1
  149. package/dist/hooks/task-size-detector.d.ts +72 -0
  150. package/dist/hooks/task-size-detector.d.ts.map +1 -0
  151. package/dist/hooks/task-size-detector.js +204 -0
  152. package/dist/hooks/task-size-detector.js.map +1 -0
  153. package/dist/hud/__tests__/colors.test.js +1 -103
  154. package/dist/hud/__tests__/colors.test.js.map +1 -1
  155. package/dist/hud/__tests__/index.test.d.ts +2 -0
  156. package/dist/hud/__tests__/index.test.d.ts.map +1 -0
  157. package/dist/hud/__tests__/index.test.js +131 -0
  158. package/dist/hud/__tests__/index.test.js.map +1 -0
  159. package/dist/hud/__tests__/render.test.js +53 -0
  160. package/dist/hud/__tests__/render.test.js.map +1 -1
  161. package/dist/hud/__tests__/watch.test.d.ts +2 -0
  162. package/dist/hud/__tests__/watch.test.d.ts.map +1 -0
  163. package/dist/hud/__tests__/watch.test.js +63 -0
  164. package/dist/hud/__tests__/watch.test.js.map +1 -0
  165. package/dist/hud/colors.d.ts +2 -9
  166. package/dist/hud/colors.d.ts.map +1 -1
  167. package/dist/hud/colors.js +19 -34
  168. package/dist/hud/colors.js.map +1 -1
  169. package/dist/hud/constants.d.ts +1 -0
  170. package/dist/hud/constants.d.ts.map +1 -1
  171. package/dist/hud/constants.js +1 -0
  172. package/dist/hud/constants.js.map +1 -1
  173. package/dist/hud/index.d.ts +27 -0
  174. package/dist/hud/index.d.ts.map +1 -1
  175. package/dist/hud/index.js +149 -9
  176. package/dist/hud/index.js.map +1 -1
  177. package/dist/hud/render.d.ts.map +1 -1
  178. package/dist/hud/render.js +20 -7
  179. package/dist/hud/render.js.map +1 -1
  180. package/dist/mcp/__tests__/bootstrap.test.d.ts +2 -0
  181. package/dist/mcp/__tests__/bootstrap.test.d.ts.map +1 -0
  182. package/dist/mcp/__tests__/bootstrap.test.js +25 -0
  183. package/dist/mcp/__tests__/bootstrap.test.js.map +1 -0
  184. package/dist/mcp/__tests__/code-intel-server.test.d.ts +2 -0
  185. package/dist/mcp/__tests__/code-intel-server.test.d.ts.map +1 -0
  186. package/dist/mcp/__tests__/code-intel-server.test.js +43 -0
  187. package/dist/mcp/__tests__/code-intel-server.test.js.map +1 -0
  188. package/dist/mcp/__tests__/memory-server.test.d.ts +2 -0
  189. package/dist/mcp/__tests__/memory-server.test.d.ts.map +1 -0
  190. package/dist/mcp/__tests__/memory-server.test.js +34 -0
  191. package/dist/mcp/__tests__/memory-server.test.js.map +1 -0
  192. package/dist/mcp/__tests__/memory-validation.test.d.ts +2 -0
  193. package/dist/mcp/__tests__/memory-validation.test.d.ts.map +1 -0
  194. package/dist/mcp/__tests__/memory-validation.test.js +29 -0
  195. package/dist/mcp/__tests__/memory-validation.test.js.map +1 -0
  196. package/dist/mcp/__tests__/path-traversal.test.js +55 -0
  197. package/dist/mcp/__tests__/path-traversal.test.js.map +1 -1
  198. package/dist/mcp/__tests__/state-paths.test.js +43 -6
  199. package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
  200. package/dist/mcp/__tests__/state-server-ralph-phase.test.js +50 -0
  201. package/dist/mcp/__tests__/state-server-ralph-phase.test.js.map +1 -1
  202. package/dist/mcp/__tests__/state-server-schema.test.js +3 -7
  203. package/dist/mcp/__tests__/state-server-schema.test.js.map +1 -1
  204. package/dist/mcp/__tests__/state-server.test.js +30 -1
  205. package/dist/mcp/__tests__/state-server.test.js.map +1 -1
  206. package/dist/mcp/__tests__/trace-server.test.js +58 -0
  207. package/dist/mcp/__tests__/trace-server.test.js.map +1 -1
  208. package/dist/mcp/bootstrap.d.ts +3 -0
  209. package/dist/mcp/bootstrap.d.ts.map +1 -0
  210. package/dist/mcp/bootstrap.js +13 -0
  211. package/dist/mcp/bootstrap.js.map +1 -0
  212. package/dist/mcp/code-intel-server.d.ts +8 -0
  213. package/dist/mcp/code-intel-server.d.ts.map +1 -1
  214. package/dist/mcp/code-intel-server.js +50 -24
  215. package/dist/mcp/code-intel-server.js.map +1 -1
  216. package/dist/mcp/memory-server.js +34 -13
  217. package/dist/mcp/memory-server.js.map +1 -1
  218. package/dist/mcp/memory-validation.d.ts +9 -0
  219. package/dist/mcp/memory-validation.d.ts.map +1 -0
  220. package/dist/mcp/memory-validation.js +11 -0
  221. package/dist/mcp/memory-validation.js.map +1 -0
  222. package/dist/mcp/state-paths.d.ts +2 -0
  223. package/dist/mcp/state-paths.d.ts.map +1 -1
  224. package/dist/mcp/state-paths.js +83 -12
  225. package/dist/mcp/state-paths.js.map +1 -1
  226. package/dist/mcp/state-server.d.ts.map +1 -1
  227. package/dist/mcp/state-server.js +85 -47
  228. package/dist/mcp/state-server.js.map +1 -1
  229. package/dist/mcp/trace-server.d.ts +16 -0
  230. package/dist/mcp/trace-server.d.ts.map +1 -1
  231. package/dist/mcp/trace-server.js +84 -24
  232. package/dist/mcp/trace-server.js.map +1 -1
  233. package/dist/modes/__tests__/base-ralph-contract.test.d.ts +2 -0
  234. package/dist/modes/__tests__/base-ralph-contract.test.d.ts.map +1 -0
  235. package/dist/modes/__tests__/base-ralph-contract.test.js +49 -0
  236. package/dist/modes/__tests__/base-ralph-contract.test.js.map +1 -0
  237. package/dist/modes/__tests__/base-tmux-pane.test.js +13 -1
  238. package/dist/modes/__tests__/base-tmux-pane.test.js.map +1 -1
  239. package/dist/modes/base.d.ts +0 -4
  240. package/dist/modes/base.d.ts.map +1 -1
  241. package/dist/modes/base.js +31 -11
  242. package/dist/modes/base.js.map +1 -1
  243. package/dist/notifications/__tests__/config.test.js +47 -1
  244. package/dist/notifications/__tests__/config.test.js.map +1 -1
  245. package/dist/notifications/__tests__/formatter.test.js +54 -2
  246. package/dist/notifications/__tests__/formatter.test.js.map +1 -1
  247. package/dist/notifications/__tests__/hook-config.test.d.ts +5 -0
  248. package/dist/notifications/__tests__/hook-config.test.d.ts.map +1 -0
  249. package/dist/notifications/__tests__/hook-config.test.js +139 -0
  250. package/dist/notifications/__tests__/hook-config.test.js.map +1 -0
  251. package/dist/notifications/__tests__/idle-cooldown.test.d.ts +5 -0
  252. package/dist/notifications/__tests__/idle-cooldown.test.d.ts.map +1 -0
  253. package/dist/notifications/__tests__/idle-cooldown.test.js +100 -0
  254. package/dist/notifications/__tests__/idle-cooldown.test.js.map +1 -0
  255. package/dist/notifications/__tests__/notifier.test.js +89 -1
  256. package/dist/notifications/__tests__/notifier.test.js.map +1 -1
  257. package/dist/notifications/__tests__/reply-config.test.d.ts +2 -0
  258. package/dist/notifications/__tests__/reply-config.test.d.ts.map +1 -0
  259. package/dist/notifications/__tests__/reply-config.test.js +79 -0
  260. package/dist/notifications/__tests__/reply-config.test.js.map +1 -0
  261. package/dist/notifications/__tests__/reply-listener.test.js +35 -1
  262. package/dist/notifications/__tests__/reply-listener.test.js.map +1 -1
  263. package/dist/notifications/__tests__/session-registry.test.js +40 -0
  264. package/dist/notifications/__tests__/session-registry.test.js.map +1 -1
  265. package/dist/notifications/__tests__/template-engine.test.d.ts +5 -0
  266. package/dist/notifications/__tests__/template-engine.test.d.ts.map +1 -0
  267. package/dist/notifications/__tests__/template-engine.test.js +147 -0
  268. package/dist/notifications/__tests__/template-engine.test.js.map +1 -0
  269. package/dist/notifications/config.d.ts +8 -0
  270. package/dist/notifications/config.d.ts.map +1 -1
  271. package/dist/notifications/config.js +110 -19
  272. package/dist/notifications/config.js.map +1 -1
  273. package/dist/notifications/formatter.d.ts +5 -0
  274. package/dist/notifications/formatter.d.ts.map +1 -1
  275. package/dist/notifications/formatter.js +45 -10
  276. package/dist/notifications/formatter.js.map +1 -1
  277. package/dist/notifications/hook-config-types.d.ts +43 -0
  278. package/dist/notifications/hook-config-types.d.ts.map +1 -0
  279. package/dist/notifications/hook-config-types.js +8 -0
  280. package/dist/notifications/hook-config-types.js.map +1 -0
  281. package/dist/notifications/hook-config.d.ts +40 -0
  282. package/dist/notifications/hook-config.d.ts.map +1 -0
  283. package/dist/notifications/hook-config.js +127 -0
  284. package/dist/notifications/hook-config.js.map +1 -0
  285. package/dist/notifications/idle-cooldown.d.ts +35 -0
  286. package/dist/notifications/idle-cooldown.d.ts.map +1 -0
  287. package/dist/notifications/idle-cooldown.js +108 -0
  288. package/dist/notifications/idle-cooldown.js.map +1 -0
  289. package/dist/notifications/index.d.ts +3 -0
  290. package/dist/notifications/index.d.ts.map +1 -1
  291. package/dist/notifications/index.js +43 -1
  292. package/dist/notifications/index.js.map +1 -1
  293. package/dist/notifications/notifier.d.ts +9 -0
  294. package/dist/notifications/notifier.d.ts.map +1 -1
  295. package/dist/notifications/notifier.js +36 -30
  296. package/dist/notifications/notifier.js.map +1 -1
  297. package/dist/notifications/reply-listener.d.ts +3 -0
  298. package/dist/notifications/reply-listener.d.ts.map +1 -1
  299. package/dist/notifications/reply-listener.js +61 -7
  300. package/dist/notifications/reply-listener.js.map +1 -1
  301. package/dist/notifications/session-registry.d.ts +1 -1
  302. package/dist/notifications/session-registry.d.ts.map +1 -1
  303. package/dist/notifications/session-registry.js +18 -6
  304. package/dist/notifications/session-registry.js.map +1 -1
  305. package/dist/notifications/template-engine.d.ts +34 -0
  306. package/dist/notifications/template-engine.d.ts.map +1 -0
  307. package/dist/notifications/template-engine.js +246 -0
  308. package/dist/notifications/template-engine.js.map +1 -0
  309. package/dist/notifications/types.d.ts +6 -0
  310. package/dist/notifications/types.d.ts.map +1 -1
  311. package/dist/openclaw/__tests__/config.test.d.ts +6 -0
  312. package/dist/openclaw/__tests__/config.test.d.ts.map +1 -0
  313. package/dist/openclaw/__tests__/config.test.js +174 -0
  314. package/dist/openclaw/__tests__/config.test.js.map +1 -0
  315. package/dist/openclaw/__tests__/dispatcher.test.d.ts +5 -0
  316. package/dist/openclaw/__tests__/dispatcher.test.d.ts.map +1 -0
  317. package/dist/openclaw/__tests__/dispatcher.test.js +104 -0
  318. package/dist/openclaw/__tests__/dispatcher.test.js.map +1 -0
  319. package/dist/openclaw/__tests__/index.test.d.ts +6 -0
  320. package/dist/openclaw/__tests__/index.test.d.ts.map +1 -0
  321. package/dist/openclaw/__tests__/index.test.js +131 -0
  322. package/dist/openclaw/__tests__/index.test.js.map +1 -0
  323. package/dist/openclaw/config.d.ts +37 -0
  324. package/dist/openclaw/config.d.ts.map +1 -0
  325. package/dist/openclaw/config.js +106 -0
  326. package/dist/openclaw/config.js.map +1 -0
  327. package/dist/openclaw/dispatcher.d.ts +63 -0
  328. package/dist/openclaw/dispatcher.d.ts.map +1 -0
  329. package/dist/openclaw/dispatcher.js +223 -0
  330. package/dist/openclaw/dispatcher.js.map +1 -0
  331. package/dist/openclaw/index.d.ts +27 -0
  332. package/dist/openclaw/index.d.ts.map +1 -0
  333. package/dist/openclaw/index.js +130 -0
  334. package/dist/openclaw/index.js.map +1 -0
  335. package/dist/openclaw/types.d.ts +105 -0
  336. package/dist/openclaw/types.d.ts.map +1 -0
  337. package/dist/openclaw/types.js +12 -0
  338. package/dist/openclaw/types.js.map +1 -0
  339. package/dist/ralph/contract.d.ts.map +1 -1
  340. package/dist/ralph/contract.js +13 -4
  341. package/dist/ralph/contract.js.map +1 -1
  342. package/dist/team/__tests__/phase-controller.test.js +14 -0
  343. package/dist/team/__tests__/phase-controller.test.js.map +1 -1
  344. package/dist/team/__tests__/runtime.test.js +328 -1
  345. package/dist/team/__tests__/runtime.test.js.map +1 -1
  346. package/dist/team/__tests__/scaling.test.d.ts +2 -0
  347. package/dist/team/__tests__/scaling.test.d.ts.map +1 -0
  348. package/dist/team/__tests__/scaling.test.js +295 -0
  349. package/dist/team/__tests__/scaling.test.js.map +1 -0
  350. package/dist/team/__tests__/state.test.js +62 -1
  351. package/dist/team/__tests__/state.test.js.map +1 -1
  352. package/dist/team/__tests__/tmux-session.test.js +219 -14
  353. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  354. package/dist/team/__tests__/worker-bootstrap.test.js +4 -0
  355. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  356. package/dist/team/contracts.d.ts +14 -0
  357. package/dist/team/contracts.d.ts.map +1 -0
  358. package/dist/team/contracts.js +30 -0
  359. package/dist/team/contracts.js.map +1 -0
  360. package/dist/team/model-contract.d.ts +1 -0
  361. package/dist/team/model-contract.d.ts.map +1 -1
  362. package/dist/team/model-contract.js +5 -1
  363. package/dist/team/model-contract.js.map +1 -1
  364. package/dist/team/phase-controller.d.ts +2 -0
  365. package/dist/team/phase-controller.d.ts.map +1 -1
  366. package/dist/team/phase-controller.js +16 -2
  367. package/dist/team/phase-controller.js.map +1 -1
  368. package/dist/team/runtime.d.ts.map +1 -1
  369. package/dist/team/runtime.js +356 -65
  370. package/dist/team/runtime.js.map +1 -1
  371. package/dist/team/scaling.d.ts +58 -0
  372. package/dist/team/scaling.d.ts.map +1 -0
  373. package/dist/team/scaling.js +319 -0
  374. package/dist/team/scaling.js.map +1 -0
  375. package/dist/team/state.d.ts +11 -2
  376. package/dist/team/state.d.ts.map +1 -1
  377. package/dist/team/state.js +97 -27
  378. package/dist/team/state.js.map +1 -1
  379. package/dist/team/team-ops.d.ts +2 -0
  380. package/dist/team/team-ops.d.ts.map +1 -1
  381. package/dist/team/team-ops.js +4 -0
  382. package/dist/team/team-ops.js.map +1 -1
  383. package/dist/team/tmux-session.d.ts +34 -5
  384. package/dist/team/tmux-session.d.ts.map +1 -1
  385. package/dist/team/tmux-session.js +177 -49
  386. package/dist/team/tmux-session.js.map +1 -1
  387. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  388. package/dist/team/worker-bootstrap.js +20 -0
  389. package/dist/team/worker-bootstrap.js.map +1 -1
  390. package/dist/utils/__tests__/paths.test.js +8 -1
  391. package/dist/utils/__tests__/paths.test.js.map +1 -1
  392. package/dist/utils/paths.d.ts.map +1 -1
  393. package/dist/utils/paths.js +14 -6
  394. package/dist/utils/paths.js.map +1 -1
  395. package/dist/verification/__tests__/verifier.test.js +20 -1
  396. package/dist/verification/__tests__/verifier.test.js.map +1 -1
  397. package/dist/verification/verifier.d.ts +5 -0
  398. package/dist/verification/verifier.d.ts.map +1 -1
  399. package/dist/verification/verifier.js +19 -0
  400. package/dist/verification/verifier.js.map +1 -1
  401. package/package.json +2 -1
  402. package/prompts/architect.md +11 -0
  403. package/prompts/critic.md +14 -1
  404. package/prompts/planner.md +21 -0
  405. package/scripts/notify-hook/auto-nudge.js +80 -1
  406. package/scripts/notify-hook/payload-parser.js +21 -0
  407. package/scripts/notify-hook/team-worker.js +142 -0
  408. package/scripts/notify-hook/tmux-injection.js +3 -3
  409. package/scripts/notify-hook.js +55 -4
  410. package/skills/configure-notifications/SKILL.md +278 -0
  411. package/skills/configure-openclaw/SKILL.md +267 -0
  412. package/skills/configure-slack/SKILL.md +226 -0
  413. package/skills/omx-setup/SKILL.md +14 -19
  414. package/skills/plan/SKILL.md +57 -33
  415. package/skills/ralplan/SKILL.md +107 -21
  416. package/skills/team/SKILL.md +10 -1
  417. package/templates/AGENTS.md +11 -3
@@ -4,7 +4,7 @@ description: Strategic planning with optional interview workflow
4
4
  ---
5
5
 
6
6
  <Purpose>
7
- Plan creates comprehensive, actionable work plans through intelligent interaction. It auto-detects whether to interview the user (broad requests) or plan directly (detailed requests), and supports consensus mode (iterative Planner/Architect/Critic loop) and review mode (Critic evaluation of existing plans).
7
+ Plan creates comprehensive, actionable work plans through intelligent interaction. It auto-detects whether to interview the user (broad requests) or plan directly (detailed requests), and supports consensus mode (iterative Planner/Architect/Critic loop with RALPLAN-DR structured deliberation) and review mode (Critic evaluation of existing plans).
8
8
  </Purpose>
9
9
 
10
10
  <Use_When>
@@ -31,7 +31,8 @@ Jumping into code without understanding requirements leads to rework, scope cree
31
31
  - Ask one question at a time during interviews -- never batch multiple questions
32
32
  - Gather codebase facts via `explore` agent before asking the user about them
33
33
  - Plans must meet quality standards: 80%+ claims cite file/line, 90%+ criteria are testable
34
- - Consensus mode auto-proceeds by default; add `--interactive` to require explicit user approval before proceeding to implementation
34
+ - Consensus mode outputs the final plan by default; add `--interactive` to enable execution handoff
35
+ - Consensus mode uses RALPLAN-DR short mode by default; switch to deliberate mode with `--deliberate` or when the request explicitly signals high risk (auth/security, data migration, destructive/irreversible changes, production incident, compliance/PII, public API breakage)
35
36
  </Execution_Policy>
36
37
 
37
38
  <Steps>
@@ -42,8 +43,8 @@ Jumping into code without understanding requirements leads to rework, scope cree
42
43
  |------|---------|----------|
43
44
  | Interview | Default for broad requests | Interactive requirements gathering |
44
45
  | Direct | `--direct`, or detailed request | Skip interview, generate plan directly |
45
- | Consensus | `--consensus`, "ralplan" | Planner -> Architect -> Critic loop until agreement; auto-proceeds by default |
46
- | Consensus Interactive | `--consensus --interactive` | Same as Consensus but pauses for user feedback at draft and approval steps |
46
+ | Consensus | `--consensus`, "ralplan" | Planner -> Architect -> Critic loop until agreement with RALPLAN-DR structured deliberation (short by default, `--deliberate` for high-risk); outputs plan by default |
47
+ | Consensus Interactive | `--consensus --interactive` | Same as Consensus but pauses for user feedback at draft and approval steps, then hands off to execution |
47
48
  | Review | `--review`, "review this plan" | Critic evaluation of existing plan |
48
49
 
49
50
  ### Interview Mode (broad/vague requests)
@@ -63,31 +64,48 @@ Jumping into code without understanding requirements leads to rework, scope cree
63
64
 
64
65
  ### Consensus Mode (`--consensus` / "ralplan")
65
66
 
66
- Default behavior is **non-interactive**: the workflow auto-proceeds through all steps without pausing for user input. Add `--interactive` to enable confirmation prompts at the draft and approval steps.
67
-
68
- 1. **Planner** creates initial plan
69
- 2. **User feedback** (only in `--interactive` mode):
70
- - Use `AskUserQuestion` to present the draft plan with these options:
71
- - **Proceed to review** send to Architect and Critic for evaluation
72
- - **Request changes** return to step 1 with user feedback incorporated
73
- - **Skip review** go directly to final approval (step 6)
74
- - Without `--interactive`: automatically proceed to Architect review (step 3)
75
- 3. **Architect** reviews for architectural soundness (prefer `ask_codex` with `architect` role)
76
- 4. **Critic** evaluates against quality criteria (prefer `ask_codex` with `critic` role)
77
- 5. If Critic rejects: iterate with feedback (max 5 iterations)
78
- 6. On Critic approval:
79
- - **`--interactive` mode**: use `AskUserQuestion` to present the plan with these options:
80
- - **Approve and execute** proceed to implementation via ralph+ultrawork
81
- - **Request changes** return to step 1 with user feedback
82
- - **Reject** discard the plan entirely
83
- - **Default (non-interactive)**: automatically approve and proceed to execution
84
- 7. (`--interactive` only) User chooses via the structured `AskUserQuestion` UI (never ask for approval in plain text)
85
- 8. On approval: **MUST** invoke `/ralph` with the approved plan path from `.omx/plans/` as context. Do NOT implement directly. Do NOT edit source code files in the planning agent. The ralph skill handles execution via ultrawork parallel agents.
67
+ **RALPLAN-DR modes**: **Short** (default, bounded structure) and **Deliberate** (for `--deliberate` or explicit high-risk requests). Both modes keep the same Planner -> Architect -> Critic sequence. The workflow auto-proceeds through planning steps (Planner/Architect/Critic) but outputs the final plan without executing.
68
+
69
+ 1. **Planner** creates initial plan and a compact **RALPLAN-DR summary** before any Architect review. The summary **MUST** include:
70
+ - **Principles** (3-5)
71
+ - **Decision Drivers** (top 3)
72
+ - **Viable Options** (>=2) with bounded pros/cons for each option
73
+ - If only one viable option remains, an explicit **invalidation rationale** for the alternatives that were rejected
74
+ - In **deliberate mode**: a **pre-mortem** (3 failure scenarios) and an **expanded test plan** covering **unit / integration / e2e / observability**
75
+ 2. **User feedback** *(--interactive only)*: If running with `--interactive`, **MUST** use `AskUserQuestion` to present the draft plan **plus the RALPLAN-DR Principles / Decision Drivers / Options summary for early direction alignment** with these options:
76
+ - **Proceed to review** send to Architect and Critic for evaluation
77
+ - **Request changes** return to step 1 with user feedback incorporated
78
+ - **Skip review** go directly to final approval (step 7)
79
+ If NOT running with `--interactive`, automatically proceed to review (step 3).
80
+ 3. **Architect** reviews for architectural soundness using `ask_codex` with `agent_role: "architect"`. Architect review **MUST** include: strongest steelman counterargument (antithesis) against the favored option, at least one meaningful tradeoff tension, and (when possible) a synthesis path. In deliberate mode, Architect should explicitly flag principle violations. **Wait for this step to complete before proceeding to step 4.** Do NOT run steps 3 and 4 in parallel.
81
+ 4. **Critic** evaluates against quality criteria using `ask_codex` with `agent_role: "critic"`. Critic **MUST** verify principle-option consistency, fair alternative exploration, risk mitigation clarity, testable acceptance criteria, and concrete verification steps. Critic **MUST** explicitly reject shallow alternatives, driver contradictions, vague risks, or weak verification. In deliberate mode, Critic **MUST** reject missing/weak pre-mortem or missing/weak expanded test plan. Run only after step 3 is complete.
82
+ 5. **Re-review loop** (max 5 iterations): If Critic rejects or iterates, execute this closed loop:
83
+ a. Collect all feedback from Architect + Critic
84
+ b. Pass feedback to Planner to produce a revised plan
85
+ c. **Return to Step 3** Architect reviews the revised plan
86
+ d. **Return to Step 4** Critic evaluates the revised plan
87
+ e. Repeat until Critic approves OR max 5 iterations reached
88
+ f. If max iterations reached without approval, present the best version to user via `AskUserQuestion` with note that expert consensus was not reached
89
+ 6. **Apply improvements**: When reviewers approve with improvement suggestions, merge all accepted improvements into the plan file before proceeding. Final consensus output **MUST** include an **ADR** section with: **Decision**, **Drivers**, **Alternatives considered**, **Why chosen**, **Consequences**, **Follow-ups**. Specifically:
90
+ a. Collect all improvement suggestions from Architect and Critic responses
91
+ b. Deduplicate and categorize the suggestions
92
+ c. Update the plan file in `.omx/plans/` with the accepted improvements (add missing details, refine steps, strengthen acceptance criteria, ADR updates, etc.)
93
+ d. Note which improvements were applied in a brief changelog section at the end of the plan
94
+ 7. On Critic approval (with improvements applied): *(--interactive only)* If running with `--interactive`, use `AskUserQuestion` to present the plan with these options:
95
+ - **Approve and execute** — proceed to implementation via ralph+ultrawork
96
+ - **Approve and implement via team** — proceed to implementation via coordinated parallel team agents
97
+ - **Request changes** — return to step 1 with user feedback
98
+ - **Reject** — discard the plan entirely
99
+ If NOT running with `--interactive`, output the final approved plan and stop. Do NOT auto-execute.
100
+ 8. *(--interactive only)* User chooses via the structured `AskUserQuestion` UI (never ask for approval in plain text)
101
+ 9. On user approval (--interactive only):
102
+ - **Approve and execute**: **MUST** invoke `$ralph` with the approved plan path from `.omx/plans/` as context. Do NOT implement directly. Do NOT edit source code files in the planning agent. The ralph skill handles execution via ultrawork parallel agents.
103
+ - **Approve and implement via team**: **MUST** invoke `$team` with the approved plan path from `.omx/plans/` as context. Do NOT implement directly. The team skill coordinates parallel agents across the staged pipeline for faster execution on large tasks.
86
104
 
87
105
  ### Review Mode (`--review`)
88
106
 
89
107
  1. Read plan file from `.omx/plans/`
90
- 2. Evaluate via Critic (prefer `ask_codex` with `critic` role)
108
+ 2. Evaluate via Critic using `ask_codex` with `agent_role: "critic"`
91
109
  3. Return verdict: APPROVED, REVISE (with specific feedback), or REJECT (replanning required)
92
110
 
93
111
  ### Plan Output Format
@@ -98,6 +116,9 @@ Every plan includes:
98
116
  - Implementation Steps (with file references)
99
117
  - Risks and Mitigations
100
118
  - Verification Steps
119
+ - For consensus/ralplan: **RALPLAN-DR summary** (Principles, Decision Drivers, Options)
120
+ - For consensus/ralplan final output: **ADR** (Decision, Drivers, Alternatives considered, Why chosen, Consequences, Follow-ups)
121
+ - For deliberate consensus mode: **Pre-mortem (3 scenarios)** and **Expanded Test Plan** (unit/integration/e2e/observability)
101
122
 
102
123
  Plans are saved to `.omx/plans/`. Drafts go to `.omx/drafts/`.
103
124
  </Steps>
@@ -111,9 +132,10 @@ Plans are saved to `.omx/plans/`. Drafts go to `.omx/drafts/`.
111
132
  - Use `ask_codex` with `agent_role: "analyst"` for requirements analysis
112
133
  - Use `ask_codex` with `agent_role: "critic"` for plan review in consensus and review modes
113
134
  - If ToolSearch finds no MCP tools or Codex is unavailable, fall back to equivalent OMX prompt agents -- never block on external tools
114
- - In consensus mode with `--interactive`, **MUST** use `AskUserQuestion` for the user feedback step (step 2) and the final approval step (step 6) -- never ask for approval in plain text
115
- - In consensus mode **without** `--interactive`, auto-proceed through all steps without pausing for user input
116
- - In consensus mode, on approval **MUST** invoke `/ralph` for execution (step 8) -- never implement directly in the planning agent
135
+ - **CRITICAL Consensus mode agent calls MUST be sequential, never parallel.** Always await the Architect result before issuing the Critic call.
136
+ - In consensus mode, default to RALPLAN-DR short mode; enable deliberate mode on `--deliberate` or explicit high-risk signals (auth/security, migrations, destructive changes, production incidents, compliance/PII, public API breakage)
137
+ - In consensus mode with `--interactive`: use `AskUserQuestion` for the user feedback step (step 2) and the final approval step (step 7) -- never ask for approval in plain text. Without `--interactive`, auto-proceed through planning steps without pausing. Output the final plan without execution.
138
+ - In consensus mode with `--interactive`, on user approval **MUST** invoke `$ralph` for execution (step 9) -- never implement directly in the planning agent
117
139
  </Tool_Usage>
118
140
 
119
141
  <Examples>
@@ -169,8 +191,8 @@ Why bad: Decision fatigue. Present one option with trade-offs, get reaction, the
169
191
  <Escalation_And_Stop_Conditions>
170
192
  - Stop interviewing when requirements are clear enough to plan -- do not over-interview
171
193
  - In consensus mode, stop after 5 Planner/Architect/Critic iterations and present the best version
172
- - Consensus mode auto-proceeds to implementation by default; with `--interactive`, requires explicit user approval before implementation begins
173
- - If the user says "just do it" or "skip planning", **MUST** invoke `/ralph` to transition to execution mode. Do NOT implement directly in the planning agent.
194
+ - Consensus mode outputs the plan by default; with `--interactive`, user can approve and hand off to ralph/team
195
+ - If the user says "just do it" or "skip planning", **MUST** invoke `$ralph` to transition to execution mode. Do NOT implement directly in the planning agent.
174
196
  - Escalate to the user when there are irreconcilable trade-offs that require a business decision
175
197
  </Escalation_And_Stop_Conditions>
176
198
 
@@ -180,8 +202,10 @@ Why bad: Decision fatigue. Present one option with trade-offs, get reaction, the
180
202
  - [ ] All risks have mitigations identified
181
203
  - [ ] No vague terms without metrics ("fast" -> "p99 < 200ms")
182
204
  - [ ] Plan saved to `.omx/plans/`
183
- - [ ] In consensus mode with `--interactive`: user explicitly approved before any execution
184
- - [ ] In consensus mode without `--interactive`: auto-proceeded to execution after Critic approval
205
+ - [ ] In consensus mode: RALPLAN-DR summary includes 3-5 principles, top 3 drivers, and >=2 viable options (or explicit invalidation rationale)
206
+ - [ ] In consensus mode final output: ADR section included (Decision / Drivers / Alternatives considered / Why chosen / Consequences / Follow-ups)
207
+ - [ ] In deliberate consensus mode: pre-mortem (3 scenarios) + expanded test plan (unit/integration/e2e/observability) included
208
+ - [ ] In consensus mode with `--interactive`: user explicitly approved before any execution; without `--interactive`: output final plan after Critic approval (no auto-execution)
185
209
  </Final_Checklist>
186
210
 
187
211
  <Advanced>
@@ -228,5 +252,5 @@ Before asking any interview question, classify it:
228
252
 
229
253
  ## Deprecation Notice
230
254
 
231
- The separate `/planner`, `/ralplan`, and `/review` skills have been merged into `/plan`. All workflows (interview, direct, consensus, review) are available through `/plan`.
255
+ The separate `/planner`, `/ralplan`, and `/review` skills have been merged into `$plan`. All workflows (interview, direct, consensus, review) are available through `$plan`.
232
256
  </Advanced>
@@ -1,46 +1,132 @@
1
1
  ---
2
2
  name: ralplan
3
- description: Alias for /plan --consensus
3
+ description: Alias for $plan --consensus
4
4
  ---
5
5
 
6
6
  # Ralplan (Consensus Planning Alias)
7
7
 
8
- Ralplan is a shorthand alias for `/plan --consensus`. It triggers iterative planning with Planner, Architect, and Critic agents until consensus is reached.
8
+ Ralplan is a shorthand alias for `$plan --consensus`. It triggers iterative planning with Planner, Architect, and Critic agents until consensus is reached, with **RALPLAN-DR structured deliberation** (short mode by default, deliberate mode for high-risk work).
9
9
 
10
10
  ## Usage
11
11
 
12
12
  ```
13
- /ralplan "task description"
14
- /ralplan --interactive "task description"
13
+ $ralplan "task description"
15
14
  ```
16
15
 
17
16
  ## Flags
18
17
 
19
- | Flag | Description |
20
- |------|-------------|
21
- | *(none)* | Default non-interactive mode: auto-proceeds through all steps without pausing |
22
- | `--interactive` | Pauses at draft feedback (step 2) and final approval (step 6) to prompt the user |
18
+ - `--interactive`: Enables user prompts at key decision points (draft review in step 2 and final approval in step 6). Without this flag the workflow runs fully automated — Planner → Architect → Critic loop — and outputs the final plan without asking for confirmation.
19
+ - `--deliberate`: Forces deliberate mode for high-risk work. Adds pre-mortem (3 scenarios) and expanded test planning (unit/integration/e2e/observability). Without this flag, deliberate mode can still auto-enable when the request explicitly signals high risk (auth/security, migrations, destructive changes, production incidents, compliance/PII, public API breakage).
20
+
21
+ ## Usage with interactive mode
22
+
23
+ ```
24
+ $ralplan --interactive "task description"
25
+ ```
23
26
 
24
27
  ## Behavior
25
28
 
26
29
  This skill invokes the Plan skill in consensus mode:
27
30
 
28
31
  ```
29
- /plan --consensus <arguments>
30
- /plan --consensus --interactive <arguments>
32
+ $plan --consensus <arguments>
33
+ $plan --consensus --interactive <arguments>
31
34
  ```
32
35
 
33
- The consensus workflow (default — non-interactive):
34
- 1. **Planner** creates initial plan
35
- 2. *(skipped in default mode)* Auto-proceeds to Architect review
36
- 3. **Architect** reviews for architectural soundness
37
- 4. **Critic** evaluates against quality criteria
38
- 5. If Critic rejects: iterate with feedback (max 5 iterations)
39
- 6. *(skipped in default mode)* Auto-approves on Critic approval
40
- 7. **MUST** invoke `/ralph` for execution -- never implement directly
36
+ The consensus workflow:
37
+ 1. **Planner** creates initial plan and a compact **RALPLAN-DR summary** before review:
38
+ - Principles (3-5)
39
+ - Decision Drivers (top 3)
40
+ - Viable Options (>=2) with bounded pros/cons
41
+ - If only one viable option remains, explicit invalidation rationale for alternatives
42
+ - Deliberate mode only: pre-mortem (3 scenarios) + expanded test plan (unit/integration/e2e/observability)
43
+ 2. **User feedback** *(--interactive only)*: If `--interactive` is set, use `AskUserQuestion` to present the draft plan **plus the Principles / Drivers / Options summary** before review (Proceed to review / Request changes / Skip review). Otherwise, automatically proceed to review.
44
+ 3. **Architect** reviews for architectural soundness and must provide the strongest steelman antithesis, at least one real tradeoff tension, and (when possible) synthesis — **await completion before step 4**. In deliberate mode, Architect should explicitly flag principle violations.
45
+ 4. **Critic** evaluates against quality criteria — run only after step 3 completes. Critic must enforce principle-option consistency, fair alternatives, risk mitigation clarity, testable acceptance criteria, and concrete verification steps. In deliberate mode, Critic must reject missing/weak pre-mortem or expanded test plan.
46
+ 5. **Re-review loop** (max 5 iterations): Any non-`APPROVE` Critic verdict (`ITERATE` or `REJECT`) MUST run the same full closed loop:
47
+ a. Collect Architect + Critic feedback
48
+ b. Revise the plan with Planner
49
+ c. Return to Architect review
50
+ d. Return to Critic evaluation
51
+ e. Repeat this loop until Critic returns `APPROVE` or 5 iterations are reached
52
+ f. If 5 iterations are reached without `APPROVE`, present the best version to the user
53
+ 6. On Critic approval *(--interactive only)*: If `--interactive` is set, use `AskUserQuestion` to present the plan with approval options (Approve and execute via ralph / Approve and implement via team / Request changes / Reject). Final plan must include ADR (Decision, Drivers, Alternatives considered, Why chosen, Consequences, Follow-ups). Otherwise, output the final plan and stop.
54
+ 7. *(--interactive only)* User chooses: Approve (ralph or team), Request changes, or Reject
55
+ 8. *(--interactive only)* On approval: invoke `$ralph` for sequential execution or `$team` for parallel team execution -- never implement directly
41
56
 
42
- With `--interactive` flag, steps 2 and 6 pause to ask the user via `AskUserQuestion`:
43
- - Step 2 options: Proceed to review / Request changes / Skip review
44
- - Step 6 options: Approve and execute / Request changes / Reject
57
+ > **Important:** Steps 3 and 4 MUST run sequentially. Do NOT issue both agent calls in the same parallel batch. Always await the Architect result before invoking Critic.
45
58
 
46
59
  Follow the Plan skill's full documentation for consensus mode details.
60
+
61
+ ## Pre-Execution Gate
62
+
63
+ ### Why the Gate Exists
64
+
65
+ Execution modes (ralph, autopilot, team, ultrawork) spin up heavy multi-agent orchestration. When launched on a vague request like "ralph improve the app", agents have no clear target — they waste cycles on scope discovery that should happen during planning, often delivering partial or misaligned work that requires rework.
66
+
67
+ The ralplan-first gate intercepts underspecified execution requests and redirects them through the ralplan consensus planning workflow. This ensures:
68
+ - **Explicit scope**: A PRD defines exactly what will be built
69
+ - **Test specification**: Acceptance criteria are testable before code is written
70
+ - **Consensus**: Planner, Architect, and Critic agree on the approach
71
+ - **No wasted execution**: Agents start with a clear, bounded task
72
+
73
+ ### Good vs Bad Prompts
74
+
75
+ **Passes the gate** (specific enough for direct execution):
76
+ - `ralph fix the null check in src/hooks/bridge.ts:326`
77
+ - `autopilot implement issue #42`
78
+ - `team add validation to function processKeywordDetector`
79
+ - `ralph do:\n1. Add input validation\n2. Write tests\n3. Update README`
80
+ - `ultrawork add the user model in src/models/user.ts`
81
+
82
+ **Gated — redirected to ralplan** (needs scoping first):
83
+ - `ralph fix this`
84
+ - `autopilot build the app`
85
+ - `team improve performance`
86
+ - `ralph add authentication`
87
+ - `ultrawork make it better`
88
+
89
+ **Bypass the gate** (when you know what you want):
90
+ - `force: ralph refactor the auth module`
91
+ - `! autopilot optimize everything`
92
+
93
+ ### When the Gate Does NOT Trigger
94
+
95
+ The gate auto-passes when it detects **any** concrete signal. You do not need all of them — one is enough:
96
+
97
+ | Signal Type | Example prompt | Why it passes |
98
+ |---|---|---|
99
+ | File path | `ralph fix src/hooks/bridge.ts` | References a specific file |
100
+ | Issue/PR number | `ralph implement #42` | Has a concrete work item |
101
+ | camelCase symbol | `ralph fix processKeywordDetector` | Names a specific function |
102
+ | PascalCase symbol | `ralph update UserModel` | Names a specific class |
103
+ | snake_case symbol | `team fix user_model` | Names a specific identifier |
104
+ | Test runner | `ralph npm test && fix failures` | Has an explicit test target |
105
+ | Numbered steps | `ralph do:\n1. Add X\n2. Test Y` | Structured deliverables |
106
+ | Acceptance criteria | `ralph add login - acceptance criteria: ...` | Explicit success definition |
107
+ | Error reference | `ralph fix TypeError in auth` | Specific error to address |
108
+ | Code block | `ralph add: \`\`\`ts ... \`\`\`` | Concrete code provided |
109
+ | Escape prefix | `force: ralph do it` or `! ralph do it` | Explicit user override |
110
+
111
+ ### End-to-End Flow Example
112
+
113
+ 1. User types: `ralph add user authentication`
114
+ 2. Gate detects: execution keyword (`ralph`) + underspecified prompt (no files, functions, or test spec)
115
+ 3. Gate redirects to **ralplan** with message explaining the redirect
116
+ 4. Ralplan consensus runs:
117
+ - **Planner** creates initial plan (which files, what auth method, what tests)
118
+ - **Architect** reviews for soundness
119
+ - **Critic** validates quality and testability
120
+ 5. On consensus approval, user chooses execution path:
121
+ - **ralph**: sequential execution with verification
122
+ - **team**: parallel coordinated agents
123
+ 6. Execution begins with a clear, bounded plan
124
+
125
+ ### Troubleshooting
126
+
127
+ | Issue | Solution |
128
+ |-------|----------|
129
+ | Gate fires on a well-specified prompt | Add a file reference, function name, or issue number to anchor the request |
130
+ | Want to bypass the gate | Prefix with `force:` or `!` (e.g., `force: ralph fix it`) |
131
+ | Gate does not fire on a vague prompt | The gate only catches prompts with <=15 effective words and no concrete anchors; add more detail or use `$ralplan` explicitly |
132
+ | Redirected to ralplan but want to skip planning | In the ralplan workflow, say "just do it" or "skip planning" to transition directly to execution |
@@ -102,6 +102,14 @@ Important:
102
102
  - Workers may run in separate git worktrees (`omx team --worktree[=<name>]`) while sharing one team state root
103
103
  - Worker ACKs go to `mailbox/leader-fixed.json`
104
104
  - Notify hook updates worker heartbeat and nudges leader during active team mode
105
+ - Submit routing uses this CLI resolution order per worker trigger:
106
+ 1) explicit worker CLI provided by runtime state (persisted on worker identity/config),
107
+ 2) `OMX_TEAM_WORKER_CLI_MAP` entry for that worker index,
108
+ 3) fallback `OMX_TEAM_WORKER_CLI` / auto detection.
109
+ - Mixed CLI-map teams are supported for both startup and trigger submit behavior.
110
+ - Trigger submit differs by CLI:
111
+ - Codex may use queue-first `Tab` on busy panes (strategy-dependent).
112
+ - Claude always uses direct Enter-only (`C-m`) rounds (never queue-first `Tab`).
105
113
 
106
114
  ### Team worker model + thinking resolution (current contract)
107
115
 
@@ -212,7 +220,8 @@ Useful runtime env vars:
212
220
  - `OMX_TEAM_WORKER_CLI`
213
221
  - Worker CLI selector: `auto|codex|claude` (default: `auto`)
214
222
  - `auto` chooses `claude` when worker `--model` contains `claude`, otherwise `codex`
215
- - In `claude` mode, workers launch as plain `claude` and ignore explicit model/config/effort launch overrides (uses default `settings.json`)
223
+ - In `claude` mode, workers launch with exactly one `--dangerously-skip-permissions`
224
+ and ignore explicit model/config/effort launch overrides (uses default `settings.json`)
216
225
  - `OMX_TEAM_WORKER_CLI_MAP`
217
226
  - Per-worker CLI selector (comma-separated `auto|codex|claude`)
218
227
  - Length must be `1` (broadcast) or exactly the team worker count
@@ -150,7 +150,7 @@ Do not ask for confirmation — just read the skill file and follow its instruct
150
150
  | "autopilot", "build me", "I want a" | `$autopilot` | Read `~/.agents/skills/autopilot/SKILL.md`, execute autonomous pipeline |
151
151
  | "ultrawork", "ulw", "parallel" | `$ultrawork` | Read `~/.agents/skills/ultrawork/SKILL.md`, execute parallel agents |
152
152
  | "plan this", "plan the", "let's plan" | `$plan` | Read `~/.agents/skills/plan/SKILL.md`, start planning workflow |
153
- | "ralplan", "consensus plan" | `$ralplan` | Read `~/.agents/skills/ralplan/SKILL.md`, start consensus planning |
153
+ | "ralplan", "consensus plan" | `$ralplan` | Read `~/.agents/skills/ralplan/SKILL.md`, start consensus planning with RALPLAN-DR structured deliberation (short by default, `--deliberate` for high-risk) |
154
154
  | "team", "swarm", "coordinated team", "coordinated swarm" | `$team` | Read `~/.agents/skills/team/SKILL.md`, start team orchestration (swarm compatibility alias) |
155
155
  | "ecomode", "eco", "budget" | `$ecomode` | Read `~/.agents/skills/ecomode/SKILL.md`, enable token-efficient mode |
156
156
  | "cancel", "stop", "abort" | `$cancel` | Read `~/.agents/skills/cancel/SKILL.md`, cancel active modes |
@@ -164,6 +164,11 @@ Detection rules:
164
164
  - If multiple keywords match, use the most specific (longest match)
165
165
  - Conflict resolution: explicit `$name` invocation overrides keyword detection
166
166
  - The rest of the user's message (after keyword extraction) becomes the task description
167
+
168
+ Ralph / Ralplan execution gate:
169
+ - Enforce **ralplan-first** when ralph is active and planning is not complete.
170
+ - Planning is complete only after both `.omx/plans/prd-*.md` and `.omx/plans/test-spec-*.md` exist.
171
+ - Until complete, do not begin implementation or execute implementation-focused tools.
167
172
  </keyword_detection>
168
173
 
169
174
  ---
@@ -179,8 +184,8 @@ Workflow Skills:
179
184
  - `team`: N coordinated agents on shared task list
180
185
  - `swarm`: N coordinated agents on shared task list (compatibility facade over team)
181
186
  - `ultraqa`: QA cycling -- test, verify, fix, repeat
182
- - `plan`: Strategic planning with optional consensus mode
183
- - `ralplan`: Iterative consensus planning (planner + architect + critic)
187
+ - `plan`: Strategic planning with optional RALPLAN-DR consensus mode
188
+ - `ralplan`: Iterative consensus planning with RALPLAN-DR structured deliberation (planner + architect + critic); supports `--deliberate` for high-risk work
184
189
 
185
190
  Agent Shortcuts:
186
191
  - `analyze` -> debugger: Investigation and root-cause analysis
@@ -282,6 +287,9 @@ Parallelization:
282
287
 
283
288
  Continuation:
284
289
  Before concluding, confirm: zero pending tasks, all features working, tests passing, zero errors, verification evidence collected. If any item is unchecked, continue working.
290
+
291
+ Ralph planning gate:
292
+ If ralph is active, verify PRD + test spec artifacts exist before any implementation work/tool execution. If missing, stay in planning and create them first (ralplan-first).
285
293
  </execution_protocols>
286
294
 
287
295
  <cancellation>