oh-my-codex 0.18.11 → 0.18.13

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 (196) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +1 -1
  3. package/README.md +9 -1
  4. package/dist/autopilot/__tests__/ralplan-gate.test.js +668 -0
  5. package/dist/autopilot/__tests__/ralplan-gate.test.js.map +1 -1
  6. package/dist/autopilot/completion-gate.d.ts +10 -0
  7. package/dist/autopilot/completion-gate.d.ts.map +1 -0
  8. package/dist/autopilot/completion-gate.js +154 -0
  9. package/dist/autopilot/completion-gate.js.map +1 -0
  10. package/dist/autopilot/ralplan-gate.d.ts.map +1 -1
  11. package/dist/autopilot/ralplan-gate.js +42 -21
  12. package/dist/autopilot/ralplan-gate.js.map +1 -1
  13. package/dist/cli/__tests__/codex-plugin-layout.test.js +46 -3
  14. package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
  15. package/dist/cli/__tests__/doctor-invalid-config.test.js +35 -0
  16. package/dist/cli/__tests__/doctor-invalid-config.test.js.map +1 -1
  17. package/dist/cli/__tests__/doctor-warning-copy.test.js +317 -0
  18. package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
  19. package/dist/cli/__tests__/index.test.js +120 -2
  20. package/dist/cli/__tests__/index.test.js.map +1 -1
  21. package/dist/cli/__tests__/launch-fallback.test.js +1 -1
  22. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  23. package/dist/cli/__tests__/resume.test.js +217 -1
  24. package/dist/cli/__tests__/resume.test.js.map +1 -1
  25. package/dist/cli/__tests__/session-scoped-runtime.test.js +101 -0
  26. package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
  27. package/dist/cli/__tests__/session-search-help.test.js +3 -2
  28. package/dist/cli/__tests__/session-search-help.test.js.map +1 -1
  29. package/dist/cli/__tests__/session-search.test.js +64 -2
  30. package/dist/cli/__tests__/session-search.test.js.map +1 -1
  31. package/dist/cli/__tests__/setup-agents-overwrite.test.js +289 -1
  32. package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
  33. package/dist/cli/__tests__/setup-install-mode.test.js +290 -17
  34. package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
  35. package/dist/cli/__tests__/setup-prompts-overwrite.test.js +74 -0
  36. package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
  37. package/dist/cli/__tests__/setup-scope.test.js +45 -0
  38. package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
  39. package/dist/cli/__tests__/state.test.js +93 -0
  40. package/dist/cli/__tests__/state.test.js.map +1 -1
  41. package/dist/cli/__tests__/update.test.js +157 -3
  42. package/dist/cli/__tests__/update.test.js.map +1 -1
  43. package/dist/cli/__tests__/version-sync-contract.test.js +2 -0
  44. package/dist/cli/__tests__/version-sync-contract.test.js.map +1 -1
  45. package/dist/cli/doctor.d.ts.map +1 -1
  46. package/dist/cli/doctor.js +90 -12
  47. package/dist/cli/doctor.js.map +1 -1
  48. package/dist/cli/index.d.ts +13 -4
  49. package/dist/cli/index.d.ts.map +1 -1
  50. package/dist/cli/index.js +439 -46
  51. package/dist/cli/index.js.map +1 -1
  52. package/dist/cli/project-runtime-codex-homes.d.ts +6 -0
  53. package/dist/cli/project-runtime-codex-homes.d.ts.map +1 -0
  54. package/dist/cli/project-runtime-codex-homes.js +27 -0
  55. package/dist/cli/project-runtime-codex-homes.js.map +1 -0
  56. package/dist/cli/session-search.d.ts.map +1 -1
  57. package/dist/cli/session-search.js +8 -1
  58. package/dist/cli/session-search.js.map +1 -1
  59. package/dist/cli/setup.d.ts +2 -2
  60. package/dist/cli/setup.d.ts.map +1 -1
  61. package/dist/cli/setup.js +482 -126
  62. package/dist/cli/setup.js.map +1 -1
  63. package/dist/cli/state.d.ts.map +1 -1
  64. package/dist/cli/state.js +79 -8
  65. package/dist/cli/state.js.map +1 -1
  66. package/dist/cli/update.d.ts +1 -0
  67. package/dist/cli/update.d.ts.map +1 -1
  68. package/dist/cli/update.js +42 -10
  69. package/dist/cli/update.js.map +1 -1
  70. package/dist/config/__tests__/codex-hooks.test.js +73 -29
  71. package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
  72. package/dist/config/codex-hooks.d.ts +14 -0
  73. package/dist/config/codex-hooks.d.ts.map +1 -1
  74. package/dist/config/codex-hooks.js +54 -51
  75. package/dist/config/codex-hooks.js.map +1 -1
  76. package/dist/config/generator.d.ts +1 -1
  77. package/dist/config/generator.d.ts.map +1 -1
  78. package/dist/config/generator.js +1 -1
  79. package/dist/config/generator.js.map +1 -1
  80. package/dist/hooks/__tests__/best-practice-research-skill.test.js +12 -0
  81. package/dist/hooks/__tests__/best-practice-research-skill.test.js.map +1 -1
  82. package/dist/hud/__tests__/authority.test.js +45 -12
  83. package/dist/hud/__tests__/authority.test.js.map +1 -1
  84. package/dist/hud/__tests__/reconcile.test.js +95 -0
  85. package/dist/hud/__tests__/reconcile.test.js.map +1 -1
  86. package/dist/hud/__tests__/render.test.js +6 -6
  87. package/dist/hud/__tests__/render.test.js.map +1 -1
  88. package/dist/hud/__tests__/tmux.test.js +2 -2
  89. package/dist/hud/__tests__/tmux.test.js.map +1 -1
  90. package/dist/hud/authority.d.ts.map +1 -1
  91. package/dist/hud/authority.js +17 -2
  92. package/dist/hud/authority.js.map +1 -1
  93. package/dist/hud/index.js +1 -4
  94. package/dist/hud/index.js.map +1 -1
  95. package/dist/hud/reconcile.d.ts.map +1 -1
  96. package/dist/hud/reconcile.js +42 -0
  97. package/dist/hud/reconcile.js.map +1 -1
  98. package/dist/hud/render.d.ts.map +1 -1
  99. package/dist/hud/render.js +6 -0
  100. package/dist/hud/render.js.map +1 -1
  101. package/dist/hud/tmux.d.ts.map +1 -1
  102. package/dist/hud/tmux.js +5 -4
  103. package/dist/hud/tmux.js.map +1 -1
  104. package/dist/mcp/__tests__/bootstrap.test.js +31 -1
  105. package/dist/mcp/__tests__/bootstrap.test.js.map +1 -1
  106. package/dist/mcp/bootstrap.d.ts +1 -0
  107. package/dist/mcp/bootstrap.d.ts.map +1 -1
  108. package/dist/mcp/bootstrap.js +32 -0
  109. package/dist/mcp/bootstrap.js.map +1 -1
  110. package/dist/modes/__tests__/base-autopilot-gates.test.d.ts +2 -0
  111. package/dist/modes/__tests__/base-autopilot-gates.test.d.ts.map +1 -0
  112. package/dist/modes/__tests__/base-autopilot-gates.test.js +154 -0
  113. package/dist/modes/__tests__/base-autopilot-gates.test.js.map +1 -0
  114. package/dist/modes/base.d.ts +4 -1
  115. package/dist/modes/base.d.ts.map +1 -1
  116. package/dist/modes/base.js +71 -1
  117. package/dist/modes/base.js.map +1 -1
  118. package/dist/pipeline/__tests__/orchestrator.test.js +144 -3
  119. package/dist/pipeline/__tests__/orchestrator.test.js.map +1 -1
  120. package/dist/pipeline/__tests__/stages.test.js +109 -0
  121. package/dist/pipeline/__tests__/stages.test.js.map +1 -1
  122. package/dist/pipeline/orchestrator.d.ts.map +1 -1
  123. package/dist/pipeline/orchestrator.js +11 -4
  124. package/dist/pipeline/orchestrator.js.map +1 -1
  125. package/dist/pipeline/stages/code-review.d.ts +2 -0
  126. package/dist/pipeline/stages/code-review.d.ts.map +1 -1
  127. package/dist/pipeline/stages/code-review.js +2 -0
  128. package/dist/pipeline/stages/code-review.js.map +1 -1
  129. package/dist/pipeline/stages/ultraqa.d.ts +3 -0
  130. package/dist/pipeline/stages/ultraqa.d.ts.map +1 -1
  131. package/dist/pipeline/stages/ultraqa.js +3 -0
  132. package/dist/pipeline/stages/ultraqa.js.map +1 -1
  133. package/dist/ralplan/__tests__/consensus-gate.test.d.ts +2 -0
  134. package/dist/ralplan/__tests__/consensus-gate.test.d.ts.map +1 -0
  135. package/dist/ralplan/__tests__/consensus-gate.test.js +631 -0
  136. package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -0
  137. package/dist/ralplan/consensus-gate.d.ts +9 -1
  138. package/dist/ralplan/consensus-gate.d.ts.map +1 -1
  139. package/dist/ralplan/consensus-gate.js +287 -65
  140. package/dist/ralplan/consensus-gate.js.map +1 -1
  141. package/dist/scripts/__tests__/codex-native-hook.test.js +481 -0
  142. package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
  143. package/dist/scripts/codex-native-hook.d.ts.map +1 -1
  144. package/dist/scripts/codex-native-hook.js +145 -25
  145. package/dist/scripts/codex-native-hook.js.map +1 -1
  146. package/dist/scripts/codex-native-pre-post.d.ts +1 -0
  147. package/dist/scripts/codex-native-pre-post.d.ts.map +1 -1
  148. package/dist/scripts/codex-native-pre-post.js +130 -0
  149. package/dist/scripts/codex-native-pre-post.js.map +1 -1
  150. package/dist/session-history/__tests__/search.test.js +166 -0
  151. package/dist/session-history/__tests__/search.test.js.map +1 -1
  152. package/dist/session-history/search.d.ts +7 -0
  153. package/dist/session-history/search.d.ts.map +1 -1
  154. package/dist/session-history/search.js +83 -24
  155. package/dist/session-history/search.js.map +1 -1
  156. package/dist/sidecar/__tests__/collector.test.js +60 -0
  157. package/dist/sidecar/__tests__/collector.test.js.map +1 -1
  158. package/dist/sidecar/collector.d.ts.map +1 -1
  159. package/dist/sidecar/collector.js +3 -6
  160. package/dist/sidecar/collector.js.map +1 -1
  161. package/dist/state/__tests__/operations.test.js +622 -0
  162. package/dist/state/__tests__/operations.test.js.map +1 -1
  163. package/dist/state/__tests__/skill-active.test.js +82 -0
  164. package/dist/state/__tests__/skill-active.test.js.map +1 -1
  165. package/dist/state/operations.d.ts.map +1 -1
  166. package/dist/state/operations.js +31 -9
  167. package/dist/state/operations.js.map +1 -1
  168. package/dist/state/skill-active.d.ts.map +1 -1
  169. package/dist/state/skill-active.js +41 -1
  170. package/dist/state/skill-active.js.map +1 -1
  171. package/dist/team/__tests__/runtime.test.js +81 -57
  172. package/dist/team/__tests__/runtime.test.js.map +1 -1
  173. package/dist/team/runtime.js +4 -4
  174. package/dist/team/runtime.js.map +1 -1
  175. package/dist/utils/__tests__/paths.test.js +23 -0
  176. package/dist/utils/__tests__/paths.test.js.map +1 -1
  177. package/dist/utils/__tests__/version.test.js +27 -0
  178. package/dist/utils/__tests__/version.test.js.map +1 -1
  179. package/dist/utils/paths.d.ts.map +1 -1
  180. package/dist/utils/paths.js +4 -2
  181. package/dist/utils/paths.js.map +1 -1
  182. package/dist/utils/version.d.ts.map +1 -1
  183. package/dist/utils/version.js +7 -2
  184. package/dist/utils/version.js.map +1 -1
  185. package/dist/verification/__tests__/ci-rust-gates.test.js +4 -2
  186. package/dist/verification/__tests__/ci-rust-gates.test.js.map +1 -1
  187. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js +71 -3
  188. package/dist/verification/__tests__/dev-merge-issue-close-workflow.test.js.map +1 -1
  189. package/package.json +1 -1
  190. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  191. package/plugins/oh-my-codex/hooks/codex-native-hook.mjs +53 -2
  192. package/plugins/oh-my-codex/skills/best-practice-research/SKILL.md +6 -1
  193. package/skills/best-practice-research/SKILL.md +6 -1
  194. package/src/scripts/__tests__/codex-native-hook.test.ts +615 -0
  195. package/src/scripts/codex-native-hook.ts +162 -32
  196. package/src/scripts/codex-native-pre-post.ts +137 -0
