@bradtaylorsf/alpha-loop 1.0.0 → 1.1.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 (41) hide show
  1. package/README.md +34 -4
  2. package/dist/cli.js +25 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/history.js +196 -93
  5. package/dist/commands/history.js.map +1 -1
  6. package/dist/commands/init.d.ts +1 -1
  7. package/dist/commands/init.js +163 -107
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/resume.d.ts +8 -0
  10. package/dist/commands/resume.js +391 -0
  11. package/dist/commands/resume.js.map +1 -0
  12. package/dist/commands/review.d.ts +8 -0
  13. package/dist/commands/review.js +549 -0
  14. package/dist/commands/review.js.map +1 -0
  15. package/dist/commands/run.js +2 -2
  16. package/dist/commands/run.js.map +1 -1
  17. package/dist/commands/scan.d.ts +5 -0
  18. package/dist/commands/scan.js +129 -0
  19. package/dist/commands/scan.js.map +1 -1
  20. package/dist/commands/sync.d.ts +27 -3
  21. package/dist/commands/sync.js +222 -44
  22. package/dist/commands/sync.js.map +1 -1
  23. package/dist/lib/agent.d.ts +4 -0
  24. package/dist/lib/agent.js +43 -11
  25. package/dist/lib/agent.js.map +1 -1
  26. package/dist/lib/config.d.ts +1 -0
  27. package/dist/lib/config.js +2 -0
  28. package/dist/lib/config.js.map +1 -1
  29. package/dist/lib/github.d.ts +5 -0
  30. package/dist/lib/github.js +22 -2
  31. package/dist/lib/github.js.map +1 -1
  32. package/dist/lib/pipeline.js +19 -11
  33. package/dist/lib/pipeline.js.map +1 -1
  34. package/dist/lib/session.js +25 -5
  35. package/dist/lib/session.js.map +1 -1
  36. package/dist/lib/templates.d.ts +16 -0
  37. package/dist/lib/templates.js +59 -0
  38. package/dist/lib/templates.js.map +1 -0
  39. package/dist/lib/verify.js +18 -13
  40. package/dist/lib/verify.js.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -52,7 +52,7 @@ alpha-loop run --milestone "v1.0"
52
52
 
53
53
  Alpha Loop implements a 12-step pipeline for each issue:
54
54
 
55
- 1. **Status Update** — Labels issue `in-progress`, updates project board
55
+ 1. **Status Update** — Labels issue `in-progress`, assigns to you, updates project board
56
56
  2. **Worktree** — Creates an isolated git worktree so work doesn't conflict with other issues
57
57
  3. **Plan** — Agent analyzes the issue and enriches it with implementation details
58
58
  4. **Implement** — Agent writes the code, guided by project vision, context, and learnings from previous issues
@@ -97,6 +97,28 @@ Each completed issue produces a learning file in `.alpha-loop/learnings/` with:
97
97
 
98
98
  These learnings are automatically fed into future implementation prompts, so the agent gets smarter over time.
99
99
 
100
+ ### Self-Improvement (`alpha-loop review`)
101
+
102
+ Run `alpha-loop review` to trigger the self-improvement loop. It reads all accumulated learnings, computes metrics (success rate, avg retries, common failures), gathers current agent/skill definitions, and asks Claude to propose targeted improvements:
103
+
104
+ - **Agent prompts** — bake in recurring patterns, eliminate anti-patterns
105
+ - **Skill definitions** — add/update skills based on what consistently works or fails
106
+ - **Testing environment** — fix Playwright config, port conflicts, auth state, data seeding issues
107
+ - **Harness configuration** — tune timeouts, retries, and defaults
108
+
109
+ Without `--apply`, proposals are saved to `learnings/proposed-updates/` for review. With `--apply`, changes are written and a draft PR is created.
110
+
111
+ ### Crash Recovery (`alpha-loop resume`)
112
+
113
+ If the loop hangs or crashes mid-session, work can be stranded on local branches with no PR. Run `alpha-loop resume` to recover:
114
+
115
+ 1. Scans for local `agent/issue-*` branches with commits but no open PR
116
+ 2. Pushes each branch to origin
117
+ 3. Runs code review
118
+ 4. Creates PRs and updates issue status
119
+
120
+ Use `--issue <N>` to resume a specific issue.
121
+
100
122
  ### Screenshots
