@ai-dossier/cli 0.11.0 → 0.13.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.
package/README.md CHANGED
@@ -152,6 +152,26 @@ safe-run-dossier https://example.com/dossier.ds.md claude-code
152
152
  safe-run-dossier https://example.com/dossier.ds.md cursor
153
153
  ```
154
154
 
155
+ ## Running Dossiers (`run`)
156
+
157
+ `ai-dossier run <file|url|registry-name>` verifies a dossier and executes it with a spawned agent CLI.
158
+
159
+ ### Agent selection (`--llm`)
160
+
161
+ Accepted values: `claude-code`, `opencode`, `auto` (default). Auto-detection tries `claude` first, then `opencode`, then fails with install hints — machines with only Claude Code installed keep their existing behavior. The default agent is also configurable: `dossier config defaultLlm <claude-code|opencode|auto>`.
162
+
163
+ | Flag | claude-code | opencode |
164
+ |---|---|---|
165
+ | `--model` | `--model` | `--model` |
166
+ | `--budget` | `--max-budget-usd` (headless only) | no equivalent — warned and ignored |
167
+ | `--permission-mode` | `--permission-mode` (headless only) | no equivalent — configure permissions in `opencode.json` |
168
+ | `--allowed-tools` | `--allowedTools` (headless only) | no equivalent — configure tool access in `opencode.json` |
169
+
170
+ Unsupported flag combinations print a clear per-flag warning; they are never silently dropped.
171
+
172
+ - **Headless** (`--headless`): `claude -p --output-format json` or `opencode run --format json`, dossier content piped via stdin. Usage (tokens/cost) is mined from the captured output and recorded in the run log.
173
+ - **Interactive**: `claude <file>` or `opencode run -i -- <prompt>` (a seeded session; the `--` separator keeps the `---` frontmatter from being parsed as flags). Prefer `--headless` for large dossiers — interactive opencode passes the prompt as one argv element (~128KB OS limit).
174
+
155
175
  ---
156
176
 
157
177
  ## Registry Commands
@@ -627,6 +647,44 @@ the selection could be read.
627
647
 
628
648
  ---
629
649
 
650
+ ## Run History (`history`)
651
+
652
+ Every `ai-dossier run` appends one JSON line to `~/.dossier/runs.jsonl` (append-only; disable with `dossier config auditLog false`).
653
+
654
+ ```bash
655
+ ai-dossier history # last 20 runs
656
+ ai-dossier history --limit 50
657
+ ai-dossier history --dossier org/my-dossier
658
+ ai-dossier history --json # raw entries, machine-readable
659
+ ai-dossier history --clear --yes # wipe the log
660
+ ```
661
+
662
+ Columns: TIMESTAMP, DOSSIER, VERSION, SOURCE, VERIFIED, DURATION, TOKENS(in/out), COST — auto-sized to the widest cell. Entries written before v0.12.0 lack the cost/observability fields and render `-`.
663
+
664
+ Headless runs execute `claude -p --output-format json` (claude-code) or `opencode run --format json` with the dossier piped via stdin (opencode); the CLI captures stdout (32MB cap) to extract token/cost usage and prints the agent's final result text once the run completes — output is not streamed live. When the output cannot be parsed as the agent's expected result (a claude JSON result / an opencode JSONL event stream), a stderr warning says so, usage fields are recorded as `null`, and the raw stdout is re-emitted.
665
+
666
+ ### runs.jsonl schema
667
+
668
+ | Field | Meaning |
669
+ |---|---|
670
+ | `timestamp` | ISO-8601 entry write time |
671
+ | `dossier` | Argument as given (file, URL, or registry name) |
672
+ | `resolved_version` | Resolved version (`unknown` for local files) |
673
+ | `source` | `cache` \| `registry` \| `local` \| `url` |
674
+ | `registry`, `resolution_source` | Registry that served content; how the version was resolved (`pinned`/`registry`/`cache`/`stale-cache`) — registry sources only |
675
+ | `verification` | `passed` \| `failed` \| `skipped` \| `nested-skip` |
676
+ | `llm`, `user`, `cwd`, `nested` | For runs that spawned an agent, the resolved agent CLI (`claude-code`/`opencode`, never the raw `auto` — v0.13.0+); otherwise the `--llm` option in effect. Plus who/where ran it; whether inside an agent host |
677
+ | `duration_ms` | Wall-clock ms, action start → entry write (v0.12.0+) |
678
+ | `spawned_command` | Exact agent command spawned (binary + args); prompt excluded — headless prompts travel over stdin, and opencode interactive runs log a redacted form (v0.12.0+; redaction v0.13.0+) |
679
+ | `model` | Model reported by the agent CLI (comma-joined when several ran), else the `--model` alias; null when unknown (v0.12.0+) |
680
+ | `exit_code` | Spawned agent's exit code, or the CLI action's for early exits; null when killed by a signal (v0.12.0+) |
681
+ | `spawn_error` | Why there is no exit code: spawn error (e.g. ENOENT) or signal. Null when the process exited normally (v0.12.0+) |
682
+ | `input_tokens`, `output_tokens`, `total_cost_usd` | Usage reported by the agent (claude JSON result / opencode JSONL event stream, headless only); null when not reported — never fabricated (v0.12.0+) |
683
+
684
+ Pre-v0.12.0 entries simply lack the v0.12.0+ fields; consumers must treat them as optional/nullable.
685
+
686
+ ---
687
+
630
688
  ## Cache and Version Resolution
631
689
 
632
690
  The CLI maintains a local cache at `~/.dossier/cache/`:
@@ -755,6 +813,7 @@ dossier config defaultLlm
755
813
 
756
814
  # Set a setting
757
815
  dossier config defaultLlm claude-code
816
+ dossier config defaultLlm opencode # accepted values: claude-code, opencode, auto
758
817
 
759
818
  # Reset to defaults (preserves registry settings)
760
819
  dossier config --reset
@@ -1 +1 @@
1
- {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2F7D"}
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF7D"}
@@ -4,7 +4,21 @@
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.registerHistoryCommand = registerHistoryCommand;
7
+ const duration_1 = require("../duration");
7
8
  const run_log_1 = require("../run-log");
9
+ const table_1 = require("../table");
10
+ /** Cost display precision: agent-run costs are small, so keep four decimals. */
11
+ const COST_DECIMALS = 4;
12
+ const isCount = (value) => typeof value === 'number' && Number.isFinite(value);
13
+ /** Token cell as "in/out"; '-' when neither side was reported (old entries). */
14
+ function formatTokens(input, output) {
15
+ if (!isCount(input) && !isCount(output))
16
+ return '-';
17
+ return `${isCount(input) ? input : '-'}/${isCount(output) ? output : '-'}`;
18
+ }
19
+ function formatCost(usd) {
20
+ return isCount(usd) ? `$${usd.toFixed(COST_DECIMALS)}` : '-';
21
+ }
8
22
  function registerHistoryCommand(program) {
9
23
  program
10
24
  .command('history')
@@ -36,42 +50,37 @@ function registerHistoryCommand(program) {
36
50
  console.log(JSON.stringify(entries, null, 2));
37
51
  process.exit(0);
38
52
  }
39
- // Table output
40
- const colTimestamp = 20;
41
- const colDossier = 35;
42
- const colVersion = 8;
43
- const colSource = 10;
44
- const colVerified = 12;
45
- const header = [
46
- 'TIMESTAMP'.padEnd(colTimestamp),
47
- 'DOSSIER'.padEnd(colDossier),
48
- 'VERSION'.padEnd(colVersion),
49
- 'SOURCE'.padEnd(colSource),
50
- 'VERIFIED'.padEnd(colVerified),
51
- ].join(' ');
52
- console.log(header);
53
- console.log('─'.repeat(header.length));
54
- for (const entry of entries) {
55
- const ts = entry.timestamp
53
+ // Table output — columns auto-size to the widest cell, so long token
54
+ // counts widen the column instead of being silently truncated.
55
+ const headers = [
56
+ 'TIMESTAMP',
57
+ 'DOSSIER',
58
+ 'VERSION',
59
+ 'SOURCE',
60
+ 'VERIFIED',
61
+ 'DURATION',
62
+ 'TOKENS(in/out)',
63
+ 'COST',
64
+ ];
65
+ const rows = entries.map((entry) => [
66
+ entry.timestamp
56
67
  .replace('T', ' ')
57
68
  .replace(/\.\d+Z$/, '')
58
- .slice(0, 19);
59
- const dossier = entry.dossier.length > colDossier - 1
60
- ? `${entry.dossier.slice(0, colDossier - 4)}...`
61
- : entry.dossier;
62
- const ver = entry.resolved_version.slice(0, colVersion);
63
- const src = entry.source.slice(0, colSource);
64
- const verified = entry.verification;
65
- const line = [
66
- ts.padEnd(colTimestamp),
67
- dossier.padEnd(colDossier),
68
- ver.padEnd(colVersion),
69
- src.padEnd(colSource),
70
- verified.padEnd(colVerified),
71
- ].join(' ');
72
- console.log(line);
69
+ .slice(0, 19),
70
+ entry.dossier,
71
+ entry.resolved_version,
72
+ entry.source,
73
+ entry.verification,
74
+ (0, duration_1.formatDurationMs)(entry.duration_ms),
75
+ formatTokens(entry.input_tokens, entry.output_tokens),
76
+ formatCost(entry.total_cost_usd),
77
+ ]);
78
+ console.log((0, table_1.renderTable)(headers, rows, { separator: true }));
79
+ // Deprecated pre-#401 field: surface it after the table rather than
80
+ // interleaving, keyed by the row's timestamp.
81
+ for (const entry of entries) {
73
82
  if (entry.update_available) {
74
- console.log(` ↑ update available: ${entry.update_available}`);
83
+ console.log(` ↑ ${entry.timestamp}: update available: ${entry.update_available}`);
75
84
  }
76
85
  }
77
86
  process.exit(0);
@@ -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":";AAAA;;GAEG;;AAuBH,wDAiFC;AArGD,0CAA+C;AAC/C,wCAAqD;AACrD,oCAAuC;AAEvC,gFAAgF;AAChF,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,OAAO,GAAG,CAAC,KAAgC,EAAmB,EAAE,CACpE,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAEtD,gFAAgF;AAChF,SAAS,YAAY,CAAC,KAAgC,EAAE,MAAiC;IACvF,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,GAAG,CAAC;IACpD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC7E,CAAC;AAED,SAAS,UAAU,CAAC,GAA8B;IAChD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC/D,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,aAAa,EAAE,2BAA2B,EAAE,IAAI,CAAC;SACxD,MAAM,CAAC,kBAAkB,EAAE,wBAAwB,CAAC;SACpD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;SAClC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;SACtC,MAAM,CAAC,OAAO,EAAE,+BAA+B,CAAC;SAChD,MAAM,CACL,KAAK,EAAE,OAMN,EAAE,EAAE;QACH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACjB,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;gBAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,IAAA,qBAAW,GAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,qEAAqE;QACrE,+DAA+D;QAC/D,MAAM,OAAO,GAAG;YACd,WAAW;YACX,SAAS;YACT,SAAS;YACT,QAAQ;YACR,UAAU;YACV,UAAU;YACV,gBAAgB;YAChB,MAAM;SACP,CAAC;QACF,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,KAAK,CAAC,SAAS;iBACZ,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;iBACjB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iBACtB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACf,KAAK,CAAC,OAAO;YACb,KAAK,CAAC,gBAAgB;YACtB,KAAK,CAAC,MAAM;YACZ,KAAK,CAAC,YAAY;YAClB,IAAA,2BAAgB,EAAC,KAAK,CAAC,WAAW,CAAC;YACnC,YAAY,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC;YACrD,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC;SACjC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAW,EAAC,OAAO,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE7D,oEAAoE;QACpE,8CAA8C;QAC9C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CACF,CAAC;AACN,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiazD"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCzC,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwfzD"}
@@ -48,17 +48,23 @@ const helpers_1 = require("../helpers");
48
48
  const multi_registry_1 = require("../multi-registry");
49
49
  const registry_client_1 = require("../registry-client");
50
50
  const run_log_1 = require("../run-log");
51
+ /**
52
+ * spawnSync's default 1MB maxBuffer kills a headless child whose JSON result
53
+ * exceeds it (claude emits the whole result as one blob), so give captured
54
+ * headless stdout a generous, still-bounded cap.
55
+ */
56
+ const HEADLESS_MAX_BUFFER_BYTES = 32 * 1024 * 1024;
51
57
  function registerRunCommand(program) {
52
58
  program
53
59
  .command('run')
54
60
  .description('Verify, audit, and execute dossier. Registry names are resolved across all configured registries.')
55
61
  .argument('<file>', 'Dossier file, URL, or registry name to run')
56
- .option('--llm <name>', 'LLM to use (claude-code, auto)')
62
+ .option('--llm <name>', 'LLM to use (claude-code, opencode, auto)')
57
63
  .option('--headless', 'Run in headless mode (non-interactive, for CI/CD)')
58
- .option('--model <name>', 'Model alias/name (forwarded to claude --model)')
59
- .option('--budget <usd>', 'Max USD budget (headless only; forwarded to claude --max-budget-usd)', parseFloat)
60
- .option('--permission-mode <mode>', 'Permission mode (headless only; forwarded to claude --permission-mode)')
61
- .option('--allowed-tools <list>', 'Comma- or space-separated allowed tools (headless only; forwarded to claude --allowedTools)')
64
+ .option('--model <name>', 'Model alias/name (forwarded to claude --model / opencode --model)')
65
+ .option('--budget <usd>', 'Max USD budget (headless only; claude only — opencode has no equivalent)', parseFloat)
66
+ .option('--permission-mode <mode>', 'Permission mode (headless only; claude only — opencode permissions live in opencode.json)')
67
+ .option('--allowed-tools <list>', 'Comma- or space-separated allowed tools (headless only; claude only — opencode tool access lives in opencode.json)')
62
68
  .option('--dry-run', 'Show plan without executing')
63
69
  .option('--force', 'Skip risk warnings')
64
70
  .option('--no-prompt', "Don't ask for confirmation")
@@ -76,6 +82,16 @@ function registerRunCommand(program) {
76
82
  const log = isNested
77
83
  ? (...args) => console.error(...args)
78
84
  : (...args) => console.log(...args);
85
+ // Wall-clock start for the run-log duration field (#458): from action
86
+ // entry (fetch/resolve/verify included) to the entry write.
87
+ const startTime = Date.now();
88
+ const llmOption = options.llm || config.getConfig('defaultLlm') || 'auto';
89
+ const passthrough = {
90
+ model: options.model,
91
+ budget: options.budget,
92
+ permissionMode: options.permissionMode,
93
+ allowedTools: options.allowedTools,
94
+ };
79
95
  const runContext = {
80
96
  dossierArg: file,
81
97
  resolvedVersion: 'unknown',
@@ -210,6 +226,60 @@ function registerRunCommand(program) {
210
226
  const secureTmpFile = node_path_1.default.join(secureTmpDir, node_path_1.default.basename(resolvedFile));
211
227
  node_fs_1.default.writeFileSync(secureTmpFile, dossierContent, { mode: 0o600 });
212
228
  resolvedFile = secureTmpFile;
229
+ const cleanupSecureTmp = () => {
230
+ try {
231
+ node_fs_1.default.unlinkSync(secureTmpFile);
232
+ }
233
+ catch (err) {
234
+ if (err.code !== 'ENOENT') {
235
+ process.stderr.write(`Warning: failed to clean up secure temp file: ${String(err.message || err)}\n`);
236
+ }
237
+ }
238
+ try {
239
+ node_fs_1.default.rmdirSync(secureTmpDir);
240
+ }
241
+ catch (err) {
242
+ if (err.code !== 'ENOENT') {
243
+ process.stderr.write(`Warning: failed to clean up secure temp dir: ${String(err.message || err)}\n`);
244
+ }
245
+ }
246
+ };
247
+ // Append the run-log entry at each exit point with the run's outcome
248
+ // (duration, spawned command, exit code, usage) — #458. Null-defaults
249
+ // every unavailable field; overrides supplied by the caller. The
250
+ // verification/nested defaults assume post-verification exits — early
251
+ // exits must override them.
252
+ const finishRunLog = (extra) => {
253
+ (0, run_log_1.appendRunLog)({
254
+ timestamp: new Date().toISOString(),
255
+ dossier: file,
256
+ resolved_version: runContext.resolvedVersion,
257
+ source: runContext.source,
258
+ registry: runContext.registry,
259
+ resolution_source: runContext.resolutionSource,
260
+ verification: options.skipAllChecks ? 'skipped' : 'passed',
261
+ llm: llmOption,
262
+ user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
263
+ cwd: process.cwd(),
264
+ nested: false,
265
+ duration_ms: Date.now() - startTime,
266
+ spawned_command: null,
267
+ model: options.model ?? null,
268
+ exit_code: null,
269
+ input_tokens: null,
270
+ output_tokens: null,
271
+ total_cost_usd: null,
272
+ ...extra,
273
+ });
274
+ };
275
+ // Map parsed agent usage onto run-log fields; null when the agent did
276
+ // not report usage (interactive mode, non-JSON output).
277
+ const usageLogFields = (usage) => ({
278
+ model: usage?.model ?? options.model ?? null,
279
+ input_tokens: usage?.input_tokens ?? null,
280
+ output_tokens: usage?.output_tokens ?? null,
281
+ total_cost_usd: usage?.total_cost_usd ?? null,
282
+ });
213
283
  // Show metadata summary
214
284
  try {
215
285
  let fm = null;
@@ -242,59 +312,18 @@ function registerRunCommand(program) {
242
312
  // Nested session detection
243
313
  if (nestedHost !== null) {
244
314
  console.error(`ℹ️ Running inside ${nestedHost} — outputting dossier content\n`);
245
- const llmOption = options.llm || config.getConfig('defaultLlm') || 'auto';
246
- (0, run_log_1.appendRunLog)({
247
- timestamp: new Date().toISOString(),
248
- dossier: file,
249
- resolved_version: runContext.resolvedVersion,
250
- source: runContext.source,
251
- registry: runContext.registry,
252
- resolution_source: runContext.resolutionSource,
253
- verification: 'nested-skip',
254
- llm: llmOption,
255
- user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
256
- cwd: process.cwd(),
257
- nested: true,
258
- });
315
+ finishRunLog({ verification: 'nested-skip', nested: true, exit_code: 0 });
259
316
  process.stdout.write(dossierContent);
260
- node_fs_1.default.unlinkSync(secureTmpFile);
261
- node_fs_1.default.rmdirSync(secureTmpDir);
317
+ cleanupSecureTmp();
262
318
  process.exit(0);
263
319
  }
264
320
  const result = await (0, helpers_1.runVerification)(resolvedFile, options);
265
- const llmOption = options.llm || config.getConfig('defaultLlm') || 'auto';
266
321
  if (!result.passed) {
267
322
  console.log('❌ Verification failed - cannot execute\n');
268
- (0, run_log_1.appendRunLog)({
269
- timestamp: new Date().toISOString(),
270
- dossier: file,
271
- resolved_version: runContext.resolvedVersion,
272
- source: runContext.source,
273
- registry: runContext.registry,
274
- resolution_source: runContext.resolutionSource,
275
- verification: 'failed',
276
- llm: llmOption,
277
- user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
278
- cwd: process.cwd(),
279
- nested: false,
280
- });
281
- node_fs_1.default.unlinkSync(secureTmpFile);
282
- node_fs_1.default.rmdirSync(secureTmpDir);
323
+ finishRunLog({ verification: 'failed', exit_code: 1 });
324
+ cleanupSecureTmp();
283
325
  process.exit(1);
284
326
  }
285
- (0, run_log_1.appendRunLog)({
286
- timestamp: new Date().toISOString(),
287
- dossier: file,
288
- resolved_version: runContext.resolvedVersion,
289
- source: runContext.source,
290
- registry: runContext.registry,
291
- resolution_source: runContext.resolutionSource,
292
- verification: options.skipAllChecks ? 'skipped' : 'passed',
293
- llm: llmOption,
294
- user: `${process.env.USER || 'unknown'}@${node_os_1.default.hostname()}`,
295
- cwd: process.cwd(),
296
- nested: false,
297
- });
298
327
  console.log('📝 Audit Log:');
299
328
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━');
300
329
  console.log(` Timestamp: ${new Date().toISOString()}`);
@@ -306,7 +335,7 @@ function registerRunCommand(program) {
306
335
  console.log('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n');
307
336
  if (!options.headless &&
308
337
  (options.budget != null || options.permissionMode || options.allowedTools)) {
309
- process.stderr.write('Warning: --budget, --permission-mode, and --allowed-tools require --headless (claude -p) and will be ignored in interactive mode.\n');
338
+ process.stderr.write('Warning: --budget, --permission-mode, and --allowed-tools are forwarded to claude only, and only in headless mode; opencode ignores them entirely (configure permissions/tools in opencode.json).\n');
310
339
  }
311
340
  if (options.dryRun) {
312
341
  console.log('🧪 DRY RUN MODE - No execution\n');
@@ -314,74 +343,133 @@ function registerRunCommand(program) {
314
343
  console.log(` File: ${resolvedFile}`);
315
344
  console.log(` LLM: ${llmOption}`);
316
345
  const llmToUse = (0, helpers_1.detectLlm)(llmOption, true);
317
- const passthrough = {
318
- model: options.model,
319
- budget: options.budget,
320
- permissionMode: options.permissionMode,
321
- allowedTools: options.allowedTools,
322
- };
323
346
  const descriptor = llmToUse
324
347
  ? (0, helpers_1.buildLlmCommand)(llmToUse, resolvedFile, options.headless, passthrough)
325
348
  : null;
326
349
  console.log(` Command: ${descriptor ? descriptor.description : 'No LLM detected - would show error'}\n`);
327
350
  console.log('✅ All verifications passed - ready to execute');
328
- node_fs_1.default.unlinkSync(secureTmpFile);
329
- node_fs_1.default.rmdirSync(secureTmpDir);
351
+ finishRunLog({ exit_code: 0 });
352
+ cleanupSecureTmp();
330
353
  process.exit(0);
331
354
  }
332
- const cleanupSecureTmp = () => {
333
- try {
334
- node_fs_1.default.unlinkSync(secureTmpFile);
335
- }
336
- catch (err) {
337
- if (err.code !== 'ENOENT') {
338
- process.stderr.write(`Warning: failed to clean up secure temp file: ${String(err.message || err)}\n`);
339
- }
340
- }
341
- try {
342
- node_fs_1.default.rmdirSync(secureTmpDir);
343
- }
344
- catch (err) {
345
- if (err.code !== 'ENOENT') {
346
- process.stderr.write(`Warning: failed to clean up secure temp dir: ${String(err.message || err)}\n`);
347
- }
348
- }
349
- };
350
355
  console.log('🤖 Executing Dossier...\n');
351
356
  const llmToUse = (0, helpers_1.detectLlm)(llmOption);
352
357
  if (!llmToUse) {
358
+ finishRunLog({ exit_code: 2 });
353
359
  cleanupSecureTmp();
354
360
  process.exit(2);
355
361
  }
356
- const descriptor = (0, helpers_1.buildLlmCommand)(llmToUse, resolvedFile, options.headless, {
357
- model: options.model,
358
- budget: options.budget,
359
- permissionMode: options.permissionMode,
360
- allowedTools: options.allowedTools,
361
- });
362
+ const descriptor = (0, helpers_1.buildLlmCommand)(llmToUse, resolvedFile, options.headless, passthrough);
362
363
  if (!descriptor) {
363
364
  console.log(`❌ Unknown LLM: ${llmToUse}\n`);
364
- console.log('Supported: claude-code, auto\n');
365
+ console.log('Supported: claude-code, opencode, auto\n');
366
+ finishRunLog({ exit_code: 2 });
365
367
  cleanupSecureTmp();
366
368
  process.exit(2);
367
369
  }
370
+ // The exact spawned command (binary + args), log-safe: descriptors
371
+ // whose args carry prompt content (opencode interactive) provide a
372
+ // redacted commandForLog — prompt content never reaches runs.jsonl.
373
+ const spawnedCommand = descriptor.commandForLog ?? [descriptor.cmd, ...descriptor.args].join(' ');
368
374
  try {
369
375
  const mode = options.headless ? 'headless' : 'interactive';
376
+ const isOpencode = descriptor.agent === 'opencode';
370
377
  console.log(` Mode: ${mode}`);
371
378
  console.log(` Executing: ${descriptor.description}\n`);
372
- const result = (0, node_child_process_1.spawnSync)(descriptor.cmd, descriptor.args, {
373
- stdio: descriptor.stdin ? ['pipe', 'inherit', 'inherit'] : 'inherit',
374
- input: descriptor.stdin,
375
- });
379
+ // Headless: capture stdout so the agent's usage report (claude
380
+ // `--output-format json` blob / opencode `--format json` JSONL
381
+ // events) can be mined; stderr still streams. maxBuffer is explicit
382
+ // because spawnSync's 1MB default kills children whose JSON result
383
+ // exceeds it. Interactive: the TUI owns the terminal — nothing to
384
+ // capture.
385
+ const result = options.headless
386
+ ? (0, node_child_process_1.spawnSync)(descriptor.cmd, descriptor.args, {
387
+ stdio: ['pipe', 'pipe', 'inherit'],
388
+ input: descriptor.stdin,
389
+ maxBuffer: HEADLESS_MAX_BUFFER_BYTES,
390
+ })
391
+ : (0, node_child_process_1.spawnSync)(descriptor.cmd, descriptor.args, {
392
+ stdio: descriptor.stdin ? ['pipe', 'inherit', 'inherit'] : 'inherit',
393
+ input: descriptor.stdin,
394
+ });
395
+ // Normalize captured stdout to a string (spawnSync types it as
396
+ // string | Buffer depending on the stdio configuration).
397
+ const stdoutText = result.stdout == null
398
+ ? undefined
399
+ : typeof result.stdout === 'string'
400
+ ? result.stdout
401
+ : result.stdout.toString('utf8');
402
+ // Usage parsing is agent-specific: claude emits one JSON blob,
403
+ // opencode a JSONL event stream (#459).
404
+ const usage = options.headless
405
+ ? isOpencode
406
+ ? (0, helpers_1.parseOpenCodeUsage)(stdoutText)
407
+ : (0, helpers_1.parseAgentUsage)(stdoutText)
408
+ : null;
409
+ const expectedFormat = isOpencode
410
+ ? 'an opencode JSONL event stream'
411
+ : 'a claude JSON result';
412
+ if (options.headless && stdoutText && usage === null) {
413
+ process.stderr.write(`Warning: agent output was not ${expectedFormat} — usage/cost not recorded; raw output re-emitted\n`);
414
+ }
415
+ else if (options.headless && stdoutText && usage?.result_text === null) {
416
+ process.stderr.write(`Warning: no result text found in ${expectedFormat} — raw output re-emitted\n`);
417
+ }
418
+ if (options.headless) {
419
+ // Headless agents buffer their whole result (claude emits one JSON
420
+ // blob; opencode one JSONL event stream); re-emit the agent's text
421
+ // so headless consumers still see the output on stdout. Falls back
422
+ // to raw stdout when unparseable.
423
+ const text = usage?.result_text ?? stdoutText ?? '';
424
+ if (text) {
425
+ process.stdout.write(text.endsWith('\n') ? text : `${text}\n`);
426
+ }
427
+ }
376
428
  if (result.status !== 0) {
377
- throw { status: result.status };
429
+ const exitError = {
430
+ __agentExit: true,
431
+ status: result.status,
432
+ signal: result.signal ?? null,
433
+ spawn_error: result.error?.message ?? null,
434
+ usage,
435
+ };
436
+ throw exitError;
378
437
  }
379
438
  console.log('\n✅ Execution completed');
439
+ finishRunLog({
440
+ llm: llmToUse,
441
+ spawned_command: spawnedCommand,
442
+ exit_code: 0,
443
+ ...usageLogFields(usage),
444
+ });
380
445
  }
381
446
  catch (error) {
382
447
  console.log('\n❌ Execution failed');
448
+ // Narrow on the discriminant — never duck-type on `status`, which
449
+ // ordinary library errors can also carry.
450
+ const exitError = error !== null && typeof error === 'object' && '__agentExit' in error
451
+ ? error
452
+ : null;
453
+ if (exitError) {
454
+ const cause = exitError.spawn_error ?? exitError.signal;
455
+ if (cause) {
456
+ process.stderr.write(` Cause: ${cause}\n`);
457
+ }
458
+ }
459
+ else if (error instanceof Error && error.message) {
460
+ process.stderr.write(` Cause: ${error.message}\n`);
461
+ }
462
+ const status = exitError?.status ?? null;
463
+ const usage = exitError?.usage ?? null;
464
+ finishRunLog({
465
+ llm: llmToUse,
466
+ spawned_command: spawnedCommand,
467
+ exit_code: status,
468
+ spawn_error: exitError?.spawn_error ?? exitError?.signal ?? null,
469
+ ...usageLogFields(usage),
470
+ });
383
471
  cleanupSecureTmp();
384
- process.exit(error.status || 2);
472
+ process.exit(status || 2);
385
473
  }
386
474
  cleanupSecureTmp();
387
475
  });
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,12 @@ export declare const MILLIS_PER_SECOND = 1000;
19
19
  export declare function formatDuration(seconds: number): string;
20
20
  /** A duration for a table cell: human form plus the raw seconds it was derived from. */
21
21
  export declare function formatDurationCell(seconds: number | null): string;
22
+ /**
23
+ * A millisecond span for a table cell: raw `ms` below one second, human form
24
+ * above (`2m 14s`), `-` when absent or not a finite number (runs.jsonl entries
25
+ * are read raw — a wrong-typed field must not crash the table).
26
+ */
27
+ export declare function formatDurationMs(ms: number | null | undefined): string;
22
28
  /**
23
29
  * An age as a single rounded unit: `45s`, `3m`, `2h`, `9d`.
24
30
  *
@@ -1 +1 @@
1
- {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAQ5D"}
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../src/duration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,iBAAiB,OAAO,CAAC;AAEtC;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAatD;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAItE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAQ5D"}