@agent-relay/sdk 3.2.9 → 3.2.11

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 (89) hide show
  1. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  2. package/bin/agent-relay-broker-darwin-x64 +0 -0
  3. package/bin/agent-relay-broker-linux-arm64 +0 -0
  4. package/bin/agent-relay-broker-linux-x64 +0 -0
  5. package/dist/cli-registry.d.ts +42 -0
  6. package/dist/cli-registry.d.ts.map +1 -0
  7. package/dist/cli-registry.js +126 -0
  8. package/dist/cli-registry.js.map +1 -0
  9. package/dist/cli-resolver.d.ts +30 -0
  10. package/dist/cli-resolver.d.ts.map +1 -0
  11. package/dist/cli-resolver.js +132 -0
  12. package/dist/cli-resolver.js.map +1 -0
  13. package/dist/index.d.ts +2 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/spawn-from-env.d.ts.map +1 -1
  18. package/dist/spawn-from-env.js +6 -15
  19. package/dist/spawn-from-env.js.map +1 -1
  20. package/dist/workflows/__tests__/cli-session-collector.test.d.ts +2 -0
  21. package/dist/workflows/__tests__/cli-session-collector.test.d.ts.map +1 -0
  22. package/dist/workflows/__tests__/cli-session-collector.test.js +54 -0
  23. package/dist/workflows/__tests__/cli-session-collector.test.js.map +1 -0
  24. package/dist/workflows/__tests__/collectors/claude.test.d.ts +2 -0
  25. package/dist/workflows/__tests__/collectors/claude.test.d.ts.map +1 -0
  26. package/dist/workflows/__tests__/collectors/claude.test.js +85 -0
  27. package/dist/workflows/__tests__/collectors/claude.test.js.map +1 -0
  28. package/dist/workflows/__tests__/collectors/codex.test.d.ts +2 -0
  29. package/dist/workflows/__tests__/collectors/codex.test.d.ts.map +1 -0
  30. package/dist/workflows/__tests__/collectors/codex.test.js +67 -0
  31. package/dist/workflows/__tests__/collectors/codex.test.js.map +1 -0
  32. package/dist/workflows/__tests__/collectors/opencode.test.d.ts +2 -0
  33. package/dist/workflows/__tests__/collectors/opencode.test.d.ts.map +1 -0
  34. package/dist/workflows/__tests__/collectors/opencode.test.js +119 -0
  35. package/dist/workflows/__tests__/collectors/opencode.test.js.map +1 -0
  36. package/dist/workflows/__tests__/run-summary-table.test.d.ts +2 -0
  37. package/dist/workflows/__tests__/run-summary-table.test.d.ts.map +1 -0
  38. package/dist/workflows/__tests__/run-summary-table.test.js +130 -0
  39. package/dist/workflows/__tests__/run-summary-table.test.js.map +1 -0
  40. package/dist/workflows/__tests__/step-cwd.test.d.ts +2 -0
  41. package/dist/workflows/__tests__/step-cwd.test.d.ts.map +1 -0
  42. package/dist/workflows/__tests__/step-cwd.test.js +42 -0
  43. package/dist/workflows/__tests__/step-cwd.test.js.map +1 -0
  44. package/dist/workflows/builder.d.ts +7 -0
  45. package/dist/workflows/builder.d.ts.map +1 -1
  46. package/dist/workflows/builder.js +40 -5
  47. package/dist/workflows/builder.js.map +1 -1
  48. package/dist/workflows/cli-session-collector.d.ts +39 -0
  49. package/dist/workflows/cli-session-collector.d.ts.map +1 -0
  50. package/dist/workflows/cli-session-collector.js +23 -0
  51. package/dist/workflows/cli-session-collector.js.map +1 -0
  52. package/dist/workflows/cli.js +228 -48
  53. package/dist/workflows/cli.js.map +1 -1
  54. package/dist/workflows/collectors/claude.d.ts +6 -0
  55. package/dist/workflows/collectors/claude.d.ts.map +1 -0
  56. package/dist/workflows/collectors/claude.js +330 -0
  57. package/dist/workflows/collectors/claude.js.map +1 -0
  58. package/dist/workflows/collectors/codex.d.ts +18 -0
  59. package/dist/workflows/collectors/codex.d.ts.map +1 -0
  60. package/dist/workflows/collectors/codex.js +265 -0
  61. package/dist/workflows/collectors/codex.js.map +1 -0
  62. package/dist/workflows/collectors/opencode.d.ts +6 -0
  63. package/dist/workflows/collectors/opencode.d.ts.map +1 -0
  64. package/dist/workflows/collectors/opencode.js +204 -0
  65. package/dist/workflows/collectors/opencode.js.map +1 -0
  66. package/dist/workflows/default-logger.d.ts +9 -0
  67. package/dist/workflows/default-logger.d.ts.map +1 -0
  68. package/dist/workflows/default-logger.js +104 -0
  69. package/dist/workflows/default-logger.js.map +1 -0
  70. package/dist/workflows/index.d.ts +4 -0
  71. package/dist/workflows/index.d.ts.map +1 -1
  72. package/dist/workflows/index.js +4 -0
  73. package/dist/workflows/index.js.map +1 -1
  74. package/dist/workflows/listr-renderer.d.ts +26 -0
  75. package/dist/workflows/listr-renderer.d.ts.map +1 -0
  76. package/dist/workflows/listr-renderer.js +232 -0
  77. package/dist/workflows/listr-renderer.js.map +1 -0
  78. package/dist/workflows/run-summary-table.d.ts +4 -0
  79. package/dist/workflows/run-summary-table.d.ts.map +1 -0
  80. package/dist/workflows/run-summary-table.js +98 -0
  81. package/dist/workflows/run-summary-table.js.map +1 -0
  82. package/dist/workflows/runner.d.ts +12 -1
  83. package/dist/workflows/runner.d.ts.map +1 -1
  84. package/dist/workflows/runner.js +107 -71
  85. package/dist/workflows/runner.js.map +1 -1
  86. package/dist/workflows/types.d.ts +2 -0
  87. package/dist/workflows/types.d.ts.map +1 -1
  88. package/dist/workflows/types.js.map +1 -1
  89. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"listr-renderer.js","sourceRoot":"","sources":["../../src/workflows/listr-renderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { CliSessionReport } from './cli-session-collector.js';
2
+ import type { StepOutcome } from './trajectory.js';
3
+ export declare function formatRunSummaryTable(outcomes: StepOutcome[], reports: Map<string, CliSessionReport>): string;
4
+ //# sourceMappingURL=run-summary-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-summary-table.d.ts","sourceRoot":"","sources":["../../src/workflows/run-summary-table.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuCnD,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,GACrC,MAAM,CAkER"}
@@ -0,0 +1,98 @@
1
+ function formatCurrency(value) {
2
+ return typeof value === 'number' ? `$${value.toFixed(2)}` : '--';
3
+ }
4
+ function formatTokens(report) {
5
+ if (!report?.tokens)
6
+ return '--';
7
+ const total = report.tokens.input + report.tokens.output + report.tokens.cacheRead;
8
+ return total.toLocaleString('en-US');
9
+ }
10
+ function formatDuration(durationMs) {
11
+ if (typeof durationMs !== 'number' || !Number.isFinite(durationMs))
12
+ return '--';
13
+ if (durationMs < 1000)
14
+ return `${durationMs}ms`;
15
+ const totalSeconds = Math.round(durationMs / 1000);
16
+ const minutes = Math.floor(totalSeconds / 60);
17
+ const seconds = totalSeconds % 60;
18
+ return minutes > 0 ? `${minutes}m ${seconds}s` : `${seconds}s`;
19
+ }
20
+ function truncate(value, length) {
21
+ if (value.length <= length)
22
+ return value;
23
+ if (length <= 1)
24
+ return value.slice(0, length);
25
+ return `${value.slice(0, length - 1)}…`;
26
+ }
27
+ function pad(value, width, align = 'left') {
28
+ return align === 'right' ? value.padStart(width, ' ') : value.padEnd(width, ' ');
29
+ }
30
+ function formatErrors(outcome, report) {
31
+ const count = report?.errors.length ?? 0;
32
+ if (count === 0)
33
+ return outcome.status === 'failed' && outcome.error ? '1' : '--';
34
+ if (outcome.status === 'completed')
35
+ return `${count} (fixed)`;
36
+ return String(count);
37
+ }
38
+ export function formatRunSummaryTable(outcomes, reports) {
39
+ // Only show the Cost column when at least one report has reliable cost data
40
+ // (currently only OpenCode populates cost; Claude and Codex return null)
41
+ const hasCost = Array.from(reports.values()).some((r) => typeof r.cost === 'number' && r.cost > 0);
42
+ const headers = hasCost
43
+ ? ['Step', 'Status', 'Model', 'Cost', 'Tokens', 'Duration', 'Errors']
44
+ : ['Step', 'Status', 'Model', 'Tokens', 'Duration', 'Errors'];
45
+ const widths = hasCost
46
+ ? [20, 6, 16, 8, 10, 10, 10]
47
+ : [20, 6, 16, 10, 10, 10];
48
+ const lines = [];
49
+ lines.push(headers.map((h, i) => {
50
+ const align = i <= 2 ? 'left' : 'right';
51
+ return pad(h, widths[i], align);
52
+ }).join(' '));
53
+ let totalCost = 0;
54
+ let totalTokens = 0;
55
+ let totalDurationMs = 0;
56
+ for (const outcome of outcomes) {
57
+ const report = reports.get(outcome.name);
58
+ const reportDuration = report?.durationMs ?? outcome.durationMs;
59
+ const reportTokens = report?.tokens
60
+ ? report.tokens.input + report.tokens.output + report.tokens.cacheRead
61
+ : 0;
62
+ if (typeof report?.cost === 'number')
63
+ totalCost += report.cost;
64
+ totalTokens += reportTokens;
65
+ if (typeof reportDuration === 'number')
66
+ totalDurationMs += reportDuration;
67
+ const cols = [
68
+ pad(truncate(outcome.name, widths[0]), widths[0]),
69
+ pad(outcome.status === 'failed' ? 'FAIL' : outcome.status === 'completed' ? 'pass' : 'skip', widths[1]),
70
+ pad(truncate(report?.model ?? '--', widths[2]), widths[2]),
71
+ ];
72
+ if (hasCost)
73
+ cols.push(pad(formatCurrency(report?.cost), widths[3], 'right'));
74
+ const tokenIdx = hasCost ? 4 : 3;
75
+ cols.push(pad(formatTokens(report), widths[tokenIdx], 'right'));
76
+ cols.push(pad(formatDuration(reportDuration), widths[tokenIdx + 1], 'right'));
77
+ cols.push(pad(formatErrors(outcome, report), widths[tokenIdx + 2], 'right'));
78
+ lines.push(cols.join(' '));
79
+ if (outcome.status === 'failed') {
80
+ const firstError = report?.errors[0];
81
+ if (firstError) {
82
+ lines.push(` └─ Error [turn ${firstError.turn}] ${truncate(firstError.text, 120)}`);
83
+ }
84
+ }
85
+ }
86
+ const totalLabelWidth = widths[0] + widths[1] + widths[2] + 4;
87
+ lines.push('─'.repeat(lines[0].length));
88
+ const totalCols = [pad('Total', totalLabelWidth)];
89
+ if (hasCost)
90
+ totalCols.push(pad(formatCurrency(totalCost), widths[3], 'right'));
91
+ const tokenIdx = hasCost ? 4 : 3;
92
+ totalCols.push(pad(totalTokens > 0 ? totalTokens.toLocaleString('en-US') : '--', widths[tokenIdx], 'right'));
93
+ totalCols.push(pad(formatDuration(totalDurationMs), widths[tokenIdx + 1], 'right'));
94
+ totalCols.push(pad('', widths[tokenIdx + 2], 'right'));
95
+ lines.push(totalCols.join(' '));
96
+ return lines.map((line) => ` ${line}`).join('\n');
97
+ }
98
+ //# sourceMappingURL=run-summary-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-summary-table.js","sourceRoot":"","sources":["../../src/workflows/run-summary-table.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * persists state to DB, and supports pause/resume/abort with retries.
5
5
  */
6
6
  import type { BrokerEvent } from '../protocol.js';
7
+ import { type CliSessionReport } from './cli-session-collector.js';
7
8
  import type { AgentCli, AgentDefinition, DryRunReport, RelayYamlConfig, StepCompletionEvidence, WorkflowRunRow, WorkflowStep, WorkflowExecuteOptions, WorkflowStepRow } from './types.js';
8
9
  import { AgentRelay } from '../relay.js';
9
10
  import type { AgentRelayOptions } from '../relay.js';
@@ -61,6 +62,11 @@ export type WorkflowEvent = {
61
62
  runId: string;
62
63
  stepName: string;
63
64
  ownerName: string;
65
+ } | {
66
+ type: 'step:agent-report';
67
+ runId: string;
68
+ stepName: string;
69
+ report: CliSessionReport;
64
70
  } | {
65
71
  type: 'step:failed';
66
72
  runId: string;
@@ -167,6 +173,8 @@ export declare class WorkflowRunner {
167
173
  private resolvedPaths;
168
174
  /** Tracks agent names currently assigned as reviewers (ref-counted to handle concurrent usage). */
169
175
  private readonly activeReviewers;
176
+ /** Structured CLI session reports captured during the current run, keyed by step name. */
177
+ private readonly agentReports;
170
178
  constructor(options?: WorkflowRunnerOptions);
171
179
  /** Expand environment variables like $HOME or $VAR in a path string. */
172
180
  private static resolveEnvVars;
@@ -186,6 +194,7 @@ export declare class WorkflowRunner {
186
194
  * Returns undefined if no workdir is set.
187
195
  */
188
196
  private resolveStepWorkdir;
197
+ private resolveEffectiveCwd;
189
198
  private static readonly EVIDENCE_IGNORED_DIRS;
190
199
  getStepCompletionEvidence(stepName: string): StepCompletionEvidence | undefined;
191
200
  private getOrCreateStepEvidenceRecord;
@@ -323,7 +332,7 @@ export declare class WorkflowRunner {
323
332
  private combineStepAndReviewOutput;
324
333
  /**
325
334
  * Build the CLI command and arguments for a non-interactive agent execution.
326
- * Each CLI has a specific flag for one-shot prompt mode.
335
+ * Delegates to the consolidated CLI registry for per-CLI arg formats.
327
336
  */
328
337
  static buildNonInteractiveCommand(cli: AgentCli, task: string, extraArgs?: string[]): {
329
338
  cmd: string;
@@ -375,6 +384,7 @@ export declare class WorkflowRunner {
375
384
  private runVerification;
376
385
  private updateRunStatus;
377
386
  private markStepFailed;
387
+ private captureAgentReport;
378
388
  private markDownstreamSkipped;
379
389
  /**
380
390
  * Walk the dependsOn graph backwards from a target step to collect ALL
@@ -442,6 +452,7 @@ export declare class WorkflowRunner {
442
452
  private getStepOutputDir;
443
453
  /** Persist step output to disk and post full output as a channel message. */
444
454
  private persistStepOutput;
455
+ private persistAgentReport;
445
456
  /** Scan .agent-relay/step-outputs/ for the most recent run directory containing the needed steps. */
446
457
  private findMostRecentRunWithSteps;
447
458
  /** Load persisted step output from disk. */
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/workflows/runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/workflows/runner.ts"],"names":[],"mappings":"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"}
@@ -3,16 +3,21 @@
3
3
  * executes steps (sequential/parallel/DAG), runs verification checks,
4
4
  * persists state to DB, and supports pause/resume/abort with retries.
5
5
  */
6
- import { spawn as cpSpawn, execFileSync } from 'node:child_process';
6
+ import { spawn as cpSpawn } from 'node:child_process';
7
7
  import { randomBytes } from 'node:crypto';
8
8
  import { createWriteStream, existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, writeFileSync, } from 'node:fs';
9
9
  import { readFile, writeFile } from 'node:fs/promises';
10
10
  import path from 'node:path';
11
+ import chalk from 'chalk';
11
12
  import { parse as parseYaml } from 'yaml';
12
13
  import { stripAnsi as stripAnsiFn } from '../pty.js';
13
14
  import { resolveSpawnPolicy } from '../spawn-from-env.js';
15
+ import { getCliDefinition } from '../cli-registry.js';
16
+ import { resolveCliSync } from '../cli-resolver.js';
14
17
  import { loadCustomSteps, resolveAllCustomSteps, validateCustomStepsUsage, CustomStepsParseError, CustomStepResolutionError, } from './custom-steps.js';
18
+ import { collectCliSession } from './cli-session-collector.js';
15
19
  import { InMemoryWorkflowDb } from './memory-db.js';
20
+ import { formatRunSummaryTable } from './run-summary-table.js';
16
21
  import { WorkflowTrajectory } from './trajectory.js';
17
22
  // ── AgentRelay SDK imports ──────────────────────────────────────────────────
18
23
  // Import from sub-paths to avoid pulling in the full @relaycast/sdk dependency.
@@ -40,27 +45,12 @@ class WorkflowCompletionError extends Error {
40
45
  // ── CLI resolution ───────────────────────────────────────────────────────────
41
46
  /**
42
47
  * Resolve `cursor` to the concrete cursor agent binary available in PATH.
43
- * Prefers `cursor-agent` over `agent`. Falls back to `agent` if neither
44
- * `cursor-agent` nor a real cursor IDE CLI is found.
45
- * Result is memoized after the first call to avoid repeated sync PATH lookups.
48
+ * Delegates to the consolidated cli-resolver which checks PATH + well-known
49
+ * install directories. Falls back to `agent` if nothing found.
46
50
  */
47
- let _resolvedCursorCli;
48
51
  function resolveCursorCli() {
49
- if (_resolvedCursorCli !== undefined)
50
- return _resolvedCursorCli;
51
- const candidates = ['cursor-agent', 'agent'];
52
- for (const candidate of candidates) {
53
- try {
54
- execFileSync('which', [candidate], { stdio: 'ignore' });
55
- _resolvedCursorCli = candidate;
56
- return candidate;
57
- }
58
- catch {
59
- // not in PATH, try next
60
- }
61
- }
62
- _resolvedCursorCli = 'agent'; // last-resort default
63
- return _resolvedCursorCli;
52
+ const resolved = resolveCliSync('cursor');
53
+ return resolved?.binary ?? 'agent';
64
54
  }
65
55
  // ── WorkflowRunner ──────────────────────────────────────────────────────────
66
56
  export class WorkflowRunner {
@@ -120,6 +110,8 @@ export class WorkflowRunner {
120
110
  resolvedPaths = new Map();
121
111
  /** Tracks agent names currently assigned as reviewers (ref-counted to handle concurrent usage). */
122
112
  activeReviewers = new Map();
113
+ /** Structured CLI session reports captured during the current run, keyed by step name. */
114
+ agentReports = new Map();
123
115
  constructor(options = {}) {
124
116
  this.db = options.db ?? new InMemoryWorkflowDb();
125
117
  this.workspaceId = options.workspaceId ?? 'local';
@@ -199,6 +191,12 @@ export class WorkflowRunner {
199
191
  }
200
192
  return resolved;
201
193
  }
194
+ resolveEffectiveCwd(step, agentDef) {
195
+ if (step.cwd) {
196
+ return path.resolve(this.cwd, step.cwd);
197
+ }
198
+ return this.resolveStepWorkdir(step) ?? (agentDef ? this.resolveAgentCwd(agentDef) : this.cwd);
199
+ }
202
200
  static EVIDENCE_IGNORED_DIRS = new Set([
203
201
  '.git',
204
202
  '.agent-relay',
@@ -643,7 +641,7 @@ export class WorkflowRunner {
643
641
  const ts = mins > 0
644
642
  ? `${String(mins).padStart(2, '0')}:${String(secs).padStart(2, '0')}`
645
643
  : `00:${String(secs).padStart(2, '0')}`;
646
- console.log(`[workflow ${ts}] ${msg}`);
644
+ console.log(`${chalk.dim.cyan('[workflow')} ${chalk.dim.cyan(ts)}${chalk.dim.cyan(']')} ${msg}`);
647
645
  }
648
646
  // ── Relaycast auto-provisioning ────────────────────────────────────────
649
647
  /**
@@ -1500,6 +1498,7 @@ export class WorkflowRunner {
1500
1498
  this.runStartTime = Date.now();
1501
1499
  this.runtimeStepAgents.clear();
1502
1500
  this.stepCompletionEvidence.clear();
1501
+ this.agentReports.clear();
1503
1502
  this.log(`Starting workflow "${workflow.name}" (${workflow.steps.length} steps)`);
1504
1503
  // Initialize trajectory recording
1505
1504
  this.trajectory = new WorkflowTrajectory(config.trajectories, runId, this.cwd);
@@ -1713,7 +1712,7 @@ export class WorkflowRunner {
1713
1712
  this.relaycastAgent = undefined;
1714
1713
  // Wire broker stderr to console for observability
1715
1714
  this.unsubBrokerStderr = this.relay.onBrokerStderr((line) => {
1716
- console.log(`[broker] ${line}`);
1715
+ console.log(`${chalk.dim.yellow('[broker]')} ${line}`);
1717
1716
  });
1718
1717
  if (!relaycastDisabled) {
1719
1718
  this.log(`Creating channel: ${channel}...`);
@@ -2157,7 +2156,7 @@ export class WorkflowRunner {
2157
2156
  return value !== undefined ? String(value) : _match;
2158
2157
  });
2159
2158
  // Resolve step workdir (named path reference) for deterministic steps
2160
- const stepCwd = this.resolveStepWorkdir(step) ?? this.cwd;
2159
+ const stepCwd = this.resolveEffectiveCwd(step);
2161
2160
  this.beginStepEvidence(step.name, [stepCwd], state.row.startedAt);
2162
2161
  try {
2163
2162
  // Delegate to executor if present
@@ -2534,6 +2533,9 @@ export class WorkflowRunner {
2534
2533
  let lastExitCode;
2535
2534
  let lastExitSignal;
2536
2535
  let lastCompletionReason;
2536
+ let lastAttemptStartedAt;
2537
+ let lastEffectiveAgentDef;
2538
+ let lastEffectiveCwd;
2537
2539
  // OWNER_DECISION: INCOMPLETE_RETRY is enforced here at the attempt-loop level so every
2538
2540
  // interactive execution path shares the same contract:
2539
2541
  // - retries remaining => throw back into the loop and retry
@@ -2561,6 +2563,7 @@ export class WorkflowRunner {
2561
2563
  await this.delay(retryDelay);
2562
2564
  }
2563
2565
  try {
2566
+ lastAttemptStartedAt = Date.now();
2564
2567
  // Mark step as running
2565
2568
  state.row.status = 'running';
2566
2569
  state.row.error = undefined;
@@ -2613,7 +2616,10 @@ export class WorkflowRunner {
2613
2616
  }
2614
2617
  }
2615
2618
  // Apply step-level workdir override to agent definitions if present
2616
- const applyStepWorkdir = (def) => {
2619
+ const applyStepCwd = (def) => {
2620
+ if (step.cwd) {
2621
+ return { ...def, cwd: step.cwd, workdir: undefined };
2622
+ }
2617
2623
  if (step.workdir) {
2618
2624
  const stepWorkdir = this.resolveStepWorkdir(step);
2619
2625
  if (stepWorkdir) {
@@ -2622,9 +2628,11 @@ export class WorkflowRunner {
2622
2628
  }
2623
2629
  return def;
2624
2630
  };
2625
- const effectiveSpecialist = applyStepWorkdir(specialistDef);
2626
- const effectiveOwner = applyStepWorkdir(ownerDef);
2627
- const effectiveReviewer = reviewDef ? applyStepWorkdir(reviewDef) : undefined;
2631
+ const effectiveSpecialist = applyStepCwd(specialistDef);
2632
+ const effectiveOwner = applyStepCwd(ownerDef);
2633
+ const effectiveReviewer = reviewDef ? applyStepCwd(reviewDef) : undefined;
2634
+ lastEffectiveAgentDef = effectiveSpecialist;
2635
+ lastEffectiveCwd = this.resolveAgentCwd(effectiveSpecialist);
2628
2636
  this.beginStepEvidence(step.name, [
2629
2637
  this.resolveAgentCwd(effectiveSpecialist),
2630
2638
  this.resolveAgentCwd(effectiveOwner),
@@ -2746,6 +2754,7 @@ export class WorkflowRunner {
2746
2754
  this.activeReviewers.set(reviewDef.name, count);
2747
2755
  }
2748
2756
  }
2757
+ await this.captureAgentReport(runId, step.name, lastEffectiveAgentDef, lastEffectiveCwd, lastAttemptStartedAt, Date.now());
2749
2758
  // Mark completed
2750
2759
  state.row.status = 'completed';
2751
2760
  state.row.output = combinedOutput;
@@ -2789,6 +2798,7 @@ export class WorkflowRunner {
2789
2798
  const verificationValue = typeof step.verification === 'object' && 'value' in step.verification
2790
2799
  ? String(step.verification.value)
2791
2800
  : undefined;
2801
+ await this.captureAgentReport(runId, step.name, lastEffectiveAgentDef, lastEffectiveCwd, lastAttemptStartedAt, Date.now());
2792
2802
  await this.trajectory?.stepFailed(step, lastError ?? 'Unknown error', maxRetries + 1, maxRetries, {
2793
2803
  agent: agentName,
2794
2804
  nonInteractive,
@@ -3636,34 +3646,18 @@ export class WorkflowRunner {
3636
3646
  }
3637
3647
  /**
3638
3648
  * Build the CLI command and arguments for a non-interactive agent execution.
3639
- * Each CLI has a specific flag for one-shot prompt mode.
3649
+ * Delegates to the consolidated CLI registry for per-CLI arg formats.
3640
3650
  */
3641
3651
  static buildNonInteractiveCommand(cli, task, extraArgs = []) {
3642
- switch (cli) {
3643
- case 'claude':
3644
- // --dangerously-skip-permissions prevents any tool-use permission prompt
3645
- // from blocking the process when stdio is piped (no TTY available).
3646
- return { cmd: 'claude', args: ['-p', '--dangerously-skip-permissions', task, ...extraArgs] };
3647
- case 'codex':
3648
- return { cmd: 'codex', args: ['exec', task, ...extraArgs] };
3649
- case 'gemini':
3650
- return { cmd: 'gemini', args: ['-p', task, ...extraArgs] };
3651
- case 'opencode':
3652
- return { cmd: 'opencode', args: ['--prompt', task, ...extraArgs] };
3653
- case 'droid':
3654
- return { cmd: 'droid', args: ['exec', task, ...extraArgs] };
3655
- case 'aider':
3656
- return { cmd: 'aider', args: ['--message', task, '--yes-always', '--no-git', ...extraArgs] };
3657
- case 'goose':
3658
- return { cmd: 'goose', args: ['run', '--text', task, '--no-session', ...extraArgs] };
3659
- case 'cursor-agent':
3660
- case 'agent':
3661
- return { cmd: cli, args: ['--force', '-p', task, ...extraArgs] };
3662
- case 'cursor':
3663
- // Should not reach here after resolveAgentDef resolves to agent/cursor-agent,
3664
- // but handle as fallback.
3665
- return { cmd: resolveCursorCli(), args: ['--force', '-p', task, ...extraArgs] };
3652
+ const resolvedCli = cli === 'cursor' ? resolveCursorCli() : cli;
3653
+ const def = getCliDefinition(resolvedCli);
3654
+ if (!def) {
3655
+ throw new Error(`Unknown CLI: ${resolvedCli}`);
3666
3656
  }
3657
+ return {
3658
+ cmd: def.binaries[0],
3659
+ args: def.nonInteractiveArgs(task, extraArgs),
3660
+ };
3667
3661
  }
3668
3662
  /**
3669
3663
  * Apply preset defaults to an agent definition.
@@ -3761,7 +3755,7 @@ export class WorkflowRunner {
3761
3755
  const { stdout: output, exitCode, exitSignal } = await new Promise((resolve, reject) => {
3762
3756
  const child = cpSpawn(cmd, args, {
3763
3757
  stdio: ['ignore', 'pipe', 'pipe'],
3764
- cwd: this.resolveAgentCwd(agentDef),
3758
+ cwd: this.resolveEffectiveCwd(step, agentDef),
3765
3759
  env: this.getRelayEnv() ?? { ...process.env },
3766
3760
  });
3767
3761
  // Update workers.json with PID now that we have it
@@ -4459,6 +4453,26 @@ export class WorkflowRunner {
4459
4453
  });
4460
4454
  this.finalizeStepEvidence(state.row.stepName, 'failed', state.row.completedAt, completionReason);
4461
4455
  }
4456
+ async captureAgentReport(runId, stepName, agentDef, cwd, startedAt, completedAt) {
4457
+ if (!agentDef || !cwd || !startedAt)
4458
+ return;
4459
+ try {
4460
+ const report = await collectCliSession({
4461
+ cli: agentDef.cli,
4462
+ cwd,
4463
+ startedAt,
4464
+ completedAt,
4465
+ });
4466
+ if (!report)
4467
+ return;
4468
+ this.agentReports.set(stepName, report);
4469
+ this.emit({ type: 'step:agent-report', runId, stepName, report });
4470
+ await this.persistAgentReport(runId, stepName, report);
4471
+ }
4472
+ catch (error) {
4473
+ this.log(`[${stepName}] CLI session collection failed: ${error instanceof Error ? error.message : String(error)}`);
4474
+ }
4475
+ }
4462
4476
  async markDownstreamSkipped(failedStepName, allSteps, stepStates, runId) {
4463
4477
  const queue = [failedStepName];
4464
4478
  const visited = new Set();
@@ -4686,23 +4700,28 @@ export class WorkflowRunner {
4686
4700
  const failed = outcomes.filter((o) => o.status === 'failed');
4687
4701
  const skipped = outcomes.filter((o) => o.status === 'skipped');
4688
4702
  console.log('');
4689
- console.log('━'.repeat(70));
4690
- console.log(` Workflow "${workflowName}" — ${failed.length === 0 ? 'COMPLETED' : 'FAILED'}`);
4691
- console.log(` ${completed.length} passed, ${failed.length} failed, ${skipped.length} skipped`);
4692
- console.log('━'.repeat(70));
4693
- for (const outcome of outcomes) {
4694
- const icon = outcome.status === 'completed' ? '✓' : outcome.status === 'failed' ? '✗' : '⊘';
4695
- const retryNote = outcome.attempts > 1 ? ` (${outcome.attempts} attempts)` : '';
4696
- console.log(` ${icon} ${outcome.name} [${outcome.agent}]${retryNote}`);
4697
- if (outcome.error) {
4698
- console.log(` Error: ${outcome.error}`);
4699
- }
4700
- // Extract last meaningful lines from raw PTY output
4701
- if (outcome.output) {
4702
- const excerpt = this.extractOutputExcerpt(outcome.output);
4703
- if (excerpt) {
4704
- for (const line of excerpt.split('\n')) {
4705
- console.log(` ${line}`);
4703
+ console.log(chalk.dim('━'.repeat(70)));
4704
+ console.log(` Workflow "${workflowName}" — ${failed.length === 0 ? chalk.green('COMPLETED') : chalk.red('FAILED')}`);
4705
+ console.log(` ${chalk.green(`${completed.length} passed`)}, ${chalk.red(`${failed.length} failed`)}, ${chalk.dim(`${skipped.length} skipped`)}`);
4706
+ console.log(chalk.dim('━'.repeat(70)));
4707
+ if (this.agentReports.size > 0) {
4708
+ console.log(formatRunSummaryTable(outcomes, this.agentReports));
4709
+ }
4710
+ else {
4711
+ for (const outcome of outcomes) {
4712
+ const icon = outcome.status === 'completed' ? chalk.green('✓') : outcome.status === 'failed' ? chalk.red('✗') : chalk.dim('⊘');
4713
+ const retryNote = outcome.attempts > 1 ? ` (${outcome.attempts} attempts)` : '';
4714
+ console.log(` ${icon} ${outcome.name} [${outcome.agent}]${retryNote}`);
4715
+ if (outcome.error) {
4716
+ console.log(` Error: ${outcome.error}`);
4717
+ }
4718
+ // Extract last meaningful lines from raw PTY output
4719
+ if (outcome.output) {
4720
+ const excerpt = this.extractOutputExcerpt(outcome.output);
4721
+ if (excerpt) {
4722
+ for (const line of excerpt.split('\n')) {
4723
+ console.log(` ${line}`);
4724
+ }
4706
4725
  }
4707
4726
  }
4708
4727
  }
@@ -4711,9 +4730,10 @@ export class WorkflowRunner {
4711
4730
  const outputDir = this.getStepOutputDir(runId);
4712
4731
  const logsDir = path.join(this.cwd, '.agent-relay', 'team', 'worker-logs');
4713
4732
  console.log('');
4733
+ console.log(` Run ID: ${runId}`);
4714
4734
  console.log(` Step output: ${outputDir}`);
4715
4735
  console.log(` Agent logs: ${logsDir}`);
4716
- console.log('━'.repeat(70));
4736
+ console.log(chalk.dim('━'.repeat(70)));
4717
4737
  console.log('');
4718
4738
  }
4719
4739
  /**
@@ -4776,6 +4796,11 @@ export class WorkflowRunner {
4776
4796
  const stepsWithVerification = new Set(steps?.filter((s) => s.verification).map((s) => s.name) ?? []);
4777
4797
  const outcomes = [];
4778
4798
  for (const [name, state] of stepStates) {
4799
+ const startedAtMs = state.row.startedAt ? Date.parse(state.row.startedAt) : Number.NaN;
4800
+ const completedAtMs = state.row.completedAt ? Date.parse(state.row.completedAt) : Number.NaN;
4801
+ const durationMs = Number.isFinite(startedAtMs) && Number.isFinite(completedAtMs)
4802
+ ? Math.max(0, completedAtMs - startedAtMs)
4803
+ : undefined;
4779
4804
  outcomes.push({
4780
4805
  name,
4781
4806
  agent: state.row.agentName ?? 'deterministic',
@@ -4788,6 +4813,7 @@ export class WorkflowRunner {
4788
4813
  output: state.row.output,
4789
4814
  error: state.row.error,
4790
4815
  verificationPassed: state.row.status === 'completed' && stepsWithVerification.has(name),
4816
+ durationMs,
4791
4817
  completionMode: state.row.completionReason
4792
4818
  ? this.buildStepCompletionDecision(name, state.row.completionReason)?.mode
4793
4819
  : undefined,
@@ -4960,6 +4986,16 @@ export class WorkflowRunner {
4960
4986
  const preview = scrubbed.length > maxMsg ? scrubbed.slice(-maxMsg) : scrubbed;
4961
4987
  this.postToChannel(`**[${stepName}] Output:**\n\`\`\`\n${preview}\n\`\`\``, { stepName });
4962
4988
  }
4989
+ async persistAgentReport(runId, stepName, report) {
4990
+ const reportPath = path.join(this.getStepOutputDir(runId), `${stepName}.report.json`);
4991
+ try {
4992
+ mkdirSync(this.getStepOutputDir(runId), { recursive: true });
4993
+ await writeFile(reportPath, JSON.stringify(report, null, 2), 'utf8');
4994
+ }
4995
+ catch {
4996
+ // Non-critical
4997
+ }
4998
+ }
4963
4999
  /** Scan .agent-relay/step-outputs/ for the most recent run directory containing the needed steps. */
4964
5000
  findMostRecentRunWithSteps(stepNames) {
4965
5001
  try {