@samahlstrom/forge-cli 0.1.8 → 0.1.9

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.
@@ -1,9 +1,10 @@
1
1
  import * as p from '@clack/prompts';
2
2
  import chalk from 'chalk';
3
3
  import { join } from 'node:path';
4
- import { exists } from '../utils/fs.js';
4
+ import { exists, writeText, ensureDir } from '../utils/fs.js';
5
5
  import { bdReady, bdClose, bdUpdate, bdList } from '../utils/bd.js';
6
6
  import { execaCommand } from 'execa';
7
+ import { writeFile, unlink, readFile } from 'node:fs/promises';
7
8
  export async function run(specId, options) {
8
9
  const cwd = process.cwd();
9
10
  const concurrency = parseInt(options.concurrency ?? '1', 10);
@@ -37,7 +38,10 @@ export async function run(specId, options) {
37
38
  return;
38
39
  }
39
40
  // Warn about permissions
40
- p.log.warn(chalk.yellow('Auto-pilot mode uses --dangerously-skip-permissions for unattended execution.'));
41
+ p.log.warn(chalk.yellow('Auto-pilot uses --dangerously-skip-permissions and git worktrees for isolation.'));
42
+ if (concurrency > 1) {
43
+ p.log.info(`Concurrency: ${chalk.cyan(String(concurrency))} parallel worktrees`);
44
+ }
41
45
  const confirm = await p.confirm({
42
46
  message: 'Continue?',
43
47
  initialValue: true,
@@ -46,11 +50,17 @@ export async function run(specId, options) {
46
50
  p.cancel('Run cancelled.');
47
51
  process.exit(0);
48
52
  }
53
+ // Set up reports directory
54
+ const reportsDir = join(cwd, '.forge', 'specs', specId, 'reports');
55
+ await ensureDir(reportsDir);
49
56
  // Main orchestration loop
50
57
  let completed = 0;
51
58
  let failed = 0;
52
59
  let currentPhase = '';
53
60
  const startTime = Date.now();
61
+ const allReports = [];
62
+ const phaseReports = [];
63
+ let currentPhaseReport = null;
54
64
  while (true) {
55
65
  // Get ready tasks
56
66
  const labelFilters = [`spec:${specId}`];
@@ -73,7 +83,7 @@ export async function run(specId, options) {
73
83
  await execaCommand('bd epic close-eligible', { shell: true, cwd, timeout: 10000 });
74
84
  }
75
85
  catch { /* ignore */ }
76
- // Re-check ready tasks after epic closing
86
+ // Re-check ready tasks
77
87
  try {
78
88
  readyTasks = await bdReady(labelFilters, cwd);
79
89
  }
@@ -81,20 +91,30 @@ export async function run(specId, options) {
81
91
  readyTasks = [];
82
92
  }
83
93
  if (readyTasks.length === 0) {
84
- // Phase boundary or deadlock
94
+ // Finalize current phase report
95
+ if (currentPhaseReport) {
96
+ currentPhaseReport.finished_at = new Date().toISOString();
97
+ phaseReports.push(currentPhaseReport);
98
+ await writePhaseReport(reportsDir, currentPhaseReport);
99
+ }
85
100
  if (reviewEnabled) {
86
101
  const elapsed = formatElapsed(Date.now() - startTime);
87
102
  p.log.info(`\n${chalk.bold('Phase checkpoint')} — ${completed} completed, ${failed} failed, ${remaining.length} remaining (${elapsed})`);
103
+ // Show phase retrospective if we have reports
104
+ if (currentPhaseReport && currentPhaseReport.tasks.length > 0) {
105
+ showPhaseRetro(currentPhaseReport);
106
+ }
88
107
  const cont = await p.confirm({
89
- message: `${remaining.length} tasks blocked. Continue waiting for unblock?`,
90
- initialValue: false,
108
+ message: `${remaining.length} tasks blocked. Continue to next phase?`,
109
+ initialValue: true,
91
110
  });
92
111
  if (p.isCancel(cont) || !cont)
93
112
  break;
94
113
  }
95
114
  else {
96
- break; // No review mode, just stop
115
+ break;
97
116
  }
117
+ currentPhaseReport = null;
98
118
  }
99
119
  }
100
120
  if (readyTasks.length === 0)
@@ -102,97 +122,439 @@ export async function run(specId, options) {
102
122
  // Detect phase transition
103
123
  const taskPhase = readyTasks[0].labels?.find(l => l.startsWith('phase:')) ?? '';
104
124
  if (taskPhase !== currentPhase) {
105
- if (currentPhase && reviewEnabled) {
106
- p.log.success(`\n${chalk.bold('Phase complete:')} ${currentPhase}`);
107
- const cont = await p.confirm({
108
- message: `Start ${taskPhase}?`,
109
- initialValue: true,
110
- });
111
- if (p.isCancel(cont) || !cont)
112
- break;
125
+ if (currentPhase && currentPhaseReport) {
126
+ currentPhaseReport.finished_at = new Date().toISOString();
127
+ phaseReports.push(currentPhaseReport);
128
+ await writePhaseReport(reportsDir, currentPhaseReport);
129
+ if (reviewEnabled) {
130
+ p.log.success(`\n${chalk.bold('Phase complete:')} ${currentPhase}`);
131
+ showPhaseRetro(currentPhaseReport);
132
+ const cont = await p.confirm({
133
+ message: `Start ${taskPhase}?`,
134
+ initialValue: true,
135
+ });
136
+ if (p.isCancel(cont) || !cont)
137
+ break;
138
+ }
113
139
  }
114
140
  currentPhase = taskPhase;
141
+ currentPhaseReport = {
142
+ phase: currentPhase,
143
+ tasks: [],
144
+ started_at: new Date().toISOString(),
145
+ finished_at: '',
146
+ success_count: 0,
147
+ failure_count: 0,
148
+ };
115
149
  p.log.step(chalk.bold(`\nStarting ${currentPhase}`));
116
150
  }
117
151
  // Pick tasks up to concurrency limit
118
152
  const batch = readyTasks.slice(0, concurrency);
119
- // Execute batch
120
- const results = await Promise.allSettled(batch.map(task => executeTask(task, specId, cwd, budget)));
153
+ // Execute batch in parallel worktrees
154
+ const results = await Promise.allSettled(batch.map(task => executeTaskInWorktree(task, specId, cwd, budget)));
121
155
  for (let i = 0; i < results.length; i++) {
122
156
  const result = results[i];
123
157
  const task = batch[i];
124
- if (result.status === 'fulfilled' && result.value) {
125
- completed++;
126
- p.log.success(`${chalk.green('✓')} ${task.title}`);
127
- try {
128
- await bdClose(task.id, cwd);
158
+ if (result.status === 'fulfilled') {
159
+ const report = result.value;
160
+ allReports.push(report);
161
+ currentPhaseReport?.tasks.push(report);
162
+ if (report.status === 'success') {
163
+ completed++;
164
+ currentPhaseReport && currentPhaseReport.success_count++;
165
+ p.log.success(`${chalk.green('✓')} ${task.title} ${chalk.dim(`(${formatElapsed(report.elapsed_ms)})`)}`);
166
+ try {
167
+ await bdClose(task.id, cwd);
168
+ }
169
+ catch (err) {
170
+ p.log.warn(`Failed to close ${task.id}: ${err}`);
171
+ }
129
172
  }
130
- catch (err) {
131
- p.log.warn(`Failed to close ${task.id}: ${err}`);
173
+ else if (report.status === 'merge_conflict') {
174
+ failed++;
175
+ currentPhaseReport && currentPhaseReport.failure_count++;
176
+ p.log.warn(`${chalk.yellow('⚠')} ${task.title}: merge conflict — branch ${chalk.cyan(report.worktree_branch)} preserved`);
177
+ try {
178
+ await bdUpdate(task.id, { status: 'open' }, cwd);
179
+ }
180
+ catch { /* ignore */ }
181
+ }
182
+ else {
183
+ failed++;
184
+ currentPhaseReport && currentPhaseReport.failure_count++;
185
+ p.log.error(`${chalk.red('✗')} ${task.title}: ${report.errors.join('; ')}`);
186
+ try {
187
+ await bdUpdate(task.id, { status: 'open' }, cwd);
188
+ }
189
+ catch { /* ignore */ }
132
190
  }
133
191
  }
134
192
  else {
135
193
  failed++;
136
- const reason = result.status === 'rejected' ? result.reason : 'Task returned failure';
137
- p.log.error(`${chalk.red('✗')} ${task.title}: ${reason}`);
194
+ currentPhaseReport && currentPhaseReport.failure_count++;
195
+ const report = {
196
+ task_id: task.metadata?.spec_task_id ?? task.id,
197
+ bead_id: task.id,
198
+ title: task.title,
199
+ phase: currentPhase,
200
+ agent: task.labels?.find(l => l.startsWith('agent:'))?.replace('agent:', '') ?? '',
201
+ tier: task.labels?.find(l => l.startsWith('tier:'))?.replace('tier:', '') ?? '',
202
+ status: 'failure',
203
+ started_at: new Date().toISOString(),
204
+ finished_at: new Date().toISOString(),
205
+ elapsed_ms: 0,
206
+ worktree_branch: '',
207
+ files_changed: [],
208
+ blockers: [`Unhandled error: ${result.reason}`],
209
+ errors: [String(result.reason)],
210
+ summary: `Task failed with unhandled error: ${result.reason}`,
211
+ };
212
+ allReports.push(report);
213
+ currentPhaseReport?.tasks.push(report);
214
+ p.log.error(`${chalk.red('✗')} ${task.title}: ${result.reason}`);
138
215
  try {
139
216
  await bdUpdate(task.id, { status: 'open' }, cwd);
140
217
  }
141
218
  catch { /* ignore */ }
142
219
  }
143
220
  }
221
+ // Write incremental reports
222
+ await writeText(join(reportsDir, 'all-tasks.json'), JSON.stringify(allReports, null, 2));
223
+ }
224
+ // Finalize last phase
225
+ if (currentPhaseReport && !currentPhaseReport.finished_at) {
226
+ currentPhaseReport.finished_at = new Date().toISOString();
227
+ phaseReports.push(currentPhaseReport);
228
+ await writePhaseReport(reportsDir, currentPhaseReport);
144
229
  }
145
- // Final summary
230
+ // Generate final Muda analysis
146
231
  const elapsed = formatElapsed(Date.now() - startTime);
232
+ await generateMudaAnalysis(reportsDir, allReports, phaseReports, elapsed);
147
233
  const summaryLines = [
148
234
  `Completed: ${chalk.green(String(completed))}`,
149
235
  `Failed: ${failed > 0 ? chalk.red(String(failed)) : chalk.dim('0')}`,
150
236
  `Elapsed: ${chalk.cyan(elapsed)}`,
237
+ `Reports: ${chalk.dim(`.forge/specs/${specId}/reports/`)}`,
151
238
  ];
152
239
  p.note(summaryLines.join('\n'), 'Run complete');
240
+ if (failed > 0) {
241
+ p.log.info(`Review blockers: ${chalk.cyan(`.forge/specs/${specId}/reports/muda-analysis.md`)}`);
242
+ }
153
243
  p.outro(chalk.green('Done.'));
154
244
  }
155
- async function executeTask(task, specId, cwd, budget) {
245
+ // ─── Worktree Execution ───────────────────────────────────────────
246
+ async function executeTaskInWorktree(task, specId, cwd, budget) {
247
+ const startedAt = new Date();
156
248
  const tier = task.labels?.find(l => l.startsWith('tier:'))?.replace('tier:', '') ?? 'T2';
157
249
  const agent = task.labels?.find(l => l.startsWith('agent:'))?.replace('agent:', '') ?? '';
250
+ const phase = task.labels?.find(l => l.startsWith('phase:'))?.replace('phase:', '') ?? '';
158
251
  const filesLikely = task.metadata?.files_likely;
159
252
  const specTaskId = task.metadata?.spec_task_id;
160
- const filesStr = filesLikely?.length ? ` Target files: ${filesLikely.join(', ')}.` : '';
161
- const prompt = `/deliver "${task.title} — ${task.description ?? ''}.${filesStr} Risk: ${tier}. Agent: ${agent}. Spec ref: ${specTaskId ?? task.id}"`;
162
- const args = ['claude', '-p', '--dangerously-skip-permissions', '--output-format', 'json'];
163
- if (budget)
164
- args.push('--max-budget-usd', String(budget));
253
+ // Create a unique branch for this task
254
+ const branchName = `forge/${specId}/${task.id}`;
255
+ const worktreePath = join(cwd, '.forge', 'worktrees', task.id);
256
+ const report = {
257
+ task_id: specTaskId ?? task.id,
258
+ bead_id: task.id,
259
+ title: task.title,
260
+ phase: `phase:${phase}`,
261
+ agent,
262
+ tier,
263
+ status: 'failure',
264
+ started_at: startedAt.toISOString(),
265
+ finished_at: '',
266
+ elapsed_ms: 0,
267
+ worktree_branch: branchName,
268
+ files_changed: [],
269
+ blockers: [],
270
+ errors: [],
271
+ summary: '',
272
+ };
165
273
  try {
166
- // Write prompt to temp file to avoid shell escaping issues
274
+ // Create worktree
275
+ await execaCommand(`git worktree add -b "${branchName}" "${worktreePath}" HEAD`, {
276
+ shell: true, cwd, timeout: 30000,
277
+ });
278
+ // Build the deliver prompt with retrospective instruction
279
+ const filesStr = filesLikely?.length ? ` Target files: ${filesLikely.join(', ')}.` : '';
280
+ const reportPath = join(worktreePath, '.forge', 'task-report.json');
281
+ const prompt = buildTaskPrompt(task, specId, filesStr, tier, agent, specTaskId, reportPath);
282
+ // Write prompt to temp file
167
283
  const tmpFile = join('/tmp', `forge-run-${task.id}-${Date.now()}.txt`);
168
- const { writeFile, unlink } = await import('node:fs/promises');
169
284
  await writeFile(tmpFile, prompt);
170
285
  try {
171
- const result = await execaCommand(`cat "${tmpFile}" | ${args.join(' ')}`, { shell: true, cwd, timeout: 600000 });
172
- // Parse result
173
- let success = true;
286
+ const args = ['claude', '-p', '--dangerously-skip-permissions', '--output-format', 'json'];
287
+ if (budget)
288
+ args.push('--max-budget-usd', String(budget));
289
+ await execaCommand(`cat "${tmpFile}" | ${args.join(' ')}`, { shell: true, cwd: worktreePath, timeout: 600000 });
290
+ // Read the agent's self-report if it wrote one
174
291
  try {
175
- const parsed = JSON.parse(result.stdout);
176
- if (parsed.is_error)
177
- success = false;
292
+ const agentReport = JSON.parse(await readFile(reportPath, 'utf-8'));
293
+ report.blockers = agentReport.blockers ?? [];
294
+ report.errors = agentReport.errors ?? [];
295
+ report.summary = agentReport.summary ?? '';
178
296
  }
179
297
  catch {
180
- // Non-JSON output, assume success if exit code was 0
298
+ report.summary = 'Task completed (no agent report generated)';
299
+ }
300
+ // Get list of files changed
301
+ try {
302
+ const diffResult = await execaCommand('git diff --name-only HEAD', {
303
+ shell: true, cwd: worktreePath, timeout: 10000,
304
+ });
305
+ report.files_changed = diffResult.stdout.trim().split('\n').filter(Boolean);
306
+ }
307
+ catch { /* ignore */ }
308
+ // Commit changes in worktree
309
+ try {
310
+ await execaCommand('git add -A', { shell: true, cwd: worktreePath, timeout: 10000 });
311
+ const commitMsg = `forge: ${task.title} [${specTaskId ?? task.id}]`;
312
+ await execaCommand(`git commit -m "${commitMsg}" --allow-empty`, {
313
+ shell: true, cwd: worktreePath, timeout: 15000,
314
+ });
315
+ }
316
+ catch {
317
+ // Nothing to commit
318
+ }
319
+ // Merge worktree branch back to main
320
+ try {
321
+ const mainBranch = await getMainBranch(cwd);
322
+ await execaCommand(`git checkout ${mainBranch}`, { shell: true, cwd, timeout: 10000 });
323
+ await execaCommand(`git merge "${branchName}" --no-edit`, { shell: true, cwd, timeout: 30000 });
324
+ report.status = 'success';
325
+ }
326
+ catch (mergeErr) {
327
+ // Merge conflict — abort and preserve branch for manual resolution
328
+ try {
329
+ await execaCommand('git merge --abort', { shell: true, cwd, timeout: 10000 });
330
+ }
331
+ catch { /* ignore */ }
332
+ report.status = 'merge_conflict';
333
+ report.blockers.push(`Merge conflict on branch ${branchName}`);
334
+ report.errors.push(String(mergeErr));
181
335
  }
182
- return success;
183
336
  }
184
337
  finally {
185
338
  try {
186
- const { unlink: ul } = await import('node:fs/promises');
187
- await ul(tmpFile);
339
+ await unlink(tmpFile);
188
340
  }
189
341
  catch { /* ignore */ }
190
342
  }
191
343
  }
192
344
  catch (err) {
193
- throw new Error(`claude -p failed: ${String(err)}`);
345
+ report.errors.push(String(err));
346
+ report.summary = `Worktree setup or execution failed: ${err}`;
347
+ }
348
+ finally {
349
+ // Clean up worktree (but keep the branch if merge failed)
350
+ try {
351
+ await execaCommand(`git worktree remove "${worktreePath}" --force`, {
352
+ shell: true, cwd, timeout: 15000,
353
+ });
354
+ }
355
+ catch { /* ignore */ }
356
+ // Delete branch only on success
357
+ if (report.status === 'success') {
358
+ try {
359
+ await execaCommand(`git branch -D "${branchName}"`, {
360
+ shell: true, cwd, timeout: 10000,
361
+ });
362
+ }
363
+ catch { /* ignore */ }
364
+ }
365
+ const finishedAt = new Date();
366
+ report.finished_at = finishedAt.toISOString();
367
+ report.elapsed_ms = finishedAt.getTime() - startedAt.getTime();
194
368
  }
369
+ return report;
195
370
  }
371
+ function buildTaskPrompt(task, specId, filesStr, tier, agent, specTaskId, reportPath) {
372
+ return `/deliver "${task.title} — ${task.description ?? ''}.${filesStr} Risk: ${tier}. Agent: ${agent}. Spec ref: ${specTaskId ?? task.id}"
373
+
374
+ IMPORTANT: Before you finish, write a JSON report to "${reportPath}" with this structure:
375
+ {
376
+ "summary": "1-2 sentence summary of what you accomplished",
377
+ "blockers": ["list of things that blocked progress or required workarounds"],
378
+ "errors": ["list of errors encountered during execution"],
379
+ "decisions": ["key decisions you made and why"],
380
+ "suggestions": ["improvements for future similar tasks"]
381
+ }
382
+ If everything went smoothly, blockers and errors should be empty arrays. Always write this file before finishing.`;
383
+ }
384
+ // ─── Reporting ────────────────────────────────────────────────────
385
+ function showPhaseRetro(phaseReport) {
386
+ const failedTasks = phaseReport.tasks.filter(t => t.status !== 'success');
387
+ const blockers = phaseReport.tasks.flatMap(t => t.blockers).filter(Boolean);
388
+ if (failedTasks.length === 0 && blockers.length === 0) {
389
+ p.log.info(chalk.dim(' No issues in this phase.'));
390
+ return;
391
+ }
392
+ if (failedTasks.length > 0) {
393
+ p.log.warn(` ${chalk.yellow(`${failedTasks.length} failed tasks:`)}`);
394
+ for (const t of failedTasks) {
395
+ p.log.message(` ${chalk.red('✗')} ${t.title}: ${t.errors[0] ?? t.status}`);
396
+ }
397
+ }
398
+ if (blockers.length > 0) {
399
+ const unique = [...new Set(blockers)];
400
+ p.log.warn(` ${chalk.yellow(`${unique.length} blockers identified:`)}`);
401
+ for (const b of unique) {
402
+ p.log.message(` ${chalk.dim('•')} ${b}`);
403
+ }
404
+ }
405
+ }
406
+ async function writePhaseReport(reportsDir, phaseReport) {
407
+ const filename = `${phaseReport.phase.replace(':', '-')}.json`;
408
+ await writeText(join(reportsDir, filename), JSON.stringify(phaseReport, null, 2));
409
+ }
410
+ async function generateMudaAnalysis(reportsDir, allReports, phaseReports, totalElapsed) {
411
+ const totalTasks = allReports.length;
412
+ const successCount = allReports.filter(r => r.status === 'success').length;
413
+ const failCount = allReports.filter(r => r.status === 'failure').length;
414
+ const conflictCount = allReports.filter(r => r.status === 'merge_conflict').length;
415
+ // Collect all blockers and errors
416
+ const allBlockers = allReports.flatMap(r => r.blockers).filter(Boolean);
417
+ const allErrors = allReports.flatMap(r => r.errors).filter(Boolean);
418
+ const allSuggestions = allReports.flatMap(r => {
419
+ const meta = r;
420
+ return meta.suggestions ?? [];
421
+ }).filter(Boolean);
422
+ // Categorize waste
423
+ const blockerFreq = {};
424
+ for (const b of allBlockers) {
425
+ const normalized = b.slice(0, 80);
426
+ blockerFreq[normalized] = (blockerFreq[normalized] ?? 0) + 1;
427
+ }
428
+ const errorFreq = {};
429
+ for (const e of allErrors) {
430
+ const normalized = e.slice(0, 80);
431
+ errorFreq[normalized] = (errorFreq[normalized] ?? 0) + 1;
432
+ }
433
+ // Find slowest tasks
434
+ const sorted = [...allReports].sort((a, b) => b.elapsed_ms - a.elapsed_ms);
435
+ const slowest = sorted.slice(0, 5);
436
+ // Agent performance
437
+ const agentStats = {};
438
+ for (const r of allReports) {
439
+ if (!agentStats[r.agent])
440
+ agentStats[r.agent] = { success: 0, fail: 0, totalMs: 0 };
441
+ agentStats[r.agent].totalMs += r.elapsed_ms;
442
+ if (r.status === 'success')
443
+ agentStats[r.agent].success++;
444
+ else
445
+ agentStats[r.agent].fail++;
446
+ }
447
+ // Build markdown report
448
+ const lines = [
449
+ '# Muda Analysis — Waste & Blocker Report',
450
+ '',
451
+ `Generated: ${new Date().toISOString()}`,
452
+ `Total elapsed: ${totalElapsed}`,
453
+ '',
454
+ '## Summary',
455
+ '',
456
+ `| Metric | Count |`,
457
+ `|--------|-------|`,
458
+ `| Total tasks | ${totalTasks} |`,
459
+ `| Succeeded | ${successCount} |`,
460
+ `| Failed | ${failCount} |`,
461
+ `| Merge conflicts | ${conflictCount} |`,
462
+ `| Success rate | ${totalTasks > 0 ? Math.round((successCount / totalTasks) * 100) : 0}% |`,
463
+ '',
464
+ ];
465
+ // Blockers section
466
+ if (Object.keys(blockerFreq).length > 0) {
467
+ lines.push('## Blockers (Muda — Waiting Waste)');
468
+ lines.push('');
469
+ lines.push('Recurring blockers indicate systemic issues that slow the pipeline.');
470
+ lines.push('');
471
+ const sortedBlockers = Object.entries(blockerFreq).sort((a, b) => b[1] - a[1]);
472
+ for (const [blocker, count] of sortedBlockers) {
473
+ lines.push(`- **${count}x** ${blocker}`);
474
+ }
475
+ lines.push('');
476
+ }
477
+ // Errors section
478
+ if (Object.keys(errorFreq).length > 0) {
479
+ lines.push('## Errors (Muda — Defect Waste)');
480
+ lines.push('');
481
+ lines.push('Recurring errors suggest missing prerequisites, bad assumptions, or spec gaps.');
482
+ lines.push('');
483
+ const sortedErrors = Object.entries(errorFreq).sort((a, b) => b[1] - a[1]);
484
+ for (const [error, count] of sortedErrors) {
485
+ lines.push(`- **${count}x** ${error}`);
486
+ }
487
+ lines.push('');
488
+ }
489
+ // Slowest tasks
490
+ if (slowest.length > 0) {
491
+ lines.push('## Slowest Tasks (Muda — Processing Waste)');
492
+ lines.push('');
493
+ lines.push('Tasks taking disproportionately long may need decomposition or better context.');
494
+ lines.push('');
495
+ for (const t of slowest) {
496
+ lines.push(`- **${formatElapsed(t.elapsed_ms)}** ${t.title} (${t.tier}, ${t.agent})`);
497
+ }
498
+ lines.push('');
499
+ }
500
+ // Agent performance
501
+ if (Object.keys(agentStats).length > 0) {
502
+ lines.push('## Agent Performance');
503
+ lines.push('');
504
+ lines.push('| Agent | Success | Failed | Avg Time |');
505
+ lines.push('|-------|---------|--------|----------|');
506
+ for (const [agent, stats] of Object.entries(agentStats)) {
507
+ const total = stats.success + stats.fail;
508
+ const avg = total > 0 ? formatElapsed(Math.round(stats.totalMs / total)) : '-';
509
+ lines.push(`| ${agent} | ${stats.success} | ${stats.fail} | ${avg} |`);
510
+ }
511
+ lines.push('');
512
+ }
513
+ // Merge conflicts
514
+ const conflicts = allReports.filter(r => r.status === 'merge_conflict');
515
+ if (conflicts.length > 0) {
516
+ lines.push('## Merge Conflicts (Muda — Motion Waste)');
517
+ lines.push('');
518
+ lines.push('Conflicts indicate tasks touching overlapping files. Consider:');
519
+ lines.push('- Reducing concurrency for tightly coupled epics');
520
+ lines.push('- Reordering tasks to serialize shared-file work');
521
+ lines.push('');
522
+ for (const c of conflicts) {
523
+ lines.push(`- **${c.title}** — branch \`${c.worktree_branch}\` preserved for manual merge`);
524
+ }
525
+ lines.push('');
526
+ }
527
+ // Suggestions from agents
528
+ const uniqueSuggestions = [...new Set(allSuggestions)];
529
+ if (uniqueSuggestions.length > 0) {
530
+ lines.push('## Agent Suggestions (Kaizen — Continuous Improvement)');
531
+ lines.push('');
532
+ for (const s of uniqueSuggestions) {
533
+ lines.push(`- ${s}`);
534
+ }
535
+ lines.push('');
536
+ }
537
+ // Phase breakdown
538
+ if (phaseReports.length > 0) {
539
+ lines.push('## Phase Breakdown');
540
+ lines.push('');
541
+ for (const pr of phaseReports) {
542
+ const phaseElapsed = pr.finished_at && pr.started_at
543
+ ? formatElapsed(new Date(pr.finished_at).getTime() - new Date(pr.started_at).getTime())
544
+ : '?';
545
+ lines.push(`### ${pr.phase} (${phaseElapsed})`);
546
+ lines.push('');
547
+ lines.push(`- ${pr.success_count} succeeded, ${pr.failure_count} failed`);
548
+ const phaseBlockers = pr.tasks.flatMap(t => t.blockers).filter(Boolean);
549
+ if (phaseBlockers.length > 0) {
550
+ lines.push(`- Blockers: ${[...new Set(phaseBlockers)].join('; ')}`);
551
+ }
552
+ lines.push('');
553
+ }
554
+ }
555
+ await writeText(join(reportsDir, 'muda-analysis.md'), lines.join('\n'));
556
+ }
557
+ // ─── Utilities ────────────────────────────────────────────────────
196
558
  async function showDryRun(specId, cwd) {
197
559
  const ready = await bdReady([`spec:${specId}`], cwd);
198
560
  if (ready.length === 0) {
@@ -206,6 +568,24 @@ async function showDryRun(specId, cwd) {
206
568
  p.log.message(` ${chalk.dim(`P${phase}`)} ${chalk.cyan(tier)} ${task.title}`);
207
569
  }
208
570
  }
571
+ async function getMainBranch(cwd) {
572
+ try {
573
+ const result = await execaCommand('git symbolic-ref refs/remotes/origin/HEAD', {
574
+ shell: true, cwd, timeout: 5000,
575
+ });
576
+ return result.stdout.trim().replace('refs/remotes/origin/', '');
577
+ }
578
+ catch {
579
+ // Fallback: check if main or master exists
580
+ try {
581
+ await execaCommand('git rev-parse --verify main', { shell: true, cwd, timeout: 5000 });
582
+ return 'main';
583
+ }
584
+ catch {
585
+ return 'master';
586
+ }
587
+ }
588
+ }
209
589
  function formatElapsed(ms) {
210
590
  const secs = Math.floor(ms / 1000);
211
591
  if (secs < 60)
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAY,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAwB,MAAM,gBAAgB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAUrC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,MAAc,EAAE,OAAmB;IAC5D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvE,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC;IAE/C,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;IAE7D,qBAAqB;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,CAAC,CAAC,MAAM,CAAC,mCAAmC,MAAM,SAAS,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,qBAAqB;IACrB,IAAI,QAAmB,CAAC;IACxB,IAAI,CAAC;QACJ,QAAQ,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACR,CAAC,CAAC,MAAM,CAAC,4DAA4D,GAAG,MAAM,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,CAAC,CAAC,MAAM,CAAC,2BAA2B,MAAM,qBAAqB,MAAM,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC;IAC1F,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,2BAA2B,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;IAEtG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAC5D,OAAO;IACR,CAAC;IAED,yBAAyB;IACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,+EAA+E,CAAC,CAAC,CAAC;IAC1G,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAC/B,OAAO,EAAE,WAAW;QACpB,YAAY,EAAE,IAAI;KAClB,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,0BAA0B;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACb,kBAAkB;QAClB,MAAM,YAAY,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK;YAAE,YAAY,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAE/D,IAAI,UAAqB,CAAC;QAC1B,IAAI,CAAC;YACJ,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAAC,MAAM,CAAC;YACR,UAAU,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7B,gDAAgD;YAChD,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YAClG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,CAAC,WAAW;YAE9C,mDAAmD;YACnD,IAAI,CAAC;gBACJ,MAAM,YAAY,CAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACpF,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YAExB,0CAA0C;YAC1C,IAAI,CAAC;gBACJ,UAAU,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACR,UAAU,GAAG,EAAE,CAAC;YACjB,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,6BAA6B;gBAC7B,IAAI,aAAa,EAAE,CAAC;oBACnB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;oBACtD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,SAAS,eAAe,MAAM,YAAY,SAAS,CAAC,MAAM,eAAe,OAAO,GAAG,CAAC,CAAC;oBAEzI,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;wBAC5B,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,+CAA+C;wBAC3E,YAAY,EAAE,KAAK;qBACnB,CAAC,CAAC;oBACH,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,MAAM;gBACtC,CAAC;qBAAM,CAAC;oBACP,MAAM,CAAC,4BAA4B;gBACpC,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEtC,0BAA0B;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAChF,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;YAChC,IAAI,YAAY,IAAI,aAAa,EAAE,CAAC;gBACnC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,YAAY,EAAE,CAAC,CAAC;gBACpE,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;oBAC5B,OAAO,EAAE,SAAS,SAAS,GAAG;oBAC9B,YAAY,EAAE,IAAI;iBAClB,CAAC,CAAC;gBACH,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;oBAAE,MAAM;YACtC,CAAC;YACD,YAAY,GAAG,SAAS,CAAC;YACzB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,YAAY,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,qCAAqC;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAE/C,gBAAgB;QAChB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACvC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CACzD,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACnD,SAAS,EAAE,CAAC;gBACZ,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACnD,IAAI,CAAC;oBACJ,MAAM,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;gBAClD,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,MAAM,EAAE,CAAC;gBACT,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC;gBACtF,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;gBAC1D,IAAI,CAAC;oBACJ,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;gBAClD,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;YACzB,CAAC;QACF,CAAC;IACF,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG;QACpB,eAAe,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE;QAC/C,eAAe,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACxE,eAAe,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;KACpC,CAAC;IACF,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;IAChD,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,WAAW,CACzB,IAAa,EACb,MAAc,EACd,GAAW,EACX,MAAe;IAEf,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;IACzF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAC1F,MAAM,WAAW,GAAI,IAAI,CAAC,QAAoC,EAAE,YAAoC,CAAC;IACrG,MAAM,UAAU,GAAI,IAAI,CAAC,QAAoC,EAAE,YAAkC,CAAC;IAElG,MAAM,QAAQ,GAAG,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACxF,MAAM,MAAM,GAAG,aAAa,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,WAAW,IAAI,EAAE,IAAI,QAAQ,UAAU,IAAI,YAAY,KAAK,eAAe,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC;IAErJ,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC3F,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAE1D,IAAI,CAAC;QACJ,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACvE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,YAAY,CAChC,QAAQ,OAAO,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EACtC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CACrC,CAAC;YAEF,eAAe;YACf,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACzC,IAAI,MAAM,CAAC,QAAQ;oBAAE,OAAO,GAAG,KAAK,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACR,qDAAqD;YACtD,CAAC;YACD,OAAO,OAAO,CAAC;QAChB,CAAC;gBAAS,CAAC;YACV,IAAI,CAAC;gBAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;QAC3G,CAAC;IACF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;AACF,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,GAAW;IACpD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IACrD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACpC,OAAO;IACR,CAAC;IAED,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,0BAA0B,CAAC,CAAC;IACtD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QACxF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAC3F,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAChF,CAAC;AACF,CAAC;AAED,SAAS,aAAa,CAAC,EAAU;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,GAAG,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,CAAC;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAE,CAAC;IAC1B,OAAO,GAAG,GAAG,KAAK,OAAO,GAAG,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@samahlstrom/forge-cli",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Agent harness scaffolding for Claude Code — orchestration, decomposition, specialist agents, verification, and delivery.",
5
5
  "type": "module",
6
6
  "bin": {