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.
- package/Cargo.lock +6 -6
- package/Cargo.toml +1 -1
- package/README.md +12 -0
- package/dist/agents/native-config.d.ts +12 -0
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +12 -0
- package/dist/agents/native-config.js.map +1 -1
- package/dist/bin/__tests__/quality-gates-cli.test.d.ts +2 -0
- package/dist/bin/__tests__/quality-gates-cli.test.d.ts.map +1 -0
- package/dist/bin/__tests__/quality-gates-cli.test.js +110 -0
- package/dist/bin/__tests__/quality-gates-cli.test.js.map +1 -0
- package/dist/bin/quality-gates-cli.d.ts +18 -0
- package/dist/bin/quality-gates-cli.d.ts.map +1 -0
- package/dist/bin/quality-gates-cli.js +107 -0
- package/dist/bin/quality-gates-cli.js.map +1 -0
- package/dist/cli/__tests__/launch-fallback.test.js +35 -21
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/team-status-readonly.test.d.ts +2 -0
- package/dist/cli/__tests__/team-status-readonly.test.d.ts.map +1 -0
- package/dist/cli/__tests__/team-status-readonly.test.js +65 -0
- package/dist/cli/__tests__/team-status-readonly.test.js.map +1 -0
- package/dist/cli/__tests__/team.test.js +8 -6
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/tmux-hook-status-readonly.test.d.ts +2 -0
- package/dist/cli/__tests__/tmux-hook-status-readonly.test.d.ts.map +1 -0
- package/dist/cli/__tests__/tmux-hook-status-readonly.test.js +102 -0
- package/dist/cli/__tests__/tmux-hook-status-readonly.test.js.map +1 -0
- package/dist/cli/__tests__/ultragoal.test.js +16 -0
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/index.d.ts +2 -2
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +21 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +19 -17
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/tmux-hook.js +7 -4
- package/dist/cli/tmux-hook.js.map +1 -1
- package/dist/cli/ultragoal.d.ts.map +1 -1
- package/dist/cli/ultragoal.js +4 -1
- package/dist/cli/ultragoal.js.map +1 -1
- package/dist/config/__tests__/codex-hooks.test.js +20 -2
- package/dist/config/__tests__/codex-hooks.test.js.map +1 -1
- package/dist/config/__tests__/quality-gates.test.d.ts +2 -0
- package/dist/config/__tests__/quality-gates.test.d.ts.map +1 -0
- package/dist/config/__tests__/quality-gates.test.js +369 -0
- package/dist/config/__tests__/quality-gates.test.js.map +1 -0
- package/dist/config/models.d.ts +4 -1
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +4 -1
- package/dist/config/models.js.map +1 -1
- package/dist/config/quality-gates.d.ts +97 -0
- package/dist/config/quality-gates.d.ts.map +1 -0
- package/dist/config/quality-gates.js +232 -0
- package/dist/config/quality-gates.js.map +1 -0
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js +97 -0
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.d.ts.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js +94 -2
- package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
- package/dist/hooks/__tests__/code-review-skill-contract.test.js +2 -2
- package/dist/hooks/__tests__/code-review-skill-contract.test.js.map +1 -1
- package/dist/quality-gates/index.d.ts +7 -0
- package/dist/quality-gates/index.d.ts.map +1 -0
- package/dist/quality-gates/index.js +8 -0
- package/dist/quality-gates/index.js.map +1 -0
- package/dist/ralplan/__tests__/runtime.test.js +43 -1
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/runtime-contract.d.ts +22 -0
- package/dist/ralplan/runtime-contract.d.ts.map +1 -1
- package/dist/ralplan/runtime.d.ts +10 -1
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +83 -5
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/scripts/__tests__/ralplan-advisory-hook.test.js +2 -4
- package/dist/scripts/__tests__/ralplan-advisory-hook.test.js.map +1 -1
- package/dist/team/__tests__/monitor-readonly.test.d.ts +2 -0
- package/dist/team/__tests__/monitor-readonly.test.d.ts.map +1 -0
- package/dist/team/__tests__/monitor-readonly.test.js +54 -0
- package/dist/team/__tests__/monitor-readonly.test.js.map +1 -0
- package/dist/team/__tests__/team-identity.test.js +71 -2
- package/dist/team/__tests__/team-identity.test.js.map +1 -1
- package/dist/team/__tests__/team-ops-contract.test.js +3 -0
- package/dist/team/__tests__/team-ops-contract.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +43 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/runtime.d.ts +3 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +74 -44
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/state.d.ts +6 -0
- package/dist/team/state.d.ts.map +1 -1
- package/dist/team/state.js +31 -0
- package/dist/team/state.js.map +1 -1
- package/dist/team/team-identity.d.ts +1 -0
- package/dist/team/team-identity.d.ts.map +1 -1
- package/dist/team/team-identity.js +14 -2
- package/dist/team/team-identity.js.map +1 -1
- package/dist/team/team-ops.d.ts +3 -0
- package/dist/team/team-ops.d.ts.map +1 -1
- package/dist/team/team-ops.js +3 -0
- package/dist/team/team-ops.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +47 -0
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +17 -7
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/package.json +1 -1
- package/plugins/oh-my-codex/.codex-plugin/plugin.json +1 -1
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +12 -2
- package/plugins/oh-my-codex/skills/deep-interview/SKILL.md +11 -0
- package/plugins/oh-my-codex/skills/ralplan/SKILL.md +27 -7
- package/plugins/oh-my-codex/templates/AGENTS.md +17 -1
- package/skills/code-review/SKILL.md +12 -2
- package/skills/deep-interview/SKILL.md +11 -0
- package/skills/ralplan/SKILL.md +27 -7
- package/src/scripts/__tests__/ralplan-advisory-hook.test.ts +2 -4
- 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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
79
|
+
version = "0.21.42"
|
|
80
80
|
dependencies = [
|
|
81
81
|
"omx-mux",
|
|
82
82
|
]
|
package/Cargo.toml
CHANGED
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
|
|
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 @@
|
|
|
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
|
|
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" >
|
|
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
|
|
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
|
|
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
|
|
100
|
-
owner=$(cat
|
|
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" >
|
|
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
|
|
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
|
|
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" >
|
|
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
|
|
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
|
|
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
|
|
189
|
-
owner=$(cat
|
|
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" >
|
|
210
|
-
if [ "\${OMX_TEST_DETACHED_OWNER_VISIBILITY_RACE:-}" = 'persistent' ]; then printf foreign-owner >
|
|
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
|
|
216
|
-
session=$(cat
|
|
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" >
|
|
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
|
|
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
|
});
|