@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.
Files changed (79) hide show
  1. package/README.md +60 -19
  2. package/dist/cli.js +83 -1
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/auth.js +1 -1
  5. package/dist/commands/auth.js.map +1 -1
  6. package/dist/commands/eval.d.ts +53 -0
  7. package/dist/commands/eval.js +538 -0
  8. package/dist/commands/eval.js.map +1 -0
  9. package/dist/commands/evolve.d.ts +25 -0
  10. package/dist/commands/evolve.js +270 -0
  11. package/dist/commands/evolve.js.map +1 -0
  12. package/dist/commands/history.d.ts +1 -1
  13. package/dist/commands/history.js +4 -4
  14. package/dist/commands/history.js.map +1 -1
  15. package/dist/commands/init.d.ts +14 -0
  16. package/dist/commands/init.js +199 -30
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/commands/resume.js +1 -0
  19. package/dist/commands/resume.js.map +1 -1
  20. package/dist/commands/run.js +170 -12
  21. package/dist/commands/run.js.map +1 -1
  22. package/dist/commands/scan.d.ts +1 -1
  23. package/dist/commands/scan.js +12 -9
  24. package/dist/commands/scan.js.map +1 -1
  25. package/dist/commands/sync.d.ts +5 -0
  26. package/dist/commands/sync.js +24 -5
  27. package/dist/commands/sync.js.map +1 -1
  28. package/dist/commands/vision.js +5 -3
  29. package/dist/commands/vision.js.map +1 -1
  30. package/dist/engine/agents.d.ts +6 -1
  31. package/dist/engine/agents.js +14 -12
  32. package/dist/engine/agents.js.map +1 -1
  33. package/dist/engine/prerequisites.d.ts +4 -7
  34. package/dist/engine/prerequisites.js +12 -36
  35. package/dist/engine/prerequisites.js.map +1 -1
  36. package/dist/lib/agent.d.ts +18 -0
  37. package/dist/lib/agent.js +211 -30
  38. package/dist/lib/agent.js.map +1 -1
  39. package/dist/lib/config.d.ts +25 -2
  40. package/dist/lib/config.js +80 -7
  41. package/dist/lib/config.js.map +1 -1
  42. package/dist/lib/eval-checks.d.ts +91 -0
  43. package/dist/lib/eval-checks.js +254 -0
  44. package/dist/lib/eval-checks.js.map +1 -0
  45. package/dist/lib/eval-runner.d.ts +29 -0
  46. package/dist/lib/eval-runner.js +439 -0
  47. package/dist/lib/eval-runner.js.map +1 -0
  48. package/dist/lib/eval.d.ts +170 -0
  49. package/dist/lib/eval.js +507 -0
  50. package/dist/lib/eval.js.map +1 -0
  51. package/dist/lib/learning.js +2 -2
  52. package/dist/lib/learning.js.map +1 -1
  53. package/dist/lib/pipeline.d.ts +44 -0
  54. package/dist/lib/pipeline.js +607 -138
  55. package/dist/lib/pipeline.js.map +1 -1
  56. package/dist/lib/prompts.d.ts +19 -0
  57. package/dist/lib/prompts.js +56 -5
  58. package/dist/lib/prompts.js.map +1 -1
  59. package/dist/lib/score.d.ts +80 -0
  60. package/dist/lib/score.js +172 -0
  61. package/dist/lib/score.js.map +1 -0
  62. package/dist/lib/session.d.ts +2 -1
  63. package/dist/lib/session.js +70 -19
  64. package/dist/lib/session.js.map +1 -1
  65. package/dist/lib/traces.d.ts +173 -0
  66. package/dist/lib/traces.js +272 -0
  67. package/dist/lib/traces.js.map +1 -0
  68. package/dist/lib/verify.d.ts +7 -1
  69. package/dist/lib/verify.js +109 -157
  70. package/dist/lib/verify.js.map +1 -1
  71. package/dist/lib/worktree.d.ts +1 -0
  72. package/dist/lib/worktree.js +9 -1
  73. package/dist/lib/worktree.js.map +1 -1
  74. package/package.json +1 -1
  75. package/templates/agents/implementer.md +1 -1
  76. package/templates/agents/reviewer.md +1 -1
  77. package/dist/engine/config.d.ts +0 -71
  78. package/dist/engine/config.js +0 -73
  79. package/dist/engine/config.js.map +0 -1
