opencastle 0.23.0 → 0.23.2

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 (38) hide show
  1. package/dist/cli/convoy/engine.d.ts +1 -0
  2. package/dist/cli/convoy/engine.d.ts.map +1 -1
  3. package/dist/cli/convoy/engine.js +72 -22
  4. package/dist/cli/convoy/engine.js.map +1 -1
  5. package/dist/cli/convoy/engine.test.js +205 -0
  6. package/dist/cli/convoy/engine.test.js.map +1 -1
  7. package/dist/cli/dashboard.d.ts.map +1 -1
  8. package/dist/cli/dashboard.js +5 -4
  9. package/dist/cli/dashboard.js.map +1 -1
  10. package/dist/cli/init.d.ts.map +1 -1
  11. package/dist/cli/init.js +8 -1
  12. package/dist/cli/init.js.map +1 -1
  13. package/dist/cli/run/schema.d.ts.map +1 -1
  14. package/dist/cli/run/schema.js +8 -0
  15. package/dist/cli/run/schema.js.map +1 -1
  16. package/dist/cli/run/schema.test.js +41 -0
  17. package/dist/cli/run/schema.test.js.map +1 -1
  18. package/dist/cli/run.d.ts.map +1 -1
  19. package/dist/cli/run.js +18 -5
  20. package/dist/cli/run.js.map +1 -1
  21. package/dist/cli/types.d.ts +2 -0
  22. package/dist/cli/types.d.ts.map +1 -1
  23. package/package.json +1 -1
  24. package/src/cli/convoy/engine.test.ts +240 -0
  25. package/src/cli/convoy/engine.ts +80 -23
  26. package/src/cli/dashboard.ts +6 -5
  27. package/src/cli/init.ts +9 -1
  28. package/src/cli/run/schema.test.ts +51 -0
  29. package/src/cli/run/schema.ts +10 -0
  30. package/src/cli/run.ts +20 -7
  31. package/src/cli/types.ts +2 -0
  32. package/src/dashboard/node_modules/.vite/deps/_metadata.json +6 -6
  33. package/src/orchestrator/agents/team-lead.agent.md +6 -6
  34. package/src/orchestrator/prompts/bug-fix.prompt.md +6 -2
  35. package/src/orchestrator/prompts/generate-convoy.prompt.md +3 -3
  36. package/src/orchestrator/prompts/implement-feature.prompt.md +8 -19
  37. package/src/orchestrator/skills/decomposition/SKILL.md +1 -0
  38. package/src/orchestrator/skills/orchestration-protocols/SKILL.md +32 -1
@@ -29,6 +29,7 @@ export interface ConvoyResult {
29
29
  command: string;
30
30
  exitCode: number;
31
31
  passed: boolean;
32
+ output?: string;
32
33
  }>;
33
34
  cost?: {
34
35
  total_tokens: number;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/cli/convoy/engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAQ,QAAQ,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAA;AAG9E,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAG9D,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,YAAY,CAAA;AAS1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,WAAW,CAAC,EAAE,UAAU,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3F,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;IAC3E,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAChD;AAqYD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA0I7E"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/cli/convoy/engine.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAQ,QAAQ,EAAE,YAAY,EAAiB,MAAM,aAAa,CAAA;AAG9E,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAA;AAG9D,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,YAAY,CAAA;AAU1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,YAAY,CAAA;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,eAAe,CAAA;IAClC,WAAW,CAAC,EAAE,UAAU,CAAA;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,YAAY,CAAA;IACpB,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3F,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,CAAC,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5F,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAA;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAChD;AA6bD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,GAAG,YAAY,CA0I7E"}
@@ -12,6 +12,7 @@ import { exportConvoyToNdjson } from './export.js';
12
12
  import { buildPhases, formatDuration } from '../run/executor.js';
13
13
  import { parseTimeout } from '../run/schema.js';
14
14
  import { getAdapter, detectAdapter } from '../run/adapters/index.js';
15
+ import { c } from '../prompt.js';
15
16
  const execFile = promisify(execFileCb);
16
17
  // ── Internal helpers ──────────────────────────────────────────────────────────