@@ -769,11 +769,11 @@ case "$1" in
769
769
  exit 0
770
770
  ;;
771
771
  *"#{pane_pid}"*)
772
- echo "4321"
772
+ echo "2000004321"
773
773
  exit 0
774
774
  ;;
775
775
  *"#{pane_dead} #{pane_pid}"*)
776
- echo "0 4321"
776
+ echo "0 2000004321"
777
777
  exit 0
778
778
  ;;
779
779
  *)
@@ -924,11 +924,11 @@ case "$1" in
924
924
  exit 0
925
925
  ;;
926
926
  *"#{pane_pid}"*)
927
- echo "4321"
927
+ echo "2000004321"
928
928
  exit 0
929
929
  ;;
930
930
  *"#{pane_dead} #{pane_pid}"*)
931
- echo "0 4321"
931
+ echo "0 2000004321"
932
932
  exit 0
933
933
  ;;
934
934
  *)
@@ -971,7 +971,7 @@ esac
971
971
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
972
972
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
973
973
  process.env.OMX_TEAM_SKIP_READY_WAIT = '1';
974
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
974
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
975
975
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
976
976
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
977
977
  const expectedTeamName = buildInternalTeamName('team-startup-no-evidence', resolveTeamIdentityScope(process.env));
@@ -1436,9 +1436,9 @@ case "\${1:-}" in
1436
1436
  list-panes)
