oh-my-codex 0.12.2 → 0.12.4
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.
- package/Cargo.lock +5 -5
- package/Cargo.toml +1 -1
- package/README.md +2 -0
- package/dist/cli/__tests__/index.test.js +73 -12
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +8 -27
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.d.ts +2 -0
- package/dist/cli/__tests__/mcp-parity.test.d.ts.map +1 -0
- package/dist/cli/__tests__/mcp-parity.test.js +111 -0
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -0
- package/dist/cli/__tests__/nested-help-routing.test.js +13 -0
- package/dist/cli/__tests__/nested-help-routing.test.js.map +1 -1
- package/dist/cli/__tests__/package-bin-contract.test.js +6 -1
- package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.d.ts +2 -0
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.d.ts.map +1 -0
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js +189 -0
- package/dist/cli/__tests__/setup-hooks-shared-ownership.test.js.map +1 -0
- package/dist/cli/__tests__/setup-scope.test.js +48 -0
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/state.test.d.ts +2 -0
- package/dist/cli/__tests__/state.test.d.ts.map +1 -0
- package/dist/cli/__tests__/state.test.js +46 -0
- package/dist/cli/__tests__/state.test.js.map +1 -0
- package/dist/cli/__tests__/team.test.js +238 -2
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +37 -2
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/index.d.ts +6 -13
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +47 -60
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp-parity.d.ts +22 -0
- package/dist/cli/mcp-parity.d.ts.map +1 -0
- package/dist/cli/mcp-parity.js +227 -0
- package/dist/cli/mcp-parity.js.map +1 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +5 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/state.d.ts +8 -0
- package/dist/cli/state.d.ts.map +1 -0
- package/dist/cli/state.js +71 -0
- package/dist/cli/state.js.map +1 -0
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +6 -5
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +18 -4
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.d.ts +2 -0
- package/dist/config/__tests__/codex-hooks.test.d.ts.map +1 -0
- package/dist/config/__tests__/codex-hooks.test.js +53 -0
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -0
- package/dist/config/codex-hooks.d.ts +16 -7
- package/dist/config/codex-hooks.d.ts.map +1 -1
- package/dist/config/codex-hooks.js +134 -2
- package/dist/config/codex-hooks.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +62 -0
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +20 -8
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.d.ts +2 -0
- package/dist/hud/__tests__/reconcile.test.d.ts.map +1 -0
- package/dist/hud/__tests__/reconcile.test.js +83 -0
- package/dist/hud/__tests__/reconcile.test.js.map +1 -0
- package/dist/hud/__tests__/render.test.js +43 -0
- package/dist/hud/__tests__/render.test.js.map +1 -1
- package/dist/hud/constants.d.ts +2 -1
- package/dist/hud/constants.d.ts.map +1 -1
- package/dist/hud/constants.js +2 -1
- package/dist/hud/constants.js.map +1 -1
- package/dist/hud/index.d.ts +4 -1
- package/dist/hud/index.d.ts.map +1 -1
- package/dist/hud/index.js +11 -5
- package/dist/hud/index.js.map +1 -1
- package/dist/hud/reconcile.d.ts +23 -0
- package/dist/hud/reconcile.d.ts.map +1 -0
- package/dist/hud/reconcile.js +71 -0
- package/dist/hud/reconcile.js.map +1 -0
- package/dist/hud/render.d.ts +6 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +77 -3
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/tmux.d.ts +26 -0
- package/dist/hud/tmux.d.ts.map +1 -0
- package/dist/hud/tmux.js +126 -0
- package/dist/hud/tmux.js.map +1 -0
- package/dist/mcp/bootstrap.d.ts.map +1 -1
- package/dist/mcp/bootstrap.js +16 -6
- package/dist/mcp/bootstrap.js.map +1 -1
- package/dist/mcp/code-intel-server.d.ts +298 -0
- package/dist/mcp/code-intel-server.d.ts.map +1 -1
- package/dist/mcp/code-intel-server.js +9 -5
- package/dist/mcp/code-intel-server.js.map +1 -1
- package/dist/mcp/memory-server.d.ts +195 -1
- package/dist/mcp/memory-server.d.ts.map +1 -1
- package/dist/mcp/memory-server.js +9 -5
- package/dist/mcp/memory-server.js.map +1 -1
- package/dist/mcp/trace-server.d.ts +51 -0
- package/dist/mcp/trace-server.d.ts.map +1 -1
- package/dist/mcp/trace-server.js +9 -5
- package/dist/mcp/trace-server.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +481 -8
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +171 -52
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/codex-native-pre-post.d.ts +5 -0
- package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
- package/dist/scripts/codex-native-pre-post.js +86 -0
- package/dist/scripts/codex-native-pre-post.js.map +1 -1
- package/dist/scripts/notify-hook/operational-events.d.ts.map +1 -1
- package/dist/scripts/notify-hook/operational-events.js +7 -2
- package/dist/scripts/notify-hook/operational-events.js.map +1 -1
- package/dist/state/__tests__/operations-ralph-phase.test.d.ts +2 -0
- package/dist/state/__tests__/operations-ralph-phase.test.d.ts.map +1 -0
- package/dist/state/__tests__/operations-ralph-phase.test.js +82 -0
- package/dist/state/__tests__/operations-ralph-phase.test.js.map +1 -0
- package/dist/state/__tests__/operations.test.d.ts +2 -0
- package/dist/state/__tests__/operations.test.d.ts.map +1 -0
- package/dist/state/__tests__/operations.test.js +200 -0
- package/dist/state/__tests__/operations.test.js.map +1 -0
- package/dist/state/__tests__/path-traversal.test.d.ts +2 -0
- package/dist/state/__tests__/path-traversal.test.d.ts.map +1 -0
- package/dist/state/__tests__/path-traversal.test.js +49 -0
- package/dist/state/__tests__/path-traversal.test.js.map +1 -0
- package/dist/state/operations.d.ts +11 -0
- package/dist/state/operations.d.ts.map +1 -0
- package/dist/state/operations.js +233 -0
- package/dist/state/operations.js.map +1 -0
- package/dist/team/__tests__/api-interop.test.js +24 -2
- package/dist/team/__tests__/api-interop.test.js.map +1 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js +9 -1
- package/dist/team/__tests__/delivery-e2e-smoke.test.js.map +1 -1
- package/dist/team/__tests__/runtime-cli.test.js +45 -0
- package/dist/team/__tests__/runtime-cli.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +227 -66
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +33 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/api-interop.d.ts.map +1 -1
- package/dist/team/api-interop.js +2 -1
- package/dist/team/api-interop.js.map +1 -1
- package/dist/team/runtime-cli.d.ts.map +1 -1
- package/dist/team/runtime-cli.js +21 -2
- package/dist/team/runtime-cli.js.map +1 -1
- package/dist/team/runtime.d.ts +8 -0
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +203 -85
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state/dispatch.d.ts.map +1 -1
- package/dist/team/state/dispatch.js +9 -0
- package/dist/team/state/dispatch.js.map +1 -1
- package/dist/team/tmux-session.js +3 -3
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worktree.d.ts +2 -0
- package/dist/team/worktree.d.ts.map +1 -1
- package/dist/team/worktree.js +7 -1
- package/dist/team/worktree.js.map +1 -1
- package/dist/utils/__tests__/paths.test.js +76 -1
- package/dist/utils/__tests__/paths.test.js.map +1 -1
- package/dist/utils/paths.d.ts +6 -0
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +14 -0
- package/dist/utils/paths.js.map +1 -1
- package/dist/verification/__tests__/ci-rust-gates.test.js +59 -11
- package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
- package/dist/verification/__tests__/ralph-persistence-gate.test.js +1 -4
- package/dist/verification/__tests__/ralph-persistence-gate.test.js.map +1 -1
- package/package.json +6 -1
- package/src/scripts/__tests__/codex-native-hook.test.ts +636 -8
- package/src/scripts/codex-native-hook.ts +249 -60
- package/src/scripts/codex-native-pre-post.ts +104 -0
- package/src/scripts/notify-hook/operational-events.ts +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-cli.test.js","sourceRoot":"","sources":["../../../src/team/__tests__/runtime-cli.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AAC5B,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExF,KAAK,UAAU,oBAAoB;IACjC,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,GAAG,CAAC;IACrD,OAAO,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC3C,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAEhD,MAAM,CAAC,SAAS,CACd,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,EACtD,CAAC,OAAO,EAAE,QAAQ,CAAC,CACpB,CAAC;QACF,MAAM,CAAC,SAAS,CACd,UAAU,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAC7C,CAAC,QAAQ,CAAC,CACX,CAAC;QACF,MAAM,CAAC,MAAM,CACX,GAAG,EAAE,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAC7D,kCAAkC,CACnC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAChE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACzD,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;YAClB,IAAI,CAAC,MAAM;gBAAE,OAAO;YAEpB,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC;YAC/B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,MAAM,CAAC;YACpC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,MAAM,CAAC;YACpC,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAElC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACvE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE;gBACvB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBACzB,YAAY,EAAE,MAAM;aACrB,CAAC,CAAC;YAEH,MAAM,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,CAAC;YACtC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,GAAG,MAAM,CAAC;YACpC,MAAM,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAElC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;YACtE,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtB,OAAO,EAAE,CAAC,MAAM,CAAC;gBACjB,YAAY,EAAE,MAAM;aACrB,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAEhD,MAAM,qBAAqB,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1F,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;QAE7D,MAAM,YAAY,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iFAAiF,EAAE,KAAK,IAAI,EAAE;QAC/F,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,+BAA+B,CAAC,CAAC,CAAC;QAC3E,MAAM,iBAAiB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iCAAiC,CAAC,CAAC,CAAC;QAC3F,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,iBAAiB,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,kBAAkB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACpE,MAAM,UAAU,CAAC,kBAAkB,EAAE;gBACnC,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,kCAAkC;gBAC/C,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,iCAAiC;aAC1C,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;YAC7D,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;YAC3C,MAAM,CAAC,SAAS,CACd,UAAU,CAAC,kBAAkB,CAAC,SAAS,EAAE,kBAAkB,CAAC,EAC5D,CAAC;oBACC,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,iCAAiC;iBAC3C,CAAC,CACH,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,qBAAqB,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;;gBAClG,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC5C,MAAM,EAAE,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACvE,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACrE,MAAM,UAAU,CAAC,mBAAmB,EAAE;gBACpC,OAAO,EAAE,cAAc;gBACvB,WAAW,EAAE,0BAA0B;gBACvC,MAAM,EAAE,SAAS;aAClB,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,UAAU,CAAC,yBAAyB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YAErE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,qBAAqB,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;;gBAClG,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC5C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;QAClF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QACvE,MAAM,qBAAqB,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,sBAAsB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACxE,MAAM,UAAU,CAAC,sBAAsB,EAAE;gBACvC,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,kBAAkB;gBAC/B,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,UAAU;aAClB,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAC5E,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;YAChG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;YAE1C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,yBAAyB,EAAE,UAAU,CAAC,CAAC;QACxE,CAAC;gBAAS,CAAC;YACT,IAAI,OAAO,qBAAqB,KAAK,QAAQ;gBAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,qBAAqB,CAAC;;gBAClG,OAAO,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;YAC5C,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wEAAwE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,oCAAoC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,+BAA+B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YACjF,MAAM,UAAU,CAAC,+BAA+B,EAAE;gBAChD,OAAO,EAAE,WAAW;gBACpB,WAAW,EAAE,kBAAkB;gBAC/B,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,iCAAiC;aAC1C,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,CAAC,CAAC;YACrF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,sBAAsB,CAC9C,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAC1C,+BAA+B,EAC/B,UAAU,EACV,CAAC,EACD,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CACnB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC,CAAC;YACtE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC3C,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,WAAW;oBACnB,OAAO,EAAE,iCAAiC;iBAC3C,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,iDAAiD,CAAC,CAAC;QACjF,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kCAAkC,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,6BAA6B,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAC/E,MAAM,UAAU,CAAC,6BAA6B,EAAE;gBAC9C,OAAO,EAAE,aAAa;gBACtB,WAAW,EAAE,kBAAkB;gBAC/B,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,sBAAsB;aAC/B,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,6BAA6B,CAAC,CAAC;YACnF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,sBAAsB,CAC9C,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAC1C,6BAA6B,EAC7B,QAAQ,EACR,CAAC,EACD,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CACnB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC3C,MAAM,EAAE,GAAG;oBACX,MAAM,EAAE,QAAQ;oBAChB,OAAO,EAAE,sBAAsB;iBAChC,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YACtD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAC;QAC/E,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,qCAAqC,CAAC,CAAC,CAAC;QACjF,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,gCAAgC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;YAClF,MAAM,UAAU,CAAC,gCAAgC,EAAE;gBACjD,OAAO,EAAE,gBAAgB;gBACzB,WAAW,EAAE,6BAA6B;gBAC1C,MAAM,EAAE,SAAS;aAClB,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,gCAAgC,CAAC,CAAC;YACtF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAEzC,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,UAAU,CAAC,sBAAsB,CAC9C,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAC1C,gCAAgC,EAChC,WAAW,EACX,CAAC,EACD,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CACnB,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;QAClF,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAGD,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;IACrF,MAAM,UAAU,GAAG,MAAM,oBAAoB,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,UAAU,CAAC,uBAAuB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAC3E,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"runtime-cli.test.js","sourceRoot":"","sources":["../../../src/team/__tests__/runtime-cli.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,24 @@ async function addWorktree(repo, branchName, pathPrefix) {
|
|
|
25
25
|
execFileSync('git', ['worktree', 'add', '-b', branchName, worktreePath, 'HEAD'], { cwd: repo, stdio: 'ignore' });
|
|
26
26
|
return worktreePath;
|
|
27
27
|
}
|
|
28
|
+
async function attachDirtyWorkerRepo(teamName, cwd, repoName) {
|
|
29
|
+
const repo = join(cwd, repoName);
|
|
30
|
+
await mkdir(repo, { recursive: true });
|
|
31
|
+
execFileSync('git', ['init'], { cwd: repo, stdio: 'ignore' });
|
|
32
|
+
execFileSync('git', ['config', 'user.email', 'test@example.com'], { cwd: repo, stdio: 'ignore' });
|
|
33
|
+
execFileSync('git', ['config', 'user.name', 'Test User'], { cwd: repo, stdio: 'ignore' });
|
|
34
|
+
await writeFile(join(repo, 'README.md'), 'hello\n', 'utf-8');
|
|
35
|
+
execFileSync('git', ['add', 'README.md'], { cwd: repo, stdio: 'ignore' });
|
|
36
|
+
execFileSync('git', ['commit', '-m', 'init'], { cwd: repo, stdio: 'ignore' });
|
|
37
|
+
await writeFile(join(repo, 'DIRTY.txt'), 'dirty\n', 'utf-8');
|
|
38
|
+
const config = await readTeamConfig(teamName, cwd);
|
|
39
|
+
assert.ok(config, 'team config should exist');
|
|
40
|
+
if (!config)
|
|
41
|
+
throw new Error('missing config');
|
|
42
|
+
config.workers[0].worktree_repo_root = repo;
|
|
43
|
+
config.workers[0].worktree_path = repo;
|
|
44
|
+
await saveTeamConfig(config, cwd);
|
|
45
|
+
}
|
|
28
46
|
function expectedLowComplexityModel(codexHomeOverride) {
|
|
29
47
|
return resolveTeamLowComplexityDefaultModel(codexHomeOverride);
|
|
30
48
|
}
|
|
@@ -101,6 +119,58 @@ async function waitForFileText(filePath, matcher, timeoutMs = 3_000) {
|
|
|
101
119
|
}
|
|
102
120
|
throw new Error(`timed out waiting for ${filePath}`);
|
|
103
121
|
}
|
|
122
|
+
async function writeFakePromptWorkerBinary(binaryPath, scriptBody, options = {}) {
|
|
123
|
+
const bootstrap = options.emitStartupEvidence === false
|
|
124
|
+
? ''
|
|
125
|
+
: `
|
|
126
|
+
const fs = require('fs');
|
|
127
|
+
const path = require('path');
|
|
128
|
+
const stateRoot = process.env.OMX_TEAM_STATE_ROOT;
|
|
129
|
+
const worker = String(process.env.OMX_TEAM_WORKER || '');
|
|
130
|
+
const [teamName, workerName] = worker.split('/');
|
|
131
|
+
if (stateRoot && teamName && workerName) {
|
|
132
|
+
const workerDir = path.join(stateRoot, 'team', teamName, 'workers', workerName);
|
|
133
|
+
fs.mkdirSync(workerDir, { recursive: true });
|
|
134
|
+
fs.writeFileSync(path.join(workerDir, 'status.json'), JSON.stringify({
|
|
135
|
+
state: 'working',
|
|
136
|
+
current_task_id: '1',
|
|
137
|
+
updated_at: new Date().toISOString(),
|
|
138
|
+
}, null, 2));
|
|
139
|
+
}
|
|
140
|
+
`;
|
|
141
|
+
await writeFile(binaryPath, `#!/usr/bin/env node
|
|
142
|
+
${bootstrap}
|
|
143
|
+
${scriptBody}
|
|
144
|
+
`, { mode: 0o755 });
|
|
145
|
+
}
|
|
146
|
+
async function withPromptModeCodexEnv(binDir, extraEnv, run) {
|
|
147
|
+
const previous = new Map();
|
|
148
|
+
const nextEnv = {
|
|
149
|
+
PATH: `${binDir}:${process.env.PATH ?? ''}`,
|
|
150
|
+
TMUX: undefined,
|
|
151
|
+
OMX_TEAM_WORKER_LAUNCH_MODE: 'prompt',
|
|
152
|
+
OMX_TEAM_WORKER_CLI: 'codex',
|
|
153
|
+
...extraEnv,
|
|
154
|
+
};
|
|
155
|
+
for (const [key, value] of Object.entries(nextEnv)) {
|
|
156
|
+
previous.set(key, process.env[key]);
|
|
157
|
+
if (typeof value === 'string')
|
|
158
|
+
process.env[key] = value;
|
|
159
|
+
else
|
|
160
|
+
delete process.env[key];
|
|
161
|
+
}
|
|
162
|
+
try {
|
|
163
|
+
return await run();
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
for (const [key, value] of previous) {
|
|
167
|
+
if (typeof value === 'string')
|
|
168
|
+
process.env[key] = value;
|
|
169
|
+
else
|
|
170
|
+
delete process.env[key];
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
104
174
|
function teamStateTestPath(cwd, ...parts) {
|
|
105
175
|
const stateRoot = process.env.OMX_TEAM_STATE_ROOT ?? join(cwd, '.omx', 'state');
|
|
106
176
|
return join(stateRoot, ...parts);
|
|
@@ -531,12 +601,49 @@ sleep 5
|
|
|
531
601
|
await rm(cwd, { recursive: true, force: true });
|
|
532
602
|
}
|
|
533
603
|
});
|
|
604
|
+
it('startTeam rejects duplicate active same-name team state without mutating existing files', async () => {
|
|
605
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-duplicate-team-'));
|
|
606
|
+
const prevSessionId = process.env.OMX_SESSION_ID;
|
|
607
|
+
const prevLaunchMode = process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
608
|
+
try {
|
|
609
|
+
process.env.OMX_SESSION_ID = 'sess-existing-team';
|
|
610
|
+
await initTeamState('dup-team', 'existing task', 'executor', 1, cwd, undefined, { ...process.env, OMX_SESSION_ID: 'sess-existing-team' });
|
|
611
|
+
await createTask('dup-team', {
|
|
612
|
+
subject: 'existing subject',
|
|
613
|
+
description: 'existing description',
|
|
614
|
+
status: 'pending',
|
|
615
|
+
}, cwd);
|
|
616
|
+
const beforeConfig = await readTeamConfig('dup-team', cwd);
|
|
617
|
+
assert.ok(beforeConfig);
|
|
618
|
+
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'prompt';
|
|
619
|
+
process.env.OMX_SESSION_ID = 'sess-second-team';
|
|
620
|
+
await assert.rejects(() => withoutTeamWorkerEnv(() => startTeam('dup-team', 'replacement task', 'executor', 1, [{ subject: 'new subject', description: 'new description', owner: 'worker-1' }], cwd)), /team_name_conflict: active team state already exists/);
|
|
621
|
+
const afterConfig = await readTeamConfig('dup-team', cwd);
|
|
622
|
+
const existingTask = await readTask('dup-team', '1', cwd);
|
|
623
|
+
assert.equal(afterConfig?.task, 'existing task');
|
|
624
|
+
assert.equal(afterConfig?.created_at, beforeConfig?.created_at);
|
|
625
|
+
assert.equal(existingTask?.subject, 'existing subject');
|
|
626
|
+
assert.equal(existingTask?.description, 'existing description');
|
|
627
|
+
}
|
|
628
|
+
finally {
|
|
629
|
+
if (typeof prevSessionId === 'string')
|
|
630
|
+
process.env.OMX_SESSION_ID = prevSessionId;
|
|
631
|
+
else
|
|
632
|
+
delete process.env.OMX_SESSION_ID;
|
|
633
|
+
if (typeof prevLaunchMode === 'string')
|
|
634
|
+
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = prevLaunchMode;
|
|
635
|
+
else
|
|
636
|
+
delete process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
637
|
+
await rm(cwd, { recursive: true, force: true });
|
|
638
|
+
}
|
|
639
|
+
});
|
|
534
640
|
it('skips interactive worker process-tree prekill on native Windows split-pane sessions', async () => {
|
|
535
641
|
await withNativeWindowsPlatform(async () => {
|
|
536
642
|
assert.equal(shouldPrekillInteractiveShutdownProcessTrees('leader:0'), false);
|
|
537
643
|
assert.equal(shouldPrekillInteractiveShutdownProcessTrees('omx-team-alpha'), true);
|
|
538
644
|
});
|
|
539
|
-
assert.equal(shouldPrekillInteractiveShutdownProcessTrees('leader:0'),
|
|
645
|
+
assert.equal(shouldPrekillInteractiveShutdownProcessTrees('leader:0'), false);
|
|
646
|
+
assert.equal(shouldPrekillInteractiveShutdownProcessTrees('omx-team-alpha'), true);
|
|
540
647
|
});
|
|
541
648
|
it('startTeam accepts native Windows tmux clients even when TMUX env vars are absent', async () => {
|
|
542
649
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-win32-no-env-'));
|
|
@@ -1607,28 +1714,22 @@ process.on('SIGTERM', () => process.exit(0));
|
|
|
1607
1714
|
const binDir = join(cwd, 'bin');
|
|
1608
1715
|
const fakeCodexPath = join(binDir, 'codex');
|
|
1609
1716
|
await mkdir(binDir, { recursive: true });
|
|
1610
|
-
await
|
|
1717
|
+
await writeFakePromptWorkerBinary(fakeCodexPath, `
|
|
1611
1718
|
process.stdin.resume();
|
|
1612
1719
|
setInterval(() => {}, 1000);
|
|
1613
1720
|
process.on('SIGTERM', () => {
|
|
1614
1721
|
// Intentionally ignore SIGTERM so runtime teardown must escalate.
|
|
1615
1722
|
});
|
|
1616
|
-
|
|
1617
|
-
const prevPath = process.env.PATH;
|
|
1618
|
-
const prevTmux = process.env.TMUX;
|
|
1619
|
-
const prevLaunchMode = process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
1620
|
-
const prevWorkerCli = process.env.OMX_TEAM_WORKER_CLI;
|
|
1621
|
-
process.env.PATH = `${binDir}:${prevPath ?? ''}`;
|
|
1622
|
-
delete process.env.TMUX;
|
|
1623
|
-
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'prompt';
|
|
1624
|
-
process.env.OMX_TEAM_WORKER_CLI = 'codex';
|
|
1723
|
+
`);
|
|
1625
1724
|
let runtime = null;
|
|
1626
1725
|
let workerPid = 0;
|
|
1627
1726
|
try {
|
|
1628
|
-
runtime = await withoutTeamWorkerEnv(() => startTeam('team-prompt-stubborn', 'prompt-mode stubborn worker teardown', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd));
|
|
1727
|
+
runtime = await withPromptModeCodexEnv(binDir, {}, () => withoutTeamWorkerEnv(() => startTeam('team-prompt-stubborn', 'prompt-mode stubborn worker teardown', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd)));
|
|
1629
1728
|
workerPid = runtime.config.workers[0]?.pid ?? 0;
|
|
1630
1729
|
assert.ok(workerPid > 0, 'prompt worker PID should be captured');
|
|
1730
|
+
const shutdownStartedAt = Date.now();
|
|
1631
1731
|
await shutdownTeam(runtime.teamName, cwd, { force: true });
|
|
1732
|
+
const shutdownDurationMs = Date.now() - shutdownStartedAt;
|
|
1632
1733
|
runtime = null;
|
|
1633
1734
|
let alive = false;
|
|
1634
1735
|
try {
|
|
@@ -1639,27 +1740,12 @@ process.on('SIGTERM', () => {
|
|
|
1639
1740
|
alive = false;
|
|
1640
1741
|
}
|
|
1641
1742
|
assert.equal(alive, false, `worker pid ${workerPid} should be terminated after shutdown`);
|
|
1743
|
+
assert.ok(shutdownDurationMs < 10_000, `forced prompt-worker shutdown should skip the 15s ack wait (actual ${shutdownDurationMs}ms)`);
|
|
1642
1744
|
}
|
|
1643
1745
|
finally {
|
|
1644
1746
|
if (runtime) {
|
|
1645
1747
|
await shutdownTeam(runtime.teamName, cwd, { force: true }).catch(() => { });
|
|
1646
1748
|
}
|
|
1647
|
-
if (typeof prevPath === 'string')
|
|
1648
|
-
process.env.PATH = prevPath;
|
|
1649
|
-
else
|
|
1650
|
-
delete process.env.PATH;
|
|
1651
|
-
if (typeof prevTmux === 'string')
|
|
1652
|
-
process.env.TMUX = prevTmux;
|
|
1653
|
-
else
|
|
1654
|
-
delete process.env.TMUX;
|
|
1655
|
-
if (typeof prevLaunchMode === 'string')
|
|
1656
|
-
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = prevLaunchMode;
|
|
1657
|
-
else
|
|
1658
|
-
delete process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
1659
|
-
if (typeof prevWorkerCli === 'string')
|
|
1660
|
-
process.env.OMX_TEAM_WORKER_CLI = prevWorkerCli;
|
|
1661
|
-
else
|
|
1662
|
-
delete process.env.OMX_TEAM_WORKER_CLI;
|
|
1663
1749
|
await rm(cwd, { recursive: true, force: true });
|
|
1664
1750
|
}
|
|
1665
1751
|
});
|
|
@@ -1669,7 +1755,7 @@ process.on('SIGTERM', () => {
|
|
|
1669
1755
|
const fakeCodexPath = join(binDir, 'codex');
|
|
1670
1756
|
const helperPidPath = join(cwd, 'helper.pid');
|
|
1671
1757
|
await mkdir(binDir, { recursive: true });
|
|
1672
|
-
await
|
|
1758
|
+
await writeFakePromptWorkerBinary(fakeCodexPath, `
|
|
1673
1759
|
const { spawn } = require('child_process');
|
|
1674
1760
|
const { writeFileSync } = require('fs');
|
|
1675
1761
|
const helper = spawn(process.execPath, ['-e', \`
|
|
@@ -1681,21 +1767,11 @@ writeFileSync(process.env.OMX_HELPER_PID_PATH, String(helper.pid));
|
|
|
1681
1767
|
process.stdin.resume();
|
|
1682
1768
|
setInterval(() => {}, 1000);
|
|
1683
1769
|
process.on('SIGTERM', () => process.exit(0));
|
|
1684
|
-
|
|
1685
|
-
const prevPath = process.env.PATH;
|
|
1686
|
-
const prevTmux = process.env.TMUX;
|
|
1687
|
-
const prevLaunchMode = process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
1688
|
-
const prevWorkerCli = process.env.OMX_TEAM_WORKER_CLI;
|
|
1689
|
-
const prevHelperPidPath = process.env.OMX_HELPER_PID_PATH;
|
|
1690
|
-
process.env.PATH = `${binDir}:${prevPath ?? ''}`;
|
|
1691
|
-
delete process.env.TMUX;
|
|
1692
|
-
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'prompt';
|
|
1693
|
-
process.env.OMX_TEAM_WORKER_CLI = 'codex';
|
|
1694
|
-
process.env.OMX_HELPER_PID_PATH = helperPidPath;
|
|
1770
|
+
`);
|
|
1695
1771
|
let runtime = null;
|
|
1696
1772
|
let helperPid = 0;
|
|
1697
1773
|
try {
|
|
1698
|
-
runtime = await withoutTeamWorkerEnv(() => startTeam('team-prompt-descendants', 'prompt-mode detached descendant teardown', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd));
|
|
1774
|
+
runtime = await withPromptModeCodexEnv(binDir, { OMX_HELPER_PID_PATH: helperPidPath }, () => withoutTeamWorkerEnv(() => startTeam('team-prompt-descendants', 'prompt-mode detached descendant teardown', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd)));
|
|
1699
1775
|
for (let attempt = 0; attempt < 40; attempt += 1) {
|
|
1700
1776
|
if (existsSync(helperPidPath))
|
|
1701
1777
|
break;
|
|
@@ -1703,7 +1779,9 @@ process.on('SIGTERM', () => process.exit(0));
|
|
|
1703
1779
|
}
|
|
1704
1780
|
helperPid = Number((await readFile(helperPidPath, 'utf-8')).trim());
|
|
1705
1781
|
assert.ok(helperPid > 0, 'detached helper pid should be captured');
|
|
1782
|
+
const shutdownStartedAt = Date.now();
|
|
1706
1783
|
await shutdownTeam(runtime.teamName, cwd, { force: true });
|
|
1784
|
+
const shutdownDurationMs = Date.now() - shutdownStartedAt;
|
|
1707
1785
|
runtime = null;
|
|
1708
1786
|
let alive = false;
|
|
1709
1787
|
try {
|
|
@@ -1714,6 +1792,7 @@ process.on('SIGTERM', () => process.exit(0));
|
|
|
1714
1792
|
alive = false;
|
|
1715
1793
|
}
|
|
1716
1794
|
assert.equal(alive, false, `detached helper pid ${helperPid} should be terminated after shutdown`);
|
|
1795
|
+
assert.ok(shutdownDurationMs < 10_000, `forced descendant teardown should skip the 15s ack wait (actual ${shutdownDurationMs}ms)`);
|
|
1717
1796
|
}
|
|
1718
1797
|
finally {
|
|
1719
1798
|
if (runtime) {
|
|
@@ -1725,26 +1804,6 @@ process.on('SIGTERM', () => process.exit(0));
|
|
|
1725
1804
|
}
|
|
1726
1805
|
catch { }
|
|
1727
1806
|
}
|
|
1728
|
-
if (typeof prevPath === 'string')
|
|
1729
|
-
process.env.PATH = prevPath;
|
|
1730
|
-
else
|
|
1731
|
-
delete process.env.PATH;
|
|
1732
|
-
if (typeof prevTmux === 'string')
|
|
1733
|
-
process.env.TMUX = prevTmux;
|
|
1734
|
-
else
|
|
1735
|
-
delete process.env.TMUX;
|
|
1736
|
-
if (typeof prevLaunchMode === 'string')
|
|
1737
|
-
process.env.OMX_TEAM_WORKER_LAUNCH_MODE = prevLaunchMode;
|
|
1738
|
-
else
|
|
1739
|
-
delete process.env.OMX_TEAM_WORKER_LAUNCH_MODE;
|
|
1740
|
-
if (typeof prevWorkerCli === 'string')
|
|
1741
|
-
process.env.OMX_TEAM_WORKER_CLI = prevWorkerCli;
|
|
1742
|
-
else
|
|
1743
|
-
delete process.env.OMX_TEAM_WORKER_CLI;
|
|
1744
|
-
if (typeof prevHelperPidPath === 'string')
|
|
1745
|
-
process.env.OMX_HELPER_PID_PATH = prevHelperPidPath;
|
|
1746
|
-
else
|
|
1747
|
-
delete process.env.OMX_HELPER_PID_PATH;
|
|
1748
1807
|
await rm(cwd, { recursive: true, force: true });
|
|
1749
1808
|
}
|
|
1750
1809
|
});
|
|
@@ -2532,6 +2591,20 @@ exec "${realGit}" "$@"
|
|
|
2532
2591
|
await rm(cwd, { recursive: true, force: true });
|
|
2533
2592
|
}
|
|
2534
2593
|
});
|
|
2594
|
+
it('shutdownTeam clean fast path ignores worker shutdown ack files', async () => {
|
|
2595
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-clean-fast-'));
|
|
2596
|
+
try {
|
|
2597
|
+
await initTeamState('team-shutdown-clean-fast', 'shutdown clean fast path test', 'executor', 1, cwd);
|
|
2598
|
+
const ackPath = join(cwd, '.omx', 'state', 'team', 'team-shutdown-clean-fast', 'workers', 'worker-1', 'shutdown-ack.json');
|
|
2599
|
+
await writeFile(ackPath, JSON.stringify({ status: 'reject', reason: 'stale ack', updated_at: '9999-01-01T00:00:00.000Z' }));
|
|
2600
|
+
await shutdownTeam('team-shutdown-clean-fast', cwd);
|
|
2601
|
+
const teamRoot = join(cwd, '.omx', 'state', 'team', 'team-shutdown-clean-fast');
|
|
2602
|
+
assert.equal(existsSync(teamRoot), false);
|
|
2603
|
+
}
|
|
2604
|
+
finally {
|
|
2605
|
+
await rm(cwd, { recursive: true, force: true });
|
|
2606
|
+
}
|
|
2607
|
+
});
|
|
2535
2608
|
it('shutdownTeam blocks when pending tasks remain (shutdown gate)', async () => {
|
|
2536
2609
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-gate-'));
|
|
2537
2610
|
try {
|
|
@@ -2586,12 +2659,12 @@ exec "${realGit}" "$@"
|
|
|
2586
2659
|
await rm(cwd, { recursive: true, force: true });
|
|
2587
2660
|
}
|
|
2588
2661
|
});
|
|
2589
|
-
it('shutdownTeam
|
|
2662
|
+
it('shutdownTeam requires explicit issue confirmation when failed tasks remain', async () => {
|
|
2590
2663
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-gate-failed-'));
|
|
2591
2664
|
try {
|
|
2592
2665
|
await initTeamState('team-shutdown-gate-failed', 'shutdown gate failed test', 'executor', 1, cwd);
|
|
2593
2666
|
await createTask('team-shutdown-gate-failed', { subject: 'failed', description: 'd', status: 'failed' }, cwd);
|
|
2594
|
-
await assert.rejects(() => shutdownTeam('team-shutdown-gate-failed', cwd), /
|
|
2667
|
+
await assert.rejects(() => shutdownTeam('team-shutdown-gate-failed', cwd), /shutdown_confirm_issues_required:failed=1:rerun=omx team shutdown team-shutdown-gate-failed --confirm-issues/);
|
|
2595
2668
|
const teamRoot = teamStateTestPath(cwd, 'team', 'team-shutdown-gate-failed');
|
|
2596
2669
|
assert.equal(existsSync(teamRoot), true);
|
|
2597
2670
|
}
|
|
@@ -2720,6 +2793,7 @@ esac
|
|
|
2720
2793
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
|
|
2721
2794
|
try {
|
|
2722
2795
|
await initTeamState('team-reject', 'shutdown reject test', 'executor', 1, cwd);
|
|
2796
|
+
await attachDirtyWorkerRepo('team-reject', cwd, 'team-reject-repo');
|
|
2723
2797
|
const ackPath = join(cwd, '.omx', 'state', 'team', 'team-reject', 'workers', 'worker-1', 'shutdown-ack.json');
|
|
2724
2798
|
await writeFile(ackPath, JSON.stringify({ status: 'reject', reason: 'still working', updated_at: '9999-01-01T00:00:00.000Z' }));
|
|
2725
2799
|
await assert.rejects(() => shutdownTeam('team-reject', cwd), /shutdown_rejected:worker-1:still working/);
|
|
@@ -2732,6 +2806,7 @@ esac
|
|
|
2732
2806
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-'));
|
|
2733
2807
|
try {
|
|
2734
2808
|
await initTeamState('team-ack-evt', 'shutdown ack event test', 'executor', 1, cwd);
|
|
2809
|
+
await attachDirtyWorkerRepo('team-ack-evt', cwd, 'team-ack-evt-repo');
|
|
2735
2810
|
const ackPath = join(cwd, '.omx', 'state', 'team', 'team-ack-evt', 'workers', 'worker-1', 'shutdown-ack.json');
|
|
2736
2811
|
await writeFile(ackPath, JSON.stringify({ status: 'reject', reason: 'busy', updated_at: '9999-01-01T00:00:00.000Z' }));
|
|
2737
2812
|
await assert.rejects(() => shutdownTeam('team-ack-evt', cwd), /shutdown_rejected/);
|
|
@@ -2797,6 +2872,21 @@ esac
|
|
|
2797
2872
|
await rm(cwd, { recursive: true, force: true });
|
|
2798
2873
|
}
|
|
2799
2874
|
});
|
|
2875
|
+
it('shutdownTeam confirmIssues=true allows failed-task shutdown without worker ack handshake', async () => {
|
|
2876
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-confirm-issues-'));
|
|
2877
|
+
try {
|
|
2878
|
+
await initTeamState('team-confirm-issues', 'shutdown confirm issues test', 'executor', 1, cwd);
|
|
2879
|
+
await createTask('team-confirm-issues', { subject: 'failed', description: 'd', status: 'failed' }, cwd);
|
|
2880
|
+
const ackPath = join(cwd, '.omx', 'state', 'team', 'team-confirm-issues', 'workers', 'worker-1', 'shutdown-ack.json');
|
|
2881
|
+
await writeFile(ackPath, JSON.stringify({ status: 'reject', reason: 'should be ignored', updated_at: '9999-01-01T00:00:00.000Z' }));
|
|
2882
|
+
await shutdownTeam('team-confirm-issues', cwd, { confirmIssues: true });
|
|
2883
|
+
const teamRoot = join(cwd, '.omx', 'state', 'team', 'team-confirm-issues');
|
|
2884
|
+
assert.equal(existsSync(teamRoot), false);
|
|
2885
|
+
}
|
|
2886
|
+
finally {
|
|
2887
|
+
await rm(cwd, { recursive: true, force: true });
|
|
2888
|
+
}
|
|
2889
|
+
});
|
|
2800
2890
|
it('shutdownTeam applies best-effort teardown even when worker pane is already dead', async () => {
|
|
2801
2891
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-dead-pane-'));
|
|
2802
2892
|
try {
|
|
@@ -3011,6 +3101,77 @@ esac
|
|
|
3011
3101
|
await rm(cwd, { recursive: true, force: true });
|
|
3012
3102
|
}
|
|
3013
3103
|
});
|
|
3104
|
+
it('shutdownTeam skips prekill and keeps the leader pane alive on shared-session shutdown', async () => {
|
|
3105
|
+
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-shared-session-'));
|
|
3106
|
+
try {
|
|
3107
|
+
await withMockTmuxFixture({
|
|
3108
|
+
dirPrefix: 'omx-runtime-shutdown-shared-session-bin-',
|
|
3109
|
+
tmuxScript: (tmuxLogPath) => `#!/bin/sh
|
|
3110
|
+
set -eu
|
|
3111
|
+
printf '%s\\n' "$*" >> "${tmuxLogPath}"
|
|
3112
|
+
case "$1" in
|
|
3113
|
+
-V)
|
|
3114
|
+
echo "tmux 3.4"
|
|
3115
|
+
exit 0
|
|
3116
|
+
;;
|
|
3117
|
+
list-panes)
|
|
3118
|
+
case "$*" in
|
|
3119
|
+
*"-F #{pane_dead} #{pane_pid}"*)
|
|
3120
|
+
exit 1
|
|
3121
|
+
;;
|
|
3122
|
+
*"-t leader:0 -F #{pane_id}"*"#{pane_current_command}"*)
|
|
3123
|
+
printf "%%11\\tzsh\\tzsh\\n%%12\\tnode\\tnode /tmp/bin/omx.js hud --watch\\n%%13\\tcodex\\tcodex\\n%%14\\tcodex\\tcodex\\n"
|
|
3124
|
+
exit 0
|
|
3125
|
+
;;
|
|
3126
|
+
*)
|
|
3127
|
+
exit 1
|
|
3128
|
+
;;
|
|
3129
|
+
esac
|
|
3130
|
+
;;
|
|
3131
|
+
split-window)
|
|
3132
|
+
printf '%%44\\n'
|
|
3133
|
+
exit 0
|
|
3134
|
+
;;
|
|
3135
|
+
kill-pane|resize-pane|select-pane)
|
|
3136
|
+
exit 0
|
|
3137
|
+
;;
|
|
3138
|
+
*)
|
|
3139
|
+
exit 0
|
|
3140
|
+
;;
|
|
3141
|
+
esac
|
|
3142
|
+
`,
|
|
3143
|
+
}, async ({ tmuxLogPath }) => {
|
|
3144
|
+
await initTeamState('team-shutdown-shared-session', 'shutdown shared session test', 'executor', 2, cwd);
|
|
3145
|
+
const config = await readTeamConfig('team-shutdown-shared-session', cwd);
|
|
3146
|
+
assert.ok(config);
|
|
3147
|
+
if (!config)
|
|
3148
|
+
return;
|
|
3149
|
+
config.tmux_session = 'leader:0';
|
|
3150
|
+
config.leader_pane_id = '%11';
|
|
3151
|
+
config.hud_pane_id = '%12';
|
|
3152
|
+
config.workers[0].pane_id = '%13';
|
|
3153
|
+
config.workers[1].pane_id = '%14';
|
|
3154
|
+
await saveTeamConfig(config, cwd);
|
|
3155
|
+
await shutdownTeam('team-shutdown-shared-session', cwd, { force: true });
|
|
3156
|
+
const teamRoot = join(cwd, '.omx', 'state', 'team', 'team-shutdown-shared-session');
|
|
3157
|
+
assert.equal(existsSync(teamRoot), false);
|
|
3158
|
+
assert.equal(await readMonitorSnapshot('team-shutdown-shared-session', cwd), null);
|
|
3159
|
+
const tmuxLog = await readFile(tmuxLogPath, 'utf-8');
|
|
3160
|
+
assert.doesNotMatch(tmuxLog, /list-panes -t %13 -F #\{pane_pid\}/);
|
|
3161
|
+
assert.doesNotMatch(tmuxLog, /list-panes -t %14 -F #\{pane_pid\}/);
|
|
3162
|
+
assert.doesNotMatch(tmuxLog, /kill-pane -t %11/);
|
|
3163
|
+
assert.doesNotMatch(tmuxLog, /kill-session -t leader:0/);
|
|
3164
|
+
assert.match(tmuxLog, /kill-pane -t %12/);
|
|
3165
|
+
assert.match(tmuxLog, /kill-pane -t %13/);
|
|
3166
|
+
assert.match(tmuxLog, /kill-pane -t %14/);
|
|
3167
|
+
assert.match(tmuxLog, new RegExp(`split-window -v -l ${HUD_TMUX_TEAM_HEIGHT_LINES} -t %11 -d -P -F #\\{pane_id\\}`));
|
|
3168
|
+
assert.match(tmuxLog, /select-pane -t %11/);
|
|
3169
|
+
});
|
|
3170
|
+
}
|
|
3171
|
+
finally {
|
|
3172
|
+
await rm(cwd, { recursive: true, force: true });
|
|
3173
|
+
}
|
|
3174
|
+
});
|
|
3014
3175
|
it('shutdownTeam restores a standalone HUD pane after tearing down the team HUD', async () => {
|
|
3015
3176
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-shutdown-restore-hud-'));
|
|
3016
3177
|
try {
|
|
@@ -3115,12 +3276,12 @@ esac
|
|
|
3115
3276
|
await rm(cwd, { recursive: true, force: true });
|
|
3116
3277
|
}
|
|
3117
3278
|
});
|
|
3118
|
-
it('shutdownTeam still
|
|
3279
|
+
it('shutdownTeam still requires confirm-issues on failed tasks', async () => {
|
|
3119
3280
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-normal-gate-'));
|
|
3120
3281
|
try {
|
|
3121
3282
|
await initTeamState('team-normal-gate', 'normal gate test', 'executor', 1, cwd);
|
|
3122
3283
|
await createTask('team-normal-gate', { subject: 'failed', description: 'd', status: 'failed' }, cwd);
|
|
3123
|
-
await assert.rejects(() => shutdownTeam('team-normal-gate', cwd), /
|
|
3284
|
+
await assert.rejects(() => shutdownTeam('team-normal-gate', cwd), /shutdown_confirm_issues_required:failed=1/);
|
|
3124
3285
|
const teamRoot = join(cwd, '.omx', 'state', 'team', 'team-normal-gate');
|
|
3125
3286
|
assert.equal(existsSync(teamRoot), true);
|
|
3126
3287
|
}
|
|
@@ -3522,7 +3683,7 @@ esac
|
|
|
3522
3683
|
await rm(cwd, { recursive: true, force: true });
|
|
3523
3684
|
}
|
|
3524
3685
|
});
|
|
3525
|
-
it('sendWorkerMessage keeps failed hook receipts failed when fallback mailbox persistence confirms delivery', async () => {
|
|
3686
|
+
it('sendWorkerMessage keeps failed hook receipts failed when fallback mailbox persistence confirms delivery', { concurrency: false }, async () => {
|
|
3526
3687
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-leader-failed-receipt-'));
|
|
3527
3688
|
try {
|
|
3528
3689
|
await withMockTmuxFixture({
|