101
123
 
102
124
  During live verification, the agent takes screenshots at key states and saves them to `.alpha-loop/sessions/<name>/screenshots/issue-<N>/`. These are kept locally (not committed to git) for debugging.
@@ -115,7 +137,11 @@ During live verification, the agent takes screenshots at key states and saves th
115
137
  | `alpha-loop history <name>` | View a specific session |
116
138
  | `alpha-loop history <name> --qa` | Show QA checklist for session |
117
139
  | `alpha-loop history --clean` | Remove old session data |
118
- | `alpha-loop sync` | Sync agent assets (AGENTS.md, skills) across agent directories |
140
+ | `alpha-loop sync` | Sync templates to configured harnesses (Claude, Codex, Cursor, etc.) |
141
+ | `alpha-loop resume` | Resume stranded work — push branches, review, open PRs |
142
+ | `alpha-loop resume --issue <N>` | Resume a specific issue |
143
+ | `alpha-loop review` | Analyze learnings and propose self-improvements |
144
+ | `alpha-loop review --apply` | Apply proposed improvements and create a draft PR |
119
145
 
120
146
  ### Run Options
121
147
 
@@ -140,6 +166,7 @@ Running `alpha-loop init` creates a `.alpha-loop.yaml` file:
140
166
  ```yaml
141
167
  # Alpha Loop configuration
142
168
  repo: owner/repo-name
169
+ project: 0 # GitHub Project number (find it in your project URL)
143
170
  model: opus
144
171
  review_model: opus
145
172
  label: ready
@@ -159,6 +186,7 @@ max_session_duration: 7200 # 2 hours in seconds
159
186
  | Key | Default | Description |
160
187
  |-----|---------|-------------|
161
188
  | `repo` | (auto-detected) | GitHub repo in `owner/name` format |
189
+ | `project` | `0` | GitHub Project number (from URL: `users/<owner>/projects/<N>`) |
162
190
  | `model` | `opus` | AI model for implementation and verification |
163
191
  | `review_model` | `opus` | AI model for code review and learning extraction |
164
192
  | `label` | `ready` | GitHub label that marks issues as ready for the loop |
@@ -180,6 +208,7 @@ max_session_duration: 7200 # 2 hours in seconds
180
208
  | `skip_install` | `false` | Skip `pnpm install` in worktrees |
181
209
  | `skip_preflight` | `false` | Skip pre-flight test validation |
182
210
  | `auto_cleanup` | `true` | Auto-remove worktrees after processing |
211
+ | `harnesses` | `['claude-code', 'codex']` | Coding harnesses to sync skills/agents to |
183
212
 
184
213
  ### Environment Variables
185
214
 
@@ -188,6 +217,7 @@ All config options can be set via environment variables (uppercase, same names):
188
217
  | Variable | Config Key |
189
218
  |----------|------------|
190
219
  | `REPO` | `repo` |
220
+ | `PROJECT` | `project` |
191
221
  | `MODEL` | `model` |
192
222
  | `REVIEW_MODEL` | `review_model` |
193
223
  | `MAX_TEST_RETRIES` | `max_test_retries` |
@@ -261,8 +291,8 @@ What needs to be done.
261
291
  |-----------|-------------|---------|
262
292
  | `.alpha-loop/vision.md` | Yes | Project vision document |
263
293
  | `.alpha-loop/context.md` | Yes | Auto-generated project context |
264
- | `.alpha-loop/learnings/` | Yes | Learning files from each issue + session summaries |
265
- | `.alpha-loop/sessions/` | No (gitignored) | Session logs, results JSON, screenshots |
294
+ | `.alpha-loop/learnings/` | Yes | Learning files, session manifests, and session summaries (shared with team) |
295
+ | `.alpha-loop/sessions/` | No (gitignored) | Local session logs, results JSON, screenshots |
266
296
  | `.alpha-loop/auth/` | No (gitignored) | Saved browser auth state for verification |
267
297
  | `.worktrees/` | No (gitignored) | Temporary git worktrees during processing |
268
298
 
package/dist/cli.js CHANGED
@@ -1,6 +1,5 @@
1
1
  #!/usr/bin/env node
2
2
  import { program } from 'commander';
3
- import { initCommand } from './commands/init.js';
4
3
  import { historyCommand } from './commands/history.js';
5
4
  import { scanCommand } from './commands/scan.js';
6
5
  import { visionCommand } from './commands/vision.js';
@@ -9,11 +8,14 @@ import { syncCommand } from './commands/sync.js';
9
8
  program
10
9
  .name('alpha-loop')
11
10
  .description('Agent-agnostic automated development loop')
12
- .version('1.0.0');
11
+ .version('1.1.0');
13
12
  program
14
13
  .command('init')
15
- .description('Create .alpha-loop.yaml config template')
16
- .action(initCommand);
14
+ .description('Full project onboarding: config, templates, vision, scan, sync')
15
+ .action(async () => {
16
+ const { initCommand } = await import('./commands/init.js');
17
+ await initCommand();
18
+ });
17
19
  program
18
20
  .command('run')
19
21
  .description('Run the loop — fetches matching issues and processes them all, then exits')
@@ -50,8 +52,26 @@ program
50
52
  .action(authCommand);
51
53
  program
52
54
  .command('sync')
53
- .description('Sync AGENTS.md → CLAUDE.md and skills/ .agents/skills/ + .claude/skills/')
55
+ .description('Sync .alpha-loop/templates/ to all configured harnesses')
54
56
  .option('--check', 'Check for drift without syncing (exits non-zero if drift found)')
55
57
  .action(syncCommand);
58
+ program
59
+ .command('resume')
60
+ .description('Resume stranded work — push branches, run review, open PRs')
61
+ .option('--issue <num>', 'Only resume a specific issue number')
62
+ .option('--session <name>', 'Resume from a specific session directory')
63
+ .action(async (options) => {
64
+ const { resumeCommand } = await import('./commands/resume.js');
65
+ await resumeCommand(options);
66
+ });
67
+ program
68
+ .command('review')
69
+ .description('Analyze accumulated learnings and propose self-improvements to agents, skills, and config')
70
+ .option('--apply', 'Apply proposed changes and open a draft PR')
71
+ .option('--session <name>', 'Only analyze learnings from a specific session')
72
+ .action(async (options) => {
73
+ const { reviewCommand } = await import('./commands/review.js');
74
+ await reviewCommand(options);
75
+ });
56
76
  program.parse();
57
77
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,2CAA2C,CAAC;KACxD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yCAAyC,CAAC;KACtD,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,WAAW,EAAE,yBAAyB,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;KAC5C,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;KAC7C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC;KAC3C,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC;KAClD,MAAM,CAAC,oBAAoB,EAAE,uCAAuC,CAAC;KACrE,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;KAC1D,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;KACvF,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzD,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC;AAC5B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,mBAAmB,CAAC;KAC5B,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC;KAC/C,MAAM,CAAC,SAAS,EAAE,yBAAyB,CAAC;KAC5C,MAAM,CAAC,cAAc,CAAC,CAAC;AAE1B,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4EAA4E,CAAC;KACzF,MAAM,CAAC,SAAS,EAAE,iEAAiE,CAAC;KACpF,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO,CAAC,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
- import YAML from 'yaml';
4
3
  import { log } from '../lib/logger.js';
5
4
  function formatDuration(seconds) {
6
5
  if (!seconds || seconds <= 0)
@@ -12,119 +11,225 @@ function formatDuration(seconds) {
12
11
  }
13
12
  return `${secs}s`;
14
13
  }
15
- function loadSession(yamlPath) {
14
+ /**
15
+ * Load all result-*.json files from a session directory.
16
+ */
17
+ function loadResults(sessionDir) {
18
+ const results = [];
16
19
  try {
17
- const raw = fs.readFileSync(yamlPath, 'utf-8');
18
- return YAML.parse(raw);
20
+ const files = fs.readdirSync(sessionDir)
21
+ .filter((f) => f.startsWith('result-') && f.endsWith('.json'))
22
+ .sort();
23
+ for (const file of files) {
24
+ try {
25
+ const content = fs.readFileSync(path.join(sessionDir, file), 'utf-8');
26
+ results.push(JSON.parse(content));
27
+ }
28
+ catch { /* skip invalid */ }
29
+ }
19
30
  }
20
- catch {
21
- return null;
31
+ catch { /* directory not readable */ }
32
+ return results;
33
+ }
34
+ /**
35
+ * Find all session directories under .alpha-loop/sessions/.
36
+ * Handles nested structure: sessions/session/<timestamp>/
37
+ */
38
+ function findSessionDirs(sessionsRoot) {
39
+ if (!fs.existsSync(sessionsRoot))
40
+ return [];
41
+ const sessions = [];
42
+ for (const group of fs.readdirSync(sessionsRoot, { withFileTypes: true })) {
43
+ if (!group.isDirectory())
44
+ continue;
45
+ const groupDir = path.join(sessionsRoot, group.name);
46
+ for (const entry of fs.readdirSync(groupDir, { withFileTypes: true })) {
47
+ if (!entry.isDirectory())
48
+ continue;
49
+ sessions.push({
50
+ dir: path.join(groupDir, entry.name),
51
+ name: `${group.name}/${entry.name}`,
52
+ timestamp: entry.name,
53
+ });
54
+ }
22
55
  }
56
+ // Sort newest first
57
+ sessions.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
58
+ return sessions;
59
+ }
60
+ /**
61
+ * Load session manifests from the learnings directory (checked into git, shared with team).
62
+ * These are created during session finalization.
63
+ */
64
+ function loadManifests() {
65
+ const learningsDir = path.join(process.cwd(), '.alpha-loop', 'learnings');
66
+ const manifests = new Map();
67
+ if (!fs.existsSync(learningsDir))
68
+ return manifests;
69
+ for (const file of fs.readdirSync(learningsDir)) {
70
+ if (!file.startsWith('session-') || !file.endsWith('.json'))
71
+ continue;
72
+ try {
73
+ const content = fs.readFileSync(path.join(learningsDir, file), 'utf-8');
74
+ const manifest = JSON.parse(content);
75
+ if (manifest.name) {
76
+ manifests.set(manifest.name, manifest);
77
+ }
78
+ }
79
+ catch { /* skip invalid */ }
80
+ }
81
+ return manifests;
23
82
  }
24
83
  export function historyList(sessionsDir) {
25
- if (!fs.existsSync(sessionsDir)) {
26
- console.log('No sessions found.');
27
- return;
84
+ const localSessions = findSessionDirs(sessionsDir);
85
+ const manifests = loadManifests();
86
+ // Build a unified list: local sessions + manifests not covered by local data
87
+ const seenNames = new Set(localSessions.map((s) => s.name));
88
+ const entries = [];
89
+ // Add local sessions
90
+ for (const session of localSessions) {
91
+ entries.push({
92
+ name: session.name,
93
+ timestamp: session.timestamp,
94
+ results: loadResults(session.dir),
95
+ source: 'local',
96
+ });
97
+ }
98
+ // Add manifests that don't have local session directories
99
+ for (const [name, manifest] of manifests) {
100
+ if (seenNames.has(name))
101
+ continue;
102
+ // Extract timestamp from name (e.g., "session/20260401-004637" -> "20260401-004637")
103
+ const ts = name.split('/').pop() ?? name;
104
+ entries.push({
105
+ name,
106
+ timestamp: ts,
107
+ results: manifest.results,
108
+ source: 'manifest',
109
+ });
28
110
  }
29
- const entries = fs.readdirSync(sessionsDir, { withFileTypes: true })
30
- .filter((d) => d.isDirectory())
31
- .map((d) => {
32
- const yamlPath = path.join(sessionsDir, d.name, 'session.yaml');
33
- if (!fs.existsSync(yamlPath))
34
- return null;
35
- return { dir: d.name, session: loadSession(yamlPath) };
36
- })
37
- .filter((e) => e !== null && e.session !== null);
111
+ // Sort newest first
112
+ entries.sort((a, b) => b.timestamp.localeCompare(a.timestamp));
38
113
  if (entries.length === 0) {
39
114
  console.log('No sessions found.');
40
115
  return;
41
116
  }
42
- // Sort by date descending
43
- entries.sort((a, b) => {
44
- const da = a.session.started ?? '';
45
- const db = b.session.started ?? '';
46
- return db.localeCompare(da);
47
- });
48
117
  console.log('Sessions:');
49
- for (const { session } of entries) {
50
- const name = session.name ?? 'unknown';
51
- const date = (session.started ?? '????-??-??').slice(0, 10);
52
- const issues = session.issues ?? [];
53
- const issueCount = issues.length;
54
- const successCount = issues.filter((i) => i.status === 'success').length;
55
- const failedCount = issues.filter((i) => i.status === 'failed').length;
56
- const durStr = formatDuration(session.duration);
118
+ console.log('');
119
+ for (const entry of entries) {
120
+ const issueCount = entry.results.length;
121
+ const successCount = entry.results.filter((r) => r.status === 'success').length;
122
+ const failedCount = issueCount - successCount;
123
+ const totalDuration = entry.results.reduce((sum, r) => sum + r.duration, 0);
124
+ const durStr = formatDuration(totalDuration);
125
+ // Parse date from timestamp (YYYYMMDD-HHMMSS)
126
+ const ts = entry.timestamp;
127
+ const date = ts.length >= 8
128
+ ? `${ts.slice(0, 4)}-${ts.slice(4, 6)}-${ts.slice(6, 8)}`
129
+ : ts;
57
130
  const issueWord = issueCount === 1 ? 'issue' : 'issues';
58
131
  let statusParts = '';
59
132
  if (successCount > 0)
60
133
  statusParts += `${successCount} \u2713`;
61
134
  if (failedCount > 0)
62
135
  statusParts += ` ${failedCount} \u2717`;
63
- console.log(` ${name.padEnd(30)} ${date} ${issueCount} ${issueWord.padEnd(7)} ${statusParts.padEnd(10)} ${durStr}`);
136
+ if (issueCount === 0)
137
+ statusParts = '(empty)';
138
+ console.log(` ${entry.name.padEnd(30)} ${date} ${String(issueCount).padStart(2)} ${issueWord.padEnd(7)} ${statusParts.padEnd(10)} ${durStr}`);
64
139
  }
65
140
  }
66
141
  export function historyDetail(sessionsDir, sessionName) {
67
- const yamlPath = path.join(sessionsDir, sessionName, 'session.yaml');
68
- if (!fs.existsSync(yamlPath)) {
69
- log.error(`Session not found: ${sessionName}`);
70
- process.exitCode = 1;
71
- return;
142
+ let results = [];
143
+ let sessionDir;
144
+ // Try local session directories first
145
+ const localDir = path.join(sessionsDir, sessionName);
146
+ if (fs.existsSync(localDir)) {
147
+ sessionDir = localDir;
148
+ results = loadResults(localDir);
72
149
  }
73
- const session = loadSession(yamlPath);
74
- if (!session) {
75
- log.error(`Could not parse session: ${sessionName}`);
150
+ else {
151
+ const all = findSessionDirs(sessionsDir);
152
+ const match = all.find((s) => s.name === sessionName || s.timestamp === sessionName);
153
+ if (match) {
154
+ sessionDir = match.dir;
155
+ results = loadResults(match.dir);
156
+ }
157
+ }
158
+ // Fall back to manifest from learnings (checked-in data from teammates)
159
+ if (results.length === 0) {
160
+ const manifests = loadManifests();
161
+ const manifest = manifests.get(sessionName)
162
+ ?? [...manifests.values()].find((m) => m.name.endsWith(sessionName));
163
+ if (manifest) {
164
+ results = manifest.results;
165
+ sessionName = manifest.name;
166
+ }
167
+ }
168
+ if (results.length === 0) {
169
+ log.error(`Session not found: ${sessionName}`);
76
170
  process.exitCode = 1;
77
171
  return;
78
172
  }
79
- const dateDisplay = session.started
80
- ? `${session.started.slice(0, 10)} ${session.started.slice(11, 16)}`
81
- : '????-??-??';
82
- const durStr = formatDuration(session.duration);
83
- console.log(`Session: ${session.name ?? sessionName}`);
84
- console.log(`Date: ${dateDisplay}`);
85
- if (session.repo)
86
- console.log(`Repo: ${session.repo}`);
87
- if (session.model)
88
- console.log(`Model: ${session.model}`);
89
- console.log(`Duration: ${durStr}`);
173
+ const totalDuration = results.reduce((sum, r) => sum + r.duration, 0);
174
+ const successCount = results.filter((r) => r.status === 'success').length;
175
+ console.log(`Session: ${sessionName}`);
176
+ console.log(`Issues: ${results.length} (${successCount} succeeded, ${results.length - successCount} failed)`);
177
+ console.log(`Duration: ${formatDuration(totalDuration)}`);
90
178
  console.log('');
91
179
  console.log('Issues:');
92
- for (const issue of session.issues ?? []) {
93
- let symbol;
180
+ for (const result of results) {
181
+ const symbol = result.status === 'success' ? '\u2713' : '\u2717';
94
182
  let statusText;
95
- switch (issue.status) {
96
- case 'success':
97
- symbol = '\u2713';
98
- if (issue.pr_url) {
99
- const prNum = issue.pr_url.match(/(\d+)$/)?.[1] ?? '';
100
- statusText = `PR #${prNum}`;
101
- }
102
- else {
103
- statusText = 'SUCCESS';
104
- }
105
- break;
106
- case 'failed':
107
- symbol = '\u2717';
108
- statusText = 'FAILED';
109
- break;
110
- default:
111
- symbol = '\u2298';
112
- statusText = 'SKIPPED';
113
- break;
183
+ if (result.status === 'success' && result.prUrl) {
184
+ const prNum = result.prUrl.match(/(\d+)$/)?.[1] ?? '';
185
+ statusText = `PR #${prNum}`;
114
186
  }