1437
1437
  case "$*" in
1438
1438
  *"pane_current_command"*) printf "%%1\tnode\t'codex'\n" ;;
1439
- *"#{pane_dead} #{pane_pid}"*) echo "1 999999" ;;
1440
- *"-t %2"*"#{pane_pid}"*) echo "2222" ;;
1441
- *"#{pane_pid}"*) echo "1111" ;;
1439
+ *"#{pane_dead} #{pane_pid}"*) echo "1 2000999999" ;;
1440
+ *"-t %2"*"#{pane_pid}"*) echo "2000002222" ;;
1441
+ *"#{pane_pid}"*) echo "2000001111" ;;
1442
1442
  *) exit 0 ;;
1443
1443
  esac
1444
1444
  exit 0
@@ -1553,16 +1553,16 @@ case "\${1:-}" in
1553
1553
  printf "%%1\tnode\t'codex'\n"
1554
1554
  ;;
1555
1555
  *"#{pane_dead} #{pane_pid}"*)
1556
- echo "1 999999"
1556
+ echo "1 2000999999"
1557
1557
  ;;
1558
1558
  *"-t %2"*"#{pane_pid}"*)
1559
- echo "2222"
1559
+ echo "2000002222"
1560
1560
  ;;
1561
1561
  *"-t %3"*"#{pane_pid}"*)
