@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.
Files changed (44) hide show
  1. package/dist/cli.js +80 -1
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/eval.d.ts +53 -0
  4. package/dist/commands/eval.js +538 -0
  5. package/dist/commands/eval.js.map +1 -0
  6. package/dist/commands/evolve.d.ts +25 -0
  7. package/dist/commands/evolve.js +270 -0
  8. package/dist/commands/evolve.js.map +1 -0
  9. package/dist/commands/history.d.ts +1 -1
  10. package/dist/commands/history.js +4 -4
  11. package/dist/commands/history.js.map +1 -1
  12. package/dist/commands/run.js +139 -0
  13. package/dist/commands/run.js.map +1 -1
  14. package/dist/lib/agent.d.ts +8 -0
  15. package/dist/lib/agent.js +28 -3
  16. package/dist/lib/agent.js.map +1 -1
  17. package/dist/lib/config.d.ts +22 -0
  18. package/dist/lib/config.js +63 -0
  19. package/dist/lib/config.js.map +1 -1
  20. package/dist/lib/eval-checks.d.ts +91 -0
  21. package/dist/lib/eval-checks.js +254 -0
  22. package/dist/lib/eval-checks.js.map +1 -0
  23. package/dist/lib/eval-runner.d.ts +29 -0
  24. package/dist/lib/eval-runner.js +439 -0
  25. package/dist/lib/eval-runner.js.map +1 -0
  26. package/dist/lib/eval.d.ts +170 -0
  27. package/dist/lib/eval.js +507 -0
  28. package/dist/lib/eval.js.map +1 -0
  29. package/dist/lib/pipeline.d.ts +9 -0
  30. package/dist/lib/pipeline.js +186 -10
  31. package/dist/lib/pipeline.js.map +1 -1
  32. package/dist/lib/prompts.d.ts +18 -0
  33. package/dist/lib/prompts.js +48 -0
  34. package/dist/lib/prompts.js.map +1 -1
  35. package/dist/lib/score.d.ts +80 -0
  36. package/dist/lib/score.js +172 -0
  37. package/dist/lib/score.js.map +1 -0
  38. package/dist/lib/session.d.ts +2 -1
  39. package/dist/lib/session.js +16 -0
  40. package/dist/lib/session.js.map +1 -1
  41. package/dist/lib/traces.d.ts +173 -0
  42. package/dist/lib/traces.js +272 -0
  43. package/dist/lib/traces.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,80 @@