@@ -0,0 +1,538 @@
1
+ /**
2
+ * Eval Command — run eval suite, capture failures, list cases, view scores.
3
+ *
4
+ * Subcommands:
5
+ * alpha-loop eval — Run the eval suite, compute composite score
6
+ * alpha-loop eval capture — Interactive: walk through recent failures
7
+ * alpha-loop eval capture <N> — Capture a specific issue as an eval case
8
+ * alpha-loop eval list — Show eval cases and recent scores
9
+ * alpha-loop eval scores — Score history over time
10
+ * alpha-loop eval search — Greedy config search (model/agent variants)
11
+ * alpha-loop eval pareto — Show score/cost Pareto frontier
12
+ * alpha-loop eval import-swebench — Import from SWE-bench
13
+ */
14
+ import { existsSync, readdirSync, readFileSync } from 'node:fs';
15
+ import { join } from 'node:path';
16
+ import * as readline from 'node:readline';
17
+ import { log } from '../lib/logger.js';
18
+ import { loadConfig } from '../lib/config.js';
19
+ import { loadEvalCases, saveCapturedCase, loadUnannotatedCases, annotateCapturedCase, formatEvalCase, evalsDir, } from '../lib/eval.js';
20
+ import { readScores, latestScore, scoresByConfig, paretoFrontier, formatScoreEntry, compareRuns, } from '../lib/score.js';
21
+ import { listTraceSessions, listTraceIssues, readTraceMetadata, readTrace, } from '../lib/traces.js';
22
+ import { runEvalSuite } from '../lib/eval-runner.js';
23
+ /** Helper to ask a question via readline. */
24
+ function ask(rl, question) {
25
+ return new Promise((resolve) => {
26
+ rl.question(question, (answer) => resolve(answer.trim()));
27
+ });
28
+ }
29
+ /**
30
+ * Run the eval suite.
31
+ */
32
+ export async function evalRunCommand(options) {
33
+ const config = loadConfig();
34
+ // Map --suite to type filter
35
+ let type = options.type;
36
+ if (options.suite === 'step')
37
+ type = 'step';
38
+ if (options.suite === 'e2e')
39
+ type = 'full';
40
+ const cases = loadEvalCases({
41
+ tags: options.tags?.split(','),
42
+ type,
43
+ step: options.step,
44
+ caseId: options.case,
45
+ });
46
+ if (cases.length === 0) {
47
+ log.warn('No eval cases found. Use `alpha-loop eval capture` to create some.');
48
+ log.info(`Eval cases directory: ${evalsDir(undefined, config.evalDir)}`);
49
+ return;
50
+ }
51
+ log.step(`Running ${cases.length} eval case(s)...`);
52
+ console.log('');
53
+ for (const evalCase of cases) {
54
+ console.log(` ${formatEvalCase(evalCase)}`);
55
+ }
56
+ console.log('');
57
+ // Show previous score for comparison
58
+ const previousScore = latestScore(evalsDir(undefined, config.evalDir));
59
+ // Execute the eval suite
60
+ const result = await runEvalSuite(cases, config, {
61
+ caseId: options.case,
62
+ verbose: options.verbose,
63
+ });
64
+ // Print results
65
+ console.log('');
66
+ log.step('Results:');
67
+ console.log('');
68
+ for (const caseResult of result.cases) {
69
+ const icon = caseResult.passed ? 'PASS' : 'FAIL';
70
+ const credit = caseResult.partialCredit < 1 ? ` (credit=${caseResult.partialCredit.toFixed(2)})` : '';
71
+ const error = caseResult.error ? ` — ${caseResult.error}` : '';
72
+ console.log(` ${icon} ${caseResult.caseId} ${caseResult.duration}s${credit}${error}`);
73
+ }
74
+ console.log('');
75
+ console.log(` Score: ${result.composite}`);
76
+ console.log(` Pass: ${result.passCount}/${result.cases.length}`);
77
+ console.log(` Time: ${result.totalDuration}s`);
78
+ // Compare to previous run
79
+ if (previousScore) {
80
+ const delta = result.composite - previousScore.composite;
81
+ const arrow = delta > 0 ? '+' : '';
82
+ console.log(` Delta: ${arrow}${delta.toFixed(2)} (prev: ${previousScore.composite})`);
83
+ }
84
+ }
85
+ /**
86
+ * Compare two eval runs.
87
+ */
88
+ export function evalCompareCommand(run1, run2) {
89
+ const comparison = compareRuns(evalsDir(undefined, loadConfig().evalDir), run1, run2);
90
+ if (!comparison) {
91
+ log.warn('Could not find one or both runs. Use run index (1-based) or timestamp prefix.');
92
+ log.info('Run `alpha-loop eval scores` to see available runs.');
93
+ return;
94
+ }
95
+ log.step('Run Comparison:');
96
+ console.log('');
97
+ console.log(` Run 1: ${comparison.run1.timestamp.split('T')[0]} score=${comparison.run1.composite} cost=$${comparison.run1.totalCost.toFixed(2)}`);
98
+ console.log(` Run 2: ${comparison.run2.timestamp.split('T')[0]} score=${comparison.run2.composite} cost=$${comparison.run2.totalCost.toFixed(2)}`);
99
+ console.log('');
100
+ const scoreDelta = comparison.scoreDelta;
101
+ const scoreArrow = scoreDelta > 0 ? '+' : '';
102
+ console.log(` Score delta: ${scoreArrow}${scoreDelta.toFixed(2)}`);
103
+ console.log(` Cost delta: ${comparison.costDelta >= 0 ? '+' : ''}$${comparison.costDelta.toFixed(2)}`);
104
+ console.log('');
105
+ // Per-case breakdown
106
+ console.log(' Case Run 1 Run 2 Delta');
107
+ console.log(' ---- ----- ----- -----');
108
+ for (const c of comparison.cases) {
109
+ const name = c.caseId.padEnd(32);
110
+ const s1 = c.run1Passed === null ? ' - ' : (c.run1Passed ? ' PASS' : ' FAIL');
111
+ const s2 = c.run2Passed === null ? ' - ' : (c.run2Passed ? ' PASS' : ' FAIL');
112
+ const delta = c.delta === 0 ? ' =' : (c.delta > 0 ? ` +${c.delta.toFixed(1)}` : ` ${c.delta.toFixed(1)}`);
113
+ console.log(` ${name} ${s1} ${s2} ${delta}`);
114
+ }
115
+ }
116
+ /**
117
+ * Capture a failure as an eval case — interactive walkthrough.
118
+ *
119
+ * Flow:
120
+ * 1. Show unannotated (auto-captured) skeleton cases first, prompt to annotate
121
+ * 2. Show recent session failures grouped by session
122
+ * 3. For each failure: show step, test/verify status, prompt for diagnosis
123
+ */
124
+ export async function evalCaptureCommand(options) {
125
+ const config = loadConfig();
126
+ if (options.issue) {
127
+ // Capture a specific issue
128
+ await captureSpecificIssue(parseInt(options.issue, 10), config);
129
+ return;
130
+ }
131
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
132
+ let capturedCount = 0;
133
+ try {
134
+ // Phase 1: Show unannotated skeleton cases first
135
+ const unannotated = loadUnannotatedCases();
136
+ if (unannotated.length > 0) {
137
+ log.step(`Unannotated eval cases (auto-captured):`);
138
+ console.log('');
139
+ for (let i = 0; i < unannotated.length; i++) {
140
+ const u = unannotated[i];
141
+ const meta = u.evalCase;
142
+ console.log(` ${i + 1}. ${meta.id} (issue #${extractIssueNum(meta.id)}, ${meta.source})`);
143
+ }
144
+ console.log('');
145
+ for (const entry of unannotated) {
146
+ const answer = await ask(rl, `Annotate ${entry.evalCase.id}? (y/n): `);
147
+ if (answer.toLowerCase() !== 'y')
148
+ continue;
149
+ const annotation = await promptAnnotation(rl);
150
+ annotateCapturedCase(entry.path, annotation);
151
+ capturedCount++;
152
+ log.success(`Annotated: ${entry.evalCase.id}`);
153
+ }
154
+ if (capturedCount > 0)
155
+ console.log('');
156
+ }
157
+ // Phase 2: Show recent session failures
158
+ const sessionFailures = collectSessionFailures();
159
+ if (sessionFailures.length === 0 && unannotated.length === 0) {
160
+ log.info('No failures found in recent sessions. Nothing to capture.');
161
+ return;
162
+ }
163
+ if (sessionFailures.length > 0) {
164
+ // Group by session
165
+ const grouped = groupBySession(sessionFailures);
166
+ log.step('Recent sessions with failures:');
167
+ console.log('');
168
+ for (const [session, failures] of grouped) {
169
+ console.log(` ${session} — ${failures.length} failure(s)`);
170
+ for (const f of failures) {
171
+ const step = detectFailureStepFromResult(f.result);
172
+ const tests = f.result.testsPassing ? 'PASS' : 'FAIL';
173
+ const verify = f.result.verifySkipped ? 'SKIP' : (f.result.verifyPassing ? 'PASS' : 'FAIL');
174
+ console.log(` #${f.issueNum} — ${f.title}`);
175
+ console.log(` Failed at: ${step} | Tests: ${tests} | Verify: ${verify}`);
176
+ }
177
+ console.log('');
178
+ }
179
+ // Prompt to capture each failure
180
+ for (const [_session, failures] of grouped) {
181
+ for (const failure of failures) {
182
+ const answer = await ask(rl, `Capture #${failure.issueNum}? (y/n/skip all): `);
183
+ if (answer === 'skip all')
184
+ break;
185
+ if (answer.toLowerCase() !== 'y')
186
+ continue;
187
+ const annotation = await promptAnnotation(rl);
188
+ const step = detectFailureStepFromResult(failure.result);
189
+ const casePath = saveCapturedCase({
190
+ issueNum: failure.issueNum,
191
+ title: failure.title,
192
+ issueBody: typeof failure.result.issueBody === 'string' ? failure.result.issueBody : undefined,
193
+ step,
194
+ session: failure.session,
195
+ tags: annotation.tags,
196
+ });
197
+ // Immediately annotate since we have the diagnosis
198
+ annotateCapturedCase(casePath, annotation);
199
+ capturedCount++;
200
+ log.success(`Created: ${casePath}`);
201
+ }
202
+ }
203
+ }
204
+ if (capturedCount > 0) {
205
+ console.log('');
206
+ log.info(`Done. ${capturedCount} eval case(s) created/annotated. Run 'alpha-loop eval --suite step' to test.`);
207
+ }
208
+ }
209
+ finally {
210
+ rl.close();
211
+ }
212
+ }
213
+ /** Prompt user for failure annotation. */
214
+ async function promptAnnotation(rl) {
215
+ console.log('');
216
+ const whatWentWrong = await ask(rl, ' What went wrong? (one line): ');
217
+ const whatShouldHaveHappened = await ask(rl, ' What should have happened? (one line): ');
218
+ const tagsInput = await ask(rl, ' Tags (comma-separated, optional): ');
219
+ return {
220
+ whatWentWrong,
221
+ whatShouldHaveHappened,
222
+ tags: tagsInput.split(',').map((t) => t.trim()).filter(Boolean),
223
+ };
224
+ }
225
+ /** Extract issue number from a captured case ID like "captured-047-module-format". */
226
+ function extractIssueNum(caseId) {
227
+ const match = caseId.match(/captured-(\d+)/);
228
+ return match ? String(parseInt(match[1], 10)) : '?';
229
+ }
230
+ /** Collect failures from recent sessions. */
231
+ function collectSessionFailures() {
232
+ const sessionsDir = join(process.cwd(), '.alpha-loop', 'sessions');
233
+ if (!existsSync(sessionsDir))
234
+ return [];
235
+ const sessionDirs = readdirSync(sessionsDir, { withFileTypes: true })
236
+ .filter((d) => d.isDirectory())
237
+ .map((d) => d.name)
238
+ .sort()
239
+ .reverse();
240
+ const failures = [];
241
+ for (const sessionDir of sessionDirs.slice(0, 5)) {
242
+ const sessionPath = join(sessionsDir, sessionDir);
243
+ const resultFiles = readdirSync(sessionPath)
244
+ .filter((f) => f.startsWith('result-') && f.endsWith('.json'));
245
+ for (const file of resultFiles) {
246
+ try {
247
+ const result = JSON.parse(readFileSync(join(sessionPath, file), 'utf-8'));
248
+ if (result.status === 'failure') {
249
+ failures.push({
250
+ session: sessionDir,
251
+ issueNum: result.issueNum,
252
+ title: result.title ?? `Issue #${result.issueNum}`,
253
+ file: join(sessionPath, file),
254
+ result,
255
+ });
256
+ }
257
+ }
258
+ catch {
259
+ // Skip malformed result files
260
+ }
261
+ }
262
+ }
263
+ return failures;
264
+ }
265
+ /** Group failures by session name. */
266
+ function groupBySession(failures) {
267
+ const grouped = new Map();
268
+ for (const f of failures) {
269
+ const existing = grouped.get(f.session) ?? [];
270
+ existing.push(f);
271
+ grouped.set(f.session, existing);
272
+ }
273
+ return grouped;
274
+ }
275
+ /** Detect failure step from a raw session result object. */
276
+ function detectFailureStepFromResult(result) {
277
+ if (!result.testsPassing) {
278
+ return (typeof result.filesChanged === 'number' && result.filesChanged > 1) ? 'test-fix' : 'implement';
279
+ }
280
+ if (!result.verifyPassing && !result.verifySkipped)
281
+ return 'verify';
282
+ return 'review';
283
+ }
284
+ /** Capture a specific issue number as an eval case. */
285
+ async function captureSpecificIssue(issueNum, config) {
286
+ // Look for this issue in traces
287
+ const sessions = listTraceSessions();
288
+ let found = false;
289
+ for (const session of sessions.reverse()) {
290
+ const issues = listTraceIssues(session);
291
+ if (issues.includes(issueNum)) {
292
+ const metadata = readTraceMetadata(session, issueNum);
293
+ if (metadata) {
294
+ found = true;
295
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
296
+ try {
297
+ await captureFromTrace(rl, session, issueNum, metadata, config);
298
+ }
299
+ finally {
300
+ rl.close();
301
+ }
302
+ break;
303
+ }
304
+ }
305
+ }
306
+ // Fallback: check session result files
307
+ if (!found) {
308
+ const sessionsDir = join(process.cwd(), '.alpha-loop', 'sessions');
309
+ if (existsSync(sessionsDir)) {
310
+ const sessionDirs = readdirSync(sessionsDir, { withFileTypes: true })
311
+ .filter((d) => d.isDirectory())
312
+ .map((d) => d.name)
313
+ .sort()
314
+ .reverse();
315
+ for (const sessionDir of sessionDirs) {
316
+ const resultFile = join(sessionsDir, sessionDir, `result-${issueNum}.json`);
317
+ if (existsSync(resultFile)) {
318
+ found = true;
319
+ const result = JSON.parse(readFileSync(resultFile, 'utf-8'));
320
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
321
+ try {
322
+ await captureFailure(rl, {
323
+ session: sessionDir,
324
+ issueNum,
325
+ title: result.title ?? `Issue #${issueNum}`,
326
+ file: resultFile,
327
+ }, config);
328
+ }
329
+ finally {
330
+ rl.close();
331
+ }
332
+ break;
333
+ }
334
+ }
335
+ }
336
+ }
337
+ if (!found) {
338
+ log.warn(`No data found for issue #${issueNum}. Run the pipeline first, or create an eval case manually.`);
339
+ }
340
+ }
341
+ /** Capture an eval case from trace data. */
342
+ async function captureFromTrace(rl, session, issueNum, metadata, config) {
343
+ log.step(`Capturing eval case from trace: session=${session}, issue=#${issueNum}`);
344
+ // Read available trace data
345
+ const plan = readTrace(session, issueNum, 'plan.json');
346
+ const diff = readTrace(session, issueNum, 'diff.patch');
347
+ const step = metadata.testsPassing
348
+ ? (metadata.verifyPassing ? 'review' : 'verify')
349
+ : 'implement';
350
+ console.log(`\n Issue: #${issueNum} — ${metadata.title}`);
351
+ console.log(` Status: ${metadata.status}`);
352
+ console.log(` Failed at: ${step}`);
353
+ console.log(` Tests: ${metadata.testsPassing ? 'PASS' : 'FAIL'} | Verify: ${metadata.verifySkipped ? 'SKIP' : (metadata.verifyPassing ? 'PASS' : 'FAIL')}`);
354
+ console.log(` Duration: ${metadata.duration}s, Retries: ${metadata.retries}`);
355
+ if (plan)
356
+ console.log(` Plan: available`);
357
+ if (diff)
358
+ console.log(` Diff: ${diff.length} chars`);
359
+ console.log('');
360
+ const annotation = await promptAnnotation(rl);
361
+ const casePath = saveCapturedCase({
362
+ issueNum,
363
+ title: metadata.title,
364
+ step,
365
+ session,
366
+ tags: annotation.tags,
367
+ });
368
+ annotateCapturedCase(casePath, annotation);
369
+ log.success(`Eval case saved: ${casePath}`);
370
+ }
371
+ /** Capture a failure from session result as an eval case. */
372
+ async function captureFailure(rl, failure, config) {
373
+ log.step(`\nCapturing: #${failure.issueNum} — ${failure.title}`);
374
+ const result = JSON.parse(readFileSync(failure.file, 'utf-8'));
375
+ const step = detectFailureStepFromResult(result);
376
+ console.log(` Failed at: ${step}`);
377
+ console.log(` Tests: ${result.testsPassing ? 'PASS' : 'FAIL'} | Verify: ${result.verifySkipped ? 'SKIP' : (result.verifyPassing ? 'PASS' : 'FAIL')}`);
378
+ console.log(` Duration: ${result.duration}s`);
379
+ console.log(` Files changed: ${result.filesChanged}`);
380
+ console.log('');
381
+ const annotation = await promptAnnotation(rl);
382
+ const casePath = saveCapturedCase({
383
+ issueNum: failure.issueNum,
384
+ title: failure.title,
385
+ step,
386
+ session: failure.session,
387
+ tags: annotation.tags,
388
+ });
389
+ annotateCapturedCase(casePath, annotation);
390
+ log.success(`Eval case saved: ${casePath}`);
391
+ }
392
+ /**
393
+ * List eval cases and recent scores.
394
+ */
395
+ export function evalListCommand() {
396
+ const cases = loadEvalCases();
397
+ const dir = evalsDir(undefined, loadConfig().evalDir);
398
+ if (cases.length === 0) {
399
+ log.info('No eval cases found.');
400
+ log.info(`Create eval cases in: ${dir}`);
401
+ log.info('Or use `alpha-loop eval capture` to capture from failures.');
402
+ return;
403
+ }
404
+ log.step(`Eval Cases (${cases.length}):`);
405
+ console.log('');
406
+ const fullCases = cases.filter((c) => c.type === 'full');
407
+ const stepCases = cases.filter((c) => c.type === 'step');
408
+ if (fullCases.length > 0) {
409
+ console.log(' Full Pipeline:');
410
+ for (const c of fullCases) {
411
+ console.log(` ${formatEvalCase(c)}`);
412
+ }
413
+ }
414
+ if (stepCases.length > 0) {
415
+ console.log(' Step-Level:');
416
+ for (const c of stepCases) {
417
+ console.log(` ${formatEvalCase(c)}`);
418
+ }
419
+ }
420
+ console.log('');
421
+ // Show latest score
422
+ const latest = latestScore(dir);
423
+ if (latest) {
424
+ console.log(` Latest score: ${formatScoreEntry(latest)}`);
425
+ }
426
+ }
427
+ /**
428
+ * Show score history.
429
+ */
430
+ export function evalScoresCommand() {
431
+ const scores = readScores(evalsDir(undefined, loadConfig().evalDir));
432
+ if (scores.length === 0) {
433
+ log.info('No scores recorded yet. Run `alpha-loop eval` to generate scores.');
434
+ return;
435
+ }
436
+ log.step(`Score History (${scores.length} entries):`);
437
+ console.log('');
438
+ // Show last 20 entries
439
+ const recent = scores.slice(-20);
440
+ for (const entry of recent) {
441
+ console.log(` ${formatScoreEntry(entry)}`);
442
+ }
443
+ console.log('');
444
+ // Show trend
445
+ if (scores.length >= 2) {
446
+ const first = scores[0].composite;
447
+ const last = scores[scores.length - 1].composite;
448
+ const delta = last - first;
449
+ const arrow = delta > 0 ? '+' : '';
450
+ console.log(` Trend: ${first} -> ${last} (${arrow}${delta.toFixed(2)})`);
451
+ }
452
+ }
453
+ /**
454
+ * Show score/cost Pareto frontier.
455
+ */
456
+ export function evalParetoCommand() {
457
+ const frontier = paretoFrontier(evalsDir(undefined, loadConfig().evalDir));
458
+ if (frontier.length === 0) {
459
+ log.info('No scores recorded yet.');
460
+ return;
461
+ }
462
+ log.step(`Pareto Frontier (${frontier.length} entries):`);
463
+ console.log('');
464
+ console.log(' Score Cost Config');
465
+ console.log(' ----- ---- ------');
466
+ for (const entry of frontier) {
467
+ const score = entry.composite.toFixed(2).padStart(6);
468
+ const cost = `$${entry.totalCost.toFixed(2)}`.padStart(8);
469
+ console.log(` ${score} ${cost} ${entry.configHash}`);
470
+ }
471
+ }
472
+ /**
473
+ * Greedy search over model/agent configs.
474
+ */
475
+ export async function evalSearchCommand(options) {
476
+ const config = loadConfig();
477
+ const cases = loadEvalCases();
478
+ if (cases.length === 0) {
479
+ log.warn('No eval cases found. Create some first with `alpha-loop eval capture`.');
480
+ return;
481
+ }
482
+ const models = options.models?.split(',') ?? [config.model || 'default'];
483
+ const agents = options.agents?.split(',') ?? [config.agent];
484
+ const maxRuns = parseInt(options.maxRuns ?? '10', 10);
485
+ log.step('Config Search');
486
+ console.log(` Models: ${models.join(', ')}`);
487
+ console.log(` Agents: ${agents.join(', ')}`);
488
+ console.log(` Eval cases: ${cases.length}`);
489
+ console.log(` Max runs: ${maxRuns}`);
490
+ console.log('');
491
+ // Generate config variants
492
+ const variants = [];
493
+ for (const agent of agents) {
494
+ for (const model of models) {
495
+ variants.push({ agent, model });
496
+ }
497
+ }
498
+ log.info(`Generated ${variants.length} config variant(s).`);
499
+ log.info('To execute: run `alpha-loop eval` with each config variant.');
500
+ log.info('Results will be tracked in scores.jsonl for comparison.');
501
+ console.log('');
502
+ for (let i = 0; i < Math.min(variants.length, maxRuns); i++) {
503
+ const v = variants[i];
504
+ console.log(` ${i + 1}. agent=${v.agent} model=${v.model}`);
505
+ }
506
+ // Show current best
507
+ const configs = scoresByConfig(evalsDir(undefined, config.evalDir));
508
+ if (configs.length > 0) {
509
+ console.log('');
510
+ log.step('Current Rankings:');
511
+ for (const c of configs.slice(0, 5)) {
512
+ const best = Math.max(...c.scores.map((s) => s.composite));
513
+ console.log(` ${c.configHash}: best=${best.toFixed(2)} (${c.scores.length} runs)`);
514
+ }
515
+ }
516
+ }
517
+ /**
518
+ * Import SWE-bench cases (placeholder — requires HuggingFace download).
519
+ */
520
+ export async function evalImportSwebenchCommand() {
521
+ log.step('SWE-bench Import');
522
+ log.info('');
523
+ log.info('SWE-bench integration imports real GitHub issues with validated patches.');
524
+ log.info('');
525
+ log.info('Setup:');
526
+ log.info(' 1. Clone the alpha-loop-evals fixture monorepo');
527
+ log.info(' 2. Download SWE-bench dataset from HuggingFace:');
528
+ log.info(' princeton-nlp/SWE-bench');
529
+ log.info(' 3. Run: alpha-loop eval import-swebench --dataset <path>');
530
+ log.info('');
531
+ log.info('Each SWE-bench instance becomes an eval case with:');
532
+ log.info(' - fixture_repo: the target repo at the specific commit');
533
+ log.info(' - issue_body: the original GitHub issue description');
534
+ log.info(' - expected: validated patch as ground truth');
535
+ log.info('');
536
+ log.info('This is planned for M2 (Eval Content). See issue #95.');
537
+ }
538
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/commands/eval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export type EvolveOptions = {
2
+ maxIterations?: string;
3
+ dryRun?: boolean;
4
+ verbose?: boolean;
5
+ };
6
+ /**
7
+ * Run the evolve loop: propose → eval → keep/discard.
8
+ */
9
+ export declare function evolveCommand(options: EvolveOptions): Promise<void>;
10
+ /** Parsed proposed change from agent output. */
11
+ type ProposedChange = {
12
+ path: string;
13
+ content: string;
14
+ reason: string;
15
+ };
16
+ /**
17
+ * Parse proposed changes from agent output.
18
+ * Expects a JSON array in the output.
19
+ */
20
+ export declare function parseProposedChanges(output: string): ProposedChange[];
21
+ /**
22
+ * Check if a proposed path is safe to modify.
23
+ */
24
+ export declare function isSafePath(filePath: string): boolean;
25
+ export {};