1562
- echo "3333"
1562
+ echo "2000003333"
1563
1563
  ;;
1564
1564
  *"#{pane_pid}"*)
1565
- echo "1111"
1565
+ echo "2000001111"
1566
1566
  ;;
1567
1567
  *)
1568
1568
  exit 0
@@ -1607,11 +1607,11 @@ esac
1607
1607
  process.env.OMX_TEAM_SKIP_READY_WAIT = '1';
1608
1608
  runtime = await withoutTeamWorkerEnv(() => startTeam('team-pane-pid', 'interactive pane pid capture', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd));
1609
1609
  assert.equal(runtime.config.workers[0]?.pane_id, '%2');
1610
- assert.equal(runtime.config.workers[0]?.pid, 2222);
1610
+ assert.equal(runtime.config.workers[0]?.pid, 2000002222);
1611
1611
  const identityPath = join(cwd, '.omx', 'state', 'team', runtime.teamName, 'workers', 'worker-1', 'identity.json');
1612
1612
  const identity = JSON.parse(await readFile(identityPath, 'utf-8'));
1613
1613
  assert.equal(identity.pane_id, '%2');
1614
- assert.equal(identity.pid, 2222);
1614
+ assert.equal(identity.pid, 2000002222);
1615
1615
  });
1616
1616
  }