115
- const issueDur = formatDuration(issue.duration);
116
- let line = ` ${symbol} #${String(issue.number).padEnd(4)} ${statusText.padEnd(9)} (${issueDur})`;
117
- if (issue.error) {
118
- line += ` \u2014 ${issue.error}`;
187
+ else if (result.status === 'success') {
188
+ statusText = 'SUCCESS';
119
189
  }
120
- console.log(line);
190
+ else {
191
+ statusText = 'FAILED';
192
+ }
193
+ const durStr = formatDuration(result.duration);
194
+ const tests = result.testsPassing ? 'tests \u2713' : 'tests \u2717';
195
+ const verify = result.verifyPassing ? 'verify \u2713' : 'verify \u2717';
196
+ console.log(` ${symbol} #${String(result.issueNum).padEnd(4)} ${result.title}`);
197
+ console.log(` ${statusText.padEnd(12)} ${durStr.padEnd(10)} ${tests} ${verify}`);
121
198
  }
122
199
  console.log('');
123
- console.log(`QA Checklist: .alpha-loop/sessions/${sessionName}/qa-checklist.md`);
124
- console.log(`Logs: .alpha-loop/sessions/${sessionName}/logs/`);
200
+ // Show paths to useful files (only available for local sessions)
201
+ if (sessionDir) {
202
+ const logsDir = path.join(sessionDir, 'logs');
203
+ if (fs.existsSync(logsDir)) {
204
+ console.log(`Logs: ${path.relative(process.cwd(), logsDir)}/`);
205
+ }
206
+ const screenshotsDir = path.join(sessionDir, 'screenshots');
207
+ if (fs.existsSync(screenshotsDir)) {
208
+ console.log(`Screenshots: ${path.relative(process.cwd(), screenshotsDir)}/`);
209
+ }
210
+ const qaPath = path.join(sessionDir, 'qa-checklist.md');
211
+ if (fs.existsSync(qaPath)) {
212
+ console.log(`QA Checklist: ${path.relative(process.cwd(), qaPath)}`);
213
+ }
214
+ }
215
+ // Check for session summary in learnings
216
+ const learningsDir = path.join(process.cwd(), '.alpha-loop', 'learnings');
217
+ const summaryName = `session-summary-${sessionName.replace(/\//g, '-')}.md`;
218
+ const summaryPath = path.join(learningsDir, summaryName);
219
+ if (fs.existsSync(summaryPath)) {
220
+ console.log(`Summary: ${path.relative(process.cwd(), summaryPath)}`);
221
+ }
125
222
  }