17
18
  function msToTimeout(ms) {
@@ -45,6 +46,8 @@ function makeTimeoutPromise(ms) {
45
46
  }
46
47
  // ── Core convoy execution ─────────────────────────────────────────────────────
47
48
  async function runConvoy(convoyId, spec, adapter, store, events, wtManager, mergeQueue, basePath, baseBranch, verbose, startTime) {
49
+ const totalTasks = spec.tasks?.length ?? 0;
50
+ let completedCount = 0;
48
51
  const activeTaskMap = new Map();
49
52
  const taskAdapterMap = new Map();
50
53
  const healthMonitor = createHealthMonitor({
@@ -72,8 +75,7 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
72
75
  if (!task || task.status !== 'pending')
73
76
  return;
74
77
  store.updateTaskStatus(taskId, convoyId, 'skipped', { output: reason });
75
- if (verbose)
76
- process.stdout.write(`\u2298 ${taskId}\n`);
78
+ process.stdout.write(` ${c.dim('⊘')} ${c.bold(`[${taskId}]`)} skipped\n`);
77
79
  events.emit('task_skipped', { reason }, { convoy_id: convoyId, task_id: taskId });
78
80
  for (const t of allTasks) {
79
81
  const deps = t.depends_on ? JSON.parse(t.depends_on) : [];
@@ -148,8 +150,7 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
148
150
  store.updateWorkerStatus(workerId, 'running');
149
151
  const task = taskRecordToTask(taskRecord);
150
152
  activeTaskMap.set(taskRecord.id, task);
151
- if (verbose)
152
- process.stdout.write(`\u25b6 ${taskRecord.id}\n`);
153
+ process.stdout.write(` ${c.cyan('▶')} ${c.bold(`[${taskRecord.id}]`)} ${taskRecord.agent}${worktreePath ? c.dim(' (worktree)') : ''}\n`);
153
154
  events.emit('task_started', { worker_id: workerId }, { convoy_id: convoyId, task_id: taskRecord.id, worker_id: workerId });
154
155
  const taskStartTime = Date.now();
155
156
  const timeout = makeTimeoutPromise(taskRecord.timeout_ms);
@@ -191,9 +192,7 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
191
192
  finished_at: null,
192
193
  });
193
194
  store.updateWorkerStatus(workerId, 'killed', { finished_at: finishedAt });
194
- if (verbose) {
195
- process.stdout.write(`\u23f1 ${taskRecord.id} retry ${freshRecord.retries + 1}/${freshRecord.max_retries}\n`);
196
- }
195
+ process.stdout.write(` ${c.yellow('⟳')} ${c.bold(`[${taskRecord.id}]`)} timed out, retry ${freshRecord.retries + 1}/${freshRecord.max_retries}\n`);
197
196
  }
198
197
  else {
199
198
  store.withTransaction(() => {
@@ -203,8 +202,8 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
203
202
  });
204
203
  store.updateWorkerStatus(workerId, 'failed', { finished_at: finishedAt });
205
204
  });
206
- if (verbose)
207
- process.stdout.write(`\u23f1 ${taskRecord.id}\n`);
205
+ completedCount++;
206
+ process.stdout.write(` ${c.red('⏱')} ${c.bold(`[${taskRecord.id}]`)} timed out ${c.dim(`[${completedCount}/${totalTasks}]`)}\n`);
208
207
  events.emit('task_failed', { reason: 'timeout', worker_id: workerId }, { convoy_id: convoyId, task_id: taskRecord.id, worker_id: workerId });
209
208
  cascadeFailure(taskRecord.id);
210
209
  }
@@ -242,8 +241,8 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
242
241
  });
243
242
  store.updateWorkerStatus(workerId, 'done', { finished_at: finishedAt });
244
243
  });
245
- if (verbose)
246
- process.stdout.write(`\u2713 ${taskRecord.id} ${elapsed}\n`);
244
+ completedCount++;
245
+ process.stdout.write(` ${c.green('✓')} ${c.bold(`[${taskRecord.id}]`)} ${elapsed} ${c.dim(`[${completedCount}/${totalTasks}]`)}\n`);
247
246
  events.emit('task_done', { exit_code: result.exitCode, worker_id: workerId }, { convoy_id: convoyId, task_id: taskRecord.id, worker_id: workerId });
