@bradtaylorsf/alpha-loop 1.2.0 → 1.4.0
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/README.md +60 -19
- package/dist/cli.js +83 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/auth.js +1 -1
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/eval.d.ts +53 -0
- package/dist/commands/eval.js +538 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/evolve.d.ts +25 -0
- package/dist/commands/evolve.js +270 -0
- package/dist/commands/evolve.js.map +1 -0
- package/dist/commands/history.d.ts +1 -1
- package/dist/commands/history.js +4 -4
- package/dist/commands/history.js.map +1 -1
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.js +199 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/resume.js +1 -0
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run.js +170 -12
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/scan.d.ts +1 -1
- package/dist/commands/scan.js +12 -9
- package/dist/commands/scan.js.map +1 -1
- package/dist/commands/sync.d.ts +5 -0
- package/dist/commands/sync.js +24 -5
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/vision.js +5 -3
- package/dist/commands/vision.js.map +1 -1
- package/dist/engine/agents.d.ts +6 -1
- package/dist/engine/agents.js +14 -12
- package/dist/engine/agents.js.map +1 -1
- package/dist/engine/prerequisites.d.ts +4 -7
- package/dist/engine/prerequisites.js +12 -36
- package/dist/engine/prerequisites.js.map +1 -1
- package/dist/lib/agent.d.ts +18 -0
- package/dist/lib/agent.js +211 -30
- package/dist/lib/agent.js.map +1 -1
- package/dist/lib/config.d.ts +25 -2
- package/dist/lib/config.js +80 -7
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/eval-checks.d.ts +91 -0
- package/dist/lib/eval-checks.js +254 -0
- package/dist/lib/eval-checks.js.map +1 -0
- package/dist/lib/eval-runner.d.ts +29 -0
- package/dist/lib/eval-runner.js +439 -0
- package/dist/lib/eval-runner.js.map +1 -0
- package/dist/lib/eval.d.ts +170 -0
- package/dist/lib/eval.js +507 -0
- package/dist/lib/eval.js.map +1 -0
- package/dist/lib/learning.js +2 -2
- package/dist/lib/learning.js.map +1 -1
- package/dist/lib/pipeline.d.ts +44 -0
- package/dist/lib/pipeline.js +607 -138
- package/dist/lib/pipeline.js.map +1 -1
- package/dist/lib/prompts.d.ts +19 -0
- package/dist/lib/prompts.js +56 -5
- package/dist/lib/prompts.js.map +1 -1
- package/dist/lib/score.d.ts +80 -0
- package/dist/lib/score.js +172 -0
- package/dist/lib/score.js.map +1 -0
- package/dist/lib/session.d.ts +2 -1
- package/dist/lib/session.js +70 -19
- package/dist/lib/session.js.map +1 -1
- package/dist/lib/traces.d.ts +173 -0
- package/dist/lib/traces.js +272 -0
- package/dist/lib/traces.js.map +1 -0
- package/dist/lib/verify.d.ts +7 -1
- package/dist/lib/verify.js +109 -157
- package/dist/lib/verify.js.map +1 -1
- package/dist/lib/worktree.d.ts +1 -0
- package/dist/lib/worktree.js +9 -1
- package/dist/lib/worktree.js.map +1 -1
- package/package.json +1 -1
- package/templates/agents/implementer.md +1 -1
- package/templates/agents/reviewer.md +1 -1
- package/dist/engine/config.d.ts +0 -71
- package/dist/engine/config.js +0 -73
- package/dist/engine/config.js.map +0 -1
package/dist/engine/agents.d.ts
CHANGED
|
@@ -8,7 +8,12 @@
|
|
|
8
8
|
* Adding a new agent: add a case to AGENT_CLI_MAP and buildAgentArgs().
|
|
9
9
|
*/
|
|
10
10
|
import { type ChildProcess } from 'node:child_process';
|
|
11
|
-
|
|
11
|
+
/** Minimal config needed to build agent CLI args. */
|
|
12
|
+
export type AgentConfig = {
|
|
13
|
+
agent: string;
|
|
14
|
+
model: string;
|
|
15
|
+
maxTurns?: number;
|
|
16
|
+
};
|
|
12
17
|
/**
|
|
13
18
|
* CLI reference for each supported agent.
|
|
14
19
|
* Extend this map to add new agent types.
|
package/dist/engine/agents.js
CHANGED
|
@@ -26,9 +26,9 @@ export const AGENT_CLI_MAP = {
|
|
|
26
26
|
},
|
|
27
27
|
codex: {
|
|
28
28
|
command: 'codex',
|
|
29
|
-
promptFlag: '
|
|
29
|
+
promptFlag: 'exec',
|
|
30
30
|
modelFlag: '--model',
|
|
31
|
-
permissionFlag: '--auto
|
|
31
|
+
permissionFlag: '--full-auto',
|
|
32
32
|
supportsMaxTurns: false,
|
|
33
33
|
},
|
|
34
34
|
opencode: {
|
|
@@ -48,12 +48,15 @@ export function buildAgentArgs(config, prompt) {
|
|
|
48
48
|
throw new Error(`Unknown agent type: "${config.agent}". Supported agents: ${Object.keys(AGENT_CLI_MAP).join(', ')}`);
|
|
49
49
|
}
|
|
50
50
|
const args = [];
|
|
51
|
-
// For
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
// For agents that use subcommands (codex 'exec', opencode 'run'), add it first
|
|
52
|
+
const isSubcommand = config.agent === 'codex' || config.agent === 'opencode';
|
|
53
|
+
if (isSubcommand) {
|
|
54
|
+
args.push(agentDef.promptFlag);
|
|
55
|
+
}
|
|
56
|
+
// Model flag (skip if empty — let agent CLI use its default)
|
|
57
|
+
if (config.model) {
|
|
58
|
+
args.push(agentDef.modelFlag, config.model);
|
|
54
59
|
}
|
|
55
|
-
// Model flag
|
|
56
|
-
args.push(agentDef.modelFlag, config.model);
|
|
57
60
|
// Permission flag (if agent supports it)
|
|
58
61
|
if (agentDef.permissionFlag) {
|
|
59
62
|
args.push(agentDef.permissionFlag);
|
|
@@ -62,13 +65,12 @@ export function buildAgentArgs(config, prompt) {
|
|
|
62
65
|
if (config.maxTurns != null && agentDef.supportsMaxTurns && agentDef.maxTurnsFlag) {
|
|
63
66
|
args.push(agentDef.maxTurnsFlag, String(config.maxTurns));
|
|
64
67
|
}
|
|
65
|
-
// Prompt
|
|
66
|
-
if (
|
|
67
|
-
args.push(
|
|
68
|
+
// Prompt: subcommand agents take it as positional arg; flag agents use promptFlag
|
|
69
|
+
if (isSubcommand) {
|
|
70
|
+
args.push(prompt);
|
|
68
71
|
}
|
|
69
72
|
else {
|
|
70
|
-
|
|
71
|
-
args.push(prompt);
|
|
73
|
+
args.push(agentDef.promptFlag, prompt);
|
|
72
74
|
}
|
|
73
75
|
return { command: agentDef.command, args };
|
|
74
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/engine/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/engine/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
* Prerequisites Module
|
|
3
3
|
* ====================
|
|
4
4
|
*
|
|
5
|
-
* Verifies that
|
|
6
|
-
* Groups stages by agent for clear diagnostic output.
|
|
5
|
+
* Verifies that the configured AI CLI agent is installed before starting the pipeline.
|
|
7
6
|
*/
|
|
8
|
-
import {
|
|
7
|
+
import type { Config } from '../lib/config.js';
|
|
9
8
|
export interface AgentCheckResult {
|
|
10
9
|
agent: string;
|
|
11
10
|
installed: boolean;
|
|
12
|
-
stages: StageName[];
|
|
13
11
|
}
|
|
14
12
|
export interface PrerequisiteResult {
|
|
15
13
|
ok: boolean;
|
|
@@ -20,8 +18,7 @@ export interface PrerequisiteResult {
|
|
|
20
18
|
*/
|
|
21
19
|
export declare function isCommandAvailable(command: string): boolean;
|
|
22
20
|
/**
|
|
23
|
-
* Checks
|
|
24
|
-
* Returns structured results showing which agents are installed and which stages they serve.
|
|
21
|
+
* Checks that the configured agent CLI is installed.
|
|
25
22
|
*/
|
|
26
23
|
export declare function checkAgents(config: Config): PrerequisiteResult;
|
|
27
24
|
/**
|
|
@@ -29,6 +26,6 @@ export declare function checkAgents(config: Config): PrerequisiteResult;
|
|
|
29
26
|
*/
|
|
30
27
|
export declare function formatCheckResults(result: PrerequisiteResult): string;
|
|
31
28
|
/**
|
|
32
|
-
* Formats the pipeline startup summary
|
|
29
|
+
* Formats the pipeline startup summary.
|
|
33
30
|
*/
|
|
34
31
|
export declare function formatPipelineSummary(config: Config): string;
|
|
@@ -2,11 +2,9 @@
|
|
|
2
2
|
* Prerequisites Module
|
|
3
3
|
* ====================
|
|
4
4
|
*
|
|
5
|
-
* Verifies that
|
|
6
|
-
* Groups stages by agent for clear diagnostic output.
|
|
5
|
+
* Verifies that the configured AI CLI agent is installed before starting the pipeline.
|
|
7
6
|
*/
|
|
8
7
|
import { execSync } from 'node:child_process';
|
|
9
|
-
import { STAGE_NAMES, resolveStageConfig } from './config.js';
|
|
10
8
|
// ============================================================================
|
|
11
9
|
// Agent Check
|
|
12
10
|
// ============================================================================
|
|
@@ -27,30 +25,16 @@ export function isCommandAvailable(command) {
|
|
|
27
25
|
}
|
|
28
26
|
}
|
|
29
27
|
/**
|
|
30
|
-
* Checks
|
|
31
|
-
* Returns structured results showing which agents are installed and which stages they serve.
|
|
28
|
+
* Checks that the configured agent CLI is installed.
|
|
32
29
|
*/
|
|
33
30
|
export function checkAgents(config) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
const stages = agentStages.get(agent) ?? [];
|
|
39
|
-
stages.push(stage);
|
|
40
|
-
agentStages.set(agent, stages);
|
|
41
|
-
}
|
|
42
|
-
// Check each unique agent
|
|
43
|
-
const results = [];
|
|
44
|
-
for (const [agent, stages] of agentStages) {
|
|
45
|
-
results.push({
|
|
46
|
-
agent,
|
|
47
|
-
installed: isCommandAvailable(agent),
|
|
48
|
-
stages,
|
|
49
|
-
});
|
|
50
|
-
}
|
|
31
|
+
const result = {
|
|
32
|
+
agent: config.agent,
|
|
33
|
+
installed: isCommandAvailable(config.agent),
|
|
34
|
+
};
|
|
51
35
|
return {
|
|
52
|
-
ok:
|
|
53
|
-
results,
|
|
36
|
+
ok: result.installed,
|
|
37
|
+
results: [result],
|
|
54
38
|
};
|
|
55
39
|
}
|
|
56
40
|
// ============================================================================
|
|
@@ -63,28 +47,20 @@ export function formatCheckResults(result) {
|
|
|
63
47
|
const lines = ['Checking agents...'];
|
|
64
48
|
for (const r of result.results) {
|
|
65
49
|
const icon = r.installed ? '\u2713' : '\u2717';
|
|
66
|
-
|
|
67
|
-
lines.push(` ${icon} ${r.agent} (${stageList})`);
|
|
50
|
+
lines.push(` ${icon} ${r.agent}`);
|
|
68
51
|
}
|
|
69
52
|
if (!result.ok) {
|
|
70
53
|
const missing = result.results.filter(r => !r.installed);
|
|
71
54
|
for (const m of missing) {
|
|
72
|
-
lines.push(`\nError: "${m.agent}" is not installed
|
|
55
|
+
lines.push(`\nError: "${m.agent}" is not installed.`);
|
|
73
56
|
}
|
|
74
57
|
}
|
|
75
58
|
return lines.join('\n');
|
|
76
59
|
}
|
|
77
60
|
/**
|
|
78
|
-
* Formats the pipeline startup summary
|
|
61
|
+
* Formats the pipeline startup summary.
|
|
79
62
|
*/
|
|
80
63
|
export function formatPipelineSummary(config) {
|
|
81
|
-
|
|
82
|
-
for (const stage of STAGE_NAMES) {
|
|
83
|
-
const sc = resolveStageConfig(config, stage);
|
|
84
|
-
const turns = sc.maxTurns ? ` (${sc.maxTurns} turns)` : '';
|
|
85
|
-
const padded = `${stage}:`.padEnd(14);
|
|
86
|
-
lines.push(` ${padded}${sc.agent}/${sc.model}${turns}`);
|
|
87
|
-
}
|
|
88
|
-
return lines.join('\n');
|
|
64
|
+
return `Pipeline: ${config.agent}/${config.model}`;
|
|
89
65
|
}
|
|
90
66
|
//# sourceMappingURL=prerequisites.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../../src/engine/prerequisites.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../../src/engine/prerequisites.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAiB9C,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,+EAA+E;IAC/E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC;QACH,QAAQ,CAAC,SAAS,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,MAAM,MAAM,GAAqB;QAC/B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,SAAS,EAAE,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC;KAC5C,CAAC;IAEF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,SAAS;QACpB,OAAO,EAAE,CAAC,MAAM,CAAC;KAClB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,KAAK,GAAa,CAAC,oBAAoB,CAAC,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,qBAAqB,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,aAAa,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACrD,CAAC"}
|
package/dist/lib/agent.d.ts
CHANGED
|
@@ -2,6 +2,14 @@ export type AgentResult = {
|
|
|
2
2
|
exitCode: number;
|
|
3
3
|
output: string;
|
|
4
4
|
duration: number;
|
|
5
|
+
/** Total cost in USD (parsed from agent output, if available). */
|
|
6
|
+
costUsd?: number;
|
|
7
|
+
/** Input tokens consumed (parsed from agent output, if available). */
|
|
8
|
+
inputTokens?: number;
|
|
9
|
+
/** Output tokens generated (parsed from agent output, if available). */
|
|
10
|
+
outputTokens?: number;
|
|
11
|
+
/** Model used for the invocation. */
|
|
12
|
+
model?: string;
|
|
5
13
|
};
|
|
6
14
|
export type AgentOptions = {
|
|
7
15
|
agent: 'claude' | 'codex' | 'opencode';
|
|
@@ -14,6 +22,8 @@ export type AgentOptions = {
|
|
|
14
22
|
timeout?: number;
|
|
15
23
|
/** Max conversation turns for the agent. Only supported by claude. */
|
|
16
24
|
maxTurns?: number;
|
|
25
|
+
/** Resume the most recent agent session in the CWD instead of starting fresh. */
|
|
26
|
+
resume?: boolean;
|
|
17
27
|
};
|
|
18
28
|
/**
|
|
19
29
|
* Build CLI command and args for a given agent type.
|
|
@@ -22,8 +32,16 @@ export declare function buildAgentArgs(options: AgentOptions): {
|
|
|
22
32
|
command: string;
|
|
23
33
|
args: string[];
|
|
24
34
|
};
|
|
35
|
+
/**
|
|
36
|
+
* Build a shell command string for one-shot agent prompts (scan, vision).
|
|
37
|
+
* Reads prompt from stdin. Returns the command to pipe into.
|
|
38
|
+
*/
|
|
39
|
+
export declare function buildOneShotCommand(agent: 'claude' | 'codex' | 'opencode', model: string): string;
|
|
25
40
|
/**
|
|
26
41
|
* Spawn an AI agent with a prompt.
|
|
27
42
|
* Streams output to terminal in real-time while capturing it.
|
|
43
|
+
*
|
|
44
|
+
* For Claude, uses stream-json format and parses it into readable log lines.
|
|
45
|
+
* For other agents, captures raw stdout/stderr directly.
|
|
28
46
|
*/
|
|
29
47
|
export declare function spawnAgent(options: AgentOptions): Promise<AgentResult>;
|
package/dist/lib/agent.js
CHANGED
|
@@ -4,6 +4,67 @@
|
|
|
4
4
|
import { spawn } from 'node:child_process';
|
|
5
5
|
import { createWriteStream } from 'node:fs';
|
|
6
6
|
import { log } from './logger.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parse a Claude stream-json line into a human-readable log line.
|
|
9
|
+
* Returns null for lines that shouldn't be logged.
|
|
10
|
+
*/
|
|
11
|
+
function formatStreamJsonLine(line) {
|
|
12
|
+
try {
|
|
13
|
+
const obj = JSON.parse(line);
|
|
14
|
+
const type = obj.type;
|
|
15
|
+
if (type === 'assistant') {
|
|
16
|
+
const msg = obj.message;
|
|
17
|
+
const content = (msg?.content ?? []);
|
|
18
|
+
const parts = [];
|
|
19
|
+
for (const block of content) {
|
|
20
|
+
if (block.type === 'tool_use') {
|
|
21
|
+
const input = block.input;
|
|
22
|
+
const name = block.name;
|
|
23
|
+
// Show the most useful input field for common tools
|
|
24
|
+
if (name === 'Read' && input?.file_path) {
|
|
25
|
+
parts.push(`[${name}] ${input.file_path}`);
|
|
26
|
+
}
|
|
27
|
+
else if (name === 'Write' && input?.file_path) {
|
|
28
|
+
parts.push(`[${name}] ${input.file_path}`);
|
|
29
|
+
}
|
|
30
|
+
else if (name === 'Edit' && input?.file_path) {
|
|
31
|
+
parts.push(`[${name}] ${input.file_path}`);
|
|
32
|
+
}
|
|
33
|
+
else if (name === 'Bash' && input?.command) {
|
|
34
|
+
parts.push(`[${name}] ${String(input.command).slice(0, 200)}`);
|
|
35
|
+
}
|
|
36
|
+
else if (name === 'Glob' && input?.pattern) {
|
|
37
|
+
parts.push(`[${name}] ${input.pattern}`);
|
|
38
|
+
}
|
|
39
|
+
else if (name === 'Grep' && input?.pattern) {
|
|
40
|
+
parts.push(`[${name}] ${input.pattern}`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
parts.push(`[${name}]`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (block.type === 'text') {
|
|
47
|
+
const text = String(block.text ?? '').trim();
|
|
48
|
+
if (text)
|
|
49
|
+
parts.push(text);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (parts.length > 0)
|
|
53
|
+
return parts.join('\n');
|
|
54
|
+
}
|
|
55
|
+
if (type === 'result') {
|
|
56
|
+
const result = String(obj.result ?? '').trim();
|
|
57
|
+
const cost = obj.total_cost_usd;
|
|
58
|
+
const costStr = cost ? ` ($${cost.toFixed(4)})` : '';
|
|
59
|
+
if (result)
|
|
60
|
+
return `\n--- RESULT${costStr} ---\n${result}`;
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
7
68
|
/** Default agent timeout: 30 minutes */
|
|
8
69
|
const DEFAULT_AGENT_TIMEOUT_MS = 30 * 60 * 1000;
|
|
9
70
|
/**
|
|
@@ -12,43 +73,81 @@ const DEFAULT_AGENT_TIMEOUT_MS = 30 * 60 * 1000;
|
|
|
12
73
|
export function buildAgentArgs(options) {
|
|
13
74
|
switch (options.agent) {
|
|
14
75
|
case 'claude': {
|
|
15
|
-
const args = [
|
|
16
|
-
|
|
17
|
-
'--
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
'--
|
|
21
|
-
|
|
76
|
+
const args = [];
|
|
77
|
+
if (options.resume)
|
|
78
|
+
args.push('--continue');
|
|
79
|
+
args.push('-p');
|
|
80
|
+
if (options.model)
|
|
81
|
+
args.push('--model', options.model);
|
|
82
|
+
args.push('--dangerously-skip-permissions', '--verbose', '--output-format', 'stream-json');
|
|
22
83
|
if (options.maxTurns) {
|
|
23
84
|
args.push('--max-turns', String(options.maxTurns));
|
|
24
85
|
}
|
|
25
86
|
return { command: 'claude', args };
|
|
26
87
|
}
|
|
27
88
|
case 'codex': {
|
|
28
|
-
const args = [
|
|
29
|
-
|
|
30
|
-
'
|
|
31
|
-
|
|
32
|
-
|
|
89
|
+
const args = [];
|
|
90
|
+
if (options.resume) {
|
|
91
|
+
args.push('exec', 'resume', '--last');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
args.push('exec');
|
|
95
|
+
}
|
|
96
|
+
if (options.model)
|
|
97
|
+
args.push('--model', options.model);
|
|
98
|
+
args.push('--full-auto');
|
|
33
99
|
return { command: 'codex', args };
|
|
34
100
|
}
|
|
35
101
|
case 'opencode': {
|
|
36
|
-
const args = [
|
|
37
|
-
|
|
38
|
-
'--model', options.model
|
|
39
|
-
];
|
|
102
|
+
const args = ['run'];
|
|
103
|
+
if (options.model)
|
|
104
|
+
args.push('--model', options.model);
|
|
40
105
|
return { command: 'opencode', args };
|
|
41
106
|
}
|
|
42
107
|
default:
|
|
43
108
|
throw new Error(`Unknown agent type: ${options.agent}`);
|
|
44
109
|
}
|
|
45
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Build a shell command string for one-shot agent prompts (scan, vision).
|
|
113
|
+
* Reads prompt from stdin. Returns the command to pipe into.
|
|
114
|
+
*/
|
|
115
|
+
export function buildOneShotCommand(agent, model) {
|
|
116
|
+
switch (agent) {
|
|
117
|
+
case 'claude': {
|
|
118
|
+
const parts = ['claude', '-p'];
|
|
119
|
+
if (model)
|
|
120
|
+
parts.push('--model', model);
|
|
121
|
+
parts.push('--dangerously-skip-permissions', '--output-format', 'text');
|
|
122
|
+
return parts.join(' ');
|
|
123
|
+
}
|
|
124
|
+
case 'codex': {
|
|
125
|
+
const parts = ['codex', 'exec'];
|
|
126
|
+
if (model)
|
|
127
|
+
parts.push('--model', model);
|
|
128
|
+
parts.push('--full-auto');
|
|
129
|
+
return parts.join(' ');
|
|
130
|
+
}
|
|
131
|
+
case 'opencode': {
|
|
132
|
+
const parts = ['opencode', 'run'];
|
|
133
|
+
if (model)
|
|
134
|
+
parts.push('--model', model);
|
|
135
|
+
return parts.join(' ');
|
|
136
|
+
}
|
|
137
|
+
default:
|
|
138
|
+
throw new Error(`Unknown agent type: ${agent}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
46
141
|
/**
|
|
47
142
|
* Spawn an AI agent with a prompt.
|
|
48
143
|
* Streams output to terminal in real-time while capturing it.
|
|
144
|
+
*
|
|
145
|
+
* For Claude, uses stream-json format and parses it into readable log lines.
|
|
146
|
+
* For other agents, captures raw stdout/stderr directly.
|
|
49
147
|
*/
|
|
50
148
|
export async function spawnAgent(options) {
|
|
51
149
|
const { command, args } = buildAgentArgs(options);
|
|
150
|
+
const useStreamJson = options.agent === 'claude';
|
|
52
151
|
log.info(`Agent: ${options.agent} | Model: ${options.model} | CWD: ${options.cwd}`);
|
|
53
152
|
const startTime = Date.now();
|
|
54
153
|
const chunks = [];
|
|
@@ -63,42 +162,124 @@ export async function spawnAgent(options) {
|
|
|
63
162
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
64
163
|
});
|
|
65
164
|
let resolved = false;
|
|
165
|
+
// For stream-json: accumulate partial lines, extract final result text
|
|
166
|
+
let lineBuffer = '';
|
|
167
|
+
let finalResultText = '';
|
|
168
|
+
// Cost/token tracking (parsed from stream-json result blocks)
|
|
169
|
+
let parsedCostUsd;
|
|
170
|
+
let parsedInputTokens;
|
|
171
|
+
let parsedOutputTokens;
|
|
66
172
|
// Pipe prompt via stdin (like: echo "$prompt" | claude -p)
|
|
67
173
|
child.stdin.write(options.prompt);
|
|
68
174
|
child.stdin.end();
|
|
69
|
-
|
|
175
|
+
/**
|
|
176
|
+
* Write a string to the log file, handling backpressure.
|
|
177
|
+
*/
|
|
178
|
+
const writeToLog = (stream, text) => {
|
|
179
|
+
if (!logStream)
|
|
180
|
+
return;
|
|
181
|
+
const ok = logStream.write(text);
|
|
182
|
+
if (!ok) {
|
|
183
|
+
stream.pause();
|
|
184
|
+
logStream.once('drain', () => stream.resume());
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
/**
|
|
188
|
+
* Handle raw data for non-Claude agents (pass-through).
|
|
189
|
+
*/
|
|
190
|
+
const handleRawData = (stream) => (data) => {
|
|
70
191
|
chunks.push(data);
|
|
71
|
-
if (options.verbose)
|
|
192
|
+
if (options.verbose)
|
|
72
193
|
process.stderr.write(data);
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
194
|
+
writeToLog(stream, data.toString());
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Handle stream-json data for Claude — parse JSON lines into readable output.
|
|
198
|
+
*/
|
|
199
|
+
const handleStreamJson = (stream) => (data) => {
|
|
200
|
+
chunks.push(data);
|
|
201
|
+
lineBuffer += data.toString();
|
|
202
|
+
// Process complete lines
|
|
203
|
+
let newlineIdx;
|
|
204
|
+
while ((newlineIdx = lineBuffer.indexOf('\n')) !== -1) {
|
|
205
|
+
const line = lineBuffer.slice(0, newlineIdx).trim();
|
|
206
|
+
lineBuffer = lineBuffer.slice(newlineIdx + 1);
|
|
207
|
+
if (!line)
|
|
208
|
+
continue;
|
|
209
|
+
// Extract the final result text and cost/token data for the return value
|
|
210
|
+
try {
|
|
211
|
+
const obj = JSON.parse(line);
|
|
212
|
+
if (obj.type === 'result') {
|
|
213
|
+
finalResultText = typeof obj.result === 'string' ? obj.result : '';
|
|
214
|
+
// Capture error info so transient error detection works
|
|
215
|
+
if (obj.is_error || obj.subtype === 'error') {
|
|
216
|
+
finalResultText = finalResultText || JSON.stringify(obj);
|
|
217
|
+
}
|
|
218
|
+
// Parse cost from result block
|
|
219
|
+
if (typeof obj.total_cost_usd === 'number') {
|
|
220
|
+
parsedCostUsd = obj.total_cost_usd;
|
|
221
|
+
}
|
|
222
|
+
// Parse token usage from result block
|
|
223
|
+
const usage = obj.usage;
|
|
224
|
+
if (usage) {
|
|
225
|
+
if (typeof usage.input_tokens === 'number')
|
|
226
|
+
parsedInputTokens = usage.input_tokens;
|
|
227
|
+
if (typeof usage.output_tokens === 'number')
|
|
228
|
+
parsedOutputTokens = usage.output_tokens;
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch { /* not valid JSON, ignore */ }
|
|
233
|
+
const formatted = formatStreamJsonLine(line);
|
|
234
|
+
if (formatted) {
|
|
235
|
+
const logLine = formatted + '\n';
|
|
236
|
+
if (options.verbose)
|
|
237
|
+
process.stderr.write(logLine);
|
|
238
|
+
writeToLog(stream, logLine);
|
|
80
239
|
}
|
|
81
240
|
}
|
|
82
241
|
};
|
|
83
|
-
|
|
84
|
-
|
|
242
|
+
if (useStreamJson) {
|
|
243
|
+
child.stdout.on('data', handleStreamJson(child.stdout));
|
|
244
|
+
// stderr from Claude in stream-json mode is typically empty, but capture it
|
|
245
|
+
child.stderr.on('data', handleRawData(child.stderr));
|
|
246
|
+
}
|
|
247
|
+
else {
|
|
248
|
+
child.stdout.on('data', handleRawData(child.stdout));
|
|
249
|
+
child.stderr.on('data', handleRawData(child.stderr));
|
|
250
|
+
}
|
|
85
251
|
// Prevent unhandled stream errors from crashing the process
|
|
86
252
|
child.stdout.on('error', () => { });
|
|
87
253
|
child.stderr.on('error', () => { });
|
|
88
|
-
const getOutput = () =>
|
|
254
|
+
const getOutput = () => {
|
|
255
|
+
if (useStreamJson) {
|
|
256
|
+
// Return the parsed result text, not raw JSON
|
|
257
|
+
return finalResultText || Buffer.concat(chunks).toString();
|
|
258
|
+
}
|
|
259
|
+
return Buffer.concat(chunks).toString();
|
|
260
|
+
};
|
|
89
261
|
const finish = (exitCode, output) => {
|
|
90
262
|
if (resolved)
|
|
91
263
|
return;
|
|
92
264
|
resolved = true;
|
|
93
265
|
clearTimeout(timer);
|
|
94
266
|
const duration = Date.now() - startTime;
|
|
267
|
+
const result = {
|
|
268
|
+
exitCode,
|
|
269
|
+
output,
|
|
270
|
+
duration,
|
|
271
|
+
model: options.model || undefined,
|
|
272
|
+
costUsd: parsedCostUsd,
|
|
273
|
+
inputTokens: parsedInputTokens,
|
|
274
|
+
outputTokens: parsedOutputTokens,
|
|
275
|
+
};
|
|
95
276
|
if (logStream) {
|
|
96
277
|
logStream.end(() => {
|
|
97
|
-
resolve(
|
|
278
|
+
resolve(result);
|
|
98
279
|
});
|
|
99
280
|
}
|
|
100
281
|
else {
|
|
101
|
-
resolve(
|
|
282
|
+
resolve(result);
|
|
102
283
|
}
|
|
103
284
|
};
|
|
104
285
|
// Kill the agent if it exceeds the timeout
|
package/dist/lib/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/lib/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/lib/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
|
+
/** Per-model pricing (cost per million tokens). */
|
|
2
|
+
export type ModelPricing = {
|
|
3
|
+
input: number;
|
|
4
|
+
output: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Estimate cost in USD from token counts and a pricing table.
|
|
8
|
+
* Returns 0 if the model is not in the pricing table.
|
|
9
|
+
*/
|
|
10
|
+
export declare function estimateCost(model: string, inputTokens: number, outputTokens: number, pricing: Record<string, ModelPricing>): number;
|
|
1
11
|
export type Config = {
|
|
2
12
|
repo: string;
|
|
3
13
|
repoOwner: string;
|
|
4
14
|
project: number;
|
|
15
|
+
agent: 'claude' | 'codex' | 'opencode';
|
|
5
16
|
model: string;
|
|
6
17
|
reviewModel: string;
|
|
7
18
|
pollInterval: number;
|
|
@@ -12,7 +23,6 @@ export type Config = {
|
|
|
12
23
|
maxTestRetries: number;
|
|
13
24
|
testCommand: string;
|
|
14
25
|
devCommand: string;
|
|
15
|
-
port: number;
|
|
16
26
|
skipTests: boolean;
|
|
17
27
|
skipReview: boolean;
|
|
18
28
|
skipInstall: boolean;
|
|
@@ -29,8 +39,21 @@ export type Config = {
|
|
|
29
39
|
runFull: boolean;
|
|
30
40
|
verbose: boolean;
|
|
31
41
|
harnesses: string[];
|
|
42
|
+
setupCommand: string;
|
|
43
|
+
evalDir: string;
|
|
44
|
+
evalModel: string;
|
|
45
|
+
skipEval: boolean;
|
|
46
|
+
evalTimeout: number;
|
|
47
|
+
/** Auto-capture failures as eval cases at end of session (default: true). */
|
|
48
|
+
autoCapture: boolean;
|
|
49
|
+
/** Skip post-session holistic code review (default: false). */
|
|
50
|
+
skipPostSessionReview: boolean;
|
|
51
|
+
/** Skip security scanning in post-session review (default: false). */
|
|
52
|
+
skipPostSessionSecurity: boolean;
|
|
53
|
+
/** Per-model pricing table (cost per million tokens). */
|
|
54
|
+
pricing: Record<string, ModelPricing>;
|
|
32
55
|
};
|
|
33
|
-
/** Validate a string contains only safe shell characters. */
|
|
56
|
+
/** Validate a string contains only safe shell characters. Empty strings are allowed (model is optional). */
|
|
34
57
|
export declare function assertSafeShellArg(value: string, name: string): string;
|
|
35
58
|
export declare function detectRepo(): string | null;
|
|
36
59
|
export declare function loadConfig(overrides?: Partial<Config>): Config;
|