oh-my-codex 0.19.0 → 0.20.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 (245) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +1 -1
  3. package/README.md +8 -1
  4. package/crates/omx-api/src/lib.rs +3 -3
  5. package/crates/omx-api/tests/cli.rs +4 -4
  6. package/crates/omx-explore/src/main.rs +4 -4
  7. package/crates/omx-sparkshell/src/codex_bridge.rs +2 -2
  8. package/dist/agents/__tests__/definitions.test.js +3 -3
  9. package/dist/agents/__tests__/definitions.test.js.map +1 -1
  10. package/dist/agents/__tests__/native-config.test.js +71 -42
  11. package/dist/agents/__tests__/native-config.test.js.map +1 -1
  12. package/dist/agents/definitions.d.ts +1 -1
  13. package/dist/agents/definitions.d.ts.map +1 -1
  14. package/dist/agents/definitions.js +3 -3
  15. package/dist/agents/definitions.js.map +1 -1
  16. package/dist/agents/native-config.d.ts +2 -2
  17. package/dist/agents/native-config.d.ts.map +1 -1
  18. package/dist/agents/native-config.js +7 -5
  19. package/dist/agents/native-config.js.map +1 -1
  20. package/dist/autopilot/__tests__/planner-routing.test.js +19 -12
  21. package/dist/autopilot/__tests__/planner-routing.test.js.map +1 -1
  22. package/dist/autopilot/__tests__/ralplan-gate.test.js +151 -0
  23. package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
  24. package/dist/autopilot/planner-routing.d.ts.map +1 -1
  25. package/dist/autopilot/planner-routing.js +4 -2
  26. package/dist/autopilot/planner-routing.js.map +1 -1
  27. package/dist/autopilot/ralplan-gate.d.ts +1 -0
  28. package/dist/autopilot/ralplan-gate.d.ts.map +1 -1
  29. package/dist/autopilot/ralplan-gate.js +38 -2
  30. package/dist/autopilot/ralplan-gate.js.map +1 -1
  31. package/dist/autoresearch/runtime.d.ts +2 -0
  32. package/dist/autoresearch/runtime.d.ts.map +1 -1
  33. package/dist/autoresearch/runtime.js +8 -0
  34. package/dist/autoresearch/runtime.js.map +1 -1
  35. package/dist/capabilities/__tests__/lockfile.test.d.ts +2 -0
  36. package/dist/capabilities/__tests__/lockfile.test.d.ts.map +1 -0
  37. package/dist/capabilities/__tests__/lockfile.test.js +115 -0
  38. package/dist/capabilities/__tests__/lockfile.test.js.map +1 -0
  39. package/dist/capabilities/lockfile.d.ts +102 -0
  40. package/dist/capabilities/lockfile.d.ts.map +1 -0
  41. package/dist/capabilities/lockfile.js +334 -0
  42. package/dist/capabilities/lockfile.js.map +1 -0
  43. package/dist/cli/__tests__/agents.test.js +5 -5
  44. package/dist/cli/__tests__/agents.test.js.map +1 -1
  45. package/dist/cli/__tests__/capabilities.test.d.ts +2 -0
  46. package/dist/cli/__tests__/capabilities.test.d.ts.map +1 -0
  47. package/dist/cli/__tests__/capabilities.test.js +135 -0
  48. package/dist/cli/__tests__/capabilities.test.js.map +1 -0
  49. package/dist/cli/__tests__/codex-plugin-layout.test.js +237 -6
  50. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  51. package/dist/cli/__tests__/doctor-context-window-warning.test.js +9 -9
  52. package/dist/cli/__tests__/doctor-context-window-warning.test.js.map +1 -1
  53. package/dist/cli/__tests__/doctor-invalid-config.test.js +1 -1
  54. package/dist/cli/__tests__/doctor-spark-routing.test.js +22 -6
  55. package/dist/cli/__tests__/doctor-spark-routing.test.js.map +1 -1
  56. package/dist/cli/__tests__/index.test.js +53 -18
  57. package/dist/cli/__tests__/index.test.js.map +1 -1
  58. package/dist/cli/__tests__/mission.test.d.ts +2 -0
  59. package/dist/cli/__tests__/mission.test.d.ts.map +1 -0
  60. package/dist/cli/__tests__/mission.test.js +239 -0
  61. package/dist/cli/__tests__/mission.test.js.map +1 -0
  62. package/dist/cli/__tests__/plugin-marketplace-idempotent.test.js +3 -3
  63. package/dist/cli/__tests__/plugin-marketplace-idempotent.test.js.map +1 -1
  64. package/dist/cli/__tests__/resume.test.js +95 -6
  65. package/dist/cli/__tests__/resume.test.js.map +1 -1
  66. package/dist/cli/__tests__/session-scoped-runtime.test.js +67 -0
  67. package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
  68. package/dist/cli/__tests__/setup-install-mode.test.js +46 -18
  69. package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
  70. package/dist/cli/__tests__/setup-prompts-overwrite.test.js +3 -3
  71. package/dist/cli/__tests__/setup-refresh.test.js +29 -7
  72. package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
  73. package/dist/cli/__tests__/ultragoal.test.js +1 -1
  74. package/dist/cli/__tests__/uninstall.test.js +4 -4
  75. package/dist/cli/__tests__/uninstall.test.js.map +1 -1
  76. package/dist/cli/agents.js +1 -1
  77. package/dist/cli/agents.js.map +1 -1
  78. package/dist/cli/capabilities.d.ts +3 -0
  79. package/dist/cli/capabilities.d.ts.map +1 -0
  80. package/dist/cli/capabilities.js +118 -0
  81. package/dist/cli/capabilities.js.map +1 -0
  82. package/dist/cli/doctor.d.ts +1 -1
  83. package/dist/cli/doctor.d.ts.map +1 -1
  84. package/dist/cli/doctor.js +9 -4
  85. package/dist/cli/doctor.js.map +1 -1
  86. package/dist/cli/index.d.ts +7 -4
  87. package/dist/cli/index.d.ts.map +1 -1
  88. package/dist/cli/index.js +107 -23
  89. package/dist/cli/index.js.map +1 -1
  90. package/dist/cli/mission.d.ts +36 -0
  91. package/dist/cli/mission.d.ts.map +1 -0
  92. package/dist/cli/mission.js +443 -0
  93. package/dist/cli/mission.js.map +1 -0
  94. package/dist/cli/plugin-marketplace.d.ts +1 -0
  95. package/dist/cli/plugin-marketplace.d.ts.map +1 -1
  96. package/dist/cli/plugin-marketplace.js +31 -0
  97. package/dist/cli/plugin-marketplace.js.map +1 -1
  98. package/dist/cli/setup.d.ts.map +1 -1
  99. package/dist/cli/setup.js +7 -4
  100. package/dist/cli/setup.js.map +1 -1
  101. package/dist/config/__tests__/generator-idempotent.test.js +23 -23
  102. package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
  103. package/dist/config/__tests__/generator-notify.test.js +9 -9
  104. package/dist/config/__tests__/generator-notify.test.js.map +1 -1
  105. package/dist/config/__tests__/models.test.js +51 -26
  106. package/dist/config/__tests__/models.test.js.map +1 -1
  107. package/dist/config/generator.d.ts +1 -1
  108. package/dist/config/generator.d.ts.map +1 -1
  109. package/dist/config/models.d.ts +16 -6
  110. package/dist/config/models.d.ts.map +1 -1
  111. package/dist/config/models.js +19 -8
  112. package/dist/config/models.js.map +1 -1
  113. package/dist/hooks/__tests__/keyword-detector.test.js +12 -4
  114. package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
  115. package/dist/hooks/__tests__/notify-hook-auto-nudge.test.js +1 -1
  116. package/dist/hooks/__tests__/prometheus-strict-contract.test.js +2 -2
  117. package/dist/hooks/__tests__/prometheus-strict-contract.test.js.map +1 -1
  118. package/dist/hooks/__tests__/tmux-hook-engine.test.js +2 -2
  119. package/dist/hud/__tests__/state.test.js +31 -6
  120. package/dist/hud/__tests__/state.test.js.map +1 -1
  121. package/dist/hud/state.d.ts.map +1 -1
  122. package/dist/hud/state.js +7 -3
  123. package/dist/hud/state.js.map +1 -1
  124. package/dist/leader/__tests__/contract.test.js +108 -1
  125. package/dist/leader/__tests__/contract.test.js.map +1 -1
  126. package/dist/leader/contract.d.ts +26 -0
  127. package/dist/leader/contract.d.ts.map +1 -1
  128. package/dist/leader/contract.js +170 -0
  129. package/dist/leader/contract.js.map +1 -1
  130. package/dist/mcp/__tests__/state-paths.test.js +32 -1
  131. package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
  132. package/dist/mcp/state-paths.d.ts +4 -0
  133. package/dist/mcp/state-paths.d.ts.map +1 -1
  134. package/dist/mcp/state-paths.js +6 -15
  135. package/dist/mcp/state-paths.js.map +1 -1
  136. package/dist/modes/base.d.ts +1 -1
  137. package/dist/modes/base.d.ts.map +1 -1
  138. package/dist/pipeline/__tests__/stages.test.js +27 -1
  139. package/dist/pipeline/__tests__/stages.test.js.map +1 -1
  140. package/dist/pipeline/stages/ralplan.d.ts +2 -1
  141. package/dist/pipeline/stages/ralplan.d.ts.map +1 -1
  142. package/dist/pipeline/stages/ralplan.js +1 -0
  143. package/dist/pipeline/stages/ralplan.js.map +1 -1
  144. package/dist/pipeline/stages/ultragoal.d.ts +5 -1
  145. package/dist/pipeline/stages/ultragoal.d.ts.map +1 -1
  146. package/dist/pipeline/stages/ultragoal.js +14 -4
  147. package/dist/pipeline/stages/ultragoal.js.map +1 -1
  148. package/dist/ralplan/__tests__/consensus-gate.test.js +193 -0
  149. package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -1
  150. package/dist/ralplan/__tests__/runtime.test.js +132 -0
  151. package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
  152. package/dist/ralplan/consensus-gate.js +24 -3
  153. package/dist/ralplan/consensus-gate.js.map +1 -1
  154. package/dist/ralplan/runtime.d.ts +17 -0
  155. package/dist/ralplan/runtime.d.ts.map +1 -1
  156. package/dist/ralplan/runtime.js +97 -1
  157. package/dist/ralplan/runtime.js.map +1 -1
  158. package/dist/scripts/__tests__/codex-native-hook.test.js +762 -20
  159. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  160. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  161. package/dist/scripts/codex-native-hook.js +306 -22
  162. package/dist/scripts/codex-native-hook.js.map +1 -1
  163. package/dist/scripts/generate-catalog-docs.js +1 -0
  164. package/dist/scripts/generate-catalog-docs.js.map +1 -1
  165. package/dist/state/__tests__/operations.test.js +737 -0
  166. package/dist/state/__tests__/operations.test.js.map +1 -1
  167. package/dist/state/__tests__/skill-active.test.js +59 -0
  168. package/dist/state/__tests__/skill-active.test.js.map +1 -1
  169. package/dist/state/__tests__/workflow-transition.test.js +14 -0
  170. package/dist/state/__tests__/workflow-transition.test.js.map +1 -1
  171. package/dist/state/operations.d.ts.map +1 -1
  172. package/dist/state/operations.js +80 -17
  173. package/dist/state/operations.js.map +1 -1
  174. package/dist/state/skill-active.js +3 -3
  175. package/dist/state/skill-active.js.map +1 -1
  176. package/dist/state/terminal-normalization.d.ts +8 -0
  177. package/dist/state/terminal-normalization.d.ts.map +1 -0
  178. package/dist/state/terminal-normalization.js +127 -0
  179. package/dist/state/terminal-normalization.js.map +1 -0
  180. package/dist/state/workflow-transition-reconcile.d.ts.map +1 -1
  181. package/dist/state/workflow-transition-reconcile.js +3 -1
  182. package/dist/state/workflow-transition-reconcile.js.map +1 -1
  183. package/dist/team/__tests__/delegation-policy.test.js +2 -2
  184. package/dist/team/__tests__/delegation-policy.test.js.map +1 -1
  185. package/dist/team/__tests__/model-contract.test.js +25 -25
  186. package/dist/team/__tests__/model-contract.test.js.map +1 -1
  187. package/dist/team/__tests__/runtime.test.js +28 -28
  188. package/dist/team/__tests__/runtime.test.js.map +1 -1
  189. package/dist/team/__tests__/scaling.test.js +7 -7
  190. package/dist/team/__tests__/scaling.test.js.map +1 -1
  191. package/dist/team/__tests__/tmux-claude-workers-demo.test.js +5 -5
  192. package/dist/team/__tests__/tmux-claude-workers-demo.test.js.map +1 -1
  193. package/dist/team/__tests__/tmux-session.test.js +12 -12
  194. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  195. package/dist/team/__tests__/worker-bootstrap.test.js +57 -9
  196. package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
  197. package/dist/team/__tests__/worker-runtime-identity.test.js +3 -3
  198. package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
  199. package/dist/team/model-contract.d.ts +1 -1
  200. package/dist/team/model-contract.d.ts.map +1 -1
  201. package/dist/team/runtime.d.ts.map +1 -1
  202. package/dist/team/runtime.js +11 -0
  203. package/dist/team/runtime.js.map +1 -1
  204. package/dist/team/worker-bootstrap.d.ts +2 -0
  205. package/dist/team/worker-bootstrap.d.ts.map +1 -1
  206. package/dist/team/worker-bootstrap.js +6 -1
  207. package/dist/team/worker-bootstrap.js.map +1 -1
  208. package/dist/ultragoal/__tests__/artifacts.test.js +82 -5
  209. package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
  210. package/dist/ultragoal/artifacts.d.ts +5 -1
  211. package/dist/ultragoal/artifacts.d.ts.map +1 -1
  212. package/dist/ultragoal/artifacts.js +111 -14
  213. package/dist/ultragoal/artifacts.js.map +1 -1
  214. package/dist/utils/__tests__/agents-model-table.test.js +7 -7
  215. package/dist/utils/__tests__/agents-model-table.test.js.map +1 -1
  216. package/dist/utils/__tests__/worktree-tool-context.test.d.ts +2 -0
  217. package/dist/utils/__tests__/worktree-tool-context.test.d.ts.map +1 -0
  218. package/dist/utils/__tests__/worktree-tool-context.test.js +118 -0
  219. package/dist/utils/__tests__/worktree-tool-context.test.js.map +1 -0
  220. package/dist/utils/worktree-tool-context.d.ts +25 -0
  221. package/dist/utils/worktree-tool-context.d.ts.map +1 -0
  222. package/dist/utils/worktree-tool-context.js +116 -0
  223. package/dist/utils/worktree-tool-context.js.map +1 -0
  224. package/package.json +1 -1
  225. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  226. package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +96 -10
  227. package/plugins/oh-my-codex/skills/ai-slop-cleaner/SKILL.md +1 -1
  228. package/plugins/oh-my-codex/skills/code-review/SKILL.md +1 -1
  229. package/plugins/oh-my-codex/skills/omx-setup/SKILL.md +5 -5
  230. package/plugins/oh-my-codex/skills/prometheus-strict/SKILL.md +3 -3
  231. package/plugins/oh-my-codex/skills/ralplan/SKILL.md +1 -1
  232. package/plugins/oh-my-codex/skills/team/SKILL.md +1 -1
  233. package/plugins/oh-my-codex/skills/ultrawork/references/agent-tiers.md +2 -2
  234. package/prompts/prometheus-strict-metis.md +1 -1
  235. package/skills/ai-slop-cleaner/SKILL.md +1 -1
  236. package/skills/code-review/SKILL.md +1 -1
  237. package/skills/ecomode/references/agent-tiers.md +1 -1
  238. package/skills/omx-setup/SKILL.md +5 -5
  239. package/skills/prometheus-strict/SKILL.md +3 -3
  240. package/skills/ralplan/SKILL.md +1 -1
  241. package/skills/team/SKILL.md +1 -1
  242. package/skills/ultrawork/references/agent-tiers.md +2 -2
  243. package/src/scripts/__tests__/codex-native-hook.test.ts +824 -7
  244. package/src/scripts/codex-native-hook.ts +347 -20
  245. package/src/scripts/generate-catalog-docs.ts +1 -0