248
247
  taskAdapterMap.delete(taskRecord.id);
249
248
  return;
@@ -262,9 +261,7 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
262
261
  finished_at: null,
263
262
  });
264
263
  store.updateWorkerStatus(workerId, 'failed', { finished_at: finishedAt });
265
- if (verbose) {
266
- process.stdout.write(`\u2717 ${taskRecord.id} retry ${freshRecord.retries + 1}/${freshRecord.max_retries}\n`);
267
- }
264
+ process.stdout.write(` ${c.yellow('⟳')} ${c.bold(`[${taskRecord.id}]`)} retry ${freshRecord.retries + 1}/${freshRecord.max_retries}\n`);
268
265
  }
269
266
  else {
270
267
  store.withTransaction(() => {
@@ -275,18 +272,31 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
275
272
  });
276
273
  store.updateWorkerStatus(workerId, 'failed', { finished_at: finishedAt });
277
274
  });
278
- if (verbose)
279
- process.stdout.write(`\u2717 ${taskRecord.id}\n`);
275
+ completedCount++;
276
+ process.stdout.write(` ${c.red('✗')} ${c.bold(`[${taskRecord.id}]`)} failed ${elapsed} ${c.dim(`[${completedCount}/${totalTasks}]`)}\n`);
277
+ if (verbose) {
278
+ const outputPreview = result.output.split('\n').slice(0, 5).join('\n');
279
+ process.stdout.write(`${outputPreview}\n`);
280
+ }
280
281
  events.emit('task_failed', { reason: 'error', exit_code: result.exitCode, worker_id: workerId }, { convoy_id: convoyId, task_id: taskRecord.id, worker_id: workerId });
281
282
  cascadeFailure(taskRecord.id);
282
283
  }
283
284
  taskAdapterMap.delete(taskRecord.id);
284
285
  }
285
286
  // ── Main execution loop ───────────────────────────────────────────────────
