oh-my-codex 0.18.8 → 0.18.10

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 (221) hide show
  1. package/Cargo.lock +12 -12
  2. package/Cargo.toml +1 -1
  3. package/README.md +4 -0
  4. package/dist/autopilot/__tests__/deep-interview-gate.test.d.ts +2 -0
  5. package/dist/autopilot/__tests__/deep-interview-gate.test.d.ts.map +1 -0
  6. package/dist/autopilot/__tests__/deep-interview-gate.test.js +215 -0
  7. package/dist/autopilot/__tests__/deep-interview-gate.test.js.map +1 -0
  8. package/dist/autopilot/__tests__/fsm.test.js +3 -0
  9. package/dist/autopilot/__tests__/fsm.test.js.map +1 -1
  10. package/dist/autopilot/__tests__/ralplan-gate.test.js +148 -0
  11. package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
  12. package/dist/autopilot/deep-interview-gate.d.ts.map +1 -1
  13. package/dist/autopilot/deep-interview-gate.js +140 -0
  14. package/dist/autopilot/deep-interview-gate.js.map +1 -1
  15. package/dist/autopilot/fsm.js +2 -2
  16. package/dist/autopilot/fsm.js.map +1 -1
  17. package/dist/cli/__tests__/auth.test.js +37 -2
  18. package/dist/cli/__tests__/auth.test.js.map +1 -1
  19. package/dist/cli/__tests__/codex-feature-probe.test.d.ts +2 -0
  20. package/dist/cli/__tests__/codex-feature-probe.test.d.ts.map +1 -0
  21. package/dist/cli/__tests__/codex-feature-probe.test.js +46 -0
  22. package/dist/cli/__tests__/codex-feature-probe.test.js.map +1 -0
  23. package/dist/cli/__tests__/codex-plugin-layout.test.js +1 -1
  24. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  25. package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -0
  26. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  27. package/dist/cli/__tests__/index.test.js +288 -6
  28. package/dist/cli/__tests__/index.test.js.map +1 -1
  29. package/dist/cli/__tests__/launch-fallback.test.js +19 -5
  30. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  31. package/dist/cli/__tests__/package-bin-contract.test.js +39 -10
  32. package/dist/cli/__tests__/package-bin-contract.test.js.map +1 -1
  33. package/dist/cli/__tests__/question.test.js +26 -9
  34. package/dist/cli/__tests__/question.test.js.map +1 -1
  35. package/dist/cli/__tests__/resume.test.js +50 -1
  36. package/dist/cli/__tests__/resume.test.js.map +1 -1
  37. package/dist/cli/__tests__/setup-refresh.test.js +6 -2
  38. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  39. package/dist/cli/__tests__/sparkshell-packaging.test.js +45 -2
  40. package/dist/cli/__tests__/sparkshell-packaging.test.js.map +1 -1
  41. package/dist/cli/__tests__/team-decompose.test.js +10 -5
  42. package/dist/cli/__tests__/team-decompose.test.js.map +1 -1
  43. package/dist/cli/__tests__/team.test.js +45 -1
  44. package/dist/cli/__tests__/team.test.js.map +1 -1
  45. package/dist/cli/__tests__/ultragoal.test.js +75 -0
  46. package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
  47. package/dist/cli/__tests__/update.test.js +214 -17
  48. package/dist/cli/__tests__/update.test.js.map +1 -1
  49. package/dist/cli/__tests__/windows-popup-loop-contract.test.js +1 -1
  50. package/dist/cli/auth.d.ts.map +1 -1
  51. package/dist/cli/auth.js +25 -1
  52. package/dist/cli/auth.js.map +1 -1
  53. package/dist/cli/codex-feature-probe.d.ts +5 -2
  54. package/dist/cli/codex-feature-probe.d.ts.map +1 -1
  55. package/dist/cli/codex-feature-probe.js +25 -9
  56. package/dist/cli/codex-feature-probe.js.map +1 -1
  57. package/dist/cli/index.d.ts +39 -5
  58. package/dist/cli/index.d.ts.map +1 -1
  59. package/dist/cli/index.js +184 -101
  60. package/dist/cli/index.js.map +1 -1
  61. package/dist/cli/setup.d.ts.map +1 -1
  62. package/dist/cli/setup.js +9 -1
  63. package/dist/cli/setup.js.map +1 -1
  64. package/dist/cli/team.d.ts +4 -0
  65. package/dist/cli/team.d.ts.map +1 -1
  66. package/dist/cli/team.js +43 -4
  67. package/dist/cli/team.js.map +1 -1
  68. package/dist/cli/ultragoal.d.ts.map +1 -1
  69. package/dist/cli/ultragoal.js +29 -0
  70. package/dist/cli/ultragoal.js.map +1 -1
  71. package/dist/cli/update.d.ts +20 -3
  72. package/dist/cli/update.d.ts.map +1 -1
  73. package/dist/cli/update.js +265 -23
  74. package/dist/cli/update.js.map +1 -1
  75. package/dist/cli/version.d.ts.map +1 -1
  76. package/dist/cli/version.js +5 -9
  77. package/dist/cli/version.js.map +1 -1
  78. package/dist/compat/__tests__/doctor-contract.test.js +12 -1
  79. package/dist/compat/__tests__/doctor-contract.test.js.map +1 -1
  80. package/dist/hooks/__tests__/agents-overlay.test.js +1 -0
  81. package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
  82. package/dist/hooks/__tests__/autopilot-skill-contract.test.js +15 -0
  83. package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
  84. package/dist/hooks/__tests__/code-review-skill-contract.test.js +7 -3
  85. package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
  86. package/dist/hooks/__tests__/deep-interview-contract.test.js +46 -1
  87. package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
  88. package/dist/hooks/__tests__/skill-guidance-contract.test.js +14 -5
  89. package/dist/hooks/__tests__/skill-guidance-contract.test.js.map +1 -1
  90. package/dist/hooks/agents-overlay.d.ts.map +1 -1
  91. package/dist/hooks/agents-overlay.js +2 -1
  92. package/dist/hooks/agents-overlay.js.map +1 -1
  93. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js +112 -1
  94. package/dist/hooks/extensibility/__tests__/plugin-runner.test.js.map +1 -1
  95. package/dist/hooks/extensibility/plugin-runner-stdin.d.ts +2 -0
  96. package/dist/hooks/extensibility/plugin-runner-stdin.d.ts.map +1 -0
  97. package/dist/hooks/extensibility/plugin-runner-stdin.js +16 -0
  98. package/dist/hooks/extensibility/plugin-runner-stdin.js.map +1 -0
  99. package/dist/hooks/extensibility/plugin-runner.js +2 -4
  100. package/dist/hooks/extensibility/plugin-runner.js.map +1 -1
  101. package/dist/hud/__tests__/index.test.js +23 -2
  102. package/dist/hud/__tests__/index.test.js.map +1 -1
  103. package/dist/hud/__tests__/reconcile.test.js +387 -0
  104. package/dist/hud/__tests__/reconcile.test.js.map +1 -1
  105. package/dist/hud/__tests__/state.test.js +28 -0
  106. package/dist/hud/__tests__/state.test.js.map +1 -1
  107. package/dist/hud/__tests__/tmux.test.js +118 -7
  108. package/dist/hud/__tests__/tmux.test.js.map +1 -1
  109. package/dist/hud/index.d.ts +6 -1
  110. package/dist/hud/index.d.ts.map +1 -1
  111. package/dist/hud/index.js +12 -3
  112. package/dist/hud/index.js.map +1 -1
  113. package/dist/hud/reconcile.d.ts +6 -2
  114. package/dist/hud/reconcile.d.ts.map +1 -1
  115. package/dist/hud/reconcile.js +58 -28
  116. package/dist/hud/reconcile.js.map +1 -1
  117. package/dist/hud/state.d.ts.map +1 -1
  118. package/dist/hud/state.js +4 -18
  119. package/dist/hud/state.js.map +1 -1
  120. package/dist/hud/tmux.d.ts +14 -1
  121. package/dist/hud/tmux.d.ts.map +1 -1
  122. package/dist/hud/tmux.js +129 -15
  123. package/dist/hud/tmux.js.map +1 -1
  124. package/dist/question/__tests__/renderer.test.js +566 -1
  125. package/dist/question/__tests__/renderer.test.js.map +1 -1
  126. package/dist/question/renderer.d.ts +9 -1
  127. package/dist/question/renderer.d.ts.map +1 -1
  128. package/dist/question/renderer.js +246 -70
  129. package/dist/question/renderer.js.map +1 -1
  130. package/dist/ralplan/consensus-gate.js +9 -1
  131. package/dist/ralplan/consensus-gate.js.map +1 -1
  132. package/dist/scripts/__tests__/codex-native-hook.test.js +322 -15
  133. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  134. package/dist/scripts/__tests__/run-test-files.test.js +115 -1
  135. package/dist/scripts/__tests__/run-test-files.test.js.map +1 -1
  136. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  137. package/dist/scripts/codex-native-hook.js +94 -20
  138. package/dist/scripts/codex-native-hook.js.map +1 -1
  139. package/dist/scripts/notify-hook/team-worker-stop.d.ts.map +1 -1
  140. package/dist/scripts/notify-hook/team-worker-stop.js +54 -21
  141. package/dist/scripts/notify-hook/team-worker-stop.js.map +1 -1
  142. package/dist/scripts/run-test-files.js +218 -160
  143. package/dist/scripts/run-test-files.js.map +1 -1
  144. package/dist/state/__tests__/operations.test.js +463 -0
  145. package/dist/state/__tests__/operations.test.js.map +1 -1
  146. package/dist/team/__tests__/delivery-log.test.js +18 -0
  147. package/dist/team/__tests__/delivery-log.test.js.map +1 -1
  148. package/dist/team/__tests__/runtime.test.js +48 -0
  149. package/dist/team/__tests__/runtime.test.js.map +1 -1
  150. package/dist/team/__tests__/tmux-session.test.js +107 -0
  151. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  152. package/dist/team/__tests__/tmux-test-fixture.d.ts.map +1 -1
  153. package/dist/team/__tests__/tmux-test-fixture.js +14 -2
  154. package/dist/team/__tests__/tmux-test-fixture.js.map +1 -1
  155. package/dist/team/__tests__/tmux-test-fixture.test.js +1 -0
  156. package/dist/team/__tests__/tmux-test-fixture.test.js.map +1 -1
  157. package/dist/team/__tests__/worker-bootstrap.test.js +54 -1
  158. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  159. package/dist/team/delivery-log.d.ts +1 -1
  160. package/dist/team/delivery-log.d.ts.map +1 -1
  161. package/dist/team/delivery-log.js.map +1 -1
  162. package/dist/team/repo-aware-decomposition.d.ts +4 -0
  163. package/dist/team/repo-aware-decomposition.d.ts.map +1 -1
  164. package/dist/team/repo-aware-decomposition.js.map +1 -1
  165. package/dist/team/runtime.d.ts.map +1 -1
  166. package/dist/team/runtime.js +78 -9
  167. package/dist/team/runtime.js.map +1 -1
  168. package/dist/team/tmux-session.d.ts +1 -0
  169. package/dist/team/tmux-session.d.ts.map +1 -1
  170. package/dist/team/tmux-session.js +16 -5
  171. package/dist/team/tmux-session.js.map +1 -1
  172. package/dist/team/ultragoal-context.d.ts +12 -0
  173. package/dist/team/ultragoal-context.d.ts.map +1 -1
  174. package/dist/team/ultragoal-context.js +32 -8
  175. package/dist/team/ultragoal-context.js.map +1 -1
  176. package/dist/utils/__tests__/paths.test.js +23 -0
  177. package/dist/utils/__tests__/paths.test.js.map +1 -1
  178. package/dist/utils/__tests__/platform-command.test.js +16 -1
  179. package/dist/utils/__tests__/platform-command.test.js.map +1 -1
  180. package/dist/utils/__tests__/version.test.d.ts +2 -0
  181. package/dist/utils/__tests__/version.test.d.ts.map +1 -0
  182. package/dist/utils/__tests__/version.test.js +51 -0
  183. package/dist/utils/__tests__/version.test.js.map +1 -0
  184. package/dist/utils/paths.d.ts +8 -1
  185. package/dist/utils/paths.d.ts.map +1 -1
  186. package/dist/utils/paths.js +20 -6
  187. package/dist/utils/paths.js.map +1 -1
  188. package/dist/utils/platform-command.d.ts +9 -0
  189. package/dist/utils/platform-command.d.ts.map +1 -1
  190. package/dist/utils/platform-command.js +15 -0
  191. package/dist/utils/platform-command.js.map +1 -1
  192. package/dist/utils/toml.d.ts +4 -0
  193. package/dist/utils/toml.d.ts.map +1 -0
  194. package/dist/utils/toml.js +75 -0
  195. package/dist/utils/toml.js.map +1 -0
  196. package/dist/utils/version.d.ts +7 -0
  197. package/dist/utils/version.d.ts.map +1 -0
  198. package/dist/utils/version.js +67 -0
  199. package/dist/utils/version.js.map +1 -0
  200. package/dist/verification/__tests__/ci-rust-gates.test.js +8 -0
  201. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  202. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +16 -2
  203. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -1
  204. package/package.json +4 -3
  205. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  206. package/plugins/oh-my-codex/skills/autopilot/SKILL.md +3 -0
  207. package/plugins/oh-my-codex/skills/code-review/SKILL.md +2 -2
  208. package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +85 -11
  209. package/plugins/oh-my-codex/skills/ultrawork/SKILL.md +32 -17
  210. package/skills/autopilot/SKILL.md +3 -0
  211. package/skills/code-review/SKILL.md +2 -2
  212. package/skills/deep-interview/SKILL.md +85 -11
  213. package/skills/ultrawork/SKILL.md +32 -17
  214. package/src/scripts/__tests__/codex-native-hook.test.ts +391 -26
  215. package/src/scripts/__tests__/run-test-files.test.ts +138 -2
  216. package/src/scripts/codex-native-hook.ts +99 -17
  217. package/src/scripts/notify-hook/team-worker-stop.ts +58 -18
  218. package/src/scripts/prepare-build.js +83 -0
  219. package/src/scripts/run-test-files.ts +229 -150
  220. package/templates/AGENTS.md +40 -199
  221. package/src/scripts/postinstall-bootstrap.js +0 -23
