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
@@ -1 +1 @@
1
- {"version":3,"file":"team-worker-stop.d.ts","sourceRoot":"","sources":["../../../src/scripts/notify-hook/team-worker-stop.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAyMH,wBAAsB,oCAAoC,CAAC,EACzD,QAAQ,EACR,OAAO,EACP,aAAa,GACd;;;;CAAA;;;GA0LA"}
1
+ {"version":3,"file":"team-worker-stop.d.ts","sourceRoot":"","sources":["../../../src/scripts/notify-hook/team-worker-stop.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAsOH,wBAAsB,oCAAoC,CAAC,EACzD,QAAQ,EACR,OAAO,EACP,aAAa,GACd;;;;CAAA;;;GAqMA"}
@@ -13,7 +13,7 @@ import { appendTeamDeliveryLog } from '../../team/delivery-log.js';
13
13
  import { safeString, asNumber, isTerminalPhase } from './utils.js';
14
14
  import { readJsonIfExists } from './state-io.js';
15
15
  import { logTmuxHookEvent } from './log.js';
16
- import { evaluatePaneInjectionReadiness, queuePaneInput, sendPaneInput } from './team-tmux-guard.js';
16
+ import { evaluatePaneInjectionReadiness, sendPaneInput } from './team-tmux-guard.js';
17
17
  import { resolvePaneTarget } from './tmux-injection.js';
18
18
  import { readTeamWorkersForIdleCheck } from './team-worker.js';
19
19
  const STOP_NUDGE_COOLDOWN_MS = 30_000;
@@ -156,6 +156,29 @@ async function resolveCanonicalLeaderPaneId(leaderPaneId) {
156
156
  }
157
157
  return normalizedLeaderPaneId;
158
158
  }
159
+ async function recordSuppressedWorkerStopNudge({ logsDir, teamName, workerName, reason, }) {
160
+ const nowIso = new Date().toISOString();
161
+ await logTmuxHookEvent(logsDir, {
162
+ timestamp: nowIso,
163
+ type: 'worker_stop_leader_nudge_suppressed',
164
+ team: teamName,
165
+ worker: workerName,
166
+ to_worker: 'leader-fixed',
167
+ reason,
168
+ tmux_injection_attempted: false,
169
+ source_type: SOURCE_TYPE,
170
+ }).catch(() => { });
171
+ await appendTeamDeliveryLog(logsDir, {
172
+ event: 'nudge_triggered',
173
+ source: SOURCE_TYPE,
174
+ team: teamName,
175
+ from_worker: workerName,
176
+ to_worker: 'leader-fixed',
177
+ transport: 'none',
178
+ result: 'suppressed',
179
+ reason,
180
+ }).catch(() => { });
181
+ }
159
182
  async function recordDeferred({ stateDir, logsDir, teamName, workerName, statePath, nextState, reason, tmuxSession, leaderPaneId, paneCurrentCommand = '', }) {
160
183
  const nowIso = nextState.last_notified_at;
161
184
  const teamDir = join(stateDir, 'team', teamName);
@@ -222,15 +245,32 @@ export async function maybeNudgeLeaderForAllowedWorkerStop({ stateDir, logsDir,
222
245
  };
223
246
  let tmuxSession = '';
224
247
  let leaderPaneId = '';
248
+ let recordedShutdownSuppression = false;
249
+ const recordShutdownSuppressionOnce = async () => {
250
+ if (recordedShutdownSuppression)
251
+ return;
252
+ recordedShutdownSuppression = true;
253
+ await recordSuppressedWorkerStopNudge({
254
+ logsDir,
255
+ teamName,
256
+ workerName,
257
+ reason: TEAM_SHUTDOWN_NO_INJECTION_REASON,
258
+ });
259
+ };
225
260
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
261
+ await recordShutdownSuppressionOnce();
226
262
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
227
263
  }
228
264
  const lock = await acquireTeamStopNudgeLock(teamDir, nowMs, cooldownMs);
229
265
  if (!lock.acquired) {
266
+ if (lock.reason === TEAM_SHUTDOWN_NO_INJECTION_REASON) {
267
+ await recordShutdownSuppressionOnce();
268
+ }
230
269
  return { ok: true, result: lock.reason || TEAM_LOCK_HELD_REASON };
231
270
  }
232
271
  try {
233
272
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
273
+ await recordShutdownSuppressionOnce();
234
274
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
235
275
  }
236
276
  const teamExisting = (await readJsonIfExists(teamStatePath, null)) || {};
@@ -250,6 +290,7 @@ export async function maybeNudgeLeaderForAllowedWorkerStop({ stateDir, logsDir,
250
290
  const tmuxTarget = await resolveCanonicalLeaderPaneId(leaderPaneId);
251
291
  if (!tmuxTarget) {
252
292
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
293
+ await recordShutdownSuppressionOnce();
253
294
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
254
295
  }
255
296
  await recordDeferred({
@@ -273,6 +314,7 @@ export async function maybeNudgeLeaderForAllowedWorkerStop({ stateDir, logsDir,
273
314
  });
274
315
  if (!paneGuard.ok) {
275
316
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
317
+ await recordShutdownSuppressionOnce();
276
318
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
277
319
  }
278
320
  await recordDeferred({
@@ -290,32 +332,22 @@ export async function maybeNudgeLeaderForAllowedWorkerStop({ stateDir, logsDir,
290
332
  return { ok: true, result: 'deferred' };
291
333
  }
292
334
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
335
+ await recordShutdownSuppressionOnce();
293
336
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
294
337
  }
295
338
  const prompt = `[OMX] ${workerName} native Stop allowed. `
296
339
  + `Run \`omx team status ${teamName}\`, read worker messages/results, then assign next task, reconcile completion, or shut down. `
297
340
  + DEFAULT_MARKER;
298
341
  const leaderHasActiveTask = paneHasActiveTask(paneGuard.paneCapture);
299
- let deliveryMode = 'sent';
300
- if (leaderHasActiveTask) {
301
- const sendResult = await queuePaneInput({
302
- paneTarget: tmuxTarget,
303
- prompt,
304
- });
305
- if (!sendResult.ok)
306
- throw new Error(sendResult.error || sendResult.reason || 'send_failed');
307
- deliveryMode = 'queued';
308
- }
309
- else {
310
- const sendResult = await sendPaneInput({
311
- paneTarget: tmuxTarget,
312
- prompt,
313
- submitKeyPresses: 2,
314
- submitDelayMs: 100,
315
- });
316
- if (!sendResult.ok)
317
- throw new Error(sendResult.error || sendResult.reason || 'send_failed');
318
- }
342
+ const sendResult = await sendPaneInput({
343
+ paneTarget: tmuxTarget,
344
+ prompt,
345
+ submitKeyPresses: 2,
346
+ submitDelayMs: 100,
347
+ });
348
+ if (!sendResult.ok)
349
+ throw new Error(sendResult.error || sendResult.reason || 'send_failed');
350
+ const deliveryMode = leaderHasActiveTask ? 'steered' : 'sent';
319
351
  const deliveryState = {
320
352
  ...nextState,
321
353
  delivery: deliveryMode,
@@ -361,6 +393,7 @@ export async function maybeNudgeLeaderForAllowedWorkerStop({ stateDir, logsDir,
361
393
  }
362
394
  catch (err) {
363
395
  if (!(await teamStateAllowsWorkerStopNudge(stateDir, teamName))) {
396
+ await recordShutdownSuppressionOnce();
364
397
  return { ok: true, result: TEAM_SHUTDOWN_NO_INJECTION_REASON };
365
398
  }
366
399
  // Worker Stop is already allowed before this helper runs; nudge failures are
@@ -1 +1 @@
1
- {"version":3,"file":"team-worker-stop.js","sourceRoot":"","sources":["../../../src/scripts/notify-hook/team-worker-stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"team-worker-stop.js","sourceRoot":"","sources":["../../../src/scripts/notify-hook/team-worker-stop.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,16 @@ const DEFAULT_TEST_TIMEOUT_MS = 0;
5
5
  const DEFAULT_RUNNER_TIMEOUT_MS = 30 * 60 * 1_000;
6
6
  const DEFAULT_FORCE_EXIT_GRACE_MS = 30_000;
7
7
  const DEFAULT_CI_TEST_CONCURRENCY = 1;
8
- const RUNTIME_STATE_ENV_KEYS = [
9
- 'OMX_ROOT',
10
- 'OMX_STATE_ROOT',
11
- 'OMX_TEAM_STATE_ROOT',
12
- 'OMX_SESSION_ID',
13
- 'CODEX_SESSION_ID',
14
- 'SESSION_ID',
15
- ];
8
+ const DEFAULT_LOCAL_TEST_CONCURRENCY = 1;
9
+ const PRESERVED_TEST_ENV_KEYS = new Set([
10
+ 'OMX_EXPLORE_BIN',
11
+ 'OMX_NODE_TEST_CONCURRENCY',
12
+ 'OMX_NODE_TEST_FORCE_EXIT',
13
+ 'OMX_NODE_TEST_FORCE_EXIT_GRACE_MS',
14
+ 'OMX_NODE_TEST_PRESERVE_RUNTIME_ENV',
15
+ 'OMX_NODE_TEST_RUNNER_TIMEOUT_MS',
16
+ 'OMX_NODE_TEST_TIMEOUT_MS',
17
+ ]);
16
18
  function parseBooleanEnv(value) {
17
19
  if (!value)
18
20
  return false;
@@ -56,7 +58,33 @@ function parseTestConcurrency(env) {
56
58
  return Math.floor(parsed);
57
59
  return undefined;
58
60
  }
59
- return env.CI === 'true' || env.GITHUB_ACTIONS === 'true' ? DEFAULT_CI_TEST_CONCURRENCY : undefined;
61
+ return env.CI === 'true' || env.GITHUB_ACTIONS === 'true'
62
+ ? DEFAULT_CI_TEST_CONCURRENCY
63
+ : DEFAULT_LOCAL_TEST_CONCURRENCY;
64
+ }
65
+ function shouldScrubRuntimeEnvKey(key) {
66
+ if (PRESERVED_TEST_ENV_KEYS.has(key))
67
+ return false;
68
+ return (key.startsWith('OMX_') ||
69
+ key.startsWith('OMXBOX_') ||
70
+ key.startsWith('CODEX_') ||
71
+ key === 'USE_OMX_EXPLORE_CMD' ||
72
+ key === 'SESSION_ID' ||
73
+ key === 'TMUX' ||
74
+ key === 'TMUX_PANE');
75
+ }
76
+ function buildChildEnv(env) {
77
+ const childEnv = { ...env };
78
+ delete childEnv.NODE_TEST_CONTEXT;
79
+ if (!parseBooleanEnv(env.OMX_NODE_TEST_PRESERVE_RUNTIME_ENV)) {
80
+ for (const key of Object.keys(childEnv)) {
81
+ if (shouldScrubRuntimeEnvKey(key)) {
82
+ delete childEnv[key];
83
+ }
84
+ }
85
+ }
86
+ childEnv.OMX_TEST_RELAX_TMUX_TIMEOUT = '1';
87
+ return childEnv;
60
88
  }
61
89
  const roots = process.argv.slice(2);
62
90
  const targets = roots.length > 0 ? roots : ['dist'];
@@ -74,31 +102,23 @@ const runnerTimeoutMs = parseTimeoutMs(process.env.OMX_NODE_TEST_RUNNER_TIMEOUT_
74
102
  const forceExitGraceMs = parseTimeoutMs(process.env.OMX_NODE_TEST_FORCE_EXIT_GRACE_MS, DEFAULT_FORCE_EXIT_GRACE_MS);
75
103
  const testConcurrency = parseTestConcurrency(process.env);
76
104
  const forceExit = parseBooleanEnv(process.env.OMX_NODE_TEST_FORCE_EXIT);
77
- const testArgs = ['--test'];
105
+ const sharedTestArgs = ['--test'];
78
106
  if (testTimeoutMs > 0) {
79
- testArgs.push(`--test-timeout=${testTimeoutMs}`);
107
+ sharedTestArgs.push(`--test-timeout=${testTimeoutMs}`);
80
108
  }
81
109
  if (testConcurrency) {
82
- testArgs.push(`--test-concurrency=${testConcurrency}`);
110
+ sharedTestArgs.push(`--test-concurrency=${testConcurrency}`);
83
111
  }
84
112
  if (forceExit) {
85
- testArgs.push('--test-force-exit', '--test-reporter=tap');
113
+ sharedTestArgs.push('--test-force-exit', '--test-reporter=tap');
86
114
  }
87
- testArgs.push(...files);
88
- console.error(`[run-test-files] running ${files.length} test file(s) from ${targets.join(', ')}${testTimeoutMs > 0 ? ` with per-test timeout ${testTimeoutMs}ms` : ' with per-test timeout disabled'}${testConcurrency ? `, test concurrency ${testConcurrency}` : ', default test concurrency'}${forceExit ? `, force exit enabled with ${forceExitGraceMs}ms completion grace` : ', force exit disabled'}${runnerTimeoutMs > 0 ? `, and runner timeout ${runnerTimeoutMs}ms` : ', and runner timeout disabled'}`);
89
- const childEnv = { ...process.env };
90
- delete childEnv.NODE_TEST_CONTEXT;
91
- childEnv.OMX_TEST_RELAX_TMUX_TIMEOUT = '1';
92
- if (!parseBooleanEnv(process.env.OMX_NODE_TEST_PRESERVE_RUNTIME_ENV)) {
93
- for (const key of RUNTIME_STATE_ENV_KEYS) {
94
- delete childEnv[key];
95
- }
96
- }
97
- function reportAbnormalExit(signal, errorMessage) {
115
+ console.error(`[run-test-files] running ${files.length} test file(s) from ${targets.join(', ')}${testTimeoutMs > 0 ? ` with per-test timeout ${testTimeoutMs}ms` : ' with per-test timeout disabled'}${testConcurrency ? `, test concurrency ${testConcurrency}` : ', default test concurrency'}${forceExit ? `, force exit enabled with ${forceExitGraceMs}ms completion grace` : ', force exit disabled'}${runnerTimeoutMs > 0 ? `, and runner timeout ${runnerTimeoutMs}ms` : ', and runner timeout disabled'}, with per-file process isolation`);
116
+ const childEnv = buildChildEnv(process.env);
117
+ function reportAbnormalExit(file, signal, errorMessage) {
98
118
  if (errorMessage) {
99
- console.error(`[run-test-files] node --test error: ${errorMessage}`);
119
+ console.error(`[run-test-files] node --test error for ${file}: ${errorMessage}`);
100
120
  }
101
- console.error(`[run-test-files] node --test did not exit normally${signal ? ` (signal: ${signal})` : ''}. `
121
+ console.error(`[run-test-files] node --test did not exit normally for ${file}${signal ? ` (signal: ${signal})` : ''}. `
102
122
  + `Roots: ${targets.join(', ')}. Test files: ${files.length}. `
103
123
  + `Per-test timeout: ${testTimeoutMs > 0 ? `${testTimeoutMs}ms` : 'disabled'}. `
104
124
  + `Test concurrency: ${testConcurrency ?? 'default'}. `
@@ -127,156 +147,194 @@ function terminateChild(child) {
127
147
  signalChild(child, 'SIGTERM');
128
148
  signalChild(child, 'SIGKILL');
129
149
  }
130
- function runWithCompletionForceExit() {
131
- let finished = false;
132
- let sawFailure = false;
133
- let lastTapOk = 0;
134
- let tapTests;
135
- let tapPass;
136
- let tapFail = 0;
137
- let tapCancelled = 0;
138
- let completedFromSummary = false;
139
- let completionTimer;
140
- let runnerTimer;
141
- let stdoutRemainder = '';
142
- let stderrRemainder = '';
143
- const child = spawn(process.execPath, testArgs, {
144
- stdio: ['ignore', 'pipe', 'pipe'],
145
- env: childEnv,
146
- detached: !isWindows(),
147
- });
148
- function finish(exitCode, reason) {
149
- if (finished)
150
- return;
151
- finished = true;
152
- if (completionTimer)
153
- clearTimeout(completionTimer);
154
- if (runnerTimer)
155
- clearTimeout(runnerTimer);
156
- console.error(`[run-test-files] ${reason}; exiting with status ${exitCode}`);
157
- terminateChild(child);
158
- child.stdout?.destroy();
159
- child.stderr?.destroy();
160
- child.unref();
161
- process.exit(exitCode);
162
- }
163
- function markFailure() {
164
- sawFailure = true;
165
- if (completionTimer) {
166
- clearTimeout(completionTimer);
167
- completionTimer = undefined;
168
- }
169
- }
170
- function armCompletionTimer(reason) {
171
- if (sawFailure)
172
- return;
173
- if (completionTimer)
174
- clearTimeout(completionTimer);
175
- completionTimer = setTimeout(() => {
176
- if (sawFailure)
150
+ function runFileWithCompletionForceExit(file) {
151
+ return new Promise((resolveRun) => {
152
+ let finished = false;
153
+ let sawFailure = false;
154
+ let lastTapOk = 0;
155
+ let tapTests;
156
+ let tapPass;
157
+ let tapFail = 0;
158
+ let tapCancelled = 0;
159
+ let completedFromSummary = false;
160
+ let completionTimer;
161
+ let runnerTimer;
162
+ let stdoutRemainder = '';
163
+ let stderrRemainder = '';
164
+ const child = spawn(process.execPath, [...sharedTestArgs, file], {
165
+ stdio: ['ignore', 'pipe', 'pipe'],
166
+ env: childEnv,
167
+ detached: !isWindows(),
168
+ });
169
+ function finish(status, signal, reason, terminate) {
170
+ if (finished)
177
171
  return;
178
- finish(0, reason);
179
- }, forceExitGraceMs);
180
- }
181
- function sawCleanTapSummary() {
182
- if (tapTests === undefined || tapPass === undefined)
183
- return false;
184
- return tapTests === tapPass && tapFail === 0 && tapCancelled === 0;
185
- }
186
- function parseTapLine(line) {
187
- if (/^(?:not ok|Bail out!)/.test(line)) {
188
- markFailure();
189
- return;
190
- }
191
- const summary = line.match(/^# (tests|pass|fail|cancelled) (\d+)$/);
192
- if (summary) {
193
- const count = Number(summary[2]);
194
- if (summary[1] === 'tests')
195
- tapTests = count;
196
- if (summary[1] === 'pass')
197
- tapPass = count;
198
- if (summary[1] === 'fail')
199
- tapFail = count;
200
- if (summary[1] === 'cancelled')
201
- tapCancelled = count;
202
- if ((summary[1] === 'fail' || summary[1] === 'cancelled') && count > 0)
203
- markFailure();
204
- return;
172
+ finished = true;
173
+ if (completionTimer)
174
+ clearTimeout(completionTimer);
175
+ if (runnerTimer)
176
+ clearTimeout(runnerTimer);
177
+ console.error(`[run-test-files] ${file}: ${reason}; status ${status ?? 'unknown'}`);
178
+ if (terminate) {
179
+ terminateChild(child);
180
+ }
181
+ child.stdout?.destroy();
182
+ child.stderr?.destroy();
183
+ child.unref();
184
+ resolveRun({
185
+ status,
186
+ signal,
187
+ timedOut: reason.startsWith('runner timeout'),
188
+ abnormal: status === null || signal !== null || reason.startsWith('node --test failed to spawn'),
189
+ });
205
190
  }
206
- const ok = line.match(/^ok (\d+)\b/);
207
- if (ok) {
208
- lastTapOk = Number(ok[1]);
209
- if (lastTapOk >= files.length) {
210
- armCompletionTimer(`force-exit completion grace elapsed after TAP ok ${lastTapOk} with no later failures`);
191
+ function markFailure() {
192
+ sawFailure = true;
193
+ if (completionTimer) {
194
+ clearTimeout(completionTimer);
195
+ completionTimer = undefined;
211
196
  }
212
- return;
213
197
  }
214
- const plan = line.match(/^1\.\.(\d+)$/);
215
- if (plan && Number(plan[1]) === lastTapOk && !sawFailure) {
216
- armCompletionTimer(`force-exit completion grace elapsed after TAP plan ${line}`);
217
- return;
198
+ function armCompletionTimer(reason) {
199
+ if (sawFailure)
200
+ return;
201
+ if (completionTimer)
202
+ clearTimeout(completionTimer);
203
+ completionTimer = setTimeout(() => {
204
+ if (sawFailure)
205
+ return;
206
+ finish(0, null, reason, true);
207
+ }, forceExitGraceMs);
218
208
  }
219
- if (/^# duration_ms /.test(line) && sawCleanTapSummary()) {
220
- completedFromSummary = true;
221
- armCompletionTimer('force-exit completion grace elapsed after clean TAP summary');
209
+ function sawCleanTapSummary() {
210
+ if (tapTests === undefined || tapPass === undefined)
211
+ return false;
212
+ return tapTests === tapPass && tapFail === 0 && tapCancelled === 0;
222
213
  }
223
- }
224
- function handleOutput(chunk, stream, isStdout) {
225
- stream.write(chunk);
226
- const text = chunk.toString('utf8');
227
- let combined = (isStdout ? stdoutRemainder : stderrRemainder) + text;
228
- const lines = combined.split(/\r?\n/);
229
- combined = lines.pop() ?? '';
230
- if (isStdout) {
231
- stdoutRemainder = combined;
214
+ function parseTapLine(line) {
215
+ if (/^(?:not ok|Bail out!)/.test(line)) {
216
+ markFailure();
217
+ return;
218
+ }
219
+ const summary = line.match(/^# (tests|pass|fail|cancelled) (\d+)$/);
220
+ if (summary) {
221
+ const count = Number(summary[2]);
222
+ if (summary[1] === 'tests')
223
+ tapTests = count;
224
+ if (summary[1] === 'pass')
225
+ tapPass = count;
226
+ if (summary[1] === 'fail')
227
+ tapFail = count;
228
+ if (summary[1] === 'cancelled')
229
+ tapCancelled = count;
230
+ if ((summary[1] === 'fail' || summary[1] === 'cancelled') && count > 0)
231
+ markFailure();
232
+ return;
233
+ }
234
+ const ok = line.match(/^ok (\d+)\b/);
235
+ if (ok) {
236
+ lastTapOk = Number(ok[1]);
237
+ if (lastTapOk >= files.length) {
238
+ armCompletionTimer(`force-exit completion grace elapsed after TAP ok ${lastTapOk} with no later failures`);
239
+ }
240
+ return;
241
+ }
242
+ const plan = line.match(/^1\.\.(\d+)$/);
243
+ if (plan && Number(plan[1]) === lastTapOk && !sawFailure) {
244
+ armCompletionTimer(`force-exit completion grace elapsed after TAP plan ${line}`);
245
+ return;
246
+ }
247
+ if (/^# duration_ms /.test(line) && sawCleanTapSummary()) {
248
+ completedFromSummary = true;
249
+ armCompletionTimer('force-exit completion grace elapsed after clean TAP summary');
250
+ }
232
251
  }
233
- else {
234
- stderrRemainder = combined;
252
+ function handleOutput(chunk, stream, isStdout) {
253
+ stream.write(chunk);
254
+ const text = chunk.toString('utf8');
255
+ let combined = (isStdout ? stdoutRemainder : stderrRemainder) + text;
256
+ const lines = combined.split(/\r?\n/);
257
+ combined = lines.pop() ?? '';
258
+ if (isStdout) {
259
+ stdoutRemainder = combined;
260
+ }
261
+ else {
262
+ stderrRemainder = combined;
263
+ }
264
+ for (const line of lines)
265
+ parseTapLine(line);
235
266
  }
236
- for (const line of lines)
237
- parseTapLine(line);
238
- }
239
- child.stdout?.on('data', (chunk) => handleOutput(chunk, process.stdout, true));
240
- child.stderr?.on('data', (chunk) => handleOutput(chunk, process.stderr, false));
241
- child.on('error', (error) => {
242
- reportAbnormalExit(null, error.message);
243
- finish(1, 'node --test failed to spawn');
244
- });
245
- child.on('exit', (status, signal) => {
246
- if (finished)
247
- return;
248
- if (stdoutRemainder)
249
- parseTapLine(stdoutRemainder);
250
- if (stderrRemainder)
251
- parseTapLine(stderrRemainder);
252
- if (typeof status === 'number') {
253
- finish(status, `node --test exited normally${completedFromSummary ? ' after clean TAP summary' : ''}`);
254
- return;
267
+ child.stdout?.on('data', (chunk) => handleOutput(chunk, process.stdout, true));
268
+ child.stderr?.on('data', (chunk) => handleOutput(chunk, process.stderr, false));
269
+ child.on('error', (error) => {
270
+ reportAbnormalExit(file, null, error.message);
271
+ finish(null, null, 'node --test failed to spawn', true);
272
+ });
273
+ child.on('exit', (status, signal) => {
274
+ if (finished)
275
+ return;
276
+ if (stdoutRemainder)
277
+ parseTapLine(stdoutRemainder);
278
+ if (stderrRemainder)
279
+ parseTapLine(stderrRemainder);
280
+ if (typeof status === 'number') {
281
+ finish(status, null, `node --test exited normally${completedFromSummary ? ' after clean TAP summary' : ''}`, false);
282
+ return;
283
+ }
284
+ reportAbnormalExit(file, signal);
285
+ finish(null, signal, 'node --test exited without a numeric status', true);
286
+ });
287
+ if (runnerTimeoutMs > 0) {
288
+ runnerTimer = setTimeout(() => {
289
+ reportAbnormalExit(file, null);
290
+ finish(1, null, `runner timeout ${runnerTimeoutMs}ms elapsed`, true);
291
+ }, runnerTimeoutMs);
255
292
  }
256
- reportAbnormalExit(signal);
257
- finish(1, 'node --test exited without a numeric status');
258
293
  });
259
- if (runnerTimeoutMs > 0) {
260
- runnerTimer = setTimeout(() => {
261
- reportAbnormalExit(null);
262
- finish(1, `runner timeout ${runnerTimeoutMs}ms elapsed`);
263
- }, runnerTimeoutMs);
264
- }
265
- }
266
- if (forceExit) {
267
- runWithCompletionForceExit();
268
294
  }
269
- else {
270
- const result = spawnSync(process.execPath, testArgs, {
295
+ function runFileSync(file) {
296
+ const result = spawnSync(process.execPath, [...sharedTestArgs, file], {
271
297
  stdio: 'inherit',
272
298
  env: childEnv,
273
299
  timeout: runnerTimeoutMs > 0 ? runnerTimeoutMs : undefined,
274
300
  killSignal: 'SIGTERM',
275
301
  });
276
- if (typeof result.status === 'number') {
277
- process.exit(result.status);
302
+ const timedOut = result.error?.code === 'ETIMEDOUT';
303
+ if (result.status !== 0 && (result.error || typeof result.status !== 'number')) {
304
+ reportAbnormalExit(file, result.signal, result.error?.message);
278
305
  }
279
- reportAbnormalExit(result.signal, result.error?.message);
280
- process.exit(1);
306
+ return {
307
+ status: result.status,
308
+ signal: result.signal,
309
+ errorMessage: result.error?.message,
310
+ timedOut,
311
+ abnormal: Boolean(result.error || typeof result.status !== 'number'),
312
+ };
313
+ }
314
+ async function main() {
315
+ const failedFiles = [];
316
+ let abnormalExit = false;
317
+ let runnerTimedOut = false;
318
+ for (const file of files) {
319
+ const result = forceExit ? await runFileWithCompletionForceExit(file) : runFileSync(file);
320
+ if (result.status === 0) {
321
+ continue;
322
+ }
323
+ failedFiles.push(file);
324
+ abnormalExit = abnormalExit || result.abnormal;
325
+ runnerTimedOut = runnerTimedOut || result.timedOut;
326
+ }
327
+ if (failedFiles.length > 0 || runnerTimedOut) {
328
+ const failureSummary = failedFiles.length === 0 && runnerTimedOut
329
+ ? `runner timed out with 0 of ${files.length} test file(s) failed`
330
+ : `${failedFiles.length} of ${files.length} test file(s) failed${abnormalExit ? ' or timed out' : ''}${runnerTimedOut ? '; runner timed out' : ''}`;
331
+ console.error(`[run-test-files] ${failureSummary}:`);
332
+ for (const file of failedFiles) {
333
+ console.error(`[run-test-files] ${file}`);
334
+ }
335
+ process.exit(1);
336
+ }
337
+ process.exit(0);
281
338
  }
339
+ await main();
282
340
  //# sourceMappingURL=run-test-files.js.map