287
+ let lastPhase = -1;
286
288
  try {
287
289
  let ready = store.getReadyTasks(convoyId);
288
290
  const concurrency = spec.concurrency ?? 1;
289
291
  while (ready.length > 0) {
292
+ for (const t of ready) {
293
+ if (t.phase !== lastPhase) {
294
+ lastPhase = t.phase;
295
+ const tasksInPhase = ready.filter(r => r.phase === t.phase);
296
+ const ids = tasksInPhase.map(r => r.id).join(', ');
297
+ process.stdout.write(`\n ${c.bold(`Phase ${t.phase + 1}:`)} ${c.dim(ids)}\n`);
298
+ }
299
+ }
290
300
  for (let i = 0; i < ready.length; i += concurrency) {
291
301
  await Promise.all(ready.slice(i, i + concurrency).map(t => executeOneTask(t)));
292
302
  }
@@ -297,20 +307,60 @@ async function runConvoy(convoyId, spec, adapter, store, events, wtManager, merg
297
307
  healthMonitor.stop();
298
308
  }
299
309
  // ── Validation gates ──────────────────────────────────────────────────────
300
- const gateResults = [];
301
- if (spec.gates && spec.gates.length > 0) {
310
+ const maxGateRetries = spec.gate_retries ?? 0;
311
+ let gateAttempt = 0;
312
+ let gateResults = [];
313
+ while (gateAttempt <= maxGateRetries) {
314
+ if (!spec.gates || spec.gates.length === 0)
315
+ break;
316
+ gateResults = [];
317
+ process.stdout.write(`\n ${c.bold(gateAttempt === 0 ? 'Gates:' : `Gates (retry ${gateAttempt}/${maxGateRetries}):`)}\n`);
302
318
  for (const command of spec.gates) {
303
319
  try {
304
320
  await execFile('sh', ['-c', command], { cwd: basePath });
305
321
  gateResults.push({ command, exitCode: 0, passed: true });
322
+ process.stdout.write(` ${c.green('✓')} ${c.dim(command)}\n`);
306
323
  }
307
324
  catch (err) {
308
- const code = typeof err.code === 'number'
309
- ? err.code
310
- : 1;
311
- gateResults.push({ command, exitCode: code, passed: false });
325
+ const execErr = err;
326
+ const code = typeof execErr.code === 'number' ? execErr.code : 1;
327
+ const output = execErr.stderr || execErr.stdout || execErr.message || '';
328
+ gateResults.push({ command, exitCode: code, passed: false, output });
329
+ process.stdout.write(` ${c.red('✗')} ${c.dim(command)}\n`);
312
330
  }
313
331
  }
332
+ const failedGates = gateResults.filter(g => !g.passed);
333
+ if (failedGates.length === 0)
334
+ break; // All gates passed
335
+ // Can we retry?
336
+ if (gateAttempt >= maxGateRetries)
337
+ break; // No more retries
338
+ // Create and execute a fix task
339
+ gateAttempt++;
340
+ const failureSummary = failedGates
341
+ .map(g => `Command: ${g.command}\nExit code: ${g.exitCode}\nOutput:\n${g.output ?? '(no output)'}`)
342
+ .join('\n\n---\n\n');
343
+ const fixPrompt = `The following validation gates failed after all convoy tasks completed. Fix the issues so these commands pass.\n\n${failureSummary}`;
344
+ const fixTaskId = `gate-fix-${gateAttempt}`;
345
+ process.stdout.write(`\n ${c.yellow('⟳')} ${c.bold(`[${fixTaskId}]`)} fixing gate failures (attempt ${gateAttempt}/${maxGateRetries})\n`);
346
+ const fixTask = {
347
+ id: fixTaskId,
348
+ prompt: fixPrompt,
349
+ agent: spec.defaults?.agent ?? 'developer',
350
+ timeout: spec.defaults?.timeout ?? '30m',
351
+ depends_on: [],
352
+ files: [],
353
+ description: `Auto-fix gate failures (attempt ${gateAttempt})`,
354
+ max_retries: 0,
355
+ };
356
+ const fixResult = await adapter.execute(fixTask, { verbose, cwd: basePath });
357
+ if (fixResult.success) {
358
+ process.stdout.write(` ${c.green('✓')} ${c.bold(`[${fixTaskId}]`)} fix applied\n`);
359
+ }
360
+ else {
361
+ process.stdout.write(` ${c.red('✗')} ${c.bold(`[${fixTaskId}]`)} fix failed\n`);
362
+ break; // Don't retry if the fix task itself fails
363
+ }
314
364
  }
315
365
  // ── Final status & summary ────────────────────────────────────────────────
316
366
  const allTasksFinal = store.getTasksByConvoy(convoyId);
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/cli/convoy/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/cli/convoy/engine.ts"],"names":[],"mappings":"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"}
@@ -1388,4 +1388,209 @@ describe('cost tracking', () => {
1388
1388
  expect(result.cost).toBeUndefined();
1389
1389
  });
1390
1390
  });
1391
+ // ── 22. Progress reporting (always-on output) ─────────────────────────────────
1392
+ describe('progress reporting', () => {
1393
+ let stdoutSpy;
1394
+ let writtenChunks;
1395
+ beforeEach(() => {
1396
+ writtenChunks = [];
1397
+ stdoutSpy = vi.spyOn(process.stdout, 'write').mockImplementation((data) => {
1398
+ writtenChunks.push(String(data));
1399
+ return true;
1400
+ });
1401
+ });
1402
+ afterEach(() => {
1403
+ stdoutSpy.mockRestore();
1404
+ });
1405
+ it('prints task start message without verbose flag', async () => {
1406
+ const adapter = makeAdapter();
1407
+ const engine = createConvoyEngine({
1408
+ spec: makeSpec(),
1409
+ specYaml: 'name: test',
1410
+ adapter,
1411
+ dbPath,
1412
+ _worktreeManager: makeWorktreeManager(),
1413
+ _mergeQueue: makeMergeQueue(),
1414
+ });
1415
+ await engine.run();
1416
+ const written = writtenChunks.join('');
1417
+ expect(written).toContain('[task-1]');
1418
+ expect(written).toMatch(/▶/);
1419
+ });
1420
+ it('prints task completion with counter', async () => {
1421
+ const adapter = makeAdapter();
1422
+ const engine = createConvoyEngine({
1423
+ spec: makeSpec(),
1424
+ specYaml: 'name: test',
1425
+ adapter,
1426
+ dbPath,
1427
+ _worktreeManager: makeWorktreeManager(),
1428
+ _mergeQueue: makeMergeQueue(),
1429
+ });
1430
+ await engine.run();
1431
+ const written = writtenChunks.join('');
1432
+ expect(written).toContain('[1/1]');
1433
+ expect(written).toMatch(/✓/);
1434
+ });
1435
+ it('prints task failure with counter', async () => {
1436
+ const adapter = makeAdapter();
1437
+ adapter.execute.mockResolvedValue({ success: false, output: 'boom', exitCode: 1 });
1438
+ const engine = createConvoyEngine({
1439
+ spec: makeSpec({}, [{ id: 'task-1', max_retries: 0 }]),
1440
+ specYaml: 'name: test',
1441
+ adapter,
1442
+ dbPath,
1443
+ _worktreeManager: makeWorktreeManager(),
1444
+ _mergeQueue: makeMergeQueue(),
1445
+ });
1446
+ await engine.run();
1447
+ const written = writtenChunks.join('');
1448
+ expect(written).toContain('[1/1]');
1449
+ expect(written).toMatch(/✗/);
1450
+ });
1451
+ it('prints phase headers when tasks span multiple phases', async () => {
1452
+ const adapter = makeAdapter();
1453
+ const spec = makeSpec({}, [
1454
+ { id: 'task-a', depends_on: [] },
1455
+ { id: 'task-b', depends_on: ['task-a'] },
1456
+ ]);
1457
+ const engine = createConvoyEngine({
1458
+ spec,
1459
+ specYaml: 'name: test',
1460
+ adapter,
1461
+ dbPath,
1462
+ _worktreeManager: makeWorktreeManager(),
1463
+ _mergeQueue: makeMergeQueue(),
1464
+ });
1465
+ await engine.run();
1466
+ const written = writtenChunks.join('');
1467
+ expect(written).toContain('Phase 1:');
1468
+ expect(written).toContain('Phase 2:');
1469
+ });
1470
+ it('prints gate results with pass/fail indicators', async () => {
1471
+ const adapter = makeAdapter();
1472
+ const spec = makeSpec({ gates: ['echo gate-ok', 'false'] }, [{ id: 'task-1' }]);
1473
+ const engine = createConvoyEngine({
1474
+ spec,
1475
+ specYaml: 'name: test',
1476
+ adapter,
1477
+ dbPath,
1478
+ _worktreeManager: makeWorktreeManager(),
1479
+ _mergeQueue: makeMergeQueue(),
1480
+ });
1481
+ await engine.run();
1482
+ const written = writtenChunks.join('');
1483
+ expect(written).toContain('Gates:');
1484
+ expect(written).toContain('echo gate-ok');
1485
+ expect(written).toContain('false');
1486
+ });
1487
+ it('prints retry messages when a task fails and is retried', async () => {
1488
+ const adapter = makeAdapter();
1489
+ adapter.execute
1490
+ .mockImplementationOnce(async () => {
1491
+ await new Promise(r => setTimeout(r, 5));
1492
+ return { success: false, output: 'fail', exitCode: 1 };
1493
+ })
1494
+ .mockImplementationOnce(async () => {
1495
+ await new Promise(r => setTimeout(r, 5));
1496
+ return { success: true, output: 'ok', exitCode: 0 };
1497
+ });
1498
+ const engine = createConvoyEngine({
1499
+ spec: makeSpec({}, [{ id: 'task-1', max_retries: 1 }]),
1500
+ specYaml: 'name: test',
1501
+ adapter,
1502
+ dbPath,
1503
+ _worktreeManager: makeWorktreeManager(),
1504
+ _mergeQueue: makeMergeQueue(),
1505
+ });
1506
+ await engine.run();
1507
+ const written = writtenChunks.join('');
1508
+ expect(written).toMatch(/⟳/);
1509
+ expect(written).toContain('retry 1/1');
1510
+ });
1511
+ });
1512
+ // ── 23. Gate retry mechanism ──────────────────────────────────────────────────
1513
+ describe('gate retry mechanism', () => {
1514
+ let tmpDir;
1515
+ let adapter;
1516
+ let wtManager;
1517
+ let mergeQueue;
1518
+ beforeEach(() => {
1519
+ tmpDir = mkdtempSync(join(tmpdir(), 'convoy-gate-retry-'));
1520
+ adapter = makeAdapter();
1521
+ wtManager = makeWorktreeManager();
1522
+ mergeQueue = makeMergeQueue();
1523
+ });
1524
+ afterEach(() => {
1525
+ rmSync(tmpDir, { recursive: true, force: true });
1526
+ });
1527
+ it('gates pass on first attempt when gate_retries > 0 — no fix task run', async () => {
1528
+ const spec = makeSpec({ gates: [`node -e "process.exit(0)"`], gate_retries: 1 }, [{ id: 'task-1' }]);
1529
+ const engine = createConvoyEngine({
1530
+ spec,
1531
+ specYaml: 'name: test',
1532
+ adapter,
1533
+ basePath: tmpDir,
1534
+ _worktreeManager: wtManager,
1535
+ _mergeQueue: mergeQueue,
1536
+ });
1537
+ const result = await engine.run();
1538
+ expect(result.status).toBe('done');
1539
+ // Only task-1 executed, no fix task needed
1540
+ expect(adapter.execute).toHaveBeenCalledTimes(1);
1541
+ });
1542
+ it('defaults gate_retries to 0 (no retry on gate failure)', async () => {
1543
+ const spec = makeSpec({ gates: ['false'] }, [{ id: 'task-1' }]);
1544
+ const engine = createConvoyEngine({
1545
+ spec,
1546
+ specYaml: 'name: test',
1547
+ adapter,
1548
+ basePath: tmpDir,
1549
+ _worktreeManager: wtManager,
1550
+ _mergeQueue: mergeQueue,
1551
+ });
1552
+ const result = await engine.run();
1553
+ expect(result.status).toBe('gate-failed');
1554
+ // No fix task attempted — only task-1 was executed
1555
+ expect(adapter.execute).toHaveBeenCalledTimes(1);
1556
+ });
1557
+ it('calls adapter.execute with fix prompt when gates fail and retries available', async () => {
1558
+ const spec = makeSpec({ gates: ['false'], gate_retries: 1 }, [{ id: 'task-1' }]);
1559
+ const engine = createConvoyEngine({
1560
+ spec,
1561
+ specYaml: 'name: test',
1562
+ adapter,
1563
+ basePath: tmpDir,
1564
+ _worktreeManager: wtManager,
1565
+ _mergeQueue: mergeQueue,
1566
+ });
1567
+ const result = await engine.run();
1568
+ // The fix task should have been called (adapter.execute called for task-1 + gate-fix-1)
1569
+ expect(adapter.execute).toHaveBeenCalledTimes(2);
1570
+ // The second call should be the fix task
1571
+ const fixCall = adapter.execute.mock.calls[1];
1572
+ expect(fixCall[0].id).toBe('gate-fix-1');
1573
+ expect(fixCall[0].prompt).toContain('validation gates failed');
1574
+ // Gates still fail after fix, so final status is gate-failed
1575
+ expect(result.status).toBe('gate-failed');
1576
+ });
1577
+ it('stops retrying when fix task fails', async () => {
1578
+ adapter.execute
1579
+ .mockResolvedValueOnce({ success: true, output: 'ok', exitCode: 0 }) // task-1
1580
+ .mockResolvedValueOnce({ success: false, output: 'fix failed', exitCode: 1 }); // gate-fix-1
1581
+ const spec = makeSpec({ gates: ['false'], gate_retries: 2 }, [{ id: 'task-1' }]);
1582
+ const engine = createConvoyEngine({
1583
+ spec,
1584
+ specYaml: 'name: test',
1585
+ adapter,
1586
+ basePath: tmpDir,
1587
+ _worktreeManager: wtManager,
1588
+ _mergeQueue: mergeQueue,
1589
+ });
1590
+ const result = await engine.run();
1591
+ // Only 2 adapter calls: task-1 + one failed fix attempt (no second retry)
1592
+ expect(adapter.execute).toHaveBeenCalledTimes(2);
1593
+ expect(result.status).toBe('gate-failed');
1594
+ });
1595
+ });
1391
1596
  //# sourceMappingURL=engine.test.js.map