126
223
  export function historyQa(sessionsDir, sessionName) {
127
- const qaPath = path.join(sessionsDir, sessionName, 'qa-checklist.md');
224
+ // Try exact path, then search
225
+ let qaPath = path.join(sessionsDir, sessionName, 'qa-checklist.md');
226
+ if (!fs.existsSync(qaPath)) {
227
+ const all = findSessionDirs(sessionsDir);
228
+ const match = all.find((s) => s.name === sessionName || s.timestamp === sessionName);
229
+ if (match) {
230
+ qaPath = path.join(match.dir, 'qa-checklist.md');
231
+ }
232
+ }
128
233
  if (!fs.existsSync(qaPath)) {
129
234
  log.error(`QA checklist not found for session: ${sessionName}`);
130
235
  process.exitCode = 1;
@@ -133,28 +238,26 @@ export function historyQa(sessionsDir, sessionName) {
133
238
  console.log(fs.readFileSync(qaPath, 'utf-8'));
134
239
  }
135
240
  export function historyClean(sessionsDir) {
136
- if (!fs.existsSync(sessionsDir)) {
241
+ const sessions = findSessionDirs(sessionsDir);
242
+ if (sessions.length === 0) {
137
243
  console.log('No sessions found.');
138
244
  return;
139
245
  }
140
246
  const RETENTION_DAYS = 30;
141
247
  const cutoff = Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000;
142
248
  let removed = 0;
143
- const entries = fs.readdirSync(sessionsDir, { withFileTypes: true })
144
- .filter((d) => d.isDirectory());
145
- for (const entry of entries) {
146
- const yamlPath = path.join(sessionsDir, entry.name, 'session.yaml');
147
- if (!fs.existsSync(yamlPath))
148
- continue;
149
- const session = loadSession(yamlPath);
150
- if (!session?.started)
249
+ for (const session of sessions) {
250
+ // Parse date from timestamp YYYYMMDD-HHMMSS
251
+ const ts = session.timestamp;
252
+ if (ts.length < 8)
151
253
  continue;
152
- const sessionDate = new Date(session.started).getTime();
254
+ const dateStr = `${ts.slice(0, 4)}-${ts.slice(4, 6)}-${ts.slice(6, 8)}`;
255
+ const sessionDate = new Date(dateStr).getTime();
153
256
  if (isNaN(sessionDate))
154
257
  continue;
155
258
  if (sessionDate < cutoff) {
156
- fs.rmSync(path.join(sessionsDir, entry.name), { recursive: true });
157
- console.log(`Removed: ${session.name ?? entry.name}`);
259
+ fs.rmSync(session.dir, { recursive: true });
260
+ console.log(`Removed: ${session.name}`);
158
261
  removed++;
159
262
  }
160
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- export declare function initCommand(): void;
1
+ export declare function initCommand(): Promise<void>;