@@ -677,6 +677,73 @@ describe('buildWorkerStartupCommand', () => {
677
677
  delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
678
678
  }
679
679
  });
680
+ it('scrubs HUD ownership env from interactive worker startup commands', () => {
681
+ const prevShell = process.env.SHELL;
682
+ const prevCli = process.env.OMX_TEAM_WORKER_CLI;
683
+ const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
684
+ const prevHudOwner = process.env.OMX_TMUX_HUD_OWNER;
685
+ const prevHudLeaderPane = process.env.OMX_TMUX_HUD_LEADER_PANE;
686
+ process.env.SHELL = '/bin/bash';
687
+ process.env.OMX_TEAM_WORKER_CLI = 'codex';
688
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
689
+ process.env.OMX_TMUX_HUD_OWNER = '1';
690
+ process.env.OMX_TMUX_HUD_LEADER_PANE = '%leader';
691
+ try {
692
+ const cmd = buildWorkerStartupCommand('alpha-team', 1, [], '/tmp/workspace', {
693
+ OMX_TEAM_STATE_ROOT: '/tmp/workspace/.omx/state',
694
+ OMX_TMUX_HUD_OWNER: '1',
695
+ OMX_TMUX_HUD_LEADER_PANE: '%leader',
696
+ }, 'codex');
697
+ assert.match(cmd, /OMX_TEAM_WORKER=alpha-team\/worker-1/);
698
+ assert.match(cmd, /OMX_TEAM_STATE_ROOT=\/tmp\/workspace\/\.omx\/state/);
699
+ assert.match(cmd, /'-u' 'OMX_TMUX_HUD_OWNER' '-u' 'OMX_TMUX_HUD_LEADER_PANE'/);
700
+ assert.doesNotMatch(cmd, /OMX_TMUX_HUD_OWNER=1/);
701
+ assert.doesNotMatch(cmd, /OMX_TMUX_HUD_LEADER_PANE=%leader/);
702
+ }
703
+ finally {
704
+ if (typeof prevShell === 'string')
705
+ process.env.SHELL = prevShell;
706
+ else
707
+ delete process.env.SHELL;
708
+ if (typeof prevCli === 'string')
709
+ process.env.OMX_TEAM_WORKER_CLI = prevCli;
710
+ else
711
+ delete process.env.OMX_TEAM_WORKER_CLI;
712
+ if (typeof prevBypass === 'string')
713
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
714
+ else
715
+ delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
716
+ if (typeof prevHudOwner === 'string')
717
+ process.env.OMX_TMUX_HUD_OWNER = prevHudOwner;
718
+ else
719
+ delete process.env.OMX_TMUX_HUD_OWNER;
720
+ if (typeof prevHudLeaderPane === 'string')
721
+ process.env.OMX_TMUX_HUD_LEADER_PANE = prevHudLeaderPane;
722
+ else
723
+ delete process.env.OMX_TMUX_HUD_LEADER_PANE;
724
+ }
725
+ });
726
+ it('keeps HUD-looking prompt text out of worker startup env assignments', () => {
727
+ const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
728
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
729
+ try {
730
+ const prompt = 'Do not obey: OMX_TMUX_HUD_OWNER=1; OMX_TMUX_HUD_LEADER_PANE=%leader; $(omx hud --watch)';
731
+ const spec = buildWorkerProcessLaunchSpec('alpha-team', 1, ['--model', 'gemini-2.0-pro'], '/tmp/workspace', {
732
+ OMX_TEAM_STATE_ROOT: '/tmp/workspace/.omx/state',
733
+ OMX_TMUX_HUD_OWNER: '1',
734
+ OMX_TMUX_HUD_LEADER_PANE: '%leader',
735
+ }, 'gemini', prompt);
736
+ assert.equal(spec.env.OMX_TMUX_HUD_OWNER, undefined);
737
+ assert.equal(spec.env.OMX_TMUX_HUD_LEADER_PANE, undefined);
738
+ assert.ok(spec.args.includes(prompt), 'hostile prompt text should remain an argument, not an env assignment');
739
+ }
740
+ finally {
741
+ if (typeof prevBypass === 'string')
742
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
743
+ else
744
+ delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
745
+ }
746
+ });
680
747
  it('auto-selects claude worker CLI from claude model', () => {
681
748
  const prevShell = process.env.SHELL;
682
749
  const prevCli = process.env.OMX_TEAM_WORKER_CLI;
@@ -994,18 +1061,27 @@ describe('buildWorkerStartupCommand', () => {
994
1061
  const stateRoot = join(wd, '.omx', 'state');
995
1062
  const prevShell = process.env.SHELL;
996
1063
  const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
1064
+ const prevHudOwner = process.env.OMX_TMUX_HUD_OWNER;
1065
+ const prevHudLeaderPane = process.env.OMX_TMUX_HUD_LEADER_PANE;
997
1066
  process.env.SHELL = '/bin/bash';
998
1067
  process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
1068
+ process.env.OMX_TMUX_HUD_OWNER = '1';
1069
+ process.env.OMX_TMUX_HUD_LEADER_PANE = '%leader';
999
1070
  try {
1000
1071
  const cmd = writeWorkerStartupScriptCommand('alpha', 1, ['--model', 'gpt-5'], wd, {
1001
1072
  OMX_TEAM_STATE_ROOT: stateRoot,
1002
1073
  OMX_TEAM_LEADER_CWD: wd,
1074
+ OMX_TMUX_HUD_OWNER: '1',
1075
+ OMX_TMUX_HUD_LEADER_PANE: '%leader',
1003
1076
  }, 'gemini');
1004
1077
  assert.equal(cmd, `exec /bin/sh '${stateRoot}/team/alpha/runtime/worker-1-startup.sh'`);
1005
1078
  const script = await readFile(join(stateRoot, 'team', 'alpha', 'runtime', 'worker-1-startup.sh'), 'utf-8');
1006
1079
  assert.match(script, /^#!\/bin\/sh/m);
1007
1080
  assert.match(script, new RegExp(`cd '${wd.replace(/'/g, `'\\\\''`)}'`));
1081
+ assert.match(script, /^unset OMX_TMUX_HUD_OWNER OMX_TMUX_HUD_LEADER_PANE$/m);
1008
1082
  assert.match(script, /export OMX_TEAM_STATE_ROOT=/);
1083
+ assert.doesNotMatch(script, /^export OMX_TMUX_HUD_OWNER=/m);
1084
+ assert.doesNotMatch(script, /^export OMX_TMUX_HUD_LEADER_PANE=/m);
1009
1085
  assert.match(script, /exec '\/bin\/bash' -c /);
1010
1086
  assert.doesNotMatch(cmd ?? '', /OMX_TEAM_STATE_ROOT=/, 'tmux command should point at script instead of inlining env');
1011
1087
  }
@@ -1018,6 +1094,14 @@ describe('buildWorkerStartupCommand', () => {
1018
1094
  process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
1019
1095
  else
1020
1096
  delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
1097
+ if (typeof prevHudOwner === 'string')
1098
+ process.env.OMX_TMUX_HUD_OWNER = prevHudOwner;
1099
+ else
1100
+ delete process.env.OMX_TMUX_HUD_OWNER;
1101
+ if (typeof prevHudLeaderPane === 'string')
1102
+ process.env.OMX_TMUX_HUD_LEADER_PANE = prevHudLeaderPane;
1103
+ else
1104
+ delete process.env.OMX_TMUX_HUD_LEADER_PANE;
1021
1105
  await rm(wd, { recursive: true, force: true });
1022
1106
  }
1023
1107
  });
@@ -2067,6 +2151,29 @@ describe('team worker launch mode helpers', () => {
2067
2151
  assert.deepEqual(spec.args, ['--model', 'gpt-5.3-codex', '--dangerously-bypass-approvals-and-sandbox']);
2068
2152
  assert.equal(spec.env.OMX_TEAM_WORKER, 'alpha-team/worker-2');
2069
2153
  assert.equal(spec.env.OMX_TEAM_STATE_ROOT, '/tmp/workspace/.omx/state');
2154
+ assert.equal(spec.env.OMX_TMUX_HUD_OWNER, undefined);
2155
+ assert.equal(spec.env.OMX_TMUX_HUD_LEADER_PANE, undefined);
2156
+ }
2157
+ finally {
2158
+ if (typeof prevBypass === 'string')
2159
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
2160
+ else
2161
+ delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
2162
+ }
2163
+ });
2164
+ it('buildWorkerProcessLaunchSpec scrubs HUD ownership env from worker launches', () => {
2165
+ const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
2166
+ process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
2167
+ try {
2168
+ const spec = buildWorkerProcessLaunchSpec('alpha-team', 1, [], '/tmp/workspace', {
2169
+ OMX_TEAM_STATE_ROOT: '/tmp/workspace/.omx/state',
2170
+ OMX_TMUX_HUD_OWNER: '1',
2171
+ OMX_TMUX_HUD_LEADER_PANE: '%leader',
2172
+ }, 'codex');
2173
+ assert.equal(spec.env.OMX_TEAM_WORKER, 'alpha-team/worker-1');
2174
+ assert.equal(spec.env.OMX_TEAM_STATE_ROOT, '/tmp/workspace/.omx/state');
2175
+ assert.equal(spec.env.OMX_TMUX_HUD_OWNER, undefined);
2176
+ assert.equal(spec.env.OMX_TMUX_HUD_LEADER_PANE, undefined);
2070
2177
  }
2071
2178
  finally {
2072
2179
  if (typeof prevBypass === 'string')