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
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import assert from 'node:assert/strict';
|
|
2
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
3
|
+
import { mkdir, readFile, readdir, rm, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { spawnSync } from 'node:child_process';
|
|
5
|
+
import { createInterface } from 'node:readline/promises';
|
|
6
|
+
import { basename, join } from 'node:path';
|
|
7
|
+
import TOML from '@iarna/toml';
|
|
8
|
+
import { codexAgentsDir, projectCodexAgentsDir } from '../utils/paths.js';
|
|
9
|
+
export const RESERVED_NATIVE_AGENT_NAMES = new Set(['default', 'worker', 'explorer']);
|
|
10
|
+
const DEFAULT_AGENT_MODEL = 'gpt-5.4';
|
|
11
|
+
const AGENTS_USAGE = [
|
|
12
|
+
'Usage:',
|
|
13
|
+
' omx agents list [--scope user|project]',
|
|
14
|
+
' omx agents add <name> [--scope user|project] [--force]',
|
|
15
|
+
' omx agents edit <name> [--scope user|project]',
|
|
16
|
+
' omx agents remove <name> [--scope user|project] [--force]',
|
|
17
|
+
'',
|
|
18
|
+
'Manage Codex native agent TOML files under ~/.codex/agents/ or ./.codex/agents/.',
|
|
19
|
+
'',
|
|
20
|
+
'Notes:',
|
|
21
|
+
' - list shows project + user agents by default',
|
|
22
|
+
' - add defaults to project scope when this repo is set up for project scope; otherwise user',
|
|
23
|
+
' - remove prompts for confirmation unless --force is passed',
|
|
24
|
+
].join('\n');
|
|
25
|
+
function isReservedNativeAgentName(name) {
|
|
26
|
+
return RESERVED_NATIVE_AGENT_NAMES.has(name.trim());
|
|
27
|
+
}
|
|
28
|
+
function normalizeAgentName(name) {
|
|
29
|
+
const trimmed = name.trim();
|
|
30
|
+
if (!trimmed) {
|
|
31
|
+
throw new Error('agent name must not be empty');
|
|
32
|
+
}
|
|
33
|
+
if (!/^[A-Za-z0-9][A-Za-z0-9_-]*$/.test(trimmed)) {
|
|
34
|
+
throw new Error(`invalid agent name: ${name}`);
|
|
35
|
+
}
|
|
36
|
+
if (isReservedNativeAgentName(trimmed)) {
|
|
37
|
+
throw new Error(`"${trimmed}" is reserved by Codex built-in agents`);
|
|
38
|
+
}
|
|
39
|
+
return trimmed;
|
|
40
|
+
}
|
|
41
|
+
function resolveAgentsDir(scope, cwd = process.cwd()) {
|
|
42
|
+
return scope === 'project' ? projectCodexAgentsDir(cwd) : codexAgentsDir();
|
|
43
|
+
}
|
|
44
|
+
function parseScopeArg(args) {
|
|
45
|
+
for (let i = 0; i < args.length; i += 1) {
|
|
46
|
+
const arg = args[i];
|
|
47
|
+
if (arg === '--scope') {
|
|
48
|
+
const value = args[i + 1];
|
|
49
|
+
if (value === 'user' || value === 'project')
|
|
50
|
+
return value;
|
|
51
|
+
throw new Error('Expected --scope user|project');
|
|
52
|
+
}
|
|
53
|
+
if (arg === '--scope=user')
|
|
54
|
+
return 'user';
|
|
55
|
+
if (arg === '--scope=project')
|
|
56
|
+
return 'project';
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
function inferMutationScope(cwd = process.cwd()) {
|
|
61
|
+
const persistedScopePath = join(cwd, '.omx', 'setup-scope.json');
|
|
62
|
+
if (existsSync(persistedScopePath)) {
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(readFileSync(persistedScopePath, 'utf8'));
|
|
65
|
+
if (parsed.scope === 'project' || parsed.scope === 'project-local')
|
|
66
|
+
return 'project';
|
|
67
|
+
if (parsed.scope === 'user')
|
|
68
|
+
return 'user';
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// fall through
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return existsSync(join(cwd, '.codex')) ? 'project' : 'user';
|
|
75
|
+
}
|
|
76
|
+
function getAgentFilePath(name, scope, cwd = process.cwd()) {
|
|
77
|
+
return join(resolveAgentsDir(scope, cwd), `${name}.toml`);
|
|
78
|
+
}
|
|
79
|
+
function scaffoldAgentToml(name) {
|
|
80
|
+
const normalized = normalizeAgentName(name);
|
|
81
|
+
return [
|
|
82
|
+
`# Codex native agent: ${normalized}`,
|
|
83
|
+
`name = "${normalized}"`,
|
|
84
|
+
'description = "TODO: describe this agent\'s purpose"',
|
|
85
|
+
'developer_instructions = """',
|
|
86
|
+
'TODO: add the operating instructions for this agent.',
|
|
87
|
+
'"""',
|
|
88
|
+
'',
|
|
89
|
+
'# Optional fields:',
|
|
90
|
+
`# model = "${DEFAULT_AGENT_MODEL}"`,
|
|
91
|
+
'# model_reasoning_effort = "medium"',
|
|
92
|
+
'# temperature = 0.2',
|
|
93
|
+
'# tools = ["shell", "apply_patch"]',
|
|
94
|
+
'',
|
|
95
|
+
].join('\n');
|
|
96
|
+
}
|
|
97
|
+
function parseAgentInfo(content, path, scope) {
|
|
98
|
+
const fallbackName = basename(path, '.toml');
|
|
99
|
+
try {
|
|
100
|
+
const parsed = TOML.parse(content);
|
|
101
|
+
return {
|
|
102
|
+
scope,
|
|
103
|
+
path,
|
|
104
|
+
file: basename(path),
|
|
105
|
+
name: typeof parsed.name === 'string' && parsed.name.trim() !== '' ? parsed.name : fallbackName,
|
|
106
|
+
description: typeof parsed.description === 'string' ? parsed.description : '',
|
|
107
|
+
model: typeof parsed.model === 'string' ? parsed.model : undefined,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return {
|
|
112
|
+
scope,
|
|
113
|
+
path,
|
|
114
|
+
file: basename(path),
|
|
115
|
+
name: fallbackName,
|
|
116
|
+
description: '<invalid TOML>',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function readScopeAgents(scope, cwd = process.cwd()) {
|
|
121
|
+
const dir = resolveAgentsDir(scope, cwd);
|
|
122
|
+
if (!existsSync(dir))
|
|
123
|
+
return [];
|
|
124
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
125
|
+
const agents = [];
|
|
126
|
+
for (const entry of entries) {
|
|
127
|
+
if (!entry.isFile() || !entry.name.endsWith('.toml'))
|
|
128
|
+
continue;
|
|
129
|
+
const path = join(dir, entry.name);
|
|
130
|
+
const content = await readFile(path, 'utf8');
|
|
131
|
+
agents.push(parseAgentInfo(content, path, scope));
|
|
132
|
+
}
|
|
133
|
+
return agents.sort((a, b) => a.name.localeCompare(b.name) || a.scope.localeCompare(b.scope));
|
|
134
|
+
}
|
|
135
|
+
export async function listNativeAgents(cwd = process.cwd(), scope) {
|
|
136
|
+
if (scope)
|
|
137
|
+
return readScopeAgents(scope, cwd);
|
|
138
|
+
const [projectAgents, userAgents] = await Promise.all([
|
|
139
|
+
readScopeAgents('project', cwd),
|
|
140
|
+
readScopeAgents('user', cwd),
|
|
141
|
+
]);
|
|
142
|
+
return [...projectAgents, ...userAgents].sort((a, b) => a.name.localeCompare(b.name) || a.scope.localeCompare(b.scope));
|
|
143
|
+
}
|
|
144
|
+
async function addNativeAgent(name, options = {}) {
|
|
145
|
+
const cwd = options.cwd ?? process.cwd();
|
|
146
|
+
const scope = options.scope ?? inferMutationScope(cwd);
|
|
147
|
+
const normalized = normalizeAgentName(name);
|
|
148
|
+
const path = getAgentFilePath(normalized, scope, cwd);
|
|
149
|
+
if (existsSync(path) && !options.force) {
|
|
150
|
+
throw new Error(`agent already exists: ${path}`);
|
|
151
|
+
}
|
|
152
|
+
await mkdir(resolveAgentsDir(scope, cwd), { recursive: true });
|
|
153
|
+
await writeFile(path, scaffoldAgentToml(normalized));
|
|
154
|
+
return path;
|
|
155
|
+
}
|
|
156
|
+
function resolveExistingAgentPath(name, options = {}) {
|
|
157
|
+
const cwd = options.cwd ?? process.cwd();
|
|
158
|
+
const normalized = normalizeAgentName(name);
|
|
159
|
+
const candidateScopes = options.scope ? [options.scope] : ['project', 'user'];
|
|
160
|
+
for (const scope of candidateScopes) {
|
|
161
|
+
const path = getAgentFilePath(normalized, scope, cwd);
|
|
162
|
+
if (existsSync(path))
|
|
163
|
+
return path;
|
|
164
|
+
}
|
|
165
|
+
throw new Error(`agent not found: ${normalized}`);
|
|
166
|
+
}
|
|
167
|
+
async function confirmRemove(path) {
|
|
168
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY)
|
|
169
|
+
return false;
|
|
170
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
171
|
+
try {
|
|
172
|
+
const answer = (await rl.question(`Delete native agent ${path}? [y/N]: `)).trim().toLowerCase();
|
|
173
|
+
return answer === 'y' || answer === 'yes';
|
|
174
|
+
}
|
|
175
|
+
finally {
|
|
176
|
+
rl.close();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
async function editNativeAgent(name, options = {}) {
|
|
180
|
+
const path = resolveExistingAgentPath(name, options);
|
|
181
|
+
const editor = options.editor ?? process.env.EDITOR ?? process.env.VISUAL ?? 'vi';
|
|
182
|
+
const result = spawnSync(editor, [path], {
|
|
183
|
+
stdio: 'inherit',
|
|
184
|
+
shell: true,
|
|
185
|
+
env: process.env,
|
|
186
|
+
});
|
|
187
|
+
if (result.status !== 0) {
|
|
188
|
+
throw new Error(`editor exited with status ${result.status ?? 'unknown'}`);
|
|
189
|
+
}
|
|
190
|
+
return path;
|
|
191
|
+
}
|
|
192
|
+
async function removeNativeAgent(name, options = {}) {
|
|
193
|
+
const path = resolveExistingAgentPath(name, options);
|
|
194
|
+
if (!options.force) {
|
|
195
|
+
const confirmed = await confirmRemove(path);
|
|
196
|
+
if (!confirmed) {
|
|
197
|
+
throw new Error('remove aborted (pass --force to skip confirmation)');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
await rm(path, { force: true });
|
|
201
|
+
return path;
|
|
202
|
+
}
|
|
203
|
+
function printAgentsTable(agents) {
|
|
204
|
+
if (agents.length === 0) {
|
|
205
|
+
console.log('No native agents found.');
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
const rows = [
|
|
209
|
+
['scope', 'name', 'model', 'description'],
|
|
210
|
+
...agents.map((agent) => [
|
|
211
|
+
agent.scope,
|
|
212
|
+
agent.name,
|
|
213
|
+
agent.model ?? '-',
|
|
214
|
+
agent.description || '-',
|
|
215
|
+
]),
|
|
216
|
+
];
|
|
217
|
+
const widths = rows[0].map((_, column) => Math.max(...rows.map((row) => row[column].length)));
|
|
218
|
+
for (const row of rows) {
|
|
219
|
+
console.log(row.map((cell, column) => cell.padEnd(widths[column])).join(' '));
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
export async function agentsCommand(args) {
|
|
223
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
224
|
+
console.log(AGENTS_USAGE);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
const subcommand = args[0];
|
|
228
|
+
const scope = parseScopeArg(args.slice(1));
|
|
229
|
+
const force = args.includes('--force');
|
|
230
|
+
switch (subcommand) {
|
|
231
|
+
case 'list': {
|
|
232
|
+
const agents = await listNativeAgents(process.cwd(), scope);
|
|
233
|
+
printAgentsTable(agents);
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
case 'add': {
|
|
237
|
+
const name = args[1];
|
|
238
|
+
assert.ok(name, 'Usage: omx agents add <name>');
|
|
239
|
+
const path = await addNativeAgent(name, { cwd: process.cwd(), scope, force });
|
|
240
|
+
console.log(`Created native agent: ${path}`);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
case 'edit': {
|
|
244
|
+
const name = args[1];
|
|
245
|
+
assert.ok(name, 'Usage: omx agents edit <name>');
|
|
246
|
+
const path = await editNativeAgent(name, { cwd: process.cwd(), scope });
|
|
247
|
+
console.log(`Edited native agent: ${path}`);
|
|
248
|
+
return;
|
|
249
|
+
}
|
|
250
|
+
case 'remove': {
|
|
251
|
+
const name = args[1];
|
|
252
|
+
assert.ok(name, 'Usage: omx agents remove <name>');
|
|
253
|
+
const path = await removeNativeAgent(name, { cwd: process.cwd(), scope, force });
|
|
254
|
+
console.log(`Removed native agent: ${path}`);
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
default:
|
|
258
|
+
throw new Error(`unknown agents subcommand: ${subcommand}`);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,IAAI,MAAM,aAAa,CAAC;AAC/B,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE1E,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AACtF,MAAM,mBAAmB,GAAG,SAAS,CAAC;AACtC,MAAM,YAAY,GAAG;IACnB,QAAQ;IACR,0CAA0C;IAC1C,0DAA0D;IAC1D,iDAAiD;IACjD,6DAA6D;IAC7D,EAAE;IACF,kFAAkF;IAClF,EAAE;IACF,QAAQ;IACR,iDAAiD;IACjD,8FAA8F;IAC9F,8DAA8D;CAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAab,SAAS,yBAAyB,CAAC,IAAY;IAC7C,OAAO,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,yBAAyB,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,wCAAwC,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC9D,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS;gBAAE,OAAO,KAAK,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,GAAG,KAAK,cAAc;YAAE,OAAO,MAAM,CAAC;QAC1C,IAAI,GAAG,KAAK,iBAAiB;YAAE,OAAO,SAAS,CAAC;IAClD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC7C,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,UAAU,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAuB,CAAC;YAC1F,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,MAAM,CAAC,KAAK,KAAK,eAAe;gBAAE,OAAO,SAAS,CAAC;YACrF,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM;gBAAE,OAAO,MAAM,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;AAC9D,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC5E,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO;QACL,yBAAyB,UAAU,EAAE;QACrC,WAAW,UAAU,GAAG;QACxB,sDAAsD;QACtD,8BAA8B;QAC9B,sDAAsD;QACtD,KAAK;QACL,EAAE;QACF,oBAAoB;QACpB,cAAc,mBAAmB,GAAG;QACpC,qCAAqC;QACrC,qBAAqB;QACrB,oCAAoC;QACpC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CACrB,OAAe,EACf,IAAY,EACZ,KAAiB;IAEjB,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAC9D,OAAO;YACL,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;YAC/F,WAAW,EAAE,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;YAC7E,KAAK,EAAE,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,KAAK;YACL,IAAI;YACJ,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,gBAAgB;SAC9B,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAiB,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IACnE,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,EACnB,KAAkB;IAElB,IAAI,KAAK;QAAE,OAAO,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACpD,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC;QAC/B,eAAe,CAAC,MAAM,EAAE,GAAG,CAAC;KAC7B,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,IAAY,EACZ,UAAiE,EAAE;IAEnE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,KAAK,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,wBAAwB,CAC/B,IAAY,EACZ,UAAgD,EAAE;IAElD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAiB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5F,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oBAAoB,UAAU,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY;IACvC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAChE,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uBAAuB,IAAI,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAChG,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;IAC5C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAAY,EACZ,UAAiE,EAAE;IAEnE,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC;IAClF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACvC,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,OAAO,CAAC,GAAG;KACjB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,IAAY,EACZ,UAAiE,EAAE;IAEnE,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyB;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG;QACX,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;QACzC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK;YACX,KAAK,CAAC,IAAI;YACV,KAAK,CAAC,KAAK,IAAI,GAAG;YAClB,KAAK,CAAC,WAAW,IAAI,GAAG;SACzB,CAAC;KACH,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEhG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAAc;IAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvC,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC5D,gBAAgB,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACT,CAAC;QACD,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,8BAA8B,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;YAC5C,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,iCAAiC,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAC7C,OAAO;QACT,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type AutoresearchKeepPolicy } from '../autoresearch/contracts.js';
|
|
2
|
+
import { type AutoresearchDeepInterviewResult, type AutoresearchSeedInputs } from './autoresearch-intake.js';
|
|
2
3
|
export interface InitAutoresearchOptions {
|
|
3
4
|
topic: string;
|
|
4
5
|
evaluatorCommand: string;
|
|
@@ -10,8 +11,15 @@ export interface InitAutoresearchResult {
|
|
|
10
11
|
missionDir: string;
|
|
11
12
|
slug: string;
|
|
12
13
|
}
|
|
14
|
+
export interface AutoresearchQuestionIO {
|
|
15
|
+
question(prompt: string): Promise<string>;
|
|
16
|
+
close(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function buildAutoresearchDeepInterviewPrompt(seedInputs?: AutoresearchSeedInputs): string;
|
|
19
|
+
export declare function materializeAutoresearchDeepInterviewResult(result: AutoresearchDeepInterviewResult): Promise<InitAutoresearchResult>;
|
|
13
20
|
export declare function initAutoresearchMission(opts: InitAutoresearchOptions): Promise<InitAutoresearchResult>;
|
|
14
21
|
export declare function parseInitArgs(args: readonly string[]): Partial<InitAutoresearchOptions>;
|
|
22
|
+
export declare function runAutoresearchNoviceBridge(repoRoot: string, seedInputs?: AutoresearchSeedInputs, io?: AutoresearchQuestionIO): Promise<InitAutoresearchResult>;
|
|
15
23
|
export declare function guidedAutoresearchSetup(repoRoot: string): Promise<InitAutoresearchResult>;
|
|
16
24
|
export declare function checkTmuxAvailable(): boolean;
|
|
17
25
|
export declare function spawnAutoresearchTmux(missionDir: string, slug: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoresearch-guided.d.ts","sourceRoot":"","sources":["../../src/cli/autoresearch-guided.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"autoresearch-guided.d.ts","sourceRoot":"","sources":["../../src/cli/autoresearch-guided.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAA4C,MAAM,8BAA8B,CAAC;AACrH,OAAO,EAGL,KAAK,+BAA+B,EACpC,KAAK,sBAAsB,EAG5B,MAAM,0BAA0B,CAAC;AAKlC,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,sBAAsB,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,IAAI,CAAC;CACf;AA4CD,wBAAgB,oCAAoC,CAClD,UAAU,GAAE,sBAA2B,GACtC,MAAM,CAwBR;AAED,wBAAsB,0CAA0C,CAC9D,MAAM,EAAE,+BAA+B,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAGjC;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAwB5G;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsCvF;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,EAChB,UAAU,GAAE,sBAA2B,EACvC,EAAE,GAAE,sBAA2C,GAC9C,OAAO,CAAC,sBAAsB,CAAC,CAoDjC;AAED,wBAAsB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAE/F;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAwB5E"}
|
|
@@ -2,23 +2,80 @@ import { createInterface } from 'readline/promises';
|
|
|
2
2
|
import { execFileSync, spawnSync } from 'child_process';
|
|
3
3
|
import { existsSync } from 'fs';
|
|
4
4
|
import { mkdir, writeFile } from 'fs/promises';
|
|
5
|
-
import { join, relative, resolve } from 'path';
|
|
5
|
+
import { dirname, join, relative, resolve } from 'path';
|
|
6
|
+
import { fileURLToPath } from 'url';
|
|
6
7
|
import { parseSandboxContract, slugifyMissionName } from '../autoresearch/contracts.js';
|
|
8
|
+
import { buildMissionContent, buildSandboxContent, isLaunchReadyEvaluatorCommand, writeAutoresearchDeepInterviewArtifacts, } from './autoresearch-intake.js';
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = dirname(__filename);
|
|
7
11
|
function shellQuote(s) {
|
|
8
12
|
return "'" + s.replace(/'/g, "'\\''") + "'";
|
|
9
13
|
}
|
|
10
|
-
function
|
|
11
|
-
|
|
14
|
+
function createQuestionIO() {
|
|
15
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
16
|
+
return {
|
|
17
|
+
question(prompt) {
|
|
18
|
+
return rl.question(prompt);
|
|
19
|
+
},
|
|
20
|
+
close() {
|
|
21
|
+
rl.close();
|
|
22
|
+
},
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
async function promptWithDefault(io, prompt, currentValue) {
|
|
26
|
+
const suffix = currentValue?.trim() ? ` [${currentValue.trim()}]` : '';
|
|
27
|
+
const answer = await io.question(`${prompt}${suffix}\n> `);
|
|
28
|
+
return answer.trim() || currentValue?.trim() || '';
|
|
29
|
+
}
|
|
30
|
+
async function promptAction(io, launchReady) {
|
|
31
|
+
const answer = (await io.question(`\nNext step [launch/refine further] (default: ${launchReady ? 'launch' : 'refine further'})\n> `)).trim().toLowerCase();
|
|
32
|
+
if (!answer) {
|
|
33
|
+
return launchReady ? 'launch' : 'refine';
|
|
34
|
+
}
|
|
35
|
+
if (answer === 'launch') {
|
|
36
|
+
return 'launch';
|
|
37
|
+
}
|
|
38
|
+
if (answer === 'refine further' || answer === 'refine' || answer === 'r') {
|
|
39
|
+
return 'refine';
|
|
40
|
+
}
|
|
41
|
+
throw new Error('Please choose either "launch" or "refine further".');
|
|
42
|
+
}
|
|
43
|
+
function ensureLaunchReadyEvaluator(command) {
|
|
44
|
+
if (!isLaunchReadyEvaluatorCommand(command)) {
|
|
45
|
+
throw new Error('Evaluator command is still a placeholder/template. Refine further before launch.');
|
|
46
|
+
}
|
|
12
47
|
}
|
|
13
|
-
function
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
48
|
+
export function buildAutoresearchDeepInterviewPrompt(seedInputs = {}) {
|
|
49
|
+
const seedLines = [
|
|
50
|
+
`- topic: ${seedInputs.topic?.trim() || '(none)'}`,
|
|
51
|
+
`- evaluator: ${seedInputs.evaluatorCommand?.trim() || '(none)'}`,
|
|
52
|
+
`- keep_policy: ${seedInputs.keepPolicy || '(none)'}`,
|
|
53
|
+
`- slug: ${seedInputs.slug?.trim() || '(none)'}`,
|
|
54
|
+
];
|
|
55
|
+
return [
|
|
56
|
+
'$deep-interview --autoresearch',
|
|
57
|
+
'Run the deep-interview skill in autoresearch mode for `omx autoresearch`.',
|
|
58
|
+
'Guide the user through research topic definition, evaluator readiness, keep policy, and slug/session naming.',
|
|
59
|
+
'Do not launch tmux or run `omx autoresearch` yourself.',
|
|
60
|
+
'When the user confirms launch and the evaluator is concrete, write/update these canonical artifacts under `.omx/specs/`:',
|
|
61
|
+
'- `deep-interview-autoresearch-{slug}.md`',
|
|
62
|
+
'- `autoresearch-{slug}/mission.md`',
|
|
63
|
+
'- `autoresearch-{slug}/sandbox.md`',
|
|
64
|
+
'- `autoresearch-{slug}/result.json`',
|
|
65
|
+
'Use the contract and helper functions in `src/cli/autoresearch-intake.ts` for the artifact shape.',
|
|
66
|
+
'If the evaluator command still contains placeholders or the user has not confirmed launch, keep refining instead of finalizing launch-ready output.',
|
|
67
|
+
'',
|
|
68
|
+
'Seed inputs:',
|
|
69
|
+
...seedLines,
|
|
70
|
+
].join('\n');
|
|
71
|
+
}
|
|
72
|
+
export async function materializeAutoresearchDeepInterviewResult(result) {
|
|
73
|
+
ensureLaunchReadyEvaluator(result.compileTarget.evaluatorCommand);
|
|
74
|
+
return initAutoresearchMission(result.compileTarget);
|
|
17
75
|
}
|
|
18
76
|
export async function initAutoresearchMission(opts) {
|
|
19
77
|
const missionsRoot = join(opts.repoRoot, 'missions');
|
|
20
78
|
const missionDir = join(missionsRoot, opts.slug);
|
|
21
|
-
// Defense-in-depth: ensure slug does not escape missions/ directory
|
|
22
79
|
const rel = relative(missionsRoot, missionDir);
|
|
23
80
|
if (!rel || rel.startsWith('..') || resolve(rel) === resolve(missionDir)) {
|
|
24
81
|
throw new Error('Invalid slug: resolves outside missions/ directory.');
|
|
@@ -29,7 +86,6 @@ export async function initAutoresearchMission(opts) {
|
|
|
29
86
|
await mkdir(missionDir, { recursive: true });
|
|
30
87
|
const missionContent = buildMissionContent(opts.topic);
|
|
31
88
|
const sandboxContent = buildSandboxContent(opts.evaluatorCommand, opts.keepPolicy);
|
|
32
|
-
// Validate before writing — ensures contract fidelity
|
|
33
89
|
parseSandboxContract(sandboxContent);
|
|
34
90
|
await writeFile(join(missionDir, 'mission.md'), missionContent, 'utf-8');
|
|
35
91
|
await writeFile(join(missionDir, 'sandbox.md'), sandboxContent, 'utf-8');
|
|
@@ -82,37 +138,50 @@ export function parseInitArgs(args) {
|
|
|
82
138
|
}
|
|
83
139
|
return result;
|
|
84
140
|
}
|
|
85
|
-
export async function
|
|
141
|
+
export async function runAutoresearchNoviceBridge(repoRoot, seedInputs = {}, io = createQuestionIO()) {
|
|
86
142
|
if (!process.stdin.isTTY) {
|
|
87
|
-
throw new Error('Guided setup requires an interactive terminal. Use --topic
|
|
143
|
+
throw new Error('Guided setup requires an interactive terminal. Use <mission-dir> or init --topic/--evaluator/--keep-policy/--slug for non-interactive use.');
|
|
88
144
|
}
|
|
89
|
-
|
|
145
|
+
let topic = seedInputs.topic?.trim() || '';
|
|
146
|
+
let evaluatorCommand = seedInputs.evaluatorCommand?.trim() || '';
|
|
147
|
+
let keepPolicy = seedInputs.keepPolicy || 'score_improvement';
|
|
148
|
+
let slug = seedInputs.slug?.trim() || '';
|
|
90
149
|
try {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
150
|
+
while (true) {
|
|
151
|
+
topic = await promptWithDefault(io, 'Research topic/goal', topic);
|
|
152
|
+
if (!topic) {
|
|
153
|
+
throw new Error('Research topic is required.');
|
|
154
|
+
}
|
|
155
|
+
const evaluatorIntent = await promptWithDefault(io, '\nHow should OMX judge success? Describe it in plain language', topic);
|
|
156
|
+
evaluatorCommand = await promptWithDefault(io, '\nEvaluator command (leave placeholder to refine further; must output {pass:boolean, score?:number} JSON before launch)', evaluatorCommand || `TODO replace with evaluator command for: ${evaluatorIntent}`);
|
|
157
|
+
const keepPolicyInput = await promptWithDefault(io, '\nKeep policy [score_improvement/pass_only]', keepPolicy);
|
|
158
|
+
keepPolicy = keepPolicyInput.trim().toLowerCase() === 'pass_only' ? 'pass_only' : 'score_improvement';
|
|
159
|
+
slug = await promptWithDefault(io, '\nMission slug', slug || slugifyMissionName(topic));
|
|
160
|
+
slug = slugifyMissionName(slug);
|
|
161
|
+
const deepInterview = await writeAutoresearchDeepInterviewArtifacts({
|
|
162
|
+
repoRoot,
|
|
163
|
+
topic,
|
|
164
|
+
evaluatorCommand,
|
|
165
|
+
keepPolicy,
|
|
166
|
+
slug,
|
|
167
|
+
seedInputs,
|
|
168
|
+
});
|
|
169
|
+
console.log(`\nDraft saved: ${deepInterview.draftArtifactPath}`);
|
|
170
|
+
console.log(`Launch readiness: ${deepInterview.launchReady ? 'ready' : deepInterview.blockedReasons.join(' ')}`);
|
|
171
|
+
const action = await promptAction(io, deepInterview.launchReady);
|
|
172
|
+
if (action === 'refine') {
|
|
173
|
+
continue;
|
|
174
|
+
}
|
|
175
|
+
return materializeAutoresearchDeepInterviewResult(deepInterview);
|
|
98
176
|
}
|
|
99
|
-
const keepPolicyInput = await rl.question('\nKeep policy [score_improvement/pass_only] (default: score_improvement):\n> ');
|
|
100
|
-
const keepPolicy = keepPolicyInput.trim().toLowerCase() === 'pass_only' ? 'pass_only' : 'score_improvement';
|
|
101
|
-
const suggestedSlug = slugifyMissionName(topic);
|
|
102
|
-
const slugInput = await rl.question(`\nMission slug (default: ${suggestedSlug}):\n> `);
|
|
103
|
-
const slug = slugInput.trim() ? slugifyMissionName(slugInput.trim()) : suggestedSlug;
|
|
104
|
-
return initAutoresearchMission({
|
|
105
|
-
topic: topic.trim(),
|
|
106
|
-
evaluatorCommand: evaluatorCommand.trim(),
|
|
107
|
-
keepPolicy,
|
|
108
|
-
slug,
|
|
109
|
-
repoRoot,
|
|
110
|
-
});
|
|
111
177
|
}
|
|
112
178
|
finally {
|
|
113
|
-
|
|
179
|
+
io.close();
|
|
114
180
|
}
|
|
115
181
|
}
|
|
182
|
+
export async function guidedAutoresearchSetup(repoRoot) {
|
|
183
|
+
return runAutoresearchNoviceBridge(repoRoot);
|
|
184
|
+
}
|
|
116
185
|
export function checkTmuxAvailable() {
|
|
117
186
|
const result = spawnSync('tmux', ['-V'], { stdio: 'pipe' });
|
|
118
187
|
return result.status === 0;
|
|
@@ -122,15 +191,13 @@ export function spawnAutoresearchTmux(missionDir, slug) {
|
|
|
122
191
|
throw new Error('tmux is required for background autoresearch execution. Install tmux and try again.');
|
|
123
192
|
}
|
|
124
193
|
const sessionName = `omx-autoresearch-${slug}`;
|
|
125
|
-
// Check for session name collision
|
|
126
194
|
const hasSession = spawnSync('tmux', ['has-session', '-t', sessionName], { stdio: 'pipe' });
|
|
127
195
|
if (hasSession.status === 0) {
|
|
128
|
-
throw new Error(`tmux session "${sessionName}" already exists.\n`
|
|
129
|
-
` Attach: tmux attach -t ${sessionName}\n`
|
|
130
|
-
` Kill: tmux kill-session -t ${sessionName}`);
|
|
196
|
+
throw new Error(`tmux session "${sessionName}" already exists.\n`
|
|
197
|
+
+ ` Attach: tmux attach -t ${sessionName}\n`
|
|
198
|
+
+ ` Kill: tmux kill-session -t ${sessionName}`);
|
|
131
199
|
}
|
|
132
200
|
const omxPath = resolve(join(__dirname, '..', '..', 'bin', 'omx.js'));
|
|
133
|
-
// Shell-quote all path components to handle spaces and special characters
|
|
134
201
|
const cmd = `${shellQuote(process.execPath)} ${shellQuote(omxPath)} autoresearch ${shellQuote(missionDir)}`;
|
|
135
202
|
execFileSync('tmux', ['new-session', '-d', '-s', sessionName, cmd], { stdio: 'ignore' });
|
|
136
203
|
console.log(`\nAutoresearch launched in background tmux session.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autoresearch-guided.js","sourceRoot":"","sources":["../../src/cli/autoresearch-guided.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"autoresearch-guided.js","sourceRoot":"","sources":["../../src/cli/autoresearch-guided.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type AutoresearchKeepPolicy } from '../autoresearch/contracts.js';
|
|
2
|
+
export interface AutoresearchSeedInputs {
|
|
3
|
+
topic?: string;
|
|
4
|
+
evaluatorCommand?: string;
|
|
5
|
+
keepPolicy?: AutoresearchKeepPolicy;
|
|
6
|
+
slug?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AutoresearchDraftCompileTarget {
|
|
9
|
+
topic: string;
|
|
10
|
+
evaluatorCommand: string;
|
|
11
|
+
keepPolicy: AutoresearchKeepPolicy;
|
|
12
|
+
slug: string;
|
|
13
|
+
repoRoot: string;
|
|
14
|
+
}
|
|
15
|
+
export interface AutoresearchDraftArtifact {
|
|
16
|
+
compileTarget: AutoresearchDraftCompileTarget;
|
|
17
|
+
path: string;
|
|
18
|
+
content: string;
|
|
19
|
+
launchReady: boolean;
|
|
20
|
+
blockedReasons: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface AutoresearchDeepInterviewResult {
|
|
23
|
+
compileTarget: AutoresearchDraftCompileTarget;
|
|
24
|
+
draftArtifactPath: string;
|
|
25
|
+
missionArtifactPath: string;
|
|
26
|
+
sandboxArtifactPath: string;
|
|
27
|
+
resultPath: string;
|
|
28
|
+
missionContent: string;
|
|
29
|
+
sandboxContent: string;
|
|
30
|
+
launchReady: boolean;
|
|
31
|
+
blockedReasons: string[];
|
|
32
|
+
}
|
|
33
|
+
export declare const AUTORESEARCH_DEEP_INTERVIEW_RESULT_KIND = "omx.autoresearch.deep-interview/v1";
|
|
34
|
+
export declare function buildMissionContent(topic: string): string;
|
|
35
|
+
export declare function buildSandboxContent(evaluatorCommand: string, keepPolicy: AutoresearchKeepPolicy): string;
|
|
36
|
+
export declare function isLaunchReadyEvaluatorCommand(command: string): boolean;
|
|
37
|
+
export declare function buildAutoresearchDraftArtifactContent(compileTarget: AutoresearchDraftCompileTarget, seedInputs: AutoresearchSeedInputs, launchReady: boolean, blockedReasons: readonly string[]): string;
|
|
38
|
+
export declare function writeAutoresearchDraftArtifact(input: {
|
|
39
|
+
repoRoot: string;
|
|
40
|
+
topic: string;
|
|
41
|
+
evaluatorCommand?: string;
|
|
42
|
+
keepPolicy: AutoresearchKeepPolicy;
|
|
43
|
+
slug?: string;
|
|
44
|
+
seedInputs?: AutoresearchSeedInputs;
|
|
45
|
+
}): Promise<AutoresearchDraftArtifact>;
|
|
46
|
+
export declare function writeAutoresearchDeepInterviewArtifacts(input: {
|
|
47
|
+
repoRoot: string;
|
|
48
|
+
topic: string;
|
|
49
|
+
evaluatorCommand?: string;
|
|
50
|
+
keepPolicy: AutoresearchKeepPolicy;
|
|
51
|
+
slug?: string;
|
|
52
|
+
seedInputs?: AutoresearchSeedInputs;
|
|
53
|
+
}): Promise<AutoresearchDeepInterviewResult>;
|
|
54
|
+
export declare function listAutoresearchDeepInterviewDraftPaths(repoRoot: string): Promise<string[]>;
|
|
55
|
+
export declare function listAutoresearchDeepInterviewResultPaths(repoRoot: string): Promise<string[]>;
|
|
56
|
+
export declare function resolveAutoresearchDeepInterviewResult(repoRoot: string, options?: {
|
|
57
|
+
slug?: string;
|
|
58
|
+
newerThanMs?: number;
|
|
59
|
+
excludeResultPaths?: ReadonlySet<string>;
|
|
60
|
+
excludeDraftPaths?: ReadonlySet<string>;
|
|
61
|
+
}): Promise<AutoresearchDeepInterviewResult | null>;
|
|
62
|
+
//# sourceMappingURL=autoresearch-intake.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"autoresearch-intake.d.ts","sourceRoot":"","sources":["../../src/cli/autoresearch-intake.ts"],"names":[],"mappings":"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"}
|