1617
1617
  finally {
@@ -1665,6 +1665,7 @@ esac
1665
1665
  const previousReadyTimeout = process.env.OMX_TEAM_READY_TIMEOUT_MS;
1666
1666
  const previousStartupEvidenceTimeout = process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS;
1667
1667
  const previousStartupDispatchRetries = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
1668
+ const previousStartupDispatchRetryDelay = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
1668
1669
  const teamName = `tsd-${process.pid}-${Date.now().toString(36)}`;
1669
1670
  try {
1670
1671
  await withMockTmuxFixture({
@@ -1688,9 +1689,9 @@ case "$1" in
1688
1689
  list-panes)
1689
1690
  case "$*" in
1690
1691
  *"pane_current_command"*) printf "%%1\tnode\t'codex'\n" ;;
1691
- *"#{pane_dead} #{pane_pid}"*) echo "0 4242" ;;
1692
+ *"#{pane_dead} #{pane_pid}"*) echo "0 2000004242" ;;
1692
1693
  *"#{pane_dead}"*) echo "0" ;;
1693
- *"#{pane_pid}"*) echo "4242" ;;
1694
+ *"#{pane_pid}"*) echo "2000004242" ;;
1694
1695
  *) exit 0 ;;
1695
1696
  esac
1696
1697
  exit 0
@@ -1730,9 +1731,10 @@ esac
1730
1731
  process.env.TMUX_PANE = '%1';
1731
1732
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
1732
1733
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
1733
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '5000';
1734
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
1734
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
1735
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
1735
1736
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
1737
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
1736
1738
  await assert.rejects(withoutTeamWorkerEnv(() => startTeam(teamName, 'startup direct trigger falls back to evidence-gated dispatch', 'executor', 1, [{ subject: 'w1', description: 'worker one', owner: 'worker-1' }], cwd)), /worker_notify_failed:worker-1:codex_startup_no_evidence_after_fallback/);
1737
1739
  const order = (await readFile(join(cwd, 'startup-order.log'), 'utf-8')).trim().split('\n');
1738
1740
  assert.ok(order.includes('send-keys'), `expected direct send-keys, got ${order.join(',')}`);
@@ -1768,6 +1770,10 @@ esac
1768
1770
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = previousStartupDispatchRetries;
1769
1771
  else
1770
1772
  delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
1773
+ if (typeof previousStartupDispatchRetryDelay === 'string')
1774
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = previousStartupDispatchRetryDelay;
1775
+ else
1776
+ delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
1771
1777
  await rm(cwd, { recursive: true, force: true });
1772
1778
  }
1773
1779
  });
@@ -1803,10 +1809,10 @@ case "$1" in
1803
1809
  list-panes)
1804
1810
  case "$*" in
1805
1811
  *"pane_current_command"*) printf "%%1\tnode\t'codex'\n" ;;
1806
- *"#{pane_dead} #{pane_pid}"*) echo "0 4242" ;;
1807
- *"-t %2"*"#{pane_pid}"*) echo "4242" ;;
1812
+ *"#{pane_dead} #{pane_pid}"*) echo "0 2000004242" ;;
1813
+ *"-t %2"*"#{pane_pid}"*) echo "2000004242" ;;
1808
1814
  *"#{pane_dead}"*) echo "0" ;;
1809
- *"#{pane_pid}"*) echo "4242" ;;
1815
+ *"#{pane_pid}"*) echo "2000004242" ;;
1810
1816
  *) exit 0 ;;
1811
1817
  esac
1812
1818
  exit 0
@@ -1841,8 +1847,8 @@ esac
1841
1847
  process.env.TMUX_PANE = '%1';