1
+ /** Result for a single eval case within a score run. */
2
+ export type CaseResult = {
3
+ caseId: string;
4
+ passed: boolean;
5
+ partialCredit: number;
6
+ retries: number;
7
+ duration: number;
8
+ error?: string;
9
+ };
10
+ /** A single score entry in the JSONL history. */
11
+ export type ScoreEntry = {
12
+ timestamp: string;
13
+ configHash: string;
14
+ config: Record<string, unknown>;
15
+ cases: CaseResult[];
16
+ composite: number;
17
+ totalCost: number;
18
+ };
19
+ /** Get the path to the scores JSONL file. */
20
+ export declare function scoresPath(evalsDir: string): string;
21
+ /**
22
+ * Compute the composite score from case results.
23
+ *
24
+ * score = (passing/total)*100 - 0.1*avg_retries - 0.01*avg_duration
25
+ */
26
+ export declare function computeCompositeScore(cases: CaseResult[]): number;
27
+ /**
28
+ * Hash a config object to create a stable identifier for comparison.
29
+ */
30
+ export declare function hashConfig(config: Record<string, unknown>): string;
31
+ /**
32
+ * Append a score entry to the JSONL file.
33
+ */
34
+ export declare function appendScore(evalsDir: string, entry: ScoreEntry): void;
35
+ /**
36
+ * Read all score entries from the JSONL file.
37
+ */
38
+ export declare function readScores(evalsDir: string): ScoreEntry[];
39
+ /**
40
+ * Get the most recent score entry.
41
+ */
42
+ export declare function latestScore(evalsDir: string): ScoreEntry | null;
43
+ /**
44
+ * Get score history grouped by config hash.
45
+ * Returns configs sorted by best composite score (descending).
46
+ */
47
+ export declare function scoresByConfig(evalsDir: string): Array<{
48
+ configHash: string;
49
+ config: Record<string, unknown>;
50
+ scores: ScoreEntry[];
51
+ }>;
52
+ /**
53
+ * Compute the Pareto frontier of score vs cost.
54
+ * Returns entries where no other entry has both higher score AND lower cost.
55
+ */
56
+ export declare function paretoFrontier(evalsDir: string): ScoreEntry[];
57
+ /** Comparison of two eval runs showing per-case changes. */
58
+ export type RunComparison = {
59
+ run1: ScoreEntry;
60
+ run2: ScoreEntry;
61
+ scoreDelta: number;
62
+ costDelta: number;
63
+ cases: Array<{
64
+ caseId: string;
65
+ run1Passed: boolean | null;
66
+ run2Passed: boolean | null;
67
+ run1Score: number | null;
68
+ run2Score: number | null;
69
+ delta: number;
70
+ }>;
71
+ };
72
+ /**
73
+ * Compare two eval runs by index (1-based) or timestamp prefix.
74
+ * Returns per-case deltas and aggregate score/cost changes.
75
+ */
76
+ export declare function compareRuns(evalsDir: string, ref1: string, ref2: string): RunComparison | null;
77
+ /**
78
+ * Format a score entry for display.
79
+ */
80
+ export declare function formatScoreEntry(entry: ScoreEntry): string;
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Score Tracking — append-only JSONL score history.
3
+ *
4
+ * Scores are appended to .alpha-loop/evals/scores.jsonl with:
5
+ * timestamp, config hash, per-case results, composite score, cost.
6
+ *
7
+ * Composite score formula (from autoresearch pattern):
8
+ * score = (passing/total)*100 - 0.1*avg_retries - 0.01*avg_duration
9
+ */
10
+ import { existsSync, mkdirSync, readFileSync, appendFileSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ import { createHash } from 'node:crypto';
13
+ const SCORES_FILE = 'scores.jsonl';
14
+ /** Get the path to the scores JSONL file. */
15
+ export function scoresPath(evalsDir) {
16
+ return join(evalsDir, SCORES_FILE);
17
+ }
18
+ /**
19
+ * Compute the composite score from case results.
20
+ *
21
+ * score = (passing/total)*100 - 0.1*avg_retries - 0.01*avg_duration
22
+ */
23
+ export function computeCompositeScore(cases) {
24
+ if (cases.length === 0)
25
+ return 0;
26
+ const passing = cases.filter((c) => c.passed).length;
27
+ const totalRetries = cases.reduce((sum, c) => sum + c.retries, 0);
28
+ const totalDuration = cases.reduce((sum, c) => sum + c.duration, 0);
29
+ const avgRetries = totalRetries / cases.length;
30
+ const avgDuration = totalDuration / cases.length;
31
+ const score = (passing / cases.length) * 100 - 0.1 * avgRetries - 0.01 * avgDuration;
32
+ return Math.round(score * 100) / 100;
33
+ }
34
+ /**
35
+ * Hash a config object to create a stable identifier for comparison.
36
+ */
37
+ export function hashConfig(config) {
38
+ const sorted = JSON.stringify(config, Object.keys(config).sort());
39
+ return createHash('sha256').update(sorted).digest('hex').slice(0, 12);
40
+ }
41
+ /**
42
+ * Append a score entry to the JSONL file.
43
+ */
44
+ export function appendScore(evalsDir, entry) {
45
+ mkdirSync(evalsDir, { recursive: true });
46
+ const filePath = scoresPath(evalsDir);
47
+ appendFileSync(filePath, JSON.stringify(entry) + '\n');
48
+ }
49
+ /**
50
+ * Read all score entries from the JSONL file.
51
+ */
52
+ export function readScores(evalsDir) {
53
+ const filePath = scoresPath(evalsDir);
54
+ if (!existsSync(filePath))
55
+ return [];
56
+ const lines = readFileSync(filePath, 'utf-8').trim().split('\n').filter(Boolean);
57
+ const entries = [];
58
+ for (const line of lines) {
59
+ try {
60
+ entries.push(JSON.parse(line));
61
+ }
62
+ catch {
63
+ // Skip malformed lines
64
+ }
65
+ }
66
+ return entries;
67
+ }
68
+ /**
69
+ * Get the most recent score entry.
70
+ */
71
+ export function latestScore(evalsDir) {
72
+ const scores = readScores(evalsDir);
73
+ return scores.length > 0 ? scores[scores.length - 1] : null;
74
+ }
75
+ /**
76
+ * Get score history grouped by config hash.
77
+ * Returns configs sorted by best composite score (descending).
78
+ */
79
+ export function scoresByConfig(evalsDir) {
80
+ const all = readScores(evalsDir);
81
+ const grouped = new Map();
82
+ for (const entry of all) {
83
+ if (!grouped.has(entry.configHash)) {
84
+ grouped.set(entry.configHash, { config: entry.config, scores: [] });
85
+ }
86
+ grouped.get(entry.configHash).scores.push(entry);
87
+ }
88
+ return Array.from(grouped.entries())
89
+ .map(([configHash, data]) => ({ configHash, ...data }))
90
+ .sort((a, b) => {
91
+ const bestA = Math.max(...a.scores.map((s) => s.composite));
92
+ const bestB = Math.max(...b.scores.map((s) => s.composite));
93
+ return bestB - bestA;
94
+ });
95
+ }
96
+ /**
97
+ * Compute the Pareto frontier of score vs cost.
98
+ * Returns entries where no other entry has both higher score AND lower cost.
99
+ */
100
+ export function paretoFrontier(evalsDir) {
101
+ const all = readScores(evalsDir);
102
+ if (all.length === 0)
103
+ return [];
104
+ // Sort by composite score descending
105
+ const sorted = [...all].sort((a, b) => b.composite - a.composite);
106
+ const frontier = [];
107
+ let minCost = Infinity;
108
+ for (const entry of sorted) {
109
+ if (entry.totalCost <= minCost) {
110
+ frontier.push(entry);
111
+ minCost = entry.totalCost;
112
+ }
113
+ }
114
+ return frontier;
115
+ }
116
+ /**
117
+ * Compare two eval runs by index (1-based) or timestamp prefix.
118
+ * Returns per-case deltas and aggregate score/cost changes.
119
+ */
120
+ export function compareRuns(evalsDir, ref1, ref2) {
121
+ const scores = readScores(evalsDir);
122
+ if (scores.length === 0)
123
+ return null;
124
+ const resolve = (ref) => {
125
+ // Try as 1-based index
126
+ const idx = parseInt(ref, 10);
127
+ if (!isNaN(idx) && idx >= 1 && idx <= scores.length) {
128
+ return scores[idx - 1];
129
+ }
130
+ // Try as timestamp prefix
131
+ return scores.find((s) => s.timestamp.startsWith(ref));
132
+ };
133
+ const run1 = resolve(ref1);
134
+ const run2 = resolve(ref2);
135
+ if (!run1 || !run2)
136
+ return null;
137
+ // Build per-case comparison
138
+ const allCaseIds = new Set();
139
+ for (const c of run1.cases)
140
+ allCaseIds.add(c.caseId);
141
+ for (const c of run2.cases)
142
+ allCaseIds.add(c.caseId);
143
+ const cases = Array.from(allCaseIds).sort().map((caseId) => {
144
+ const c1 = run1.cases.find((c) => c.caseId === caseId);
145
+ const c2 = run2.cases.find((c) => c.caseId === caseId);
146
+ return {
147
+ caseId,
148
+ run1Passed: c1?.passed ?? null,
149
+ run2Passed: c2?.passed ?? null,
150
+ run1Score: c1?.partialCredit ?? null,
151
+ run2Score: c2?.partialCredit ?? null,
152
+ delta: (c2?.partialCredit ?? 0) - (c1?.partialCredit ?? 0),
153
+ };
154
+ });
155
+ return {
156
+ run1,
157
+ run2,
158
+ scoreDelta: run2.composite - run1.composite,
159
+ costDelta: run2.totalCost - run1.totalCost,
160
+ cases,
161
+ };
162
+ }
163
+ /**
164
+ * Format a score entry for display.
165
+ */
166
+ export function formatScoreEntry(entry) {
167
+ const passing = entry.cases.filter((c) => c.passed).length;
168
+ const total = entry.cases.length;
169
+ const date = entry.timestamp.split('T')[0];
170
+ return `${date} score=${entry.composite} pass=${passing}/${total} cost=$${entry.totalCost.toFixed(2)} config=${entry.configHash}`;
171
+ }
172
+ //# sourceMappingURL=score.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"score.js","sourceRoot":"","sources":["../../src/lib/score.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import type { Config } from './config.js';
2
- import type { PipelineResult } from './pipeline.js';
2
+ import type { PipelineResult, GateResult } from './pipeline.js';
3
3
  export type SessionContext = {
4
4
  name: string;
5
5
  branch: string;
6
6
  resultsDir: string;
7
7
  logsDir: string;
8
8
  results: PipelineResult[];
9
+ sessionReviewFindings?: GateResult;
9
10
  };
10
11
  /**
11
12
  * Create a new session context with timestamp-based name.
@@ -185,6 +185,22 @@ export async function finalizeSession(session, config) {
185
185
  prLines.push(`*${transientFailures.length} issue(s) were re-queued due to agent rate limits.*`);
186
186
  prLines.push('');
187
187
  }
188
+ // Session review findings
189
+ if (session.sessionReviewFindings) {
190
+ const gate = session.sessionReviewFindings;
191
+ prLines.push('### Session Review');
192
+ prLines.push('');
193
+ prLines.push(`**Status:** ${gate.passed ? 'PASSED' : 'NEEDS ATTENTION'}`);
194
+ prLines.push(`**Summary:** ${gate.summary || 'No summary'}`);
195
+ if (gate.findings.length > 0) {
196
+ prLines.push('');
197
+ for (const f of gate.findings) {
198
+ const fixedTag = f.fixed ? ' (fixed)' : '';
199
+ prLines.push(`- [${f.severity.toUpperCase()}] ${f.description}${fixedTag}${f.file ? ` — \`${f.file}\`` : ''}`);
200
+ }
201
+ }
202
+ prLines.push('');
203
+ }
188
204
  prLines.push('---');
189
205
  prLines.push(`This PR collects all changes from this session for final review before merging to ${config.baseBranch}.`);
190
206
  prLines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/lib/session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ /** Known trace file names within an issue trace directory (backward compat). */
2
+ export type TraceFile = 'agent-output.txt' | 'diff.patch' | 'test-output.txt' | 'review-output.json' | 'verify-output.json' | 'plan.json' | 'metadata.json';
3
+ /** Pipeline metadata stored alongside traces. */
4
+ export type TraceMetadata = {
5
+ issueNum: number;
6
+ title: string;
7
+ status: 'success' | 'failure';
8
+ failureReason?: 'transient' | 'permanent';
9
+ duration: number;
10
+ retries: number;
11
+ testsPassing: boolean;
12
+ verifyPassing: boolean;
13
+ verifySkipped: boolean;
14
+ filesChanged: number;
15
+ prUrl?: string;
16
+ timestamp: string;
17
+ agent: string;
18
+ model: string;
19
+ };
20
+ /** A complete trace for one issue run. */
21
+ export type Trace = {
22
+ session: string;
23
+ issueNum: number;
24
+ dir: string;
25
+ metadata: TraceMetadata;
26
+ };
27
+ /** Run-level manifest with metadata about the entire run. */
28
+ export type RunManifest = {
29
+ runId: string;
30
+ startedAt: string;
31
+ completedAt: string;
32
+ issues: number[];
33
+ config: {
34
+ agent: string;
35
+ model: string;
36
+ reviewModel: string;
37
+ testCommand: string;
38
+ baseBranch: string;
39
+ };
40
+ gitState: {
41
+ branch: string;
42
+ commit: string;
43
+ };
44
+ totalDuration: number;
45
+ };
46
+ /** Per-issue score in scores.json. */
47
+ export type IssueScore = {
48
+ status: 'success' | 'failure';
49
+ tests_passed: boolean;
50
+ verify_passed: boolean;
51
+ retries: number;
52
+ duration_seconds: number;
53
+ files_changed: number;
54
+ steps_completed: string[];
55
+ };
56
+ /** Run-level scores.json format. */
57
+ export type ScoresJson = {
58
+ composite_score: number;
59
+ issues: Record<string, IssueScore>;
60
+ aggregate: {
61
+ pass_rate: number;
62
+ avg_retries: number;
63
+ avg_duration: number;
64
+ total_issues: number;
65
+ issues_passed: number;
66
+ };
67
+ };
68
+ /** Per-step cost entry. */
69
+ export type StepCost = {
70
+ step: string;
71
+ issueNum: number;
72
+ model: string;
73
+ input_tokens: number;
74
+ output_tokens: number;
75
+ cost_usd: number;
76
+ };
77
+ /** Run-level costs.json format. */
78
+ export type CostsJson = {
79
+ total_cost_usd: number;
80
+ by_step: Record<string, {
81
+ model: string;
82
+ input_tokens: number;
83
+ output_tokens: number;
84
+ cost_usd: number;
85
+ }>;
86
+ by_issue: Record<string, {
87
+ cost_usd: number;
88
+ }>;
89
+ };
90
+ /** Pipeline result used to compute scores. */
91
+ export type PipelineResultForScores = {
92
+ issueNum: number;
93
+ status: 'success' | 'failure';
94
+ testsPassing: boolean;
95
+ verifyPassing: boolean;
96
+ verifySkipped: boolean;
97
+ retries: number;
98
+ duration: number;
99
+ filesChanged: number;
100
+ stepsCompleted: string[];
101
+ };
102
+ /** Get the base traces directory. */
103
+ export declare function tracesDir(projectDir?: string): string;
104
+ /** Get the run directory for a session. */
105
+ export declare function runDir(session: string, projectDir?: string): string;
106
+ /** Get the directory for a specific issue trace within a session. */
107
+ export declare function traceDir(session: string, issueNum: number, projectDir?: string): string;
108
+ /**
109
+ * Write a trace file for an issue.
110
+ * Creates the directory structure if it doesn't exist.
111
+ */
112
+ export declare function writeTrace(session: string, issueNum: number, file: TraceFile, content: string, projectDir?: string): void;
113
+ /**
114
+ * Write trace metadata for an issue.
115
+ */
116
+ export declare function writeTraceMetadata(session: string, issueNum: number, metadata: TraceMetadata, projectDir?: string): void;
117
+ /**
118
+ * Write a file into a named subdirectory of the run (prompts/, outputs/, diffs/, tests/, verify/).
119
+ */
120
+ export declare function writeTraceToSubdir(session: string, subdir: string, filename: string, content: string, projectDir?: string): void;
121
+ /**
122
+ * Write the run-level manifest.json.
123
+ */
124
+ export declare function writeRunManifest(session: string, manifest: RunManifest, projectDir?: string): void;
125
+ /**
126
+ * Write the config snapshot for the run.
127
+ */
128
+ export declare function writeConfigSnapshot(session: string, configYaml: string, projectDir?: string): void;
129
+ /**
130
+ * Write scores.json for the run.
131
+ */
132
+ export declare function writeScores(session: string, scores: ScoresJson, projectDir?: string): void;
133
+ /**
134
+ * Write costs.json for the run.
135
+ */
136
+ export declare function writeCosts(session: string, costs: CostsJson, projectDir?: string): void;
137
+ /**
138
+ * Compute scores.json from pipeline results.
139
+ */
140
+ export declare function computeScores(results: PipelineResultForScores[]): ScoresJson;
141
+ /**
142
+ * Compute costs.json from per-step cost entries.
143
+ */
144
+ export declare function computeCosts(stepCosts: StepCost[]): CostsJson;
145
+ /**
146
+ * Read a trace file. Returns null if it doesn't exist.
147
+ */
148
+ export declare function readTrace(session: string, issueNum: number, file: TraceFile, projectDir?: string): string | null;
149
+ /**
150
+ * Read trace metadata for an issue. Returns null if it doesn't exist.
151
+ */
152
+ export declare function readTraceMetadata(session: string, issueNum: number, projectDir?: string): TraceMetadata | null;
153
+ /**
154
+ * List all sessions that have traces.
155
+ */
156
+ export declare function listTraceSessions(projectDir?: string): string[];
157
+ /**
158
+ * List all issue numbers with traces in a session.
159
+ */
160
+ export declare function listTraceIssues(session: string, projectDir?: string): number[];
161
+ /**
162
+ * List all traces across all sessions.
163
+ * Returns them newest-first by session name (which is timestamp-based).
164
+ */
165
+ export declare function listTraces(projectDir?: string): Trace[];
166
+ /**
167
+ * Get the full filesystem path context for a trace.
168
+ * Returns all trace files and their sizes for Meta-Harness-style filesystem access.
169
+ */
170
+ export declare function getTraceFiles(session: string, issueNum: number, projectDir?: string): Array<{
171
+ file: string;
172
+ size: number;
173
+ }>;