oh-my-codex 0.18.16 → 0.19.1
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 +5 -0
- package/crates/omx-sparkshell/tests/execution.rs +8 -1
- package/dist/agents/__tests__/definitions.test.js +5 -5
- package/dist/agents/__tests__/definitions.test.js.map +1 -1
- package/dist/agents/__tests__/native-config.test.js +18 -14
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/definitions.d.ts +2 -2
- package/dist/agents/definitions.d.ts.map +1 -1
- package/dist/agents/definitions.js +4 -4
- package/dist/agents/definitions.js.map +1 -1
- package/dist/agents/native-config.d.ts +1 -0
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +18 -16
- package/dist/agents/native-config.js.map +1 -1
- package/dist/auth/hotswap.d.ts.map +1 -1
- package/dist/auth/hotswap.js +17 -4
- package/dist/auth/hotswap.js.map +1 -1
- package/dist/autopilot/__tests__/planner-routing.test.js +2 -2
- package/dist/autopilot/__tests__/planner-routing.test.js.map +1 -1
- package/dist/autopilot/fsm.d.ts +1 -1
- package/dist/autopilot/fsm.d.ts.map +1 -1
- package/dist/autopilot/fsm.js +1 -1
- package/dist/autopilot/fsm.js.map +1 -1
- package/dist/cli/__tests__/auth.test.js +78 -3
- package/dist/cli/__tests__/auth.test.js.map +1 -1
- package/dist/cli/__tests__/codex-plugin-layout.test.js +30 -5
- package/dist/cli/__tests__/codex-plugin-layout.test.js.map +1 -1
- package/dist/cli/__tests__/doctor-warning-copy.test.js +2 -0
- package/dist/cli/__tests__/doctor-warning-copy.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +96 -8
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/launch-fallback.test.js +135 -1
- package/dist/cli/__tests__/launch-fallback.test.js.map +1 -1
- package/dist/cli/__tests__/mcp-parity.test.js +2 -4
- package/dist/cli/__tests__/mcp-parity.test.js.map +1 -1
- package/dist/cli/__tests__/mission.test.d.ts +2 -0
- package/dist/cli/__tests__/mission.test.d.ts.map +1 -0
- package/dist/cli/__tests__/mission.test.js +239 -0
- package/dist/cli/__tests__/mission.test.js.map +1 -0
- package/dist/cli/__tests__/plugin-marketplace-idempotent.test.js +14 -0
- package/dist/cli/__tests__/plugin-marketplace-idempotent.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js +8 -0
- package/dist/cli/__tests__/ralph-goal-mode-contract.test.js.map +1 -1
- package/dist/cli/__tests__/resume.test.js +229 -1
- package/dist/cli/__tests__/resume.test.js.map +1 -1
- package/dist/cli/__tests__/session-scoped-runtime.test.js +113 -0
- package/dist/cli/__tests__/session-scoped-runtime.test.js.map +1 -1
- package/dist/cli/__tests__/setup-install-mode.test.js +37 -0
- package/dist/cli/__tests__/setup-install-mode.test.js.map +1 -1
- package/dist/cli/__tests__/ultragoal.test.js +22 -1
- package/dist/cli/__tests__/ultragoal.test.js.map +1 -1
- package/dist/cli/__tests__/version.test.js +13 -1
- package/dist/cli/__tests__/version.test.js.map +1 -1
- package/dist/cli/auth.d.ts +1 -1
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +49 -9
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/index.d.ts +27 -4
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +263 -36
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mission.d.ts +36 -0
- package/dist/cli/mission.d.ts.map +1 -0
- package/dist/cli/mission.js +443 -0
- package/dist/cli/mission.js.map +1 -0
- package/dist/cli/plugin-marketplace.d.ts.map +1 -1
- package/dist/cli/plugin-marketplace.js +22 -1
- package/dist/cli/plugin-marketplace.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +4 -0
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +3 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js +7 -0
- package/dist/goal-workflows/__tests__/codex-goal-snapshot.test.js.map +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js +1 -1
- package/dist/goal-workflows/codex-goal-snapshot.js.map +1 -1
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js +12 -0
- package/dist/hooks/__tests__/autopilot-skill-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/keyword-detector.test.js +267 -7
- package/dist/hooks/__tests__/keyword-detector.test.js.map +1 -1
- package/dist/hooks/keyword-detector.d.ts.map +1 -1
- package/dist/hooks/keyword-detector.js +143 -30
- package/dist/hooks/keyword-detector.js.map +1 -1
- package/dist/hud/__tests__/reconcile.test.js +121 -0
- package/dist/hud/__tests__/reconcile.test.js.map +1 -1
- package/dist/hud/__tests__/state.test.js +141 -6
- package/dist/hud/__tests__/state.test.js.map +1 -1
- package/dist/hud/__tests__/tmux.test.js +1 -1
- package/dist/hud/__tests__/tmux.test.js.map +1 -1
- package/dist/hud/reconcile.d.ts +3 -1
- package/dist/hud/reconcile.d.ts.map +1 -1
- package/dist/hud/reconcile.js +281 -151
- package/dist/hud/reconcile.js.map +1 -1
- package/dist/hud/render.d.ts.map +1 -1
- package/dist/hud/render.js +4 -2
- package/dist/hud/render.js.map +1 -1
- package/dist/hud/state.d.ts.map +1 -1
- package/dist/hud/state.js +51 -15
- package/dist/hud/state.js.map +1 -1
- package/dist/hud/tmux.d.ts.map +1 -1
- package/dist/hud/tmux.js +1 -4
- package/dist/hud/tmux.js.map +1 -1
- package/dist/hud/types.d.ts +5 -0
- package/dist/hud/types.d.ts.map +1 -1
- package/dist/hud/types.js.map +1 -1
- package/dist/leader/__tests__/contract.test.d.ts +2 -0
- package/dist/leader/__tests__/contract.test.d.ts.map +1 -0
- package/dist/leader/__tests__/contract.test.js +75 -0
- package/dist/leader/__tests__/contract.test.js.map +1 -0
- package/dist/leader/contract.d.ts +26 -0
- package/dist/leader/contract.d.ts.map +1 -0
- package/dist/leader/contract.js +97 -0
- package/dist/leader/contract.js.map +1 -0
- package/dist/mcp/__tests__/state-paths.test.js +32 -1
- package/dist/mcp/__tests__/state-paths.test.js.map +1 -1
- package/dist/mcp/state-paths.d.ts +4 -0
- package/dist/mcp/state-paths.d.ts.map +1 -1
- package/dist/mcp/state-paths.js +6 -15
- package/dist/mcp/state-paths.js.map +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +22 -7
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/dispatcher.test.js +16 -0
- package/dist/notifications/__tests__/dispatcher.test.js.map +1 -1
- package/dist/notifications/__tests__/profiles.test.js +87 -0
- package/dist/notifications/__tests__/profiles.test.js.map +1 -1
- package/dist/notifications/config.d.ts +1 -0
- package/dist/notifications/config.d.ts.map +1 -1
- package/dist/notifications/config.js +60 -22
- package/dist/notifications/config.js.map +1 -1
- package/dist/notifications/dispatcher.d.ts.map +1 -1
- package/dist/notifications/dispatcher.js +6 -16
- package/dist/notifications/dispatcher.js.map +1 -1
- package/dist/pipeline/__tests__/stages.test.js +2 -0
- package/dist/pipeline/__tests__/stages.test.js.map +1 -1
- package/dist/pipeline/stages/ultragoal.d.ts.map +1 -1
- package/dist/pipeline/stages/ultragoal.js +6 -1
- package/dist/pipeline/stages/ultragoal.js.map +1 -1
- package/dist/question/__tests__/renderer.test.js +58 -4
- package/dist/question/__tests__/renderer.test.js.map +1 -1
- package/dist/question/renderer.d.ts +1 -1
- package/dist/question/renderer.d.ts.map +1 -1
- package/dist/question/renderer.js +73 -5
- package/dist/question/renderer.js.map +1 -1
- package/dist/ralplan/__tests__/consensus-gate.test.js +193 -0
- package/dist/ralplan/__tests__/consensus-gate.test.js.map +1 -1
- package/dist/ralplan/__tests__/runtime.test.js +202 -0
- package/dist/ralplan/__tests__/runtime.test.js.map +1 -1
- package/dist/ralplan/consensus-gate.js +24 -3
- package/dist/ralplan/consensus-gate.js.map +1 -1
- package/dist/ralplan/runtime.d.ts +7 -0
- package/dist/ralplan/runtime.d.ts.map +1 -1
- package/dist/ralplan/runtime.js +63 -4
- package/dist/ralplan/runtime.js.map +1 -1
- package/dist/scripts/__tests__/codex-native-hook.test.js +6935 -2681
- package/dist/scripts/__tests__/codex-native-hook.test.js.map +1 -1
- package/dist/scripts/codex-native-hook.d.ts +1 -0
- package/dist/scripts/codex-native-hook.d.ts.map +1 -1
- package/dist/scripts/codex-native-hook.js +4442 -187
- package/dist/scripts/codex-native-hook.js.map +1 -1
- package/dist/scripts/generate-catalog-docs.js +1 -0
- package/dist/scripts/generate-catalog-docs.js.map +1 -1
- package/dist/state/__tests__/operations.test.js +1424 -0
- package/dist/state/__tests__/operations.test.js.map +1 -1
- package/dist/state/__tests__/planning-gate.test.js +410 -0
- package/dist/state/__tests__/planning-gate.test.js.map +1 -1
- package/dist/state/__tests__/skill-active.test.js +59 -0
- package/dist/state/__tests__/skill-active.test.js.map +1 -1
- package/dist/state/operations.d.ts +10 -0
- package/dist/state/operations.d.ts.map +1 -1
- package/dist/state/operations.js +250 -14
- package/dist/state/operations.js.map +1 -1
- package/dist/state/skill-active.d.ts +4 -1
- package/dist/state/skill-active.d.ts.map +1 -1
- package/dist/state/skill-active.js +8 -6
- package/dist/state/skill-active.js.map +1 -1
- package/dist/state/workflow-transition.d.ts.map +1 -1
- package/dist/state/workflow-transition.js +642 -1
- package/dist/state/workflow-transition.js.map +1 -1
- package/dist/subagents/__tests__/tracker.test.js +248 -1
- package/dist/subagents/__tests__/tracker.test.js.map +1 -1
- package/dist/subagents/tracker.d.ts +60 -0
- package/dist/subagents/tracker.d.ts.map +1 -1
- package/dist/subagents/tracker.js +225 -1
- package/dist/subagents/tracker.js.map +1 -1
- package/dist/team/__tests__/model-contract.test.js +72 -4
- package/dist/team/__tests__/model-contract.test.js.map +1 -1
- package/dist/team/__tests__/runtime.test.js +44 -2
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +127 -8
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-runtime-identity.test.js +89 -0
- package/dist/team/__tests__/worker-runtime-identity.test.js.map +1 -1
- package/dist/team/model-contract.d.ts +3 -0
- package/dist/team/model-contract.d.ts.map +1 -1
- package/dist/team/model-contract.js +42 -5
- package/dist/team/model-contract.js.map +1 -1
- package/dist/team/runtime.d.ts +2 -1
- package/dist/team/runtime.d.ts.map +1 -1
- package/dist/team/runtime.js +21 -11
- package/dist/team/runtime.js.map +1 -1
- package/dist/team/scaling.d.ts.map +1 -1
- package/dist/team/scaling.js +13 -11
- package/dist/team/scaling.js.map +1 -1
- package/dist/team/tmux-session.d.ts +1 -0
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +63 -13
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/ultragoal/__tests__/artifacts.test.js +21 -4
- package/dist/ultragoal/__tests__/artifacts.test.js.map +1 -1
- package/dist/ultragoal/artifacts.d.ts.map +1 -1
- package/dist/ultragoal/artifacts.js +75 -5
- package/dist/ultragoal/artifacts.js.map +1 -1
- package/dist/utils/__tests__/agents-model-table.test.js +2 -2
- package/dist/utils/__tests__/agents-model-table.test.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/hooks/codex-native-hook.mjs +19 -7
- package/plugins/oh-my-codex/skills/code-review/SKILL.md +16 -0
- package/plugins/oh-my-codex/skills/ultragoal/SKILL.md +23 -0
- package/plugins/oh-my-codex/skills/ultrawork/references/agent-tiers.md +3 -2
- package/skills/code-review/SKILL.md +16 -0
- package/skills/ecomode/references/agent-tiers.md +1 -1
- package/skills/ultragoal/SKILL.md +23 -0
- package/skills/ultrawork/references/agent-tiers.md +3 -2
- package/src/scripts/__tests__/codex-native-hook.test.ts +14843 -9586
- package/src/scripts/codex-native-hook.ts +4520 -194
- package/src/scripts/generate-catalog-docs.ts +1 -0
|
@@ -10,6 +10,7 @@ import { buildClientAttachedReconcileHookName, assertTeamWorkerCliBinaryAvailabl
|
|
|
10
10
|
import { HUD_RESIZE_RECONCILE_DELAY_SECONDS, HUD_TMUX_TEAM_HEIGHT_LINES } from '../../hud/constants.js';
|
|
11
11
|
import * as tmuxSessionModule from '../tmux-session.js';
|
|
12
12
|
import { OMX_ENTRY_PATH_ENV, OMX_STARTUP_CWD_ENV } from '../../utils/paths.js';
|
|
13
|
+
const fsMutable = fs;
|
|
13
14
|
function withEmptyPath(fn) {
|
|
14
15
|
const prev = process.env.PATH;
|
|
15
16
|
process.env.PATH = '';
|
|
@@ -24,26 +25,26 @@ function withEmptyPath(fn) {
|
|
|
24
25
|
}
|
|
25
26
|
}
|
|
26
27
|
function withMockedExistsSync(mock, fn) {
|
|
27
|
-
const original =
|
|
28
|
-
|
|
28
|
+
const original = fsMutable.existsSync;
|
|
29
|
+
fsMutable.existsSync = mock;
|
|
29
30
|
syncBuiltinESMExports();
|
|
30
31
|
try {
|
|
31
32
|
return fn();
|
|
32
33
|
}
|
|
33
34
|
finally {
|
|
34
|
-
|
|
35
|
+
fsMutable.existsSync = original;
|
|
35
36
|
syncBuiltinESMExports();
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
function withMockedStatSync(mock, fn) {
|
|
39
|
-
const original =
|
|
40
|
-
|
|
40
|
+
const original = fsMutable.statSync;
|
|
41
|
+
fsMutable.statSync = mock;
|
|
41
42
|
syncBuiltinESMExports();
|
|
42
43
|
try {
|
|
43
44
|
return fn();
|
|
44
45
|
}
|
|
45
46
|
finally {
|
|
46
|
-
|
|
47
|
+
fsMutable.statSync = original;
|
|
47
48
|
syncBuiltinESMExports();
|
|
48
49
|
}
|
|
49
50
|
}
|
|
@@ -1051,21 +1052,139 @@ describe('buildWorkerStartupCommand', () => {
|
|
|
1051
1052
|
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1052
1053
|
}
|
|
1053
1054
|
});
|
|
1054
|
-
it('
|
|
1055
|
+
it('uses a generated startup script with MSYS paths on win32/MSYS', async () => {
|
|
1055
1056
|
const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
|
|
1056
1057
|
const prevMsystem = process.env.MSYSTEM;
|
|
1058
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1059
|
+
const stateRoot = 'C:\\omx-state';
|
|
1060
|
+
try {
|
|
1061
|
+
Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
|
|
1062
|
+
process.env.MSYSTEM = 'MINGW64';
|
|
1063
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
1064
|
+
const cmd = writeWorkerStartupScriptCommand('alpha', 1, ['--model', 'gpt-5'], 'C:\\repo', { OMX_TEAM_STATE_ROOT: stateRoot }, 'gemini');
|
|
1065
|
+
assert.equal(cmd, `exec /bin/sh '/c/omx-state/team/alpha/runtime/worker-1-startup.sh'`);
|
|
1066
|
+
const script = await readFile(join(stateRoot, 'team', 'alpha', 'runtime', 'worker-1-startup.sh'), 'utf-8');
|
|
1067
|
+
assert.match(script, /^cd '\/c\/repo'$/m);
|
|
1068
|
+
assert.match(script, /^exec '\/bin\/sh' -c /m);
|
|
1069
|
+
}
|
|
1070
|
+
finally {
|
|
1071
|
+
await rm(stateRoot, { recursive: true, force: true });
|
|
1072
|
+
if (originalPlatform)
|
|
1073
|
+
Object.defineProperty(process, 'platform', originalPlatform);
|
|
1074
|
+
if (typeof prevMsystem === 'string')
|
|
1075
|
+
process.env.MSYSTEM = prevMsystem;
|
|
1076
|
+
else
|
|
1077
|
+
delete process.env.MSYSTEM;
|
|
1078
|
+
if (typeof prevBypass === 'string')
|
|
1079
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
1080
|
+
else
|
|
1081
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1082
|
+
}
|
|
1083
|
+
});
|
|
1084
|
+
it('does not emit cmd.exe flag wrappers for MSYS startup scripts with cmd shims', async () => {
|
|
1085
|
+
const fakeRoot = await mkdtemp(join(tmpdir(), 'omx-worker-startup-msys-cmd-shim-'));
|
|
1086
|
+
const fakeBin = join(fakeRoot, 'bin dir');
|
|
1087
|
+
const stateRoot = join(fakeRoot, 'state root');
|
|
1088
|
+
const startupScriptPath = join(stateRoot, 'team', 'alpha', 'runtime', 'worker-1-startup.sh');
|
|
1089
|
+
const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
|
|
1090
|
+
const prevPath = process.env.PATH;
|
|
1091
|
+
const prevPathext = process.env.PATHEXT;
|
|
1092
|
+
const prevMsystem = process.env.MSYSTEM;
|
|
1093
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1094
|
+
try {
|
|
1095
|
+
await mkdir(fakeBin, { recursive: true });
|
|
1096
|
+
const geminiCmdPath = join(fakeBin, 'gemini.cmd');
|
|
1097
|
+
await writeFile(geminiCmdPath, '@echo off\r\n');
|
|
1098
|
+
Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
|
|
1099
|
+
process.env.PATH = fakeBin;
|
|
1100
|
+
process.env.PATHEXT = '.CMD';
|
|
1101
|
+
process.env.MSYSTEM = 'MINGW64';
|
|
1102
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
1103
|
+
const cmd = writeWorkerStartupScriptCommand('alpha', 1, ['--model', 'gemini-2.5-pro'], 'C:\\repo with space', { OMX_TEAM_STATE_ROOT: stateRoot }, 'gemini');
|
|
1104
|
+
assert.equal(cmd, `exec /bin/sh '${startupScriptPath}'`);
|
|
1105
|
+
const script = await readFile(startupScriptPath, 'utf-8');
|
|
1106
|
+
assert.doesNotMatch(script, /cmd\.exe/i);
|
|
1107
|
+
assert.doesNotMatch(script, /'\/d'|'\/s'|'\/c'|\s\/d\s|\s\/s\s|\s\/c\s/i);
|
|
1108
|
+
assert.match(script, /^cd '\/c\/repo with space'$/m);
|
|
1109
|
+
assert.match(script, /^exec '\/bin\/sh' -c /m);
|
|
1110
|
+
assert.match(script, new RegExp(escapeRegExp(geminiCmdPath)));
|
|
1111
|
+
assert.match(script, /--approval-mode/);
|
|
1112
|
+
assert.match(script, /yolo/);
|
|
1113
|
+
}
|
|
1114
|
+
finally {
|
|
1115
|
+
await rm(fakeRoot, { recursive: true, force: true });
|
|
1116
|
+
if (originalPlatform)
|
|
1117
|
+
Object.defineProperty(process, 'platform', originalPlatform);
|
|
1118
|
+
if (typeof prevPath === 'string')
|
|
1119
|
+
process.env.PATH = prevPath;
|
|
1120
|
+
else
|
|
1121
|
+
delete process.env.PATH;
|
|
1122
|
+
if (typeof prevPathext === 'string')
|
|
1123
|
+
process.env.PATHEXT = prevPathext;
|
|
1124
|
+
else
|
|
1125
|
+
delete process.env.PATHEXT;
|
|
1126
|
+
if (typeof prevMsystem === 'string')
|
|
1127
|
+
process.env.MSYSTEM = prevMsystem;
|
|
1128
|
+
else
|
|
1129
|
+
delete process.env.MSYSTEM;
|
|
1130
|
+
if (typeof prevBypass === 'string')
|
|
1131
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
1132
|
+
else
|
|
1133
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1134
|
+
}
|
|
1135
|
+
});
|
|
1136
|
+
it('wraps MSYS prompt worker cmd shims for shell-free Windows spawn', async () => {
|
|
1137
|
+
const fakeRoot = await mkdtemp(join(tmpdir(), 'omx-worker-process-msys-bat-shim-'));
|
|
1138
|
+
const fakeBin = join(fakeRoot, 'bin dir');
|
|
1139
|
+
const originalPlatform = Object.getOwnPropertyDescriptor(process, 'platform');
|
|
1140
|
+
const prevPath = process.env.PATH;
|
|
1141
|
+
const prevPathext = process.env.PATHEXT;
|
|
1142
|
+
const prevMsystem = process.env.MSYSTEM;
|
|
1143
|
+
const prevBypass = process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1144
|
+
const prevComSpec = process.env.ComSpec;
|
|
1057
1145
|
try {
|
|
1146
|
+
await mkdir(fakeBin, { recursive: true });
|
|
1147
|
+
const geminiBatPath = join(fakeBin, 'gemini.bat');
|
|
1148
|
+
await writeFile(geminiBatPath, '@echo off\r\n');
|
|
1058
1149
|
Object.defineProperty(process, 'platform', { value: 'win32', configurable: true });
|
|
1150
|
+
process.env.PATH = fakeBin;
|
|
1151
|
+
process.env.PATHEXT = '.BAT';
|
|
1059
1152
|
process.env.MSYSTEM = 'MINGW64';
|
|
1060
|
-
|
|
1153
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = '0';
|
|
1154
|
+
process.env.ComSpec = 'C:\\Windows\\System32\\cmd.exe';
|
|
1155
|
+
const spec = buildWorkerProcessLaunchSpec('alpha', 1, ['--model', 'gemini-2.5-pro'], 'C:\\repo with space', {}, 'gemini');
|
|
1156
|
+
assert.equal(spec.command, 'C:\\Windows\\System32\\cmd.exe');
|
|
1157
|
+
assert.deepEqual(spec.args.slice(0, 3), ['/d', '/s', '/c']);
|
|
1158
|
+
assert.match(spec.args[3] ?? '', new RegExp(escapeRegExp(geminiBatPath)));
|
|
1159
|
+
assert.match(spec.args[3] ?? '', /--approval-mode/);
|
|
1160
|
+
assert.match(spec.args[3] ?? '', /yolo/);
|
|
1161
|
+
assert.equal(spec.env.OMX_LEADER_CLI_PATH, geminiBatPath);
|
|
1162
|
+
assert.notEqual(spec.command, geminiBatPath);
|
|
1061
1163
|
}
|
|
1062
1164
|
finally {
|
|
1165
|
+
await rm(fakeRoot, { recursive: true, force: true });
|
|
1063
1166
|
if (originalPlatform)
|
|
1064
1167
|
Object.defineProperty(process, 'platform', originalPlatform);
|
|
1168
|
+
if (typeof prevPath === 'string')
|
|
1169
|
+
process.env.PATH = prevPath;
|
|
1170
|
+
else
|
|
1171
|
+
delete process.env.PATH;
|
|
1172
|
+
if (typeof prevPathext === 'string')
|
|
1173
|
+
process.env.PATHEXT = prevPathext;
|
|
1174
|
+
else
|
|
1175
|
+
delete process.env.PATHEXT;
|
|
1065
1176
|
if (typeof prevMsystem === 'string')
|
|
1066
1177
|
process.env.MSYSTEM = prevMsystem;
|
|
1067
1178
|
else
|
|
1068
1179
|
delete process.env.MSYSTEM;
|
|
1180
|
+
if (typeof prevBypass === 'string')
|
|
1181
|
+
process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT = prevBypass;
|
|
1182
|
+
else
|
|
1183
|
+
delete process.env.OMX_BYPASS_DEFAULT_SYSTEM_PROMPT;
|
|
1184
|
+
if (typeof prevComSpec === 'string')
|
|
1185
|
+
process.env.ComSpec = prevComSpec;
|
|
1186
|
+
else
|
|
1187
|
+
delete process.env.ComSpec;
|
|
1069
1188
|
}
|
|
1070
1189
|
});
|
|
1071
1190
|
it('writes a short worker startup script under team runtime state when available', async () => {
|