oh-my-codex 0.21.40 → 0.21.42

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 (119) hide show
  1. package/Cargo.lock +6 -6
  2. package/Cargo.toml +1 -1
  3. package/README.md +12 -0
  4. package/dist/agents/native-config.d.ts +12 -0
  5. package/dist/agents/native-config.d.ts.map +1 -1
  6. package/dist/agents/native-config.js +12 -0
  7. package/dist/agents/native-config.js.map +1 -1
  8. package/dist/bin/__tests__/quality-gates-cli.test.d.ts +2 -0
  9. package/dist/bin/__tests__/quality-gates-cli.test.d.ts.map +1 -0
  10. package/dist/bin/__tests__/quality-gates-cli.test.js +110 -0
  11. package/dist/bin/__tests__/quality-gates-cli.test.js.map +1 -0
  12. package/dist/bin/quality-gates-cli.d.ts +18 -0
  13. package/dist/bin/quality-gates-cli.d.ts.map +1 -0
  14. package/dist/bin/quality-gates-cli.js +107 -0
  15. package/dist/bin/quality-gates-cli.js.map +1 -0
  16. package/dist/cli/__tests__/launch-fallback.test.js +35 -21
  17. package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
  18. package/dist/cli/__tests__/team-status-readonly.test.d.ts +2 -0
  19. package/dist/cli/__tests__/team-status-readonly.test.d.ts.map +1 -0
  20. package/dist/cli/__tests__/team-status-readonly.test.js +65 -0
  21. package/dist/cli/__tests__/team-status-readonly.test.js.map +1 -0
  22. package/dist/cli/__tests__/team.test.js +8 -6
  23. package/dist/cli/__tests__/team.test.js.map +1 -1
  24. package/dist/cli/__tests__/tmux-hook-status-readonly.test.d.ts +2 -0
  25. package/dist/cli/__tests__/tmux-hook-status-readonly.test.d.ts.map +1 -0
  26. package/dist/cli/__tests__/tmux-hook-status-readonly.test.js +102 -0
  27. package/dist/cli/__tests__/tmux-hook-status-readonly.test.js.map +1 -0
  28. package/dist/cli/__tests__/ultragoal.test.js +16 -0
  29. package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
  30. package/dist/cli/index.d.ts +2 -2
  31. package/dist/cli/index.d.ts.map +1 -1
  32. package/dist/cli/index.js +21 -1
  33. package/dist/cli/index.js.map +1 -1
  34. package/dist/cli/team.d.ts.map +1 -1
  35. package/dist/cli/team.js +19 -17
  36. package/dist/cli/team.js.map +1 -1
  37. package/dist/cli/tmux-hook.js +7 -4
  38. package/dist/cli/tmux-hook.js.map +1 -1
  39. package/dist/cli/ultragoal.d.ts.map +1 -1
  40. package/dist/cli/ultragoal.js +4 -1
  41. package/dist/cli/ultragoal.js.map +1 -1
  42. package/dist/config/__tests__/codex-hooks.test.js +20 -2
  43. package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
  44. package/dist/config/__tests__/quality-gates.test.d.ts +2 -0
  45. package/dist/config/__tests__/quality-gates.test.d.ts.map +1 -0
  46. package/dist/config/__tests__/quality-gates.test.js +369 -0
  47. package/dist/config/__tests__/quality-gates.test.js.map +1 -0
  48. package/dist/config/models.d.ts +4 -1
  49. package/dist/config/models.d.ts.map +1 -1
  50. package/dist/config/models.js +4 -1
  51. package/dist/config/models.js.map +1 -1
  52. package/dist/config/quality-gates.d.ts +97 -0
  53. package/dist/config/quality-gates.d.ts.map +1 -0
  54. package/dist/config/quality-gates.js +232 -0
  55. package/dist/config/quality-gates.js.map +1 -0
  56. package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js +97 -0
  57. package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js.map +1 -1
  58. package/dist/goal-workflows/codex-goal-snapshot.d.ts +1 -1
  59. package/dist/goal-workflows/codex-goal-snapshot.d.ts.map +1 -1
  60. package/dist/goal-workflows/codex-goal-snapshot.js +94 -2
  61. package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
  62. package/dist/hooks/__tests__/code-review-skill-contract.test.js +2 -2
  63. package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
  64. package/dist/quality-gates/index.d.ts +7 -0
  65. package/dist/quality-gates/index.d.ts.map +1 -0
  66. package/dist/quality-gates/index.js +8 -0
  67. package/dist/quality-gates/index.js.map +1 -0
  68. package/dist/ralplan/__tests__/runtime.test.js +43 -1
  69. package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
  70. package/dist/ralplan/runtime-contract.d.ts +22 -0
  71. package/dist/ralplan/runtime-contract.d.ts.map +1 -1
  72. package/dist/ralplan/runtime.d.ts +10 -1
  73. package/dist/ralplan/runtime.d.ts.map +1 -1
  74. package/dist/ralplan/runtime.js +83 -5
  75. package/dist/ralplan/runtime.js.map +1 -1
  76. package/dist/scripts/__tests__/ralplan-advisory-hook.test.js +2 -4
  77. package/dist/scripts/__tests__/ralplan-advisory-hook.test.js.map +1 -1
  78. package/dist/team/__tests__/monitor-readonly.test.d.ts +2 -0
  79. package/dist/team/__tests__/monitor-readonly.test.d.ts.map +1 -0
  80. package/dist/team/__tests__/monitor-readonly.test.js +54 -0
  81. package/dist/team/__tests__/monitor-readonly.test.js.map +1 -0
  82. package/dist/team/__tests__/team-identity.test.js +71 -2
  83. package/dist/team/__tests__/team-identity.test.js.map +1 -1
  84. package/dist/team/__tests__/team-ops-contract.test.js +3 -0
  85. package/dist/team/__tests__/team-ops-contract.test.js.map +1 -1
  86. package/dist/team/__tests__/tmux-session.test.js +43 -0
  87. package/dist/team/__tests__/tmux-session.test.js.map +1 -1
  88. package/dist/team/runtime.d.ts +3 -1
  89. package/dist/team/runtime.d.ts.map +1 -1
  90. package/dist/team/runtime.js +74 -44
  91. package/dist/team/runtime.js.map +1 -1
  92. package/dist/team/state.d.ts +6 -0
  93. package/dist/team/state.d.ts.map +1 -1
  94. package/dist/team/state.js +31 -0
  95. package/dist/team/state.js.map +1 -1
  96. package/dist/team/team-identity.d.ts +1 -0
  97. package/dist/team/team-identity.d.ts.map +1 -1
  98. package/dist/team/team-identity.js +14 -2
  99. package/dist/team/team-identity.js.map +1 -1
  100. package/dist/team/team-ops.d.ts +3 -0
  101. package/dist/team/team-ops.d.ts.map +1 -1
  102. package/dist/team/team-ops.js +3 -0
  103. package/dist/team/team-ops.js.map +1 -1
  104. package/dist/ultragoal/__tests__/artifacts.test.js +47 -0
  105. package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
  106. package/dist/ultragoal/artifacts.d.ts.map +1 -1
  107. package/dist/ultragoal/artifacts.js +17 -7
  108. package/dist/ultragoal/artifacts.js.map +1 -1
  109. package/package.json +1 -1
  110. package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
  111. package/plugins/oh-my-codex/skills/code-review/SKILL.md +12 -2
  112. package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +11 -0
  113. package/plugins/oh-my-codex/skills/ralplan/SKILL.md +27 -7
  114. package/plugins/oh-my-codex/templates/AGENTS.md +17 -1
  115. package/skills/code-review/SKILL.md +12 -2
  116. package/skills/deep-interview/SKILL.md +11 -0
  117. package/skills/ralplan/SKILL.md +27 -7
  118. package/src/scripts/__tests__/ralplan-advisory-hook.test.ts +2 -4
  119. package/templates/AGENTS.md +17 -1
