@bradtaylorsf/alpha-loop 1.3.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/dist/cli.js +80 -1
- package/dist/cli.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/run.js +139 -0
- package/dist/commands/run.js.map +1 -1
- package/dist/lib/agent.d.ts +8 -0
- package/dist/lib/agent.js +28 -3
- package/dist/lib/agent.js.map +1 -1
- package/dist/lib/config.d.ts +22 -0
- package/dist/lib/config.js +63 -0
- 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/pipeline.d.ts +9 -0
- package/dist/lib/pipeline.js +186 -10
- package/dist/lib/pipeline.js.map +1 -1
- package/dist/lib/prompts.d.ts +18 -0
- package/dist/lib/prompts.js +48 -0
- 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 +16 -0
- 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/package.json +1 -1
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace Storage — Meta-Harness style full execution traces per run.
|
|
3
|
+
*
|
|
4
|
+
* Stores raw prompts, agent outputs, diffs, test output, verify output,
|
|
5
|
+
* and pipeline metadata as separate files in a navigable filesystem:
|
|
6
|
+
* .alpha-loop/traces/{run}/
|
|
7
|
+
* manifest.json, config.snapshot.yaml, scores.json, costs.json
|
|
8
|
+
* prompts/issue-{N}-{step}.md
|
|
9
|
+
* outputs/issue-{N}-{step}.log
|
|
10
|
+
* diffs/issue-{N}-{step}.patch
|
|
11
|
+
* tests/issue-{N}-test-{attempt}.txt
|
|
12
|
+
* verify/issue-{N}-verify-{attempt}.txt
|
|
13
|
+
* {issueNum}/metadata.json (backward compat)
|
|
14
|
+
*
|
|
15
|
+
* Key insight from Meta-Harness (Lee et al., 2026): full trace access
|
|
16
|
+
* outperforms summaries by 15+ points. We store everything raw.
|
|
17
|
+
*/
|
|
18
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
19
|
+
import { join } from 'node:path';
|
|
20
|
+
import { log } from './logger.js';
|
|
21
|
+
import { computeCompositeScore } from './score.js';
|
|
22
|
+
const TRACES_ROOT = '.alpha-loop/traces';
|
|
23
|
+
/** Get the base traces directory. */
|
|
24
|
+
export function tracesDir(projectDir) {
|
|
25
|
+
return join(projectDir ?? process.cwd(), TRACES_ROOT);
|
|
26
|
+
}
|
|
27
|
+
/** Get the run directory for a session. */
|
|
28
|
+
export function runDir(session, projectDir) {
|
|
29
|
+
return join(tracesDir(projectDir), session.replace(/\//g, '-'));
|
|
30
|
+
}
|
|
31
|
+
/** Get the directory for a specific issue trace within a session. */
|
|
32
|
+
export function traceDir(session, issueNum, projectDir) {
|
|
33
|
+
return join(runDir(session, projectDir), String(issueNum));
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Write a trace file for an issue.
|
|
37
|
+
* Creates the directory structure if it doesn't exist.
|
|
38
|
+
*/
|
|
39
|
+
export function writeTrace(session, issueNum, file, content, projectDir) {
|
|
40
|
+
const dir = traceDir(session, issueNum, projectDir);
|
|
41
|
+
mkdirSync(dir, { recursive: true });
|
|
42
|
+
const filePath = join(dir, file);
|
|
43
|
+
writeFileSync(filePath, content);
|
|
44
|
+
log.info(`Trace written: ${filePath}`);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Write trace metadata for an issue.
|
|
48
|
+
*/
|
|
49
|
+
export function writeTraceMetadata(session, issueNum, metadata, projectDir) {
|
|
50
|
+
writeTrace(session, issueNum, 'metadata.json', JSON.stringify(metadata, null, 2) + '\n', projectDir);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Write a file into a named subdirectory of the run (prompts/, outputs/, diffs/, tests/, verify/).
|
|
54
|
+
*/
|
|
55
|
+
export function writeTraceToSubdir(session, subdir, filename, content, projectDir) {
|
|
56
|
+
const dir = join(runDir(session, projectDir), subdir);
|
|
57
|
+
mkdirSync(dir, { recursive: true });
|
|
58
|
+
const filePath = join(dir, filename);
|
|
59
|
+
writeFileSync(filePath, content);
|
|
60
|
+
log.info(`Trace written: ${filePath}`);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Write the run-level manifest.json.
|
|
64
|
+
*/
|
|
65
|
+
export function writeRunManifest(session, manifest, projectDir) {
|
|
66
|
+
const dir = runDir(session, projectDir);
|
|
67
|
+
mkdirSync(dir, { recursive: true });
|
|
68
|
+
const filePath = join(dir, 'manifest.json');
|
|
69
|
+
writeFileSync(filePath, JSON.stringify(manifest, null, 2) + '\n');
|
|
70
|
+
log.info(`Run manifest written: ${filePath}`);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Write the config snapshot for the run.
|
|
74
|
+
*/
|
|
75
|
+
export function writeConfigSnapshot(session, configYaml, projectDir) {
|
|
76
|
+
const dir = runDir(session, projectDir);
|
|
77
|
+
mkdirSync(dir, { recursive: true });
|
|
78
|
+
const filePath = join(dir, 'config.snapshot.yaml');
|
|
79
|
+
writeFileSync(filePath, configYaml);
|
|
80
|
+
log.info(`Config snapshot written: ${filePath}`);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Write scores.json for the run.
|
|
84
|
+
*/
|
|
85
|
+
export function writeScores(session, scores, projectDir) {
|
|
86
|
+
const dir = runDir(session, projectDir);
|
|
87
|
+
mkdirSync(dir, { recursive: true });
|
|
88
|
+
const filePath = join(dir, 'scores.json');
|
|
89
|
+
writeFileSync(filePath, JSON.stringify(scores, null, 2) + '\n');
|
|
90
|
+
log.info(`Scores written: ${filePath}`);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Write costs.json for the run.
|
|
94
|
+
*/
|
|
95
|
+
export function writeCosts(session, costs, projectDir) {
|
|
96
|
+
const dir = runDir(session, projectDir);
|
|
97
|
+
mkdirSync(dir, { recursive: true });
|
|
98
|
+
const filePath = join(dir, 'costs.json');
|
|
99
|
+
writeFileSync(filePath, JSON.stringify(costs, null, 2) + '\n');
|
|
100
|
+
log.info(`Costs written: ${filePath}`);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Compute scores.json from pipeline results.
|
|
104
|
+
*/
|
|
105
|
+
export function computeScores(results) {
|
|
106
|
+
const issues = {};
|
|
107
|
+
for (const r of results) {
|
|
108
|
+
issues[String(r.issueNum)] = {
|
|
109
|
+
status: r.status,
|
|
110
|
+
tests_passed: r.testsPassing,
|
|
111
|
+
verify_passed: r.verifyPassing,
|
|
112
|
+
retries: r.retries,
|
|
113
|
+
duration_seconds: r.duration,
|
|
114
|
+
files_changed: r.filesChanged,
|
|
115
|
+
steps_completed: r.stepsCompleted,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
const total = results.length;
|
|
119
|
+
const passed = results.filter((r) => r.status === 'success').length;
|
|
120
|
+
const passRate = total > 0 ? passed / total : 0;
|
|
121
|
+
const avgRetries = total > 0 ? results.reduce((sum, r) => sum + r.retries, 0) / total : 0;
|
|
122
|
+
const avgDuration = total > 0 ? results.reduce((sum, r) => sum + r.duration, 0) / total : 0;
|
|
123
|
+
// Use the canonical composite score formula from score.ts
|
|
124
|
+
const caseResults = results.map((r) => ({
|
|
125
|
+
caseId: String(r.issueNum),
|
|
126
|
+
passed: r.status === 'success',
|
|
127
|
+
partialCredit: r.status === 'success' ? 1 : 0,
|
|
128
|
+
retries: r.retries,
|
|
129
|
+
duration: r.duration,
|
|
130
|
+
}));
|
|
131
|
+
const compositeScore = computeCompositeScore(caseResults);
|
|
132
|
+
return {
|
|
133
|
+
composite_score: compositeScore,
|
|
134
|
+
issues,
|
|
135
|
+
aggregate: {
|
|
136
|
+
pass_rate: Math.round(passRate * 1000) / 1000,
|
|
137
|
+
avg_retries: Math.round(avgRetries * 10) / 10,
|
|
138
|
+
avg_duration: Math.round(avgDuration),
|
|
139
|
+
total_issues: total,
|
|
140
|
+
issues_passed: passed,
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Compute costs.json from per-step cost entries.
|
|
146
|
+
*/
|
|
147
|
+
export function computeCosts(stepCosts) {
|
|
148
|
+
const byStep = {};
|
|
149
|
+
const byIssue = {};
|
|
150
|
+
let totalCost = 0;
|
|
151
|
+
for (const sc of stepCosts) {
|
|
152
|
+
// Aggregate by step name
|
|
153
|
+
if (!byStep[sc.step]) {
|
|
154
|
+
byStep[sc.step] = {
|
|
155
|
+
model: sc.model,
|
|
156
|
+
input_tokens: 0,
|
|
157
|
+
output_tokens: 0,
|
|
158
|
+
cost_usd: 0,
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
byStep[sc.step].input_tokens += sc.input_tokens;
|
|
162
|
+
byStep[sc.step].output_tokens += sc.output_tokens;
|
|
163
|
+
byStep[sc.step].cost_usd += sc.cost_usd;
|
|
164
|
+
// Aggregate by issue
|
|
165
|
+
const issueKey = String(sc.issueNum);
|
|
166
|
+
if (!byIssue[issueKey]) {
|
|
167
|
+
byIssue[issueKey] = { cost_usd: 0 };
|
|
168
|
+
}
|
|
169
|
+
byIssue[issueKey].cost_usd += sc.cost_usd;
|
|
170
|
+
totalCost += sc.cost_usd;
|
|
171
|
+
}
|
|
172
|
+
// Round all cost values
|
|
173
|
+
for (const step of Object.values(byStep)) {
|
|
174
|
+
step.cost_usd = Math.round(step.cost_usd * 10000) / 10000;
|
|
175
|
+
}
|
|
176
|
+
for (const issue of Object.values(byIssue)) {
|
|
177
|
+
issue.cost_usd = Math.round(issue.cost_usd * 10000) / 10000;
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
total_cost_usd: Math.round(totalCost * 10000) / 10000,
|
|
181
|
+
by_step: byStep,
|
|
182
|
+
by_issue: byIssue,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Read a trace file. Returns null if it doesn't exist.
|
|
187
|
+
*/
|
|
188
|
+
export function readTrace(session, issueNum, file, projectDir) {
|
|
189
|
+
const filePath = join(traceDir(session, issueNum, projectDir), file);
|
|
190
|
+
if (!existsSync(filePath))
|
|
191
|
+
return null;
|
|
192
|
+
return readFileSync(filePath, 'utf-8');
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Read trace metadata for an issue. Returns null if it doesn't exist.
|
|
196
|
+
*/
|
|
197
|
+
export function readTraceMetadata(session, issueNum, projectDir) {
|
|
198
|
+
const raw = readTrace(session, issueNum, 'metadata.json', projectDir);
|
|
199
|
+
if (!raw)
|
|
200
|
+
return null;
|
|
201
|
+
try {
|
|
202
|
+
return JSON.parse(raw);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* List all sessions that have traces.
|
|
210
|
+
*/
|
|
211
|
+
export function listTraceSessions(projectDir) {
|
|
212
|
+
const root = tracesDir(projectDir);
|
|
213
|
+
if (!existsSync(root))
|
|
214
|
+
return [];
|
|
215
|
+
return readdirSync(root, { withFileTypes: true })
|
|
216
|
+
.filter((d) => d.isDirectory())
|
|
217
|
+
.map((d) => d.name)
|
|
218
|
+
.sort();
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* List all issue numbers with traces in a session.
|
|
222
|
+
*/
|
|
223
|
+
export function listTraceIssues(session, projectDir) {
|
|
224
|
+
const sessionDir = runDir(session, projectDir);
|
|
225
|
+
if (!existsSync(sessionDir))
|
|
226
|
+
return [];
|
|
227
|
+
return readdirSync(sessionDir, { withFileTypes: true })
|
|
228
|
+
.filter((d) => d.isDirectory() && /^\d+$/.test(d.name))
|
|
229
|
+
.map((d) => parseInt(d.name, 10))
|
|
230
|
+
.filter((n) => !isNaN(n))
|
|
231
|
+
.sort((a, b) => a - b);
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* List all traces across all sessions.
|
|
235
|
+
* Returns them newest-first by session name (which is timestamp-based).
|
|
236
|
+
*/
|
|
237
|
+
export function listTraces(projectDir) {
|
|
238
|
+
const traces = [];
|
|
239
|
+
const sessions = listTraceSessions(projectDir);
|
|
240
|
+
for (const session of sessions.reverse()) {
|
|
241
|
+
const issues = listTraceIssues(session, projectDir);
|
|
242
|
+
for (const issueNum of issues) {
|
|
243
|
+
const metadata = readTraceMetadata(session, issueNum, projectDir);
|
|
244
|
+
if (metadata) {
|
|
245
|
+
traces.push({
|
|
246
|
+
session,
|
|
247
|
+
issueNum,
|
|
248
|
+
dir: traceDir(session, issueNum, projectDir),
|
|
249
|
+
metadata,
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
return traces;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get the full filesystem path context for a trace.
|
|
258
|
+
* Returns all trace files and their sizes for Meta-Harness-style filesystem access.
|
|
259
|
+
*/
|
|
260
|
+
export function getTraceFiles(session, issueNum, projectDir) {
|
|
261
|
+
const dir = traceDir(session, issueNum, projectDir);
|
|
262
|
+
if (!existsSync(dir))
|
|
263
|
+
return [];
|
|
264
|
+
return readdirSync(dir)
|
|
265
|
+
.map((file) => {
|
|
266
|
+
const filePath = join(dir, file);
|
|
267
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
268
|
+
return { file, size: content.length };
|
|
269
|
+
})
|
|
270
|
+
.sort((a, b) => a.file.localeCompare(b.file));
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=traces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traces.js","sourceRoot":"","sources":["../../src/lib/traces.ts"],"names":[],"mappings":"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"}
|