@@ -471,27 +471,27 @@ describe('runtime', () => {
471
471
  it('resolveWorkerLaunchArgsFromEnv injects the frontier default model for executor workers', () => {
472
472
  withIsolatedDefaultModelEnv(() => {
473
473
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor');
474
- assert.deepEqual(args, ['--no-alt-screen', '--model', 'gpt-5.5']);
474
+ assert.deepEqual(args, ['--no-alt-screen', '--model', 'gpt-5.6-sol']);
475
475
  });
476
476
  });
477
477
  it('resolveWorkerLaunchArgsFromEnv uses medium reasoning for executor launch defaults', () => {
478
478
  withIsolatedDefaultModelEnv(() => {
479
479
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor', undefined, resolveAgentReasoningEffort('executor'), 'codex');
480
- assert.deepEqual(args, ['--no-alt-screen', '-c', 'model_reasoning_effort="medium"', '--model', 'gpt-5.5']);
480
+ assert.deepEqual(args, ['--no-alt-screen', '-c', 'model_reasoning_effort="medium"', '--model', 'gpt-5.6-sol']);
481
481
  });
482
482
  });
483
- it('resolveWorkerLaunchArgsFromEnv keeps planner on exact gpt-5.5 medium when inherited leader is mini', () => {
483
+ it('resolveWorkerLaunchArgsFromEnv keeps planner on exact gpt-5.6-sol medium when inherited leader is mini', () => {
484
484
  withIsolatedDefaultModelEnv(() => {
485
485
  const args = resolveWorkerLaunchArgsFromEnv({
486
- OMX_TEAM_WORKER_LAUNCH_ARGS: '--dangerously-bypass-approvals-and-sandbox --model gpt-5.4-mini',
487
- [TEAM_WORKER_INHERITED_MODEL_ENV]: 'gpt-5.4-mini',
486
+ OMX_TEAM_WORKER_LAUNCH_ARGS: '--dangerously-bypass-approvals-and-sandbox --model gpt-5.6-terra',
487
+ [TEAM_WORKER_INHERITED_MODEL_ENV]: 'gpt-5.6-terra',
488
488
  }, 'planner', undefined, resolveAgentReasoningEffort('planner'), 'codex');
489
489
  assert.deepEqual(args, [
490
490
  '--dangerously-bypass-approvals-and-sandbox',
491
491
  '-c',
492
492
  'model_reasoning_effort="medium"',
493
493
  '--model',
494
- 'gpt-5.5',
494
+ 'gpt-5.6-sol',
495
495
  ]);
496
496
  });
497
497
  });
@@ -507,15 +507,15 @@ describe('runtime', () => {
507
507
  it('resolveWorkerLaunchArgsFromEnv honors inherited leader model from the dedicated env path', () => {
508
508
  withIsolatedDefaultModelEnv(() => {
509
509
  const args = resolveWorkerLaunchArgsFromEnv({
510
- OMX_TEAM_WORKER_LAUNCH_ARGS: '--dangerously-bypass-approvals-and-sandbox --model gpt-5.4-mini',
511
- [TEAM_WORKER_INHERITED_MODEL_ENV]: 'gpt-5.4-mini',
510
+ OMX_TEAM_WORKER_LAUNCH_ARGS: '--dangerously-bypass-approvals-and-sandbox --model gpt-5.6-terra',
511
+ [TEAM_WORKER_INHERITED_MODEL_ENV]: 'gpt-5.6-terra',
512
512
  }, 'planner', undefined, resolveAgentReasoningEffort('planner'), 'codex');
513
513
  assert.deepEqual(args, [
514
514
  '--dangerously-bypass-approvals-and-sandbox',
515
515
  '-c',
516
516
  'model_reasoning_effort="medium"',
517
517
  '--model',
518
- 'gpt-5.5',
518
+ 'gpt-5.6-sol',
519
519
  ]);
520
520
  });
521
521
  });
@@ -525,10 +525,10 @@ describe('runtime', () => {
525
525
  });
526
526
  it('resolveWorkerLaunchArgsFromEnv preserves explicit model in either syntax', () => {
527
527
  assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model gpt-5' }, 'explore'), ['--model', 'gpt-5']);
528
- assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model=gpt-5.3' }, 'explore'), ['--model', 'gpt-5.3']);
528
+ assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model=gpt-5.5' }, 'explore'), ['--model', 'gpt-5.5']);
529
529
  });
530
530
  it('resolveWorkerLaunchArgsFromEnv preserves explicit env model before planner exact model', () => {
531
- assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model explicit-worker-model' }, 'planner', 'gpt-5.4-mini', 'high', 'codex'), ['-c', 'model_reasoning_effort="high"', '--model', 'explicit-worker-model']);
531
+ assert.deepEqual(resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model explicit-worker-model' }, 'planner', 'gpt-5.6-terra', 'high', 'codex'), ['-c', 'model_reasoning_effort="high"', '--model', 'explicit-worker-model']);
532
532
  });
533
533
  it('resolveWorkerLaunchArgsFromEnv uses inherited leader model for all agent types', () => {
534
534
  const args = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor', 'gpt-4.1');
@@ -549,8 +549,8 @@ describe('runtime', () => {
549
549
  withIsolatedDefaultModelEnv(() => {
550
550
  const lowArgs = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor', undefined, 'low', 'codex');
551
551
  const highArgs = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen' }, 'executor', undefined, 'high', 'codex');
552
- assert.deepEqual(lowArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="low"', '--model', 'gpt-5.5']);
553
- assert.deepEqual(highArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="high"', '--model', 'gpt-5.5']);
552
+ assert.deepEqual(lowArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="low"', '--model', 'gpt-5.6-sol']);
553
+ assert.deepEqual(highArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="high"', '--model', 'gpt-5.6-sol']);
554
554
  });
555
555
  }
556
556
  finally {
@@ -639,7 +639,7 @@ describe('runtime', () => {
639
639
  });
640
640
  const claudeArgs = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--no-alt-screen --model claude-3-7-sonnet' }, 'executor', undefined, 'low', 'claude');
641
641
  const geminiArgs = resolveWorkerLaunchArgsFromEnv({ OMX_TEAM_WORKER_LAUNCH_ARGS: '--model gemini-2.0-pro' }, 'executor', undefined, 'low', 'gemini');
642
- assert.deepEqual(codexArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="high"', '--model', 'gpt-5.5']);
642
+ assert.deepEqual(codexArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="high"', '--model', 'gpt-5.6-sol']);
643
643
  assert.deepEqual(claudeArgs, ['--no-alt-screen', '-c', 'model_reasoning_effort="low"', '--model', 'claude-3-7-sonnet']);
644
644
  assert.deepEqual(geminiArgs, ['-c', 'model_reasoning_effort="low"', '--model', 'gemini-2.0-pro']);
645
645
  }
@@ -3235,7 +3235,7 @@ sleep 5
3235
3235
  delete process.env.TMUX;
3236
3236
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'prompt';
3237
3237
  process.env.OMX_TEAM_WORKER_CLI = 'gemini';
3238
- process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.3-codex-spark';
3238
+ process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.6-luna';
3239
3239
  process.env.OMX_GEMINI_ARGV_CAPTURE_PATH = capturePath;
3240
3240
  let runtime = null;
3241
3241
  try {
@@ -3314,7 +3314,7 @@ process.exit(0);
3314
3314
  delete process.env.TMUX;
3315
3315
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'prompt';
3316
3316
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
3317
- process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.3-codex-spark -c model_reasoning_effort="low"';
3317
+ process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.6-luna -c model_reasoning_effort="low"';
3318
3318
  try {
3319
3319
  await assert.rejects(() => withoutTeamWorkerEnv(() => startTeam('team-codex-explicit-launch', 'codex prompt-mode team bootstrap', 'explore', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd)), /prompt_mode_codex_requires_tty/);
3320
3320
  assert.equal(existsSync(join(cwd, '.omx', 'state', 'team', 'team-codex-explicit-launch')), false);
@@ -3409,11 +3409,11 @@ process.on('SIGTERM', () => process.exit(0));
3409
3409
  const worker2Instructions = await readFile(join(cwd, '.omx', 'state', 'team', runtime.teamName, 'workers', 'worker-2', 'AGENTS.md'), 'utf-8');
3410
3410
  assert.match(worker1Instructions, /You are operating as the \*\*test-engineer\*\* role/);
3411
3411
  assert.match(worker1Instructions, /Test Engineer/);
3412
- assert.doesNotMatch(worker1Instructions, /exact gpt-5\.4-mini model/);
3412
+ assert.doesNotMatch(worker1Instructions, /exact gpt-5\.6-terra model/);
3413
3413
  assert.match(worker2Instructions, /You are operating as the \*\*writer\*\* role/);
3414
3414
  assert.match(worker2Instructions, /You are Writer\./);
3415
- assert.doesNotMatch(worker2Instructions, /exact gpt-5\.4-mini model/);
3416
- assert.match(worker2Instructions, /resolved_model: gpt-5\.5/);
3415
+ assert.doesNotMatch(worker2Instructions, /exact gpt-5\.6-terra model/);
3416
+ assert.match(worker2Instructions, /resolved_model: gpt-5\.6-sol/);
3417
3417
  let worker1Args = null;
3418
3418
  let worker2Args = null;
3419
3419
  for (let attempt = 0; attempt < 50; attempt += 1) {
@@ -3432,10 +3432,10 @@ process.on('SIGTERM', () => process.exit(0));
3432
3432
  const worker2Joined = worker2Args.join(' ');
3433
3433
  assert.match(worker1Joined, /model_reasoning_effort="medium"/);
3434
3434
  assert.match(worker1Joined, /model_instructions_file=.*worker-1\/AGENTS\.md/);
3435
- assert.match(worker1Joined, /--model gpt-5\.5/);
3435
+ assert.match(worker1Joined, /--model gpt-5\.6-sol/);
3436
3436
  assert.match(worker2Joined, /model_reasoning_effort="xhigh"/);
3437
3437
  assert.match(worker2Joined, /model_instructions_file=.*worker-2\/AGENTS\.md/);
3438
- assert.match(worker2Joined, /--model gpt-5\.5/);
3438
+ assert.match(worker2Joined, /--model gpt-5\.6-sol/);
3439
3439
  await shutdownTeam(runtime.teamName, cwd, { force: true });
3440
3440
  runtime = null;
3441
3441
  }
@@ -3470,7 +3470,7 @@ process.on('SIGTERM', () => process.exit(0));
3470
3470
  await rm(cwd, { recursive: true, force: true });
3471
3471
  }
3472
3472
  });
3473
- it('startTeam does not apply mini guidance for exact-match negatives like gpt-5.4-mini-tuned', async () => {
3473
+ it('startTeam does not apply mini guidance for exact-match negatives like gpt-5.6-terra-tuned', async () => {
3474
3474
  const cwd = await mkdtemp(join(tmpdir(), 'omx-runtime-mini-tuned-'));
3475
3475
  const binDir = join(cwd, 'bin');
3476
3476
  const fakeCodexPath = join(binDir, 'codex');
@@ -3507,7 +3507,7 @@ process.on('SIGTERM', () => process.exit(0));
3507
3507
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
3508
3508
  process.env.OMX_ARGV_CAPTURE_DIR = captureDir;
3509
3509
  delete process.env.OMX_DEFAULT_STANDARD_MODEL;
3510
- process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.4-mini-tuned';
3510
+ process.env.OMX_TEAM_WORKER_LAUNCH_ARGS = '--model gpt-5.6-terra-tuned';
3511
3511
  let runtime = null;
3512
3512
  try {
3513
3513
  runtime = await withMockPromptModeCodexAllowed(() => withoutTeamWorkerEnv(() => startTeam('team-mini-tuned-routing', 'mini tuned routing handoff', 'executor', 1, [
@@ -3516,9 +3516,9 @@ process.on('SIGTERM', () => process.exit(0));
3516
3516
  const workerInstructions = await readFile(join(cwd, '.omx', 'state', 'team', runtime.teamName, 'workers', 'worker-1', 'AGENTS.md'), 'utf-8');
3517
3517
  assert.match(workerInstructions, /You are operating as the \*\*writer\*\* role/);
3518
3518
  assert.match(workerInstructions, /You are Writer\./);
3519
- assert.doesNotMatch(workerInstructions, /exact gpt-5\.4-mini model/);
3519
+ assert.doesNotMatch(workerInstructions, /exact gpt-5\.6-terra model/);
3520
3520
  assert.doesNotMatch(workerInstructions, /strict execution order: inspect -> plan -> act -> verify/);
3521
- assert.match(workerInstructions, /resolved_model: gpt-5\.4-mini-tuned/);
3521
+ assert.match(workerInstructions, /resolved_model: gpt-5\.6-terra-tuned/);
3522
3522
  let workerArgs = null;
3523
3523
  for (let attempt = 0; attempt < 50; attempt += 1) {
3524
3524
  const workerPath = join(captureDir, 'team-mini-tuned-routing__worker-1.json');
@@ -3530,7 +3530,7 @@ process.on('SIGTERM', () => process.exit(0));
3530
3530
  }
3531
3531
  assert.ok(workerArgs, 'worker argv capture file should be written');
3532
3532
  const workerJoined = workerArgs.join(' ');
3533
- assert.match(workerJoined, /--model gpt-5\.4-mini-tuned/);
3533
+ assert.match(workerJoined, /--model gpt-5\.6-terra-tuned/);
3534
3534
  await shutdownTeam(runtime.teamName, cwd, { force: true });
3535
3535
  runtime = null;
3536
3536
  }
@@ -6971,7 +6971,7 @@ esac
6971
6971
  runtime = await withPromptModeCodexEnv(binDir, {}, () => withoutTeamWorkerEnv(() => startTeam('team-delegation-persist', 'delegation persistence test', 'executor', 1, [{ subject: 'Investigate runtime assignment', description: 'Search runtime, debug assignTask behavior, and coordinate shared handoff boundaries' }], cwd)));
6972
6972
  const task = await readTask(runtime.teamName, '1', cwd);
6973
6973
  assert.equal(task?.delegation?.mode, 'auto');
6974
- assert.equal(task?.delegation?.child_model, 'gpt-5.4-mini');
6974
+ assert.equal(task?.delegation?.child_model, 'gpt-5.6-terra');
6975
6975
  assert.equal(task?.delegation?.required_parallel_probe, true);
6976
6976
  assert.equal(task?.coordination?.mode, 'coordinated');
6977
6977
  assert.ok(task?.coordination?.activation_reasons.includes('cross_boundary_or_handoff_language'));
@@ -7372,7 +7372,7 @@ esac
7372
7372
  await assert.rejects(() => assignTask('team-assign-delegation', 'worker-1', task.id, cwd), /worker_notify_failed/);
7373
7373
  const reread = await readTask('team-assign-delegation', task.id, cwd);
7374
7374
  assert.equal(reread?.delegation?.mode, 'auto');
7375
- assert.equal(reread?.delegation?.child_model, 'gpt-5.4-mini');
7375
+ assert.equal(reread?.delegation?.child_model, 'gpt-5.6-terra');
7376
7376
  assert.equal(reread?.coordination?.mode, 'coordinated');
7377
7377
  assert.ok(reread?.coordination?.activation_reasons.includes('shared_file_scope'));
7378
7378
  assert.equal(reread?.coordination?.activation_reasons.includes('stale_snapshot_before_assignment'), false);