oh-my-codex 0.10.2 → 0.10.4
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 +2 -2
- package/Cargo.toml +1 -1
- package/README.de.md +4 -4
- package/README.es.md +4 -4
- package/README.fr.md +4 -4
- package/README.it.md +4 -4
- package/README.ja.md +4 -4
- package/README.ko.md +4 -4
- package/README.md +13 -7
- package/README.pt.md +4 -4
- package/README.ru.md +4 -4
- package/README.tr.md +4 -4
- package/README.vi.md +4 -4
- package/README.zh-TW.md +4 -4
- package/README.zh.md +4 -4
- package/dist/agents/__tests__/native-config.test.js +37 -33
- package/dist/agents/__tests__/native-config.test.js.map +1 -1
- package/dist/agents/native-config.d.ts +18 -6
- package/dist/agents/native-config.d.ts.map +1 -1
- package/dist/agents/native-config.js +109 -92
- package/dist/agents/native-config.js.map +1 -1
- package/dist/autoresearch/__tests__/contracts.test.js +37 -1
- package/dist/autoresearch/__tests__/contracts.test.js.map +1 -1
- package/dist/autoresearch/__tests__/runtime-parity-extra.test.js +10 -10
- package/dist/autoresearch/__tests__/runtime-parity-extra.test.js.map +1 -1
- package/dist/autoresearch/__tests__/runtime.test.js +2 -2
- package/dist/autoresearch/__tests__/runtime.test.js.map +1 -1
- package/dist/autoresearch/contracts.d.ts.map +1 -1
- package/dist/autoresearch/contracts.js +17 -10
- package/dist/autoresearch/contracts.js.map +1 -1
- package/dist/autoresearch/runtime.d.ts.map +1 -1
- package/dist/autoresearch/runtime.js +84 -96
- package/dist/autoresearch/runtime.js.map +1 -1
- package/dist/cli/__tests__/agents-init.test.js +2 -0
- package/dist/cli/__tests__/agents-init.test.js.map +1 -1
- package/dist/cli/__tests__/agents.test.d.ts +2 -0
- package/dist/cli/__tests__/agents.test.d.ts.map +1 -0
- package/dist/cli/__tests__/agents.test.js +114 -0
- package/dist/cli/__tests__/agents.test.js.map +1 -0
- package/dist/cli/__tests__/autoresearch-guided.test.js +156 -1
- package/dist/cli/__tests__/autoresearch-guided.test.js.map +1 -1
- package/dist/cli/__tests__/autoresearch.test.js +483 -25
- package/dist/cli/__tests__/autoresearch.test.js.map +1 -1
- package/dist/cli/__tests__/cleanup.test.d.ts +2 -0
- package/dist/cli/__tests__/cleanup.test.d.ts.map +1 -0
- package/dist/cli/__tests__/cleanup.test.js +213 -0
- package/dist/cli/__tests__/cleanup.test.js.map +1 -0
- package/dist/cli/__tests__/error-handling-warnings.test.js +1 -1
- package/dist/cli/__tests__/error-handling-warnings.test.js.map +1 -1
- package/dist/cli/__tests__/explore.test.js +3 -3
- package/dist/cli/__tests__/explore.test.js.map +1 -1
- package/dist/cli/__tests__/index.test.js +530 -401
- package/dist/cli/__tests__/index.test.js.map +1 -1
- package/dist/cli/__tests__/native-assets.test.js +72 -9
- package/dist/cli/__tests__/native-assets.test.js.map +1 -1
- package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts +2 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.js +28 -0
- package/dist/cli/__tests__/ralph-deslop-contract.test.js.map +1 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js +4 -0
- package/dist/cli/__tests__/ralph-prd-deep-interview.test.js.map +1 -1
- package/dist/cli/__tests__/ralphthon.test.d.ts +2 -0
- package/dist/cli/__tests__/ralphthon.test.d.ts.map +1 -0
- package/dist/cli/__tests__/ralphthon.test.js +28 -0
- package/dist/cli/__tests__/ralphthon.test.js.map +1 -0
- package/dist/cli/__tests__/setup-agents-overwrite.test.js +36 -1
- package/dist/cli/__tests__/setup-agents-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js +35 -5
- package/dist/cli/__tests__/setup-prompts-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/setup-refresh.test.js +2 -2
- package/dist/cli/__tests__/setup-refresh.test.js.map +1 -1
- package/dist/cli/__tests__/setup-scope.test.js +131 -161
- package/dist/cli/__tests__/setup-scope.test.js.map +1 -1
- package/dist/cli/__tests__/setup-skills-overwrite.test.js +10 -10
- package/dist/cli/__tests__/setup-skills-overwrite.test.js.map +1 -1
- package/dist/cli/__tests__/sparkshell-cli.test.js +28 -2
- package/dist/cli/__tests__/sparkshell-cli.test.js.map +1 -1
- package/dist/cli/__tests__/team.test.js +1 -112
- package/dist/cli/__tests__/team.test.js.map +1 -1
- package/dist/cli/__tests__/uninstall.test.js +7 -20
- package/dist/cli/__tests__/uninstall.test.js.map +1 -1
- package/dist/cli/agents-init.d.ts.map +1 -1
- package/dist/cli/agents-init.js +99 -95
- package/dist/cli/agents-init.js.map +1 -1
- package/dist/cli/agents.d.ts +14 -0
- package/dist/cli/agents.d.ts.map +1 -0
- package/dist/cli/agents.js +261 -0
- package/dist/cli/agents.js.map +1 -0
- package/dist/cli/autoresearch-guided.d.ts +8 -0
- package/dist/cli/autoresearch-guided.d.ts.map +1 -1
- package/dist/cli/autoresearch-guided.js +104 -37
- package/dist/cli/autoresearch-guided.js.map +1 -1
- package/dist/cli/autoresearch-intake.d.ts +62 -0
- package/dist/cli/autoresearch-intake.d.ts.map +1 -0
- package/dist/cli/autoresearch-intake.js +336 -0
- package/dist/cli/autoresearch-intake.js.map +1 -0
- package/dist/cli/autoresearch.d.ts +4 -1
- package/dist/cli/autoresearch.d.ts.map +1 -1
- package/dist/cli/autoresearch.js +181 -32
- package/dist/cli/autoresearch.js.map +1 -1
- package/dist/cli/cleanup.d.ts +52 -0
- package/dist/cli/cleanup.d.ts.map +1 -0
- package/dist/cli/cleanup.js +302 -0
- package/dist/cli/cleanup.js.map +1 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +9 -37
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/explore.d.ts.map +1 -1
- package/dist/cli/explore.js +5 -4
- package/dist/cli/explore.js.map +1 -1
- package/dist/cli/index.d.ts +5 -7
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +623 -451
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/native-assets.d.ts +15 -1
- package/dist/cli/native-assets.d.ts.map +1 -1
- package/dist/cli/native-assets.js +134 -32
- package/dist/cli/native-assets.js.map +1 -1
- package/dist/cli/ralph.d.ts.map +1 -1
- package/dist/cli/ralph.js +38 -1
- package/dist/cli/ralph.js.map +1 -1
- package/dist/cli/ralphthon.d.ts +14 -0
- package/dist/cli/ralphthon.d.ts.map +1 -0
- package/dist/cli/ralphthon.js +234 -0
- package/dist/cli/ralphthon.js.map +1 -0
- package/dist/cli/setup.d.ts +1 -4
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +111 -76
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/sparkshell.d.ts +3 -1
- package/dist/cli/sparkshell.d.ts.map +1 -1
- package/dist/cli/sparkshell.js +35 -16
- package/dist/cli/sparkshell.js.map +1 -1
- package/dist/cli/team.d.ts.map +1 -1
- package/dist/cli/team.js +1 -0
- package/dist/cli/team.js.map +1 -1
- package/dist/cli/uninstall.d.ts +1 -1
- package/dist/cli/uninstall.d.ts.map +1 -1
- package/dist/cli/uninstall.js +82 -64
- package/dist/cli/uninstall.js.map +1 -1
- package/dist/config/__tests__/generator-idempotent.test.js +10 -10
- package/dist/config/__tests__/generator-idempotent.test.js.map +1 -1
- package/dist/config/__tests__/generator-notify.test.js +15 -0
- package/dist/config/__tests__/generator-notify.test.js.map +1 -1
- package/dist/config/generator.d.ts +0 -1
- package/dist/config/generator.d.ts.map +1 -1
- package/dist/config/generator.js +53 -42
- package/dist/config/generator.js.map +1 -1
- package/dist/hooks/__tests__/agents-overlay.test.js +295 -230
- package/dist/hooks/__tests__/agents-overlay.test.js.map +1 -1
- package/dist/hooks/__tests__/anti-slop-workflow.test.js +3 -0
- package/dist/hooks/__tests__/anti-slop-workflow.test.js.map +1 -1
- package/dist/hooks/__tests__/deep-interview-contract.test.js +49 -24
- package/dist/hooks/__tests__/deep-interview-contract.test.js.map +1 -1
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts +2 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js +193 -0
- package/dist/hooks/__tests__/notify-fallback-watcher-ralphthon.test.js.map +1 -0
- package/dist/hooks/agents-overlay.d.ts +1 -1
- package/dist/hooks/agents-overlay.d.ts.map +1 -1
- package/dist/hooks/agents-overlay.js +109 -106
- package/dist/hooks/agents-overlay.js.map +1 -1
- package/dist/hud/constants.d.ts +1 -1
- package/dist/hud/constants.js +1 -1
- package/dist/modes/base.d.ts +1 -1
- package/dist/modes/base.d.ts.map +1 -1
- package/dist/modes/base.js +1 -1
- package/dist/modes/base.js.map +1 -1
- package/dist/notifications/__tests__/formatter.test.js +36 -2
- package/dist/notifications/__tests__/formatter.test.js.map +1 -1
- package/dist/notifications/formatter.d.ts +3 -2
- package/dist/notifications/formatter.d.ts.map +1 -1
- package/dist/notifications/formatter.js +33 -9
- package/dist/notifications/formatter.js.map +1 -1
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/bootstrap.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/bootstrap.test.js +23 -0
- package/dist/ralphthon/__tests__/bootstrap.test.js.map +1 -0
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/orchestrator.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/orchestrator.test.js +309 -0
- package/dist/ralphthon/__tests__/orchestrator.test.js.map +1 -0
- package/dist/ralphthon/__tests__/prd.test.d.ts +2 -0
- package/dist/ralphthon/__tests__/prd.test.d.ts.map +1 -0
- package/dist/ralphthon/__tests__/prd.test.js +133 -0
- package/dist/ralphthon/__tests__/prd.test.js.map +1 -0
- package/dist/ralphthon/bootstrap.d.ts +3 -0
- package/dist/ralphthon/bootstrap.d.ts.map +1 -0
- package/dist/ralphthon/bootstrap.js +84 -0
- package/dist/ralphthon/bootstrap.js.map +1 -0
- package/dist/ralphthon/orchestrator.d.ts +50 -0
- package/dist/ralphthon/orchestrator.d.ts.map +1 -0
- package/dist/ralphthon/orchestrator.js +362 -0
- package/dist/ralphthon/orchestrator.js.map +1 -0
- package/dist/ralphthon/prd.d.ts +191 -0
- package/dist/ralphthon/prd.d.ts.map +1 -0
- package/dist/ralphthon/prd.js +359 -0
- package/dist/ralphthon/prd.js.map +1 -0
- package/dist/ralphthon/runtime.d.ts +31 -0
- package/dist/ralphthon/runtime.d.ts.map +1 -0
- package/dist/ralphthon/runtime.js +108 -0
- package/dist/ralphthon/runtime.js.map +1 -0
- package/dist/ralphthon/tmux.d.ts +3 -0
- package/dist/ralphthon/tmux.d.ts.map +1 -0
- package/dist/ralphthon/tmux.js +39 -0
- package/dist/ralphthon/tmux.js.map +1 -0
- package/dist/subagents/__tests__/tracker.test.d.ts +2 -0
- package/dist/subagents/__tests__/tracker.test.d.ts.map +1 -0
- package/dist/subagents/__tests__/tracker.test.js +47 -0
- package/dist/subagents/__tests__/tracker.test.js.map +1 -0
- package/dist/subagents/tracker.d.ts +52 -0
- package/dist/subagents/tracker.d.ts.map +1 -0
- package/dist/subagents/tracker.js +175 -0
- package/dist/subagents/tracker.js.map +1 -0
- package/dist/team/__tests__/runtime.test.js +2 -2
- package/dist/team/__tests__/runtime.test.js.map +1 -1
- package/dist/team/__tests__/tmux-session.test.js +34 -0
- package/dist/team/__tests__/tmux-session.test.js.map +1 -1
- package/dist/team/__tests__/worker-bootstrap.test.js +189 -163
- package/dist/team/__tests__/worker-bootstrap.test.js.map +1 -1
- package/dist/team/__tests__/worktree.test.js +1 -1
- package/dist/team/__tests__/worktree.test.js.map +1 -1
- package/dist/team/tmux-session.d.ts +4 -4
- package/dist/team/tmux-session.d.ts.map +1 -1
- package/dist/team/tmux-session.js +48 -15
- package/dist/team/tmux-session.js.map +1 -1
- package/dist/team/worker-bootstrap.d.ts +1 -1
- package/dist/team/worker-bootstrap.d.ts.map +1 -1
- package/dist/team/worker-bootstrap.js +58 -63
- package/dist/team/worker-bootstrap.js.map +1 -1
- package/dist/team/worktree.js +1 -1
- package/dist/team/worktree.js.map +1 -1
- package/dist/utils/__tests__/agents-md.test.d.ts +2 -0
- package/dist/utils/__tests__/agents-md.test.d.ts.map +1 -0
- package/dist/utils/__tests__/agents-md.test.js +32 -0
- package/dist/utils/__tests__/agents-md.test.js.map +1 -0
- package/dist/utils/__tests__/agents-model-table.test.d.ts +2 -0
- package/dist/utils/__tests__/agents-model-table.test.d.ts.map +1 -0
- package/dist/utils/__tests__/agents-model-table.test.js +84 -0
- package/dist/utils/__tests__/agents-model-table.test.js.map +1 -0
- package/dist/utils/__tests__/paths.test.js +78 -83
- package/dist/utils/__tests__/paths.test.js.map +1 -1
- package/dist/utils/agents-md.d.ts.map +1 -1
- package/dist/utils/agents-md.js +10 -0
- package/dist/utils/agents-md.js.map +1 -1
- package/dist/utils/agents-model-table.d.ts +16 -0
- package/dist/utils/agents-model-table.d.ts.map +1 -0
- package/dist/utils/agents-model-table.js +83 -0
- package/dist/utils/agents-model-table.js.map +1 -0
- package/dist/utils/paths.d.ts +6 -6
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +31 -31
- package/dist/utils/paths.js.map +1 -1
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js +21 -3
- package/dist/verification/__tests__/explore-harness-release-workflow.test.js.map +1 -1
- package/dist/verification/__tests__/native-release-manifest.test.d.ts +2 -0
- package/dist/verification/__tests__/native-release-manifest.test.d.ts.map +1 -0
- package/dist/verification/__tests__/native-release-manifest.test.js +80 -0
- package/dist/verification/__tests__/native-release-manifest.test.js.map +1 -0
- package/package.json +1 -1
- package/prompts/executor.md +15 -0
- package/scripts/__tests__/smoke-packed-install.test.mjs +137 -8
- package/scripts/eval-adaptive-sort-optimization.py +24 -0
- package/scripts/eval-in-action-cat-shellout-demo.js +31 -0
- package/scripts/eval-ml-kaggle-model-optimization.py +29 -0
- package/scripts/eval-noisy-bayesopt-highdim.py +44 -0
- package/scripts/eval-noisy-latent-subspace-discovery.py +44 -0
- package/scripts/generate-native-release-manifest.mjs +14 -3
- package/scripts/notify-fallback-watcher.js +308 -6
- package/scripts/notify-hook.js +20 -0
- package/scripts/run-autoresearch-showcase.sh +75 -0
- package/scripts/smoke-packed-install.mjs +142 -10
- package/skills/ai-slop-cleaner/SKILL.md +7 -0
- package/skills/deep-interview/SKILL.md +30 -1
- package/skills/omx-setup/SKILL.md +2 -2
- package/skills/ralph/SKILL.md +15 -0
- package/skills/skill/SKILL.md +32 -32
- package/skills/team/SKILL.md +6 -0
- package/skills/worker/SKILL.md +2 -2
- package/templates/AGENTS.md +97 -16
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native-resolution.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native-resolution.test.js.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.d.ts +0 -2
- package/dist/cli/__tests__/runtime-native.test.d.ts.map +0 -1
- package/dist/cli/__tests__/runtime-native.test.js.map +0 -1
- package/dist/cli/runtime-native.d.ts +0 -23
- package/dist/cli/runtime-native.d.ts.map +0 -1
- package/dist/cli/runtime-native.js +0 -86
- package/dist/cli/runtime-native.js.map +0 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts +0 -2
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.d.ts.map +0 -1
- package/dist/mcp/__tests__/runtime-run-native-cutover.test.js.map +0 -1
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { describe, it } from 'node:test';
|
|
2
2
|
import assert from 'node:assert/strict';
|
|
3
3
|
import { execFileSync, spawnSync } from 'node:child_process';
|
|
4
|
-
import { existsSync } from 'node:fs';
|
|
4
|
+
import { existsSync, readdirSync, realpathSync } from 'node:fs';
|
|
5
5
|
import { mkdir, mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
|
|
6
|
-
import {
|
|
6
|
+
import { dirname, join } from 'node:path';
|
|
7
7
|
import { tmpdir } from 'node:os';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import { normalizeAutoresearchCodexArgs } from '../autoresearch.js';
|
|
9
|
+
import { normalizeAutoresearchCodexArgs, parseAutoresearchArgs } from '../autoresearch.js';
|
|
10
|
+
function withMockedTty(fn) {
|
|
11
|
+
const descriptor = Object.getOwnPropertyDescriptor(process.stdin, 'isTTY');
|
|
12
|
+
Object.defineProperty(process.stdin, 'isTTY', { configurable: true, value: true });
|
|
13
|
+
return fn().finally(() => {
|
|
14
|
+
if (descriptor) {
|
|
15
|
+
Object.defineProperty(process.stdin, 'isTTY', descriptor);
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
Object.defineProperty(process.stdin, 'isTTY', { configurable: true, value: false });
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
}
|
|
10
22
|
function runOmx(cwd, argv, envOverrides = {}) {
|
|
11
23
|
const testDir = dirname(fileURLToPath(import.meta.url));
|
|
12
24
|
const repoRoot = join(testDir, '..', '..', '..');
|
|
@@ -25,7 +37,8 @@ function runOmx(cwd, argv, envOverrides = {}) {
|
|
|
25
37
|
return { status: r.status, stdout: r.stdout || '', stderr: r.stderr || '', error: r.error?.message };
|
|
26
38
|
}
|
|
27
39
|
async function initRepo() {
|
|
28
|
-
const
|
|
40
|
+
const raw = await mkdtemp(join(tmpdir(), 'omx-autoresearch-test-'));
|
|
41
|
+
const cwd = realpathSync(raw);
|
|
29
42
|
execFileSync('git', ['init'], { cwd, stdio: 'ignore' });
|
|
30
43
|
execFileSync('git', ['config', 'user.email', 'test@example.com'], { cwd, stdio: 'ignore' });
|
|
31
44
|
execFileSync('git', ['config', 'user.name', 'Test User'], { cwd, stdio: 'ignore' });
|
|
@@ -62,8 +75,11 @@ describe('omx autoresearch', () => {
|
|
|
62
75
|
try {
|
|
63
76
|
const result = runOmx(cwd, ['autoresearch', '--help']);
|
|
64
77
|
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
65
|
-
assert.match(result.stdout, /Usage:[\s\S]*omx autoresearch <mission-dir>/i);
|
|
78
|
+
assert.match(result.stdout, /Usage:[\s\S]*omx autoresearch run <mission-dir>/i);
|
|
66
79
|
assert.match(result.stdout, /omx autoresearch init/i);
|
|
80
|
+
assert.match(result.stdout, /--topic\/\.\.\./i);
|
|
81
|
+
assert.match(result.stdout, /deep-interview/i);
|
|
82
|
+
assert.match(result.stdout, /human entrypoint/i);
|
|
67
83
|
assert.doesNotMatch(result.stdout, /oh-my-codex \(omx\) - Multi-agent orchestration for Codex CLI/i);
|
|
68
84
|
}
|
|
69
85
|
finally {
|
|
@@ -93,6 +109,452 @@ describe('omx autoresearch', () => {
|
|
|
93
109
|
await rm(cwd, { recursive: true, force: true });
|
|
94
110
|
}
|
|
95
111
|
});
|
|
112
|
+
it('treats top-level topic/evaluator flags as seeded deep-interview input', () => {
|
|
113
|
+
const parsed = parseAutoresearchArgs(['--topic', 'Improve docs', '--evaluator', 'node eval.js', '--slug', 'docs-run']);
|
|
114
|
+
assert.equal(parsed.guided, true);
|
|
115
|
+
assert.equal(parsed.seedArgs?.topic, 'Improve docs');
|
|
116
|
+
assert.equal(parsed.seedArgs?.evaluatorCommand, 'node eval.js');
|
|
117
|
+
assert.equal(parsed.seedArgs?.slug, 'docs-run');
|
|
118
|
+
});
|
|
119
|
+
it('treats bare init as guided alias and init with flags as expert init args', () => {
|
|
120
|
+
const bare = parseAutoresearchArgs(['init']);
|
|
121
|
+
assert.equal(bare.guided, true);
|
|
122
|
+
assert.deepEqual(bare.initArgs, []);
|
|
123
|
+
const flagged = parseAutoresearchArgs(['init', '--topic', 'Ship feature']);
|
|
124
|
+
assert.equal(flagged.guided, true);
|
|
125
|
+
assert.deepEqual(flagged.initArgs, ['--topic', 'Ship feature']);
|
|
126
|
+
});
|
|
127
|
+
it('parses explicit run subcommand without breaking bare mission-dir execution', () => {
|
|
128
|
+
const runParsed = parseAutoresearchArgs(['run', 'missions/demo', '--model', 'gpt-5']);
|
|
129
|
+
assert.equal(runParsed.runSubcommand, true);
|
|
130
|
+
assert.equal(runParsed.missionDir, 'missions/demo');
|
|
131
|
+
assert.deepEqual(runParsed.codexArgs, ['--model', 'gpt-5']);
|
|
132
|
+
const bareParsed = parseAutoresearchArgs(['missions/demo', '--model', 'gpt-5']);
|
|
133
|
+
assert.equal(bareParsed.runSubcommand, undefined);
|
|
134
|
+
assert.equal(bareParsed.missionDir, 'missions/demo');
|
|
135
|
+
assert.deepEqual(bareParsed.codexArgs, ['--model', 'gpt-5']);
|
|
136
|
+
});
|
|
137
|
+
it('resolves guided deep-interview artifacts by seeded slug even when file mtimes predate launch timestamp', async () => {
|
|
138
|
+
const repo = await initRepo();
|
|
139
|
+
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-autoresearch-deep-interview-mtime-bin-'));
|
|
140
|
+
try {
|
|
141
|
+
const fakeCodexPath = join(fakeBin, 'codex');
|
|
142
|
+
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
143
|
+
if [ "$1" = "exec" ]; then
|
|
144
|
+
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
145
|
+
head_commit=$(git rev-parse HEAD)
|
|
146
|
+
cat >"$candidate_file" <<'EOF'
|
|
147
|
+
{
|
|
148
|
+
"status": "abort",
|
|
149
|
+
"candidate_commit": null,
|
|
150
|
+
"base_commit": "HEAD_PLACEHOLDER",
|
|
151
|
+
"description": "stop after guided handoff",
|
|
152
|
+
"notes": ["fake codex exec"],
|
|
153
|
+
"created_at": "2026-03-18T00:00:00.000Z"
|
|
154
|
+
}
|
|
155
|
+
EOF
|
|
156
|
+
perl -0pi -e "s/HEAD_PLACEHOLDER/$head_commit/g" "$candidate_file"
|
|
157
|
+
exit 0
|
|
158
|
+
fi
|
|
159
|
+
mkdir -p "$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch"
|
|
160
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/deep-interview-autoresearch-test-launch.md" <<'EOF'
|
|
161
|
+
# Deep Interview Autoresearch Draft — test-launch
|
|
162
|
+
|
|
163
|
+
## Mission Draft
|
|
164
|
+
Investigate flaky onboarding behavior
|
|
165
|
+
|
|
166
|
+
## Evaluator Draft
|
|
167
|
+
node scripts/eval.js
|
|
168
|
+
|
|
169
|
+
## Keep Policy
|
|
170
|
+
score_improvement
|
|
171
|
+
|
|
172
|
+
## Session Slug
|
|
173
|
+
test-launch
|
|
174
|
+
|
|
175
|
+
## Seed Inputs
|
|
176
|
+
- topic: (none)
|
|
177
|
+
- evaluator: (none)
|
|
178
|
+
- keep_policy: (none)
|
|
179
|
+
- slug: (none)
|
|
180
|
+
|
|
181
|
+
## Launch Readiness
|
|
182
|
+
Launch-ready: yes
|
|
183
|
+
- Evaluator command is concrete and can be compiled into sandbox.md
|
|
184
|
+
|
|
185
|
+
## Confirmation Bridge
|
|
186
|
+
- refine further
|
|
187
|
+
- launch
|
|
188
|
+
EOF
|
|
189
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/mission.md" <<'EOF'
|
|
190
|
+
# Mission
|
|
191
|
+
|
|
192
|
+
Investigate flaky onboarding behavior
|
|
193
|
+
EOF
|
|
194
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/sandbox.md" <<'EOF'
|
|
195
|
+
---
|
|
196
|
+
evaluator:
|
|
197
|
+
command: node scripts/eval.js
|
|
198
|
+
format: json
|
|
199
|
+
keep_policy: score_improvement
|
|
200
|
+
---
|
|
201
|
+
EOF
|
|
202
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/result.json" <<'EOF'
|
|
203
|
+
{
|
|
204
|
+
"kind": "omx.autoresearch.deep-interview/v1",
|
|
205
|
+
"compileTarget": {
|
|
206
|
+
"topic": "Investigate flaky onboarding behavior",
|
|
207
|
+
"evaluatorCommand": "node scripts/eval.js",
|
|
208
|
+
"keepPolicy": "score_improvement",
|
|
209
|
+
"slug": "test-launch",
|
|
210
|
+
"repoRoot": "${repo}"
|
|
211
|
+
},
|
|
212
|
+
"draftArtifactPath": "${repo}/.omx/specs/deep-interview-autoresearch-test-launch.md",
|
|
213
|
+
"missionArtifactPath": "${repo}/.omx/specs/autoresearch-test-launch/mission.md",
|
|
214
|
+
"sandboxArtifactPath": "${repo}/.omx/specs/autoresearch-test-launch/sandbox.md",
|
|
215
|
+
"launchReady": true,
|
|
216
|
+
"blockedReasons": []
|
|
217
|
+
}
|
|
218
|
+
EOF
|
|
219
|
+
touch -t 202603180000 "$OMX_TEST_REPO_ROOT/.omx/specs/deep-interview-autoresearch-test-launch.md"
|
|
220
|
+
touch -t 202603180000 "$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/mission.md"
|
|
221
|
+
touch -t 202603180000 "$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/sandbox.md"
|
|
222
|
+
touch -t 202603180000 "$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/result.json"
|
|
223
|
+
`, 'utf-8');
|
|
224
|
+
execFileSync('chmod', ['+x', fakeCodexPath], { stdio: 'ignore' });
|
|
225
|
+
const result = runOmx(repo, ['autoresearch', '--topic', 'Investigate flaky onboarding behavior', '--evaluator', 'node scripts/eval.js', '--slug', 'test-launch'], {
|
|
226
|
+
PATH: `${fakeBin}:${process.env.PATH || ''}`,
|
|
227
|
+
OMX_TEST_REPO_ROOT: repo,
|
|
228
|
+
});
|
|
229
|
+
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
230
|
+
const missionContent = await readFile(join(repo, 'missions', 'test-launch', 'mission.md'), 'utf-8');
|
|
231
|
+
const sandboxContent = await readFile(join(repo, 'missions', 'test-launch', 'sandbox.md'), 'utf-8');
|
|
232
|
+
assert.match(missionContent, /Investigate flaky onboarding behavior/);
|
|
233
|
+
assert.match(sandboxContent, /command: node scripts\/eval\.js/);
|
|
234
|
+
}
|
|
235
|
+
finally {
|
|
236
|
+
await rm(repo, { recursive: true, force: true });
|
|
237
|
+
await rm(fakeBin, { recursive: true, force: true });
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
it('launches interactive deep-interview intake, materializes mission files, and then prefers split-pane handoff', async () => {
|
|
241
|
+
const repo = await initRepo();
|
|
242
|
+
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-autoresearch-deep-interview-bin-'));
|
|
243
|
+
try {
|
|
244
|
+
const codexLog = join(repo, 'codex-launch.log');
|
|
245
|
+
const tmuxLog = join(repo, 'guided-tmux.log');
|
|
246
|
+
const fakeCodexPath = join(fakeBin, 'codex');
|
|
247
|
+
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
248
|
+
printf '%s\n' "$*" >>"${codexLog}"
|
|
249
|
+
if [ "$1" = "exec" ]; then
|
|
250
|
+
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
251
|
+
head_commit=$(git rev-parse HEAD)
|
|
252
|
+
cat >"$candidate_file" <<'EOF'
|
|
253
|
+
{
|
|
254
|
+
"status": "abort",
|
|
255
|
+
"candidate_commit": null,
|
|
256
|
+
"base_commit": "HEAD_PLACEHOLDER",
|
|
257
|
+
"description": "stop after guided handoff",
|
|
258
|
+
"notes": ["fake codex exec"],
|
|
259
|
+
"created_at": "2026-03-18T00:00:00.000Z"
|
|
260
|
+
}
|
|
261
|
+
EOF
|
|
262
|
+
perl -0pi -e "s/HEAD_PLACEHOLDER/$head_commit/g" "$candidate_file"
|
|
263
|
+
exit 0
|
|
264
|
+
fi
|
|
265
|
+
mkdir -p "$OMX_TEST_REPO_ROOT/.omx/specs/deep-int"
|
|
266
|
+
mkdir -p "$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch"
|
|
267
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/deep-interview-autoresearch-test-launch.md" <<'EOF'
|
|
268
|
+
# Deep Interview Autoresearch Draft — test-launch
|
|
269
|
+
|
|
270
|
+
## Mission Draft
|
|
271
|
+
Investigate flaky onboarding behavior
|
|
272
|
+
|
|
273
|
+
## Evaluator Draft
|
|
274
|
+
node scripts/eval.js
|
|
275
|
+
|
|
276
|
+
## Keep Policy
|
|
277
|
+
score_improvement
|
|
278
|
+
|
|
279
|
+
## Session Slug
|
|
280
|
+
test-launch
|
|
281
|
+
|
|
282
|
+
## Seed Inputs
|
|
283
|
+
- topic: (none)
|
|
284
|
+
- evaluator: (none)
|
|
285
|
+
- keep_policy: (none)
|
|
286
|
+
- slug: (none)
|
|
287
|
+
|
|
288
|
+
## Launch Readiness
|
|
289
|
+
Launch-ready: yes
|
|
290
|
+
- Evaluator command is concrete and can be compiled into sandbox.md
|
|
291
|
+
|
|
292
|
+
## Confirmation Bridge
|
|
293
|
+
- refine further
|
|
294
|
+
- launch
|
|
295
|
+
EOF
|
|
296
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/mission.md" <<'EOF'
|
|
297
|
+
# Mission
|
|
298
|
+
|
|
299
|
+
Investigate flaky onboarding behavior
|
|
300
|
+
EOF
|
|
301
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/sandbox.md" <<'EOF'
|
|
302
|
+
---
|
|
303
|
+
evaluator:
|
|
304
|
+
command: node scripts/eval.js
|
|
305
|
+
format: json
|
|
306
|
+
keep_policy: score_improvement
|
|
307
|
+
---
|
|
308
|
+
EOF
|
|
309
|
+
cat >"$OMX_TEST_REPO_ROOT/.omx/specs/autoresearch-test-launch/result.json" <<'EOF'
|
|
310
|
+
{
|
|
311
|
+
"kind": "omx.autoresearch.deep-interview/v1",
|
|
312
|
+
"compileTarget": {
|
|
313
|
+
"topic": "Investigate flaky onboarding behavior",
|
|
314
|
+
"evaluatorCommand": "node scripts/eval.js",
|
|
315
|
+
"keepPolicy": "score_improvement",
|
|
316
|
+
"slug": "test-launch",
|
|
317
|
+
"repoRoot": "${repo}"
|
|
318
|
+
},
|
|
319
|
+
"draftArtifactPath": "${repo}/.omx/specs/deep-interview-autoresearch-test-launch.md",
|
|
320
|
+
"missionArtifactPath": "${repo}/.omx/specs/autoresearch-test-launch/mission.md",
|
|
321
|
+
"sandboxArtifactPath": "${repo}/.omx/specs/autoresearch-test-launch/sandbox.md",
|
|
322
|
+
"launchReady": true,
|
|
323
|
+
"blockedReasons": []
|
|
324
|
+
}
|
|
325
|
+
EOF
|
|
326
|
+
`, 'utf-8');
|
|
327
|
+
execFileSync('chmod', ['+x', fakeCodexPath], { stdio: 'ignore' });
|
|
328
|
+
const fakeTmuxPath = join(fakeBin, 'tmux');
|
|
329
|
+
await writeFile(fakeTmuxPath, `#!/bin/sh
|
|
330
|
+
printf '%s\n' "$*" >>"${tmuxLog}"
|
|
331
|
+
case "$1" in
|
|
332
|
+
-V)
|
|
333
|
+
printf 'tmux 3.4\n'
|
|
334
|
+
exit 0
|
|
335
|
+
;;
|
|
336
|
+
display-message)
|
|
337
|
+
case "$*" in
|
|
338
|
+
*"#{pane_id}"*) printf '%%42\n' ;;
|
|
339
|
+
*"#{pane_current_path}"*) printf '%s\n' "$OMX_TEST_REPO_ROOT" ;;
|
|
340
|
+
*"#S"*) printf 'devsession\n' ;;
|
|
341
|
+
*) printf 'devsession\n' ;;
|
|
342
|
+
esac
|
|
343
|
+
exit 0
|
|
344
|
+
;;
|
|
345
|
+
list-panes)
|
|
346
|
+
exit 0
|
|
347
|
+
;;
|
|
348
|
+
split-window)
|
|
349
|
+
last=""
|
|
350
|
+
for arg in "$@"; do
|
|
351
|
+
last="$arg"
|
|
352
|
+
done
|
|
353
|
+
printf '%%2\n'
|
|
354
|
+
if printf '%s' "$last" | grep -q 'autoresearch '; then
|
|
355
|
+
/bin/sh -lc "$last"
|
|
356
|
+
fi
|
|
357
|
+
exit 0
|
|
358
|
+
;;
|
|
359
|
+
attach-session|set-option|set-hook|kill-session|kill-pane)
|
|
360
|
+
exit 0
|
|
361
|
+
;;
|
|
362
|
+
*)
|
|
363
|
+
exit 0
|
|
364
|
+
;;
|
|
365
|
+
esac
|
|
366
|
+
`, 'utf-8');
|
|
367
|
+
execFileSync('chmod', ['+x', fakeTmuxPath], { stdio: 'ignore' });
|
|
368
|
+
const result = runOmx(repo, ['autoresearch', '--topic', 'Investigate flaky onboarding behavior', '--evaluator', 'node scripts/eval.js', '--slug', 'test-launch'], {
|
|
369
|
+
PATH: `${fakeBin}:${process.env.PATH || ''}`,
|
|
370
|
+
OMX_TEST_REPO_ROOT: repo,
|
|
371
|
+
TMUX: '/tmp/fake-tmux,12345,0',
|
|
372
|
+
TMUX_PANE: '%42',
|
|
373
|
+
});
|
|
374
|
+
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
375
|
+
const codexArgs = await readFile(codexLog, 'utf-8');
|
|
376
|
+
const tmuxOutput = await readFile(tmuxLog, 'utf-8');
|
|
377
|
+
assert.match(codexArgs, /\$deep-interview --autoresearch/);
|
|
378
|
+
assert.match(tmuxOutput, /split-window -h -t %42 -d -P -F #\{pane_id\} -c/);
|
|
379
|
+
const missionContent = await readFile(join(repo, 'missions', 'test-launch', 'mission.md'), 'utf-8');
|
|
380
|
+
const sandboxContent = await readFile(join(repo, 'missions', 'test-launch', 'sandbox.md'), 'utf-8');
|
|
381
|
+
assert.match(missionContent, /Investigate flaky onboarding behavior/);
|
|
382
|
+
assert.match(sandboxContent, /command: node scripts\/eval\.js/);
|
|
383
|
+
}
|
|
384
|
+
finally {
|
|
385
|
+
await rm(repo, { recursive: true, force: true });
|
|
386
|
+
await rm(fakeBin, { recursive: true, force: true });
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
it('uses split-window launch for explicit run inside tmux while preserving the interview pane', async () => {
|
|
390
|
+
const repo = await initRepo();
|
|
391
|
+
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-autoresearch-run-split-bin-'));
|
|
392
|
+
try {
|
|
393
|
+
const missionDir = join(repo, 'missions', 'demo');
|
|
394
|
+
const tmuxLog = join(repo, 'tmux.log');
|
|
395
|
+
await mkdir(missionDir, { recursive: true });
|
|
396
|
+
await mkdir(join(repo, 'scripts'), { recursive: true });
|
|
397
|
+
await writeFile(join(missionDir, 'mission.md'), '# Mission\nSplit pane launch.\n', 'utf-8');
|
|
398
|
+
await writeFile(join(missionDir, 'sandbox.md'), '---\nevaluator:\n command: node scripts/eval.js\n format: json\n keep_policy: pass_only\n---\nStay inside the mission boundary.\n', 'utf-8');
|
|
399
|
+
await writeFile(join(repo, 'scripts', 'eval.js'), "process.stdout.write(JSON.stringify({ pass: true }));\n", 'utf-8');
|
|
400
|
+
execFileSync('git', ['add', '.'], { cwd: repo, stdio: 'ignore' });
|
|
401
|
+
execFileSync('git', ['commit', '-m', 'add autoresearch mission'], { cwd: repo, stdio: 'ignore' });
|
|
402
|
+
const fakeCodexPath = join(fakeBin, 'codex');
|
|
403
|
+
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
404
|
+
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
405
|
+
head_commit=$(git rev-parse HEAD)
|
|
406
|
+
cat >"$candidate_file" <<'EOF'
|
|
407
|
+
{
|
|
408
|
+
"status": "abort",
|
|
409
|
+
"candidate_commit": null,
|
|
410
|
+
"base_commit": "HEAD_PLACEHOLDER",
|
|
411
|
+
"description": "stop after split launch",
|
|
412
|
+
"notes": ["fake codex exec"],
|
|
413
|
+
"created_at": "2026-03-18T00:00:00.000Z"
|
|
414
|
+
}
|
|
415
|
+
EOF
|
|
416
|
+
perl -0pi -e "s/HEAD_PLACEHOLDER/$head_commit/g" "$candidate_file"
|
|
417
|
+
`, 'utf-8');
|
|
418
|
+
execFileSync('chmod', ['+x', fakeCodexPath], { stdio: 'ignore' });
|
|
419
|
+
const fakeTmuxPath = join(fakeBin, 'tmux');
|
|
420
|
+
await writeFile(fakeTmuxPath, `#!/bin/sh
|
|
421
|
+
printf '%s\n' "$*" >>"${tmuxLog}"
|
|
422
|
+
case "$1" in
|
|
423
|
+
-V)
|
|
424
|
+
printf 'tmux 3.4\n'
|
|
425
|
+
exit 0
|
|
426
|
+
;;
|
|
427
|
+
display-message)
|
|
428
|
+
case "$*" in
|
|
429
|
+
*"#{pane_id}"*) printf '%%9\n' ;;
|
|
430
|
+
*"#{pane_current_path}"*) printf '${repo}\n' ;;
|
|
431
|
+
*"#S"*) printf 'devsess\n' ;;
|
|
432
|
+
*) printf '0\n' ;;
|
|
433
|
+
esac
|
|
434
|
+
exit 0
|
|
435
|
+
;;
|
|
436
|
+
list-panes)
|
|
437
|
+
printf '%%9\tzsh\tomx autoresearch\n'
|
|
438
|
+
exit 0
|
|
439
|
+
;;
|
|
440
|
+
split-window)
|
|
441
|
+
last=""
|
|
442
|
+
for arg in "$@"; do
|
|
443
|
+
last="$arg"
|
|
444
|
+
done
|
|
445
|
+
if printf '%s' "$last" | grep -q 'hud --watch'; then
|
|
446
|
+
printf '%%3\n'
|
|
447
|
+
exit 0
|
|
448
|
+
fi
|
|
449
|
+
printf '%%2\n'
|
|
450
|
+
/bin/sh -lc "$last"
|
|
451
|
+
exit 0
|
|
452
|
+
;;
|
|
453
|
+
set-option|select-pane)
|
|
454
|
+
exit 0
|
|
455
|
+
;;
|
|
456
|
+
*)
|
|
457
|
+
exit 0
|
|
458
|
+
;;
|
|
459
|
+
esac
|
|
460
|
+
`, 'utf-8');
|
|
461
|
+
execFileSync('chmod', ['+x', fakeTmuxPath], { stdio: 'ignore' });
|
|
462
|
+
const result = runOmx(repo, ['autoresearch', 'run', missionDir, '--model', 'gpt-5'], {
|
|
463
|
+
PATH: `${fakeBin}:${process.env.PATH || ''}`,
|
|
464
|
+
OMX_TEST_REPO_ROOT: repo,
|
|
465
|
+
TMUX: '/tmp/fake-tmux,12345,0',
|
|
466
|
+
TMUX_PANE: '%9',
|
|
467
|
+
});
|
|
468
|
+
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
469
|
+
const tmuxOutput = await readFile(tmuxLog, 'utf-8');
|
|
470
|
+
assert.match(tmuxOutput, /split-window -h -t %9 -d -P -F #\{pane_id\} -c/);
|
|
471
|
+
assert.match(tmuxOutput, /'autoresearch' '\/tmp\/[^']+\/missions\/demo' '--model' 'gpt-5'/);
|
|
472
|
+
assert.doesNotMatch(tmuxOutput, /kill-pane -t %9/);
|
|
473
|
+
}
|
|
474
|
+
finally {
|
|
475
|
+
await rm(repo, { recursive: true, force: true });
|
|
476
|
+
await rm(fakeBin, { recursive: true, force: true });
|
|
477
|
+
}
|
|
478
|
+
});
|
|
479
|
+
it('falls back to foreground execution when tmux split-window fails', async () => {
|
|
480
|
+
const repo = await initRepo();
|
|
481
|
+
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-autoresearch-run-fallback-bin-'));
|
|
482
|
+
try {
|
|
483
|
+
const missionDir = join(repo, 'missions', 'demo');
|
|
484
|
+
await mkdir(missionDir, { recursive: true });
|
|
485
|
+
await mkdir(join(repo, 'scripts'), { recursive: true });
|
|
486
|
+
await writeFile(join(missionDir, 'mission.md'), '# Mission\nFallback launch.\n', 'utf-8');
|
|
487
|
+
await writeFile(join(missionDir, 'sandbox.md'), '---\nevaluator:\n command: node scripts/eval.js\n format: json\n keep_policy: pass_only\n---\nStay inside the mission boundary.\n', 'utf-8');
|
|
488
|
+
await writeFile(join(repo, 'scripts', 'eval.js'), "process.stdout.write(JSON.stringify({ pass: true }));\n", 'utf-8');
|
|
489
|
+
execFileSync('git', ['add', '.'], { cwd: repo, stdio: 'ignore' });
|
|
490
|
+
execFileSync('git', ['commit', '-m', 'add autoresearch mission'], { cwd: repo, stdio: 'ignore' });
|
|
491
|
+
const fakeCodexPath = join(fakeBin, 'codex');
|
|
492
|
+
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
493
|
+
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
494
|
+
head_commit=$(git rev-parse HEAD)
|
|
495
|
+
cat >"$candidate_file" <<'EOF'
|
|
496
|
+
{
|
|
497
|
+
"status": "abort",
|
|
498
|
+
"candidate_commit": null,
|
|
499
|
+
"base_commit": "HEAD_PLACEHOLDER",
|
|
500
|
+
"description": "stop after foreground fallback",
|
|
501
|
+
"notes": ["fake codex exec"],
|
|
502
|
+
"created_at": "2026-03-18T00:00:00.000Z"
|
|
503
|
+
}
|
|
504
|
+
EOF
|
|
505
|
+
perl -0pi -e "s/HEAD_PLACEHOLDER/$head_commit/g" "$candidate_file"
|
|
506
|
+
`, 'utf-8');
|
|
507
|
+
execFileSync('chmod', ['+x', fakeCodexPath], { stdio: 'ignore' });
|
|
508
|
+
const fakeTmuxPath = join(fakeBin, 'tmux');
|
|
509
|
+
await writeFile(fakeTmuxPath, `#!/bin/sh
|
|
510
|
+
case "$1" in
|
|
511
|
+
-V)
|
|
512
|
+
printf 'tmux 3.4\n'
|
|
513
|
+
exit 0
|
|
514
|
+
;;
|
|
515
|
+
display-message)
|
|
516
|
+
case "$*" in
|
|
517
|
+
*"#{pane_id}"*) printf '%%9\n' ;;
|
|
518
|
+
*"#{pane_current_path}"*) printf '${repo}\n' ;;
|
|
519
|
+
*"#S"*) printf 'devsess\n' ;;
|
|
520
|
+
*) printf '0\n' ;;
|
|
521
|
+
esac
|
|
522
|
+
exit 0
|
|
523
|
+
;;
|
|
524
|
+
list-panes)
|
|
525
|
+
printf '%%9\tzsh\tomx autoresearch\n'
|
|
526
|
+
exit 0
|
|
527
|
+
;;
|
|
528
|
+
split-window)
|
|
529
|
+
exit 1
|
|
530
|
+
;;
|
|
531
|
+
set-option|select-pane)
|
|
532
|
+
exit 0
|
|
533
|
+
;;
|
|
534
|
+
*)
|
|
535
|
+
exit 0
|
|
536
|
+
;;
|
|
537
|
+
esac
|
|
538
|
+
`, 'utf-8');
|
|
539
|
+
execFileSync('chmod', ['+x', fakeTmuxPath], { stdio: 'ignore' });
|
|
540
|
+
const result = runOmx(repo, ['autoresearch', 'run', missionDir], {
|
|
541
|
+
PATH: `${fakeBin}:${process.env.PATH || ''}`,
|
|
542
|
+
OMX_TEST_REPO_ROOT: repo,
|
|
543
|
+
TMUX: '/tmp/fake-tmux,12345,0',
|
|
544
|
+
TMUX_PANE: '%9',
|
|
545
|
+
});
|
|
546
|
+
assert.equal(result.status, 0, result.stderr || result.stdout);
|
|
547
|
+
const logsRoot = join(repo, '.omx', 'logs', 'autoresearch');
|
|
548
|
+
const [runId] = readdirSync(logsRoot, { withFileTypes: true })
|
|
549
|
+
.filter(d => d.isDirectory())
|
|
550
|
+
.map(d => d.name);
|
|
551
|
+
assert.ok(runId);
|
|
552
|
+
}
|
|
553
|
+
finally {
|
|
554
|
+
await rm(repo, { recursive: true, force: true });
|
|
555
|
+
await rm(fakeBin, { recursive: true, force: true });
|
|
556
|
+
}
|
|
557
|
+
});
|
|
96
558
|
it('rejects mission directories outside a git repo', async () => {
|
|
97
559
|
const cwd = await mkdtemp(join(tmpdir(), 'omx-autoresearch-outside-git-'));
|
|
98
560
|
try {
|
|
@@ -169,14 +631,14 @@ describe('omx autoresearch', () => {
|
|
|
169
631
|
const result = runOmx(repo, ['autoresearch', missionDir]);
|
|
170
632
|
assert.notEqual(result.status, 0, result.stderr || result.stdout);
|
|
171
633
|
assert.match(`${result.stderr}\n${result.stdout}`, /Cannot start autoresearch: ralph is already active/i);
|
|
172
|
-
const
|
|
173
|
-
assert.equal(existsSync(
|
|
634
|
+
const worktreesRoot = join(repo, '.omx', 'worktrees');
|
|
635
|
+
assert.equal(existsSync(worktreesRoot), false, 'expected launch to abort before creating autoresearch worktree');
|
|
174
636
|
}
|
|
175
637
|
finally {
|
|
176
638
|
await rm(repo, { recursive: true, force: true });
|
|
177
639
|
}
|
|
178
640
|
});
|
|
179
|
-
it('launches codex exec for autoresearch turns', async () => {
|
|
641
|
+
it('launches codex exec for autoresearch turns without shelling out to cat', async () => {
|
|
180
642
|
const repo = await initRepo();
|
|
181
643
|
const fakeBin = await mkdtemp(join(tmpdir(), 'omx-autoresearch-fake-bin-'));
|
|
182
644
|
try {
|
|
@@ -188,23 +650,21 @@ describe('omx autoresearch', () => {
|
|
|
188
650
|
await writeFile(join(repo, 'scripts', 'eval.js'), "process.stdout.write(JSON.stringify({ pass: true }));\n", 'utf-8');
|
|
189
651
|
execFileSync('git', ['add', '.'], { cwd: repo, stdio: 'ignore' });
|
|
190
652
|
execFileSync('git', ['commit', '-m', 'add autoresearch mission'], { cwd: repo, stdio: 'ignore' });
|
|
653
|
+
const fakeCatPath = join(fakeBin, 'cat');
|
|
654
|
+
await writeFile(fakeCatPath, `#!/bin/sh
|
|
655
|
+
printf 'unexpected cat invocation\\n' >&2
|
|
656
|
+
exit 97
|
|
657
|
+
`, 'utf-8');
|
|
658
|
+
execFileSync('chmod', ['+x', fakeCatPath], { stdio: 'ignore' });
|
|
191
659
|
const fakeCodexPath = join(fakeBin, 'codex');
|
|
192
660
|
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
193
661
|
printf 'fake-codex:%s\\n' "$*" >&2
|
|
194
|
-
|
|
195
|
-
|
|
662
|
+
while IFS= read -r _; do
|
|
663
|
+
:
|
|
664
|
+
done
|
|
196
665
|
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
197
666
|
head_commit=$(git rev-parse HEAD)
|
|
198
|
-
|
|
199
|
-
{
|
|
200
|
-
"status": "abort",
|
|
201
|
-
"candidate_commit": null,
|
|
202
|
-
"base_commit": "$head_commit",
|
|
203
|
-
"description": "stop after first exec",
|
|
204
|
-
"notes": ["fake codex exec"],
|
|
205
|
-
"created_at": "2026-03-15T00:00:00.000Z"
|
|
206
|
-
}
|
|
207
|
-
EOF
|
|
667
|
+
printf '{\\n "status": "abort",\\n "candidate_commit": null,\\n "base_commit": "%s",\\n "description": "stop after first exec",\\n "notes": ["fake codex exec"],\\n "created_at": "2026-03-15T00:00:00.000Z"\\n}\\n' "$head_commit" >"$candidate_file"
|
|
208
668
|
`, 'utf-8');
|
|
209
669
|
execFileSync('chmod', ['+x', fakeCodexPath], { stdio: 'ignore' });
|
|
210
670
|
const result = runOmx(repo, ['autoresearch', missionDir, '--dangerously-bypass-approvals-and-sandbox'], { PATH: `${fakeBin}:${process.env.PATH || ''}`, OMX_TEST_REPO_ROOT: repo });
|
|
@@ -231,7 +691,6 @@ EOF
|
|
|
231
691
|
const fakeCodexPath = join(fakeBin, 'codex');
|
|
232
692
|
await writeFile(fakeCodexPath, `#!/bin/sh
|
|
233
693
|
cat >/dev/null
|
|
234
|
-
candidate_file=$(find /tmp -path '*/.omx/logs/autoresearch/*/candidate.json' | head -n 1)
|
|
235
694
|
candidate_file=$(find "$OMX_TEST_REPO_ROOT/.omx/logs/autoresearch" -name candidate.json | head -n 1)
|
|
236
695
|
head_commit=$(git rev-parse HEAD)
|
|
237
696
|
cat >"$candidate_file" <<EOF
|
|
@@ -251,10 +710,9 @@ EOF
|
|
|
251
710
|
const state = JSON.parse(await readFile(join(repo, '.omx', 'state', 'autoresearch-state.json'), 'utf-8'));
|
|
252
711
|
assert.equal(state.active, false);
|
|
253
712
|
const logsRoot = join(repo, '.omx', 'logs', 'autoresearch');
|
|
254
|
-
const [runId] =
|
|
255
|
-
.
|
|
256
|
-
.
|
|
257
|
-
.filter(Boolean);
|
|
713
|
+
const [runId] = readdirSync(logsRoot, { withFileTypes: true })
|
|
714
|
+
.filter(d => d.isDirectory())
|
|
715
|
+
.map(d => d.name);
|
|
258
716
|
assert.ok(runId);
|
|
259
717
|
const manifest = JSON.parse(await readFile(join(logsRoot, runId, 'manifest.json'), 'utf-8'));
|
|
260
718
|
assert.equal(manifest.status, 'stopped');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoresearch.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/autoresearch.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"autoresearch.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/autoresearch.test.ts"],"names":[],"mappings":"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"}
|