1842
1848
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
1843
1849
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
1844
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '5000';
1845
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
1850
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
1851
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
1846
1852
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
1847
1853
  receiptNotifier = setInterval(() => {
1848
1854
  void markPendingInboxDispatchesNotified('team-ready-prompt-evidence', cwd);
@@ -1914,6 +1920,7 @@ esac
1914
1920
  const previousReadyTimeout = process.env.OMX_TEAM_READY_TIMEOUT_MS;
1915
1921
  const previousStartupEvidenceTimeout = process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS;
1916
1922
  const previousStartupDispatchRetries = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
1923
+ const previousStartupDispatchRetryDelay = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
1917
1924
  const teamName = `trt-${process.pid}-${Date.now().toString(36)}`;
1918
1925
  let receiptNotifier = null;
1919
1926
  let runtimeTeamName = null;
@@ -1938,9 +1945,9 @@ case "$1" in
1938
1945
  list-panes)
1939
1946
  case "$*" in
1940
1947
  *"pane_current_command"*) printf "%%1\\tnode\\t'codex'\\n" ;;
1941
- *"#{pane_dead} #{pane_pid}"*) echo "0 4242" ;;
1948
+ *"#{pane_dead} #{pane_pid}"*) echo "0 2000004242" ;;
1942
1949
  *"#{pane_dead}"*) echo "0" ;;
1943
- *"#{pane_pid}"*) echo "4242" ;;
1950
+ *"#{pane_pid}"*) echo "2000004242" ;;
1944
1951
  *) exit 0 ;;
1945
1952
  esac
1946
1953
  exit 0
@@ -1967,9 +1974,10 @@ esac
1967
1974
  process.env.TMUX_PANE = '%1';
1968
1975
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
1969
1976
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
1970
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '5000';
1971
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
1977
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
1978
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
1972
1979
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
1980
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
1973
1981
  receiptNotifier = setInterval(() => {
1974
1982
  void markPendingInboxDispatchesNotified(teamName, cwd);
1975
1983
  }, 20);
@@ -2012,6 +2020,10 @@ esac
2012
2020
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = previousStartupDispatchRetries;
2013
2021
  else
2014
2022
  delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
2023
+ if (typeof previousStartupDispatchRetryDelay === 'string')
2024
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = previousStartupDispatchRetryDelay;
2025
+ else
2026
+ delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
2015
2027
  await rm(cwd, { recursive: true, force: true });
2016
2028
  }
2017
2029
  });
@@ -2024,6 +2036,7 @@ esac
2024
2036
  const previousReadyTimeout = process.env.OMX_TEAM_READY_TIMEOUT_MS;
2025
2037
  const previousStartupEvidenceTimeout = process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS;
2026
2038
  const previousStartupDispatchRetries = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
2039
+ const previousStartupDispatchRetryDelay = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
2027
2040
  let receiptDeliverer = null;
2028
2041
  let runtimeTeamName = null;
2029
2042
  try {
@@ -2047,11 +2060,11 @@ case "$1" in
2047
2060
  list-panes)
2048
2061
  case "$*" in
2049
2062
  *"pane_current_command"*) printf "%%1\tnode\t'codex'\n" ;;
2050
- *"#{pane_dead} #{pane_pid}"*) echo "0 4242" ;;
2063
+ *"#{pane_dead} #{pane_pid}"*) echo "0 2000004242" ;;
2051
2064
  *"#{pane_dead}"*) echo "0" ;;
2052
- *"-t %2"*"#{pane_pid}"*) echo "4242" ;;
2053
- *"-t %3"*"#{pane_pid}"*) echo "4343" ;;
2054
- *"#{pane_pid}"*) echo "4141" ;;
2065
+ *"-t %2"*"#{pane_pid}"*) echo "2000004242" ;;
2066
+ *"-t %3"*"#{pane_pid}"*) echo "2000004343" ;;
2067
+ *"#{pane_pid}"*) echo "2000004141" ;;
2055
2068
  *) exit 0 ;;
2056
2069
  esac
2057
2070
  exit 0
@@ -2101,9 +2114,10 @@ esac
2101
2114
  process.env.TMUX_PANE = '%1';
2102
2115
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
2103
2116
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
2104
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '2000';
2117
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
2105
2118
  process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '50';