package/Cargo.lock CHANGED
@@ -32,7 +32,7 @@ checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98"
32
32
 
33
33
  [[package]]
34
34
  name = "omx-api"
35
- version = "0.21.40"
35
+ version = "0.21.42"
36
36
  dependencies = [
37
37
  "serde",
38
38
  "serde_json",
@@ -40,14 +40,14 @@ dependencies = [
40
40
 
41
41
  [[package]]
42
42
  name = "omx-explore-harness"
43
- version = "0.21.40"
43
+ version = "0.21.42"
44
44
  dependencies = [
45
45
  "libc",
46
46
  ]
47
47
 
48
48
  [[package]]
49
49
  name = "omx-mux"
50
- version = "0.21.40"
50
+ version = "0.21.42"
51
51
  dependencies = [
52
52
  "serde",
53
53
  "serde_json",
@@ -55,7 +55,7 @@ dependencies = [
55
55
 
56
56
  [[package]]
57
57
  name = "omx-runtime"
58
- version = "0.21.40"
58
+ version = "0.21.42"
59
59
  dependencies = [
60
60
  "fs2",
61
61
  "libc",
@@ -67,7 +67,7 @@ dependencies = [
67
67
 
68
68
  [[package]]
69
69
  name = "omx-runtime-core"
70
- version = "0.21.40"
70
+ version = "0.21.42"
71
71
  dependencies = [
72
72
  "fs2",
73
73
  "serde",
@@ -76,7 +76,7 @@ dependencies = [
76
76
 
77
77
  [[package]]
78
78
  name = "omx-sparkshell"
79
- version = "0.21.40"
79
+ version = "0.21.42"
80
80
  dependencies = [
81
81
  "omx-mux",
82
82
  ]
package/Cargo.toml CHANGED
@@ -11,7 +11,7 @@ resolver = "2"
11
11
 
12
12
  [workspace.package]
13
13
 
14
- version = "0.21.40"
14
+ version = "0.21.42"
15
15
 
16
16
  edition = "2021"
17
17
  rust-version = "1.73"
package/README.md CHANGED
@@ -283,6 +283,7 @@ Use `$team` when an active Ultragoal story needs coordinated parallel work.
283
283
  ### `/goal` and skill selection
284
284
 
285
285
  Start a normal strong session with `omx --madmax --xhigh` (or add `--worktree=<task>` in a git repo). Inside that session, execute directly or use `$ultragoal` for durable multi-goal runs, `$team` for coordinated parallel work, or `$plan` when the task needs explicit planning first. Use `/goal` when the task itself needs a durable objective/checkpoint structure that Codex should keep reconciling across turns.
286
+ When native `get_goal` responses are unavailable or wrapped by the tool transport, Ultragoal preserves artifact-backed status without claiming completion; see [Ultragoal goal-mode diagnostics and recovery](./docs/ultragoal.md).
286
287
 
287
288
  Add only 2-5 relevant skills by default. More skills are allowed when the task scope justifies them, but loading a large catalog is usually a context-budget and attention-quality problem, not a hard parser/runtime blocker. Treat it as a concrete runtime blocker only when a command actually errors.
288
289
 
@@ -409,6 +410,17 @@ omx team resume <team-name>
409
410
  omx team shutdown <team-name>
410
411
  ```
411
412
 
413
+ `omx team status [<team-name>] [--json]` only observes existing state, so it can
414
+ run against a read-only OMX root. It does not reclaim expired claims, deliver
415
+ mailbox messages, integrate worker commits, or update runtime state. Without a
416
+ team name, status resolves only a unique team belonging to the current leader
417
+ session; provide an explicit name when no matching context is available.
418
+
419
+ `omx tmux-hook status` is also observational. If hook configuration is missing,
420
+ it reports that condition without creating files; use `omx tmux-hook init` to
421
+ initialize configuration explicitly.
422
+
423
+
412
424
  ### Setup, doctor, and HUD
413
425
 
414
426
  These are operator/support surfaces:
@@ -1,6 +1,18 @@
1
1
  /**
2
2
  * Native agent config generators for Codex CLI.
3
3
  * Writes standalone TOML files under ~/.codex/agents/ or ./.codex/agents/.
4
+ *
5
+ * Model precedence for the written TOML `model` key (NOT written if neither applies):
6
+ * 1. Per-agent override: .omx-config.json agentModels[role] → `model` key written
7
+ * 2. exactModel + built-in provider: planner/architect/researcher → `model` key written (gpt-6-astra)
8
+ * 3. Otherwise: NO `model` key written; agent inherits Codex config.toml model at runtime
9
+ *
10
+ * For instruction composition (resolved_model metadata), richer logic applies including configured
11
+ * models and modelClass routing; see resolveAgentModel(). That richer resolution is informational only.
12
+ *
13
+ * IMPORTANT: OMX_DEFAULT_FRONTIER_MODEL, OMX_DEFAULT_STANDARD_MODEL, and OMX_DEFAULT_SPARK_MODEL
14
+ * do not set the native TOML model field or change native runtime model selection. They configure
15
+ * Team worker fallbacks and mode-specific resolution, and may affect resolved_model/model-table metadata.
4
16
  */
5
17
  import { AgentDefinition } from "./definitions.js";
6
18
  import type { CatalogManifest } from "../catalog/schema.js";
@@ -1 +1 @@
1
- {"version":3,"file":"native-config.d.ts","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAWL,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAM7B,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AA4FzD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,UAAU,2BAA2B;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,wBAAwB,CAAC,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,UAAU,8BAA8B;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAqGD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,uBAAuB,GAAG,IAAI,EACxC,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,GAAE,8BAAmC,GAC3C,MAAM,CAiDR;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAcD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,0BAA0B,GACjC,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,2BAAgC,GACxC,MAAM,CA6CR;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CAClC,GACL,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
1
+ {"version":3,"file":"native-config.d.ts","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAqB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAWL,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAM7B,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AA4FzD,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,uBAAuB,CAAC;CAC3C;AAED,UAAU,2BAA2B;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;IAC1C,WAAW,EAAE,eAAe,CAAC,aAAa,CAAC,CAAC;IAC5C,wBAAwB,CAAC,EAAE,eAAe,CAAC,0BAA0B,CAAC,CAAC;IACvE,UAAU,CAAC,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,UAAU,8BAA8B;IACtC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;OAGG;IACH,yBAAyB,CAAC,EAAE,OAAO,CAAC;CACrC;AAqGD,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,uBAAuB,GAAG,IAAI,EACxC,aAAa,CAAC,EAAE,MAAM,EACtB,OAAO,GAAE,8BAAmC,GAC3C,MAAM,CAiDR;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,aAAa,CAAC,EAAE,MAAM,GACrB,MAAM,CAgBR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAcD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,0BAA0B,GACjC,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,eAAe,EACtB,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,2BAAgC,GACxC,MAAM,CA6CR;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CAClC,GACL,OAAO,CAAC,MAAM,CAAC,CAkDjB"}
@@ -1,6 +1,18 @@
1
1
  /**
2
2
  * Native agent config generators for Codex CLI.
3
3
  * Writes standalone TOML files under ~/.codex/agents/ or ./.codex/agents/.
4
+ *
5
+ * Model precedence for the written TOML `model` key (NOT written if neither applies):
6
+ * 1. Per-agent override: .omx-config.json agentModels[role] → `model` key written
7
+ * 2. exactModel + built-in provider: planner/architect/researcher → `model` key written (gpt-6-astra)
8
+ * 3. Otherwise: NO `model` key written; agent inherits Codex config.toml model at runtime
9
+ *
10
+ * For instruction composition (resolved_model metadata), richer logic applies including configured
11
+ * models and modelClass routing; see resolveAgentModel(). That richer resolution is informational only.
12
+ *
13
+ * IMPORTANT: OMX_DEFAULT_FRONTIER_MODEL, OMX_DEFAULT_STANDARD_MODEL, and OMX_DEFAULT_SPARK_MODEL
14
+ * do not set the native TOML model field or change native runtime model selection. They configure
15
+ * Team worker fallbacks and mode-specific resolution, and may affect resolved_model/model-table metadata.
4
16
  */
5
17
  import { existsSync, readFileSync } from "fs";
6
18
  import { mkdir, readFile, writeFile } from "fs/promises";
@@ -1 +1 @@
1
- {"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"native-config.js","sourceRoot":"","sources":["../../src/agents/native-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=quality-gates-cli.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gates-cli.test.d.ts","sourceRoot":"","sources":["../../../src/bin/__tests__/quality-gates-cli.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,110 @@
1
+ import assert from 'node:assert/strict';
2
+ import { afterEach, beforeEach, describe, it } from 'node:test';
3
+ import { mkdtempSync, rmSync, writeFileSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { tmpdir } from 'node:os';
6
+ import { qualityGatesCommand } from '../quality-gates-cli.js';
7
+ describe('quality-gates CLI', () => {
8
+ let home;
9
+ beforeEach(() => {
10
+ home = mkdtempSync(join(tmpdir(), 'omx-quality-gates-cli-'));
11
+ writeFileSync(join(home, '.omx-config.json'), JSON.stringify({
12
+ qualityGates: {
13
+ 'deep-interview': ['interview-check'],
14
+ 'ralplan': ['plan-check', 'design-review'],
15
+ 'code-review': ['code-check'],
16
+ },
17
+ }));
18
+ });
19
+ afterEach(() => rmSync(home, { recursive: true, force: true }));
20
+ it('lists normalized gates for a specified stage', () => {
21
+ const result = JSON.parse(qualityGatesCommand(['list', '--stage', 'ralplan'], home));
22
+ assert.deepEqual(result, {
23
+ gates: [
24
+ { skill: 'plan-check', mode: 'blocking' },
25
+ { skill: 'design-review', mode: 'blocking' },
26
+ ],
27
+ stage: 'ralplan',
28
+ });
29
+ });
30
+ it('returns an empty list for an unconfigured stage', () => {
31
+ const result = JSON.parse(qualityGatesCommand(['list', '--stage', 'code-review'], home));
32
+ assert.deepEqual(result, {
33
+ gates: [{ skill: 'code-check', mode: 'blocking' }],
34
+ stage: 'code-review',
35
+ });
36
+ writeFileSync(join(home, '.omx-config.json'), JSON.stringify({ qualityGates: { 'deep-interview': ['interview-check'] } }));
37
+ const emptyResult = JSON.parse(qualityGatesCommand(['list', '--stage', 'ralplan'], home));
38
+ assert.deepEqual(emptyResult, {
39
+ gates: [],
40
+ stage: 'ralplan',
41
+ });
42
+ });
43
+ it('normalizes object entries with mode and model', () => {
44
+ writeFileSync(join(home, '.omx-config.json'), JSON.stringify({
45
+ qualityGates: {
46
+ 'ralplan': [
47
+ { skill: 'blocking-gate', mode: 'blocking' },
48
+ { skill: 'advisory-gate', mode: 'advisory' },
49
+ { skill: 'model-gate', model: 'claude-opus' },
50
+ { skill: 'full-config', mode: 'advisory', model: 'claude-sonnet' },
51
+ ],
52
+ },
53
+ }));
54
+ const result = JSON.parse(qualityGatesCommand(['list', '--stage', 'ralplan'], home));
55
+ assert.deepEqual(result, {
56
+ gates: [
57
+ { skill: 'blocking-gate', mode: 'blocking' },
58
+ { skill: 'advisory-gate', mode: 'advisory' },
59
+ { skill: 'model-gate', mode: 'blocking', model: 'claude-opus' },
60
+ { skill: 'full-config', mode: 'advisory', model: 'claude-sonnet' },
61
+ ],
62
+ stage: 'ralplan',
63
+ });
64
+ });
65
+ it('rejects invalid stages, missing stages, unsupported commands and unknown flags', () => {
66
+ for (const args of [
67
+ ['list', '--stage', 'invalid'],
68
+ ['list', '--stage', 'plan'], // old camelCase stage name
69
+ ['list'],
70
+ ['list', '--stage'],
71
+ ['run', '--stage', 'ralplan'],
72
+ ['list', '--stage', 'ralplan', '--unknown'],
73
+ ]) {
74
+ const output = JSON.parse(qualityGatesCommand(args, home));
75
+ assert.equal(typeof output.error, 'string');
76
+ assert.ok(output.error.length > 0);
77
+ assert.equal(output.gates, undefined);
78
+ }
79
+ });
80
+ it('filters out invalid skill names from config', () => {
81
+ writeFileSync(join(home, '.omx-config.json'), JSON.stringify({
82
+ qualityGates: {
83
+ 'ralplan': ['valid-gate', 'MyInvalidGate', 'deep-interview'],
84
+ },
85
+ }));
86
+ const result = JSON.parse(qualityGatesCommand(['list', '--stage', 'ralplan'], home));
87
+ // Only valid-gate should be returned, normalized with mode
88
+ assert.deepEqual(result.gates, [{ skill: 'valid-gate', mode: 'blocking' }]);
89
+ });
90
+ it('filters out invalid object entries', () => {
91
+ writeFileSync(join(home, '.omx-config.json'), JSON.stringify({
92
+ qualityGates: {
93
+ 'ralplan': [
94
+ 'valid-gate',
95
+ { skill: 'MyInvalidGate' },
96
+ { skill: 'valid-obj', mode: 'advisory' },
97
+ { mode: 'blocking' }, // Missing skill
98
+ { skill: 'valid-final' },
99
+ ],
100
+ },
101
+ }));
102
+ const result = JSON.parse(qualityGatesCommand(['list', '--stage', 'ralplan'], home));
103
+ assert.deepEqual(result.gates, [
104
+ { skill: 'valid-gate', mode: 'blocking' },
105
+ { skill: 'valid-obj', mode: 'advisory' },
106
+ { skill: 'valid-final', mode: 'blocking' },
107
+ ]);
108
+ });
109
+ });
110
+ //# sourceMappingURL=quality-gates-cli.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gates-cli.test.js","sourceRoot":"","sources":["../../../src/bin/__tests__/quality-gates-cli.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Quality Gates CLI Command
3
+ *
4
+ * Provides CLI interface for listing configured quality gates.
5
+ * Usage:
6
+ * omx quality-gates list --stage deep-interview|ralplan|code-review
7
+ *
8
+ * Returns JSON string: {gates: [...], stage: "..."}
9
+ * or {error: string} for errors.
10
+ * No console output or exit code changes—dispatcher handles all I/O.
11
+ */
12
+ /**
13
+ * Execute the quality-gates CLI command
14
+ * Pure function: returns JSON string, no console I/O or exit code changes
15
+ * Reads quality gates from both project (cwd) and CODEX_HOME config files with project taking precedence
16
+ */
17
+ export declare function qualityGatesCommand(args: string[], codexHomeOverride?: string, cwd?: string): string;
18
+ //# sourceMappingURL=quality-gates-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gates-cli.d.ts","sourceRoot":"","sources":["../../src/bin/quality-gates-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAuDH;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,iBAAiB,CAAC,EAAE,MAAM,EAC1B,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAqDR"}
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Quality Gates CLI Command
3
+ *
4
+ * Provides CLI interface for listing configured quality gates.
5
+ * Usage:
6
+ * omx quality-gates list --stage deep-interview|ralplan|code-review
7
+ *
8
+ * Returns JSON string: {gates: [...], stage: "..."}
9
+ * or {error: string} for errors.
10
+ * No console output or exit code changes—dispatcher handles all I/O.
11
+ */
12
+ import { getGatesForStage } from '../config/quality-gates.js';
13
+ /**
14
+ * Parse CLI arguments for quality-gates command with strict validation
15
+ */
16
+ function parseQualityGatesArgs(args) {
17
+ const options = {};
18
+ let i = 0;
19
+ while (i < args.length) {
20
+ const arg = args[i];
21
+ if (arg === '--help' || arg === '-h') {
22
+ options.help = true;
23
+ i++;
24
+ }
25
+ else if (arg === '--json') {
26
+ options.json = true;
27
+ i++;
28
+ }
29
+ else if (arg === '--stage') {
30
+ const stage = args[i + 1];
31
+ if (stage && ['deep-interview', 'ralplan', 'code-review'].includes(stage)) {
32
+ options.stage = stage;
33
+ }
34
+ i += 2;
35
+ }
36
+ else if (arg.startsWith('--') || arg.startsWith('-')) {
37
+ // Unknown flag
38
+ options.hasUnknownFlags = true;
39
+ i++;
40
+ }
41
+ else if (arg === 'list') {
42
+ options.subcommand = arg;
43
+ i++;
44
+ }
45
+ else if (['validate', 'run', 'help', 'init', 'config'].includes(arg)) {
46
+ // Unsupported subcommand
47
+ options.subcommand = arg;
48
+ i++;
49
+ }
50
+ else {
51
+ // Unknown positional argument
52
+ i++;
53
+ }
54
+ }
55
+ return options;
56
+ }
57
+ /**
58
+ * Execute the quality-gates CLI command
59
+ * Pure function: returns JSON string, no console I/O or exit code changes
60
+ * Reads quality gates from both project (cwd) and CODEX_HOME config files with project taking precedence
61
+ */
62
+ export function qualityGatesCommand(args, codexHomeOverride, cwd) {
63
+ const options = parseQualityGatesArgs(args);
64
+ if (options.help) {
65
+ // Help is shown by dispatcher; return empty success
66
+ return JSON.stringify({
67
+ gates: [],
68
+ stage: 'ralplan',
69
+ });
70
+ }
71
+ // Check for unknown flags
72
+ if (options.hasUnknownFlags) {
73
+ return JSON.stringify({
74
+ error: 'Unknown flag provided',
75
+ });
76
+ }
77
+ // Require explicit 'list' subcommand
78
+ if (!options.subcommand) {
79
+ return JSON.stringify({
80
+ error: 'Missing subcommand; use "list"',
81
+ });
82
+ }
83
+ // Only 'list' is supported
84
+ if (options.subcommand !== 'list') {
85
+ return JSON.stringify({
86
+ error: `Unsupported subcommand: ${options.subcommand}`,
87
+ });
88
+ }
89
+ // --stage is required for 'list'
90
+ if (!options.stage) {
91
+ return JSON.stringify({
92
+ error: 'Missing required --stage argument',
93
+ });
94
+ }
95
+ const gates = getGatesForStage(options.stage, codexHomeOverride, cwd);
96
+ // Output normalized gate objects
97
+ const normalizedGates = gates.map(gate => ({
98
+ skill: gate.skill,
99
+ mode: gate.mode,
100
+ ...(gate.model && { model: gate.model }),
101
+ }));
102
+ return JSON.stringify({
103
+ gates: normalizedGates,
104
+ stage: options.stage,
105
+ });
106
+ }
107
+ //# sourceMappingURL=quality-gates-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quality-gates-cli.js","sourceRoot":"","sources":["../../src/bin/quality-gates-cli.ts"],"names":[],"mappings":"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"}
@@ -78,26 +78,26 @@ async function wrapFakeTmuxWithDetachedLeader(fakeTmuxPath) {
78
78
  await rename(fakeTmuxPath, implementationPath);
79
79
  await writeExecutable(fakeTmuxPath, `#!/bin/sh
80
80
  if [ "$1" = "display-message" ] && [ "$2" = "-p" ] && [ "$3" = "-t" ] && case "$5" in *'#{session_created}'*'#{window_id}'*'#{pane_pid}'*) true;; *) false;; esac; then
81
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
81
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
82
82
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
83
83
  printf '%s\t$1\t1\t0\t@1\t%s\t%s\n' "$session" "$4" "$leader_pid"
84
84
  exit 0
85
85
  fi
86
86
  if [ "$1" = "set-option" ] && [ "$2" = "-t" ] && [ "$4" = "@omx_instance_id" ]; then
87
- printf '%s' "$5" > /tmp/omx-test-detached-owner-id
87
+ printf '%s' "$5" > "$0.detached-owner-id"
88
88
  fi
89
89
  if [ "$1" = "display-message" ] && [ "$2" = "-p" ] && [ "$3" = "-t" ] && case "$5" in *'#{pane_dead}'*'#{@omx_instance_id}'*) true;; *) false;; esac; then
90
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
90
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
91
91
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
92
92
  pane=$(cat "$0.detached-leader-pane" 2>/dev/null || printf '%%12')
93
- if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then owner='foreign-owner'; else owner=$(cat /tmp/omx-test-detached-owner-id 2>/dev/null || printf ''); fi
93
+ if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then owner='foreign-owner'; else owner=$(cat "$0.detached-owner-id" 2>/dev/null || printf ''); fi
94
94
  printf '0\t%s\t%s\t%s\t$1\t1\t@1\t%s\n' "$pane" "$leader_pid" "$session" "$owner"
95
95
  exit 0
96
96
  fi
97
97
  if [ "$1" = "list-panes" ] && case "$*" in *'#{session_created}'*'#{@omx_instance_id}'*) true;; *) false;; esac; then
98
98
  ${JSON.stringify(implementationPath)} "$@" >/dev/null 2>&1 || true
99
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
100
- owner=$(cat /tmp/omx-test-detached-owner-id 2>/dev/null || printf '')
99
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
100
+ owner=$(cat "$0.detached-owner-id" 2>/dev/null || printf '')
101
101
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
102
102
  pane=$(cat "$0.detached-leader-pane" 2>/dev/null || printf '%%12')
103
103
  printf '%s\t0\t%s\t%s\t$1\t1\t%s\n' "$pane" "$leader_pid" "$session" "$owner"
@@ -140,12 +140,12 @@ printf '%s' "$output"
140
140
  if [ "$status" -eq 0 ] && [ "$1" = "new-session" ]; then
141
141
  previous=''
142
142
  for arg in "$@"; do
143
- if [ "$previous" = '-s' ]; then printf '%s' "$arg" > /tmp/omx-test-detached-session-name; break; fi
143
+ if [ "$previous" = '-s' ]; then printf '%s' "$arg" > $0.detached-session-name; break; fi
144
144
  previous="$arg"
145
145
  done
146
146
  for last_arg do :; done
147
147
  pane=$(printf '%s' "$output" | sed -n '1p')
148
- TMUX=/tmp/omx-test-tmux,1,0 TMUX_PANE="$pane" nohup /bin/sh -c 'eval "exec $1"' sh "$last_arg" </dev/null >/tmp/omx-test-detached-leader.log 2>&1 &
148
+ TMUX=/tmp/omx-test-tmux,1,0 TMUX_PANE="$pane" nohup /bin/sh -c 'eval "exec $1"' sh "$last_arg" </dev/null >"$0.detached-leader.log" 2>&1 &
149
149
  leader_pid=$!
150
150
  printf '%s' "$leader_pid" > "$0.detached-leader-pid"
151
151
  printf '%s' "$pane" > "$0.detached-leader-pane"
@@ -167,26 +167,26 @@ async function createLaunchFixture(wd, tmuxScript) {
167
167
  await writeExecutable(tmuxImpl, tmuxScript(tmuxLogPath));
168
168
  await writeExecutable(join(fakeBin, 'tmux'), `#!/bin/sh
169
169
  if [ "$1" = "display-message" ] && [ "$2" = "-p" ] && [ "$3" = "-t" ] && case "$5" in *'#{session_created}'*'#{window_id}'*'#{pane_pid}'*) true;; *) false;; esac; then
170
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
170
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
171
171
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
172
172
  printf '%s\t$1\t1\t0\t@1\t%s\t%s\n' "$session" "$4" "$leader_pid"
173
173
  exit 0
174
174
  fi
175
175
  if [ "$1" = "set-option" ] && [ "$2" = "-t" ] && [ "$4" = "@omx_instance_id" ]; then
176
- printf '%s' "$5" > /tmp/omx-test-detached-owner-id
176
+ printf '%s' "$5" > "$0.detached-owner-id"
177
177
  fi
178
178
  if [ "$1" = "display-message" ] && [ "$2" = "-p" ] && [ "$3" = "-t" ] && case "$5" in *'#{pane_dead}'*'#{@omx_instance_id}'*) true;; *) false;; esac; then
179
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
179
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
180
180
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
181
181
  pane=$(cat "$0.detached-leader-pane" 2>/dev/null || printf '%%12')
182
- if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then owner='foreign-owner'; else owner=$(cat /tmp/omx-test-detached-owner-id 2>/dev/null || printf ''); fi
182
+ if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then owner='foreign-owner'; else owner=$(cat "$0.detached-owner-id" 2>/dev/null || printf ''); fi
183
183
  printf '0\t%s\t%s\t%s\t$1\t1\t@1\t%s\n' "$pane" "$leader_pid" "$session" "$owner"
184
184
  exit 0
185
185
  fi
186
186
  if [ "$1" = "list-panes" ] && case "$*" in *'#{session_created}'*'#{@omx_instance_id}'*) true;; *) false;; esac; then
187
187
  ${JSON.stringify(tmuxImpl)} "$@" >/dev/null 2>&1 || true
188
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf omx-test)
189
- owner=$(cat /tmp/omx-test-detached-owner-id 2>/dev/null || printf '')
188
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf omx-test)
189
+ owner=$(cat "$0.detached-owner-id" 2>/dev/null || printf '')
190
190
  leader_pid=$(cat "$0.detached-leader-pid" 2>/dev/null || printf 123)
191
191
  pane=$(cat "$0.detached-leader-pane" 2>/dev/null || printf '%%12')
192
192
  printf '%s\t0\t%s\t%s\t$1\t1\t%s\n' "$pane" "$leader_pid" "$session" "$owner"
@@ -206,14 +206,14 @@ if [ "$1" = "if-shell" ] && [ "$2" = "-F" ] && [ "$3" = "-t" ]; then
206
206
  receipt=$(printf '%s' "$success" | sed -n 's/.*\\(omx_detached_[A-Za-z0-9-]*\\).*/\\1/p')
207
207
  if [ -n "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" ] && case "$success" in *"@omx_instance_id"*) true;; *) false;; esac; then
208
208
  owner=$(printf '%s' "$success" | sed -n "s/.*@omx_instance_id '\\([^']*\\)'.*/\\1/p")
209
- [ -n "$owner" ] && printf '%s' "$owner" > /tmp/omx-test-detached-owner-id
210
- if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then printf foreign-owner > /tmp/omx-test-detached-owner-id; fi
209
+ [ -n "$owner" ] && printf '%s' "$owner" > "$0.detached-owner-id"
210
+ if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then printf foreign-owner > "$0.detached-owner-id"; fi
211
211
  fi
212
212
  if [ -n "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" ] && case "$5" in *'@omx_instance_id,'*) true;; *) false;; esac; then
213
213
  expected_owner=$(printf '%s' "$5" | sed -n 's/.*@omx_instance_id,\\([^}]*\\).*/\\1/p')
214
214
  expected_session=$(printf '%s' "$5" | sed -n 's/.*session_name,\\([^}]*\\).*/\\1/p')
215
- owner=$(cat /tmp/omx-test-detached-owner-id 2>/dev/null || printf '')
216
- session=$(cat /tmp/omx-test-detached-session-name 2>/dev/null || printf '')
215
+ owner=$(cat "$0.detached-owner-id" 2>/dev/null || printf '')
216
+ session=$(cat "$0.detached-session-name" 2>/dev/null || printf '')
217
217
  [ "$owner" = "$expected_owner" ] && [ "$session" = "$expected_session" ] || exit 0
218
218
  fi
219
219
  if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'once' ] && [ ! -f "$0.detached-owner-visibility-race" ]; then
@@ -249,7 +249,7 @@ printf '%s' "$output"
249
249
  if [ "$status" -eq 0 ] && [ "$1" = "new-session" ]; then
250
250
  previous=''
251
251
  for arg in "$@"; do
252
- if [ "$previous" = '-s' ]; then printf '%s' "$arg" > /tmp/omx-test-detached-session-name; break; fi
252
+ if [ "$previous" = '-s' ]; then printf '%s' "$arg" > $0.detached-session-name; break; fi
253
253
  previous="$arg"
254
254
  done
255
255
  for last_arg do :; done
@@ -259,7 +259,7 @@ if [ "$status" -eq 0 ] && [ "$1" = "new-session" ]; then
259
259
  previous="$arg"
260
260
  done
261
261
  pane=$(printf '%s' "$output" | sed -n '1p')
262
- TMUX=/tmp/omx-test-tmux,1,0 TMUX_PANE="$pane" nohup /bin/sh -c 'eval "exec $1"' sh "$last_arg" </dev/null >/tmp/omx-test-detached-leader.log 2>&1 &
262
+ TMUX=/tmp/omx-test-tmux,1,0 TMUX_PANE="$pane" nohup /bin/sh -c 'eval "exec $1"' sh "$last_arg" </dev/null >"$0.detached-leader.log" 2>&1 &
263
263
  leader_pid=$!
264
264
  printf '%s' "$leader_pid" > "$0.detached-leader-pid"
265
265
  printf '%s' "$pane" > "$0.detached-leader-pane"
@@ -1687,11 +1687,13 @@ exit 0
1687
1687
  });
1688
1688
  it('does not reuse the same active-detached lock for independent --madmax --high launches', async () => {
1689
1689
  const wd = await mkdtemp(join(tmpdir(), 'omx-launch-madmax-independent-high-'));
1690
+ const holdPath = join(wd, 'hold');
1691
+ let leaderDone = null;
1690
1692
  try {
1691
1693
  const runs = join(wd, 'runs');
1692
1694
  const sessionMarker = join(wd, 'independent-session');
1693
1695
  const instanceMarker = join(wd, 'independent-instance');
1694
- const { env, tmuxLogPath } = await createLaunchFixture(wd, (logPath) => `#!/bin/sh
1696
+ const { env, tmuxLogPath, leaderDonePath } = await createLaunchFixture(wd, (logPath) => `#!/bin/sh
1695
1697
  printf 'tmux:%s\n' "$*" >> "${logPath}"
1696
1698
  case "$1" in
1697
1699
  -V) printf 'tmux 3.4\n'; exit 0 ;;
@@ -1706,6 +1708,15 @@ case "$1" in
1706
1708
  set-hook|attach-session|kill-session|run-shell|resize-pane) exit 0 ;;
1707
1709
  esac
1708
1710
  exit 0
1711
+ `);
1712
+ leaderDone = leaderDonePath;
1713
+ await writeFile(holdPath, 'hold\n');
1714
+ await writeExecutable(join(wd, 'bin', 'codex'), `#!${process.execPath}
1715
+ const { existsSync } = require('node:fs');
1716
+ const timer = setInterval(() => {
1717
+ if (existsSync(${JSON.stringify(holdPath)})) return;
1718
+ clearInterval(timer);
1719
+ }, 20);
1709
1720
  `);
1710
1721
  const baseEnv = {
1711
1722
  ...env,
@@ -1735,6 +1746,9 @@ exit 0
1735
1746
  assert.equal((tmuxLog.match(/tmux:new-session/g) || []).length, 2);
1736
1747
  }
1737
1748
  finally {
1749
+ await rm(holdPath, { force: true });
1750
+ if (leaderDone && existsSync(join(wd, 'bin', 'tmux.detached-leader-pid')))
1751
+ await waitForPath(leaderDone);
1738
1752
  await rm(wd, { recursive: true, force: true, maxRetries: 20, retryDelay: 50 });
1739
1753
  }
1740
1754
  });