2106
2119
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
2120
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
2107
2121
  receiptDeliverer = setInterval(() => {
2108
2122
  void (async () => {
2109
2123
  await markPendingInboxDispatchesDelivered('team-parallel-ready', cwd);
@@ -2154,6 +2168,10 @@ esac
2154
2168
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = previousStartupDispatchRetries;
2155
2169
  else
2156
2170
  delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
2171
+ if (typeof previousStartupDispatchRetryDelay === 'string')
2172
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = previousStartupDispatchRetryDelay;
2173
+ else
2174
+ delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
2157
2175
  await rm(cwd, { recursive: true, force: true });
2158
2176
  }
2159
2177
  });
@@ -2199,13 +2217,13 @@ case "$1" in
2199
2217
  echo "0"
2200
2218
  ;;
2201
2219
  *"#{pane_dead} #{pane_pid}"*)
2202
- echo "0 4242"
2220
+ echo "0 2000004242"
2203
2221
  ;;
2204
2222
  *"pane_current_command"*)
2205
2223
  printf "%%1\\tnode\\t'codex'\\n"
2206
2224
  ;;
2207
2225
  *"#{pane_pid}"*)
2208
- echo "4242"
2226
+ echo "2000004242"
2209
2227
  ;;
2210
2228
  *)
2211
2229
  exit 0
@@ -2250,7 +2268,7 @@ process.on('SIGTERM', () => process.exit(0));
2250
2268
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
2251
2269
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
2252
2270
  process.env.OMX_TEAM_SKIP_READY_WAIT = '1';
2253
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
2271
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
2254
2272
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
2255
2273
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
2256
2274
  receiptFailer = setInterval(() => {
@@ -2328,6 +2346,7 @@ process.on('SIGTERM', () => process.exit(0));
2328
2346
  const previousReadyTimeout = process.env.OMX_TEAM_READY_TIMEOUT_MS;
2329
2347
  const previousStartupEvidenceTimeout = process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS;
2330
2348
  const previousStartupDispatchRetries = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
2349
+ const previousStartupDispatchRetryDelay = process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
2331
2350
  let receiptFailer = null;
2332
2351
  try {
2333
2352
  await withMockTmuxFixture({
@@ -2350,12 +2369,12 @@ case "$1" in
2350
2369
  list-panes)
2351
2370
  case "$*" in
2352
2371
  *"pane_current_command"*) printf "%%1\tnode\t'codex'\n" ;;
2353
- *"-t %2"*"#{pane_dead} #{pane_pid}"*) echo "1 4242" ;;
2354
- *"-t %3"*"#{pane_dead} #{pane_pid}"*) echo "0 4343" ;;
2355
- *"#{pane_dead} #{pane_pid}"*) echo "0 4141" ;;
2356
- *"-t %2"*"#{pane_pid}"*) echo "4242" ;;
2357
- *"-t %3"*"#{pane_pid}"*) echo "4343" ;;
2358
- *"#{pane_pid}"*) echo "4141" ;;
2372
+ *"-t %2"*"#{pane_dead} #{pane_pid}"*) echo "1 2000004242" ;;
2373
+ *"-t %3"*"#{pane_dead} #{pane_pid}"*) echo "0 2000004343" ;;
2374
+ *"#{pane_dead} #{pane_pid}"*) echo "0 2000004141" ;;
2375
+ *"-t %2"*"#{pane_pid}"*) echo "2000004242" ;;
2376
+ *"-t %3"*"#{pane_pid}"*) echo "2000004343" ;;
2377
+ *"#{pane_pid}"*) echo "2000004141" ;;
2359
2378
  *) exit 0 ;;
2360
2379
  esac
2361
2380
  exit 0
@@ -2395,9 +2414,10 @@ esac
2395
2414
  process.env.TMUX_PANE = '%1';
2396
2415
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
2397
2416
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
2398
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '5000';
2399
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
2417
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
2418
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
2400
2419
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
2420
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
2401
2421
  receiptFailer = setInterval(() => {
2402
2422
  void (async () => {
2403
2423
  const requests = await listDispatchRequests('team-parallel-dead-pane', cwd, { kind: 'inbox' }).catch(() => []);
@@ -2448,6 +2468,10 @@ esac
2448
2468
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = previousStartupDispatchRetries;
2449
2469
  else
2450
2470
  delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES;
2471
+ if (typeof previousStartupDispatchRetryDelay === 'string')
2472
+ process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = previousStartupDispatchRetryDelay;
2473
+ else
2474
+ delete process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS;
2451
2475
  await rm(cwd, { recursive: true, force: true });
2452
2476
  }
2453
2477
  });
@@ -2510,10 +2534,10 @@ case "$1" in
2510
2534
  printf "%%1\\tnode\\t'codex'\\n"
2511
2535
  ;;
2512
2536
  *"#{pane_dead} #{pane_pid}"*)
2513
- echo "1 4242"
2537
+ echo "1 2000004242"
2514
2538
  ;;
2515
2539
  *"#{pane_pid}"*)
2516
- echo "4242"
2540
+ echo "2000004242"
2517
2541
  ;;
2518
2542
  *)
2519
2543
  exit 0
@@ -2545,8 +2569,8 @@ esac
2545
2569
  process.env.TMUX_PANE = '%1';
2546
2570
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
2547
2571
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
2548
- process.env.OMX_TEAM_READY_TIMEOUT_MS = '5000';
2549
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
2572
+ process.env.OMX_TEAM_READY_TIMEOUT_MS = '500';
2573
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
2550
2574
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
2551
2575
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
2552
2576
  await assert.rejects(() => withoutTeamWorkerEnv(() => startTeam('team-dead-startup-pane', 'dead pane should still fail startup', 'executor', 1, [{ subject: 's', description: 'd', owner: 'worker-1' }], cwd)), /Worker worker-1 did not become ready/);
@@ -2632,22 +2656,22 @@ case "$1" in
2632
2656
  list-panes)
2633
2657
  case "$*" in
2634
2658
  *"#{pane_dead} #{pane_pid}"*)
2635
- echo "0 4242"
2659
+ echo "0 2000004242"
2636
2660
  ;;
2637
2661
  *"pane_current_command"*)
2638
2662
  printf "%%1\\tnode\\t'codex'\\n"
2639
2663
  ;;
2640
2664
  *"-t %2"*"#{pane_pid}"*)
2641
- echo "4242"
2665
+ echo "2000004242"
2642
2666
  ;;
2643
2667
  *"-t %3"*"#{pane_pid}"*)
2644
- echo "4343"
2668
+ echo "2000004343"
2645
2669
  ;;
2646
2670
  *"-t %4"*"#{pane_pid}"*)
2647
- echo "4444"
2671
+ echo "2000004444"
2648
2672
  ;;
2649
2673
  *"#{pane_pid}"*)
2650
- echo "4141"
2674
+ echo "2000004141"
2651
2675
  ;;
2652
2676
  *)
2653
2677
  exit 0
@@ -2698,7 +2722,7 @@ process.on('SIGTERM', () => process.exit(0));
2698
2722
  process.env.OMX_TEAM_WORKER_LAUNCH_MODE = 'interactive';
2699
2723
  process.env.OMX_TEAM_WORKER_CLI = 'codex';
2700
2724
  process.env.OMX_TEAM_SKIP_READY_WAIT = '1';
2701
- process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '500';
2725
+ process.env.OMX_TEAM_STARTUP_EVIDENCE_TIMEOUT_MS = '100';
2702
2726
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRIES = '1';
2703
2727
  process.env.OMX_TEAM_STARTUP_DISPATCH_RETRY_DELAY_MS = '50';
2704
2728
  receiptFailer = setInterval(() => {
@@ -3313,10 +3337,10 @@ case "\${1:-}" in
3313
3337
  printf "%%1\\tnode\\t'codex'\\n"
3314
3338
  ;;
3315
3339
  *"#{pane_dead} #{pane_pid}"*)
3316
- echo "1 999999"
3340
+ echo "1 2000999999"
3317
3341
  ;;
3318
3342
  *"#{pane_pid}"*)
3319
- echo "999999"
3343
+ echo "2000999999"
3320
3344
  ;;
3321
3345
  *)
3322
3346
  exit 0
@@ -4890,11 +4914,11 @@ case "$1" in
4890
4914
  exit 1
4891
4915
  ;;
4892
4916
  *"-t %13 -F #{pane_pid}"*)
4893
- echo "1013"
4917
+ echo "2000001013"
4894
4918
  exit 0
4895
4919
  ;;
4896
4920
  *"-t %14 -F #{pane_pid}"*)
4897
- echo "1014"
4921
+ echo "2000001014"
4898
4922
  exit 0
4899
4923
  ;;
4900
4924
  *"-t leader:0 -F #{pane_id}"*"#{pane_current_command}"*)