@post-print/agent-test 0.2.6 → 0.2.7

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,6 +1,8 @@
1
1
  import { mkdtemp, writeFile } from "node:fs/promises";
2
2
  import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
+ import { compareSuiteReports, } from "./compare.js";
5
+ import { formatUsageStats, summarizeReportResults, summarizeReports } from "./suite-summary.js";
4
6
  function escapeHtml(value) {
5
7
  return value
6
8
  .replaceAll("&", "&")
@@ -36,6 +38,22 @@ const MATCHER_LABELS = {
36
38
  },
37
39
  mustNot: { label: "Forbidden behavior", hint: "The agent did something it was told not to do." },
38
40
  mustRun: { label: "Missing command", hint: "An expected command never ran." },
41
+ mustCallTool: {
42
+ label: "Missing tool call",
43
+ hint: "An expected tool was never invoked.",
44
+ },
45
+ mustNotCallTool: {
46
+ label: "Forbidden tool call",
47
+ hint: "A tool the scenario forbids was invoked.",
48
+ },
49
+ toHaveCalledTool: {
50
+ label: "Missing tool call",
51
+ hint: "An expected tool was never invoked.",
52
+ },
53
+ toHaveNotCalledTool: {
54
+ label: "Forbidden tool call",
55
+ hint: "A tool the scenario forbids was invoked.",
56
+ },
39
57
  mustInvokeSkill: {
40
58
  label: "Missing skill",
41
59
  hint: "The agent didn't read a skill it was expected to use.",
@@ -44,6 +62,22 @@ const MATCHER_LABELS = {
44
62
  label: "Unexpected skill",
45
63
  hint: "The agent read a skill it should have avoided.",
46
64
  },
65
+ mustReadPath: {
66
+ label: "Missing read path",
67
+ hint: "Expected a Read tool call whose args mention this path fragment (registry-first / grounding).",
68
+ },
69
+ mustNotReadPath: {
70
+ label: "Forbidden read path",
71
+ hint: "A Read tool call mentioned a path the scenario forbids (hallucinated / invented path proxy).",
72
+ },
73
+ toHaveReadPath: {
74
+ label: "Missing read path",
75
+ hint: "Expected a Read tool call whose args mention this path fragment (registry-first / grounding).",
76
+ },
77
+ toHaveNotReadPath: {
78
+ label: "Forbidden read path",
79
+ hint: "A Read tool call mentioned a path the scenario forbids (hallucinated / invented path proxy).",
80
+ },
47
81
  routingBlock: { label: "Routing", hint: "The routing announcement didn't match expectations." },
48
82
  workingTreeLeak: {
49
83
  label: "Working tree leak",
@@ -186,35 +220,259 @@ function renderFailures(result) {
186
220
  const items = result.failures
187
221
  .map((failure) => {
188
222
  const { label, hint } = humanizeMatcher(failure.matcher);
223
+ const evidence = failure.evidence
224
+ ? `<pre class="failure-evidence">${escapeHtml(failure.evidence)}</pre>`
225
+ : "";
189
226
  return `
190
227
  <li>
191
228
  <p class="failure-label">${escapeHtml(label)}</p>
192
229
  ${hint ? `<p class="failure-hint">${escapeHtml(hint)}</p>` : ""}
193
230
  <p class="failure-message">${escapeHtml(failure.message)}</p>
231
+ ${evidence}
194
232
  </li>`;
195
233
  })
196
234
  .join("\n");
197
235
  return `<ul class="failures">${items}</ul>`;
198
236
  }
237
+ function usageOf(result) {
238
+ return result.usage ?? result.trace?.usage;
239
+ }
240
+ function formatTokensBadge(result) {
241
+ const usage = usageOf(result);
242
+ if (!usage) {
243
+ return undefined;
244
+ }
245
+ if (typeof usage.totalTokens === "number") {
246
+ return `${usage.totalTokens} tok`;
247
+ }
248
+ const parts = [];
249
+ if (typeof usage.inputTokens === "number") {
250
+ parts.push(`in ${usage.inputTokens}`);
251
+ }
252
+ if (typeof usage.outputTokens === "number") {
253
+ parts.push(`out ${usage.outputTokens}`);
254
+ }
255
+ return parts.length > 0 ? parts.join(" · ") : undefined;
256
+ }
257
+ function renderUsageDetail(usage) {
258
+ if (!usage) {
259
+ return "";
260
+ }
261
+ const rows = [
262
+ ["Total tokens", usage.totalTokens],
263
+ ["Input", usage.inputTokens],
264
+ ["Output", usage.outputTokens],
265
+ ["Cache read", usage.cacheReadTokens],
266
+ ["Cache write", usage.cacheWriteTokens],
267
+ ["Reasoning", usage.reasoningTokens],
268
+ ];
269
+ const present = rows.filter(([, value]) => typeof value === "number");
270
+ if (present.length === 0) {
271
+ return "";
272
+ }
273
+ const items = present
274
+ .map(([label, value]) => `<div class="meta-item"><span class="meta-key">${escapeHtml(label)}</span><span class="meta-val">${value}</span></div>`)
275
+ .join("");
276
+ return `<section class="scenario-meta"><h3>Token usage</h3><div class="meta-grid">${items}</div></section>`;
277
+ }
278
+ function renderTraceMeta(result) {
279
+ const trace = result.trace;
280
+ if (!trace) {
281
+ return "";
282
+ }
283
+ const skills = trace.skillsInvoked?.length ? trace.skillsInvoked.join(", ") : "(none)";
284
+ const items = [
285
+ ["Messages", String(trace.messages.length)],
286
+ ["Tool calls", String(trace.toolCalls.length)],
287
+ ["Skills invoked", skills],
288
+ ["Routing tier", trace.routing?.tier ?? "(none)"],
289
+ ];
290
+ if (result.attempts !== undefined && result.attempts > 1) {
291
+ items.push(["Attempts", String(result.attempts)]);
292
+ }
293
+ const html = items
294
+ .map(([label, value]) => `<div class="meta-item"><span class="meta-key">${escapeHtml(label)}</span><span class="meta-val">${escapeHtml(value)}</span></div>`)
295
+ .join("");
296
+ return `<section class="scenario-meta"><h3>Trace stats</h3><div class="meta-grid">${html}</div></section>`;
297
+ }
298
+ function renderUsageStatsBlock(usage, title = "Token usage") {
299
+ if (!usage) {
300
+ return "";
301
+ }
302
+ const rows = [
303
+ ["Scenarios with usage", String(usage.scenariosWithUsage)],
304
+ ];
305
+ if (usage.sumTotalTokens !== undefined) {
306
+ rows.push(["Sum totalTokens", String(usage.sumTotalTokens)]);
307
+ }
308
+ if (usage.p50TotalTokens !== undefined) {
309
+ rows.push(["p50 totalTokens", String(usage.p50TotalTokens)]);
310
+ }
311
+ if (usage.p95TotalTokens !== undefined) {
312
+ rows.push(["p95 totalTokens", String(usage.p95TotalTokens)]);
313
+ }
314
+ if (usage.sumInputTokens !== undefined) {
315
+ rows.push(["Sum input", String(usage.sumInputTokens)]);
316
+ }
317
+ if (usage.sumOutputTokens !== undefined) {
318
+ rows.push(["Sum output", String(usage.sumOutputTokens)]);
319
+ }
320
+ const items = rows
321
+ .map(([label, value]) => `<div class="meta-item"><span class="meta-key">${escapeHtml(label)}</span><span class="meta-val">${escapeHtml(value)}</span></div>`)
322
+ .join("");
323
+ return `<section class="usage-summary"><h3>${escapeHtml(title)}</h3><div class="meta-grid">${items}</div><p class="usage-compact muted">${escapeHtml(formatUsageStats(usage))}</p></section>`;
324
+ }
325
+ function formatSigned(value) {
326
+ if (value === undefined) {
327
+ return "n/a";
328
+ }
329
+ if (value > 0) {
330
+ return `+${value}`;
331
+ }
332
+ return String(value);
333
+ }
334
+ function passCell(passed, skipped) {
335
+ if (skipped) {
336
+ return `<span class="badge status-skipped">skip</span>`;
337
+ }
338
+ return passed
339
+ ? `<span class="badge status-passed">pass</span>`
340
+ : `<span class="badge status-failed">fail</span>`;
341
+ }
342
+ function deltaClass(value) {
343
+ if (value === undefined || value === 0) {
344
+ return "delta-flat";
345
+ }
346
+ return value > 0 ? "delta-up" : "delta-down";
347
+ }
348
+ /** Render an A/B compare table (fragment — no document chrome). */
349
+ export function renderCompareHtmlSection(report) {
350
+ const rows = report.paired
351
+ .map((row) => {
352
+ const regression = row.a.passed && !row.b.passed;
353
+ const improvement = !row.a.passed && row.b.passed;
354
+ const rowClass = regression
355
+ ? "compare-regress"
356
+ : improvement
357
+ ? "compare-improve"
358
+ : row.deltas.passedChanged
359
+ ? "compare-changed"
360
+ : "";
361
+ return `
362
+ <tr class="${rowClass}">
363
+ <td class="compare-name">${escapeHtml(row.scenario)}</td>
364
+ <td>${passCell(row.a.passed, row.a.skipped)}</td>
365
+ <td>${passCell(row.b.passed, row.b.skipped)}</td>
366
+ <td class="${deltaClass(row.deltas.durationMs)}">${escapeHtml(formatSigned(row.deltas.durationMs))}</td>
367
+ <td class="${deltaClass(row.deltas.toolCallCount)}">${escapeHtml(formatSigned(row.deltas.toolCallCount))}</td>
368
+ <td class="${deltaClass(row.deltas.skillCount)}">${escapeHtml(formatSigned(row.deltas.skillCount))}</td>
369
+ <td class="${deltaClass(row.deltas.registryHopCount)}">${escapeHtml(formatSigned(row.deltas.registryHopCount))}</td>
370
+ <td class="${deltaClass(row.deltas.totalTokens)}">${escapeHtml(formatSigned(row.deltas.totalTokens))}</td>
371
+ </tr>`;
372
+ })
373
+ .join("\n");
374
+ const onlyA = report.onlyInA.length > 0
375
+ ? `<p class="muted">Only in A (${escapeHtml(report.aLabel)}): ${report.onlyInA.map((n) => escapeHtml(n)).join(", ")}</p>`
376
+ : "";
377
+ const onlyB = report.onlyInB.length > 0
378
+ ? `<p class="muted">Only in B (${escapeHtml(report.bLabel)}): ${report.onlyInB.map((n) => escapeHtml(n)).join(", ")}</p>`
379
+ : "";
380
+ return `
381
+ <section class="compare">
382
+ <header class="compare-header">
383
+ <h2>A/B compare</h2>
384
+ <p class="muted">${escapeHtml(report.aLabel)} → ${escapeHtml(report.bLabel)} · ${report.summary.pairedCount} paired · regressions ${report.summary.passRegressions} · improvements ${report.summary.passImprovements}</p>
385
+ </header>
386
+ <div class="compare-summary meta-grid">
387
+ <div class="meta-item"><span class="meta-key">Mean Δ durationMs</span><span class="meta-val">${escapeHtml(formatSigned(report.summary.meanDurationDeltaMs !== undefined ? Math.round(report.summary.meanDurationDeltaMs) : undefined))}</span></div>
388
+ <div class="meta-item"><span class="meta-key">Mean Δ tools</span><span class="meta-val">${escapeHtml(formatSigned(report.summary.meanToolCallDelta !== undefined ? Math.round(report.summary.meanToolCallDelta) : undefined))}</span></div>
389
+ <div class="meta-item"><span class="meta-key">Mean Δ totalTokens</span><span class="meta-val">${escapeHtml(formatSigned(report.summary.meanTotalTokensDelta !== undefined ? Math.round(report.summary.meanTotalTokensDelta) : undefined))}</span></div>
390
+ </div>
391
+ ${onlyA}
392
+ ${onlyB}
393
+ <div class="compare-table-wrap">
394
+ <table class="compare-table">
395
+ <thead>
396
+ <tr>
397
+ <th>Scenario</th>
398
+ <th>A</th>
399
+ <th>B</th>
400
+ <th>Δ duration</th>
401
+ <th>Δ tools</th>
402
+ <th>Δ skills</th>
403
+ <th>Δ registry</th>
404
+ <th>Δ tokens</th>
405
+ </tr>
406
+ </thead>
407
+ <tbody>
408
+ ${rows}
409
+ </tbody>
410
+ </table>
411
+ </div>
412
+ </section>`;
413
+ }
414
+ /** Standalone compare HTML document (written next to compare-report.json / .md). */
415
+ export function renderCompareHtmlReport(report, meta = {}) {
416
+ const generatedAt = meta.generatedAt ?? new Date();
417
+ return `<!DOCTYPE html>
418
+ <html lang="en">
419
+ <head>
420
+ <meta charset="utf-8" />
421
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
422
+ <title>agent-test compare — ${escapeHtml(report.aLabel)} vs ${escapeHtml(report.bLabel)}</title>
423
+ <style>${sharedReportCss()}</style>
424
+ </head>
425
+ <body>
426
+ <main>
427
+ <header class="report-header">
428
+ <h1>agent-test compare</h1>
429
+ <span class="report-kicker">${escapeHtml(report.aLabel)} vs ${escapeHtml(report.bLabel)}</span>
430
+ </header>
431
+ <div class="summary">
432
+ <div class="stats">
433
+ <span class="stat"><strong>${report.summary.pairedCount}</strong> paired</span>
434
+ <span class="stat stat-fail"><strong>${report.summary.passRegressions}</strong> regressions</span>
435
+ <span class="stat stat-pass"><strong>${report.summary.passImprovements}</strong> improvements</span>
436
+ </div>
437
+ <dl>
438
+ <dt>Generated</dt><dd>${escapeHtml(generatedAt.toISOString())}</dd>
439
+ <dt>A</dt><dd>${escapeHtml(report.aSuite)}</dd>
440
+ <dt>B</dt><dd>${escapeHtml(report.bSuite)}</dd>
441
+ </dl>
442
+ </div>
443
+ ${renderCompareHtmlSection(report)}
444
+ </main>
445
+ </body>
446
+ </html>
447
+ `;
448
+ }
199
449
  function renderScenario(result) {
200
450
  const open = result.passed || result.skipped ? "" : " open";
201
451
  const failures = renderFailures(result);
202
452
  const judgeVerdicts = renderJudgeVerdicts(result);
453
+ const tokens = formatTokensBadge(result);
454
+ const usageDetail = renderUsageDetail(usageOf(result));
455
+ const traceMeta = renderTraceMeta(result);
203
456
  const diagnostics = failures || judgeVerdicts
204
457
  ? `<div class="diagnostics">
205
458
  ${failures ? `<section><h3>What went wrong</h3>${failures}</section>` : ""}
206
459
  ${judgeVerdicts ? `<section><h3>Judge verdict</h3>${judgeVerdicts}</section>` : ""}
207
460
  </div>`
208
461
  : "";
462
+ const metaRow = usageDetail || traceMeta
463
+ ? `<div class="diagnostics meta-row">${usageDetail}${traceMeta}</div>`
464
+ : "";
209
465
  return `
210
466
  <details class="scenario ${statusClass(result)}"${open}>
211
467
  <summary>
212
468
  <span class="badge ${statusClass(result)}">${statusLabel(result)}</span>
213
469
  <span class="scenario-name">${escapeHtml(result.scenario)}</span>
470
+ ${tokens ? `<span class="tokens">${escapeHtml(tokens)}</span>` : ""}
214
471
  <span class="duration">${escapeHtml(formatDuration(result.durationMs))}</span>
215
472
  </summary>
216
473
  <div class="scenario-body">
217
474
  ${diagnostics}
475
+ ${metaRow}
218
476
  <section class="conversation">
219
477
  <h3>Conversation</h3>
220
478
  ${renderChat(result.trace)}
@@ -224,30 +482,25 @@ function renderScenario(result) {
224
482
  }
225
483
  function renderSuite(report) {
226
484
  const scenarios = report.results.map(renderScenario).join("\n");
485
+ const usage = (report.summary ?? summarizeReportResults(report.results)).usage;
486
+ const usageLine = usage
487
+ ? `<p class="suite-usage">${escapeHtml(formatUsageStats(usage))}</p>`
488
+ : "";
227
489
  return `
228
490
  <section class="suite">
229
491
  <header class="suite-header">
230
492
  <div><h2>${escapeHtml(report.suite)}</h2><span class="host">${escapeHtml(report.host)}</span></div>
231
- <p class="suite-counts">${report.passed} passed · ${report.failed} failed · ${report.skipped} skipped</p>
493
+ <div class="suite-meta">
494
+ <p class="suite-counts">${report.passed} passed · ${report.failed} failed · ${report.skipped} skipped</p>
495
+ ${usageLine}
496
+ </div>
232
497
  </header>
498
+ ${usage ? renderUsageStatsBlock(usage, "Suite token usage") : ""}
233
499
  ${scenarios}
234
500
  </section>`;
235
501
  }
236
- /** Build a self-contained HTML report for a completed suite run. */
237
- export function renderHtmlReport(reports, meta = {}) {
238
- const generatedAt = meta.generatedAt ?? new Date();
239
- const totalPassed = reports.reduce((sum, report) => sum + report.passed, 0);
240
- const totalFailed = reports.reduce((sum, report) => sum + report.failed, 0);
241
- const totalSkipped = reports.reduce((sum, report) => sum + report.skipped, 0);
242
- const host = meta.host ?? reports[0]?.host ?? "unknown";
243
- const suitesHtml = reports.map(renderSuite).join("\n");
244
- return `<!DOCTYPE html>
245
- <html lang="en">
246
- <head>
247
- <meta charset="utf-8" />
248
- <meta name="viewport" content="width=device-width, initial-scale=1" />
249
- <title>agent-test report</title>
250
- <style>
502
+ function sharedReportCss() {
503
+ return `
251
504
  :root {
252
505
  --bg: #0f1419;
253
506
  --panel: #1a2332;
@@ -263,6 +516,8 @@ export function renderHtmlReport(reports, meta = {}) {
263
516
  --system-bubble: #241f38;
264
517
  --tool: #e0af68;
265
518
  --tool-bubble: #2a2214;
519
+ --improve: #3dd68c;
520
+ --regress: #f07178;
266
521
  }
267
522
  * { box-sizing: border-box; }
268
523
  body {
@@ -292,7 +547,7 @@ export function renderHtmlReport(reports, meta = {}) {
292
547
  justify-content: space-between;
293
548
  gap: 1rem;
294
549
  }
295
- .stats { display: flex; gap: 0.45rem; align-items: center; }
550
+ .stats { display: flex; gap: 0.45rem; align-items: center; flex-wrap: wrap; }
296
551
  .stat { padding: 0.3rem 0.55rem; border-radius: 6px; background: #111923; font-size: 0.8rem; }
297
552
  .stat strong { font-size: 1rem; margin-right: 0.25rem; }
298
553
  .stat-pass strong { color: var(--pass); }
@@ -308,11 +563,32 @@ export function renderHtmlReport(reports, meta = {}) {
308
563
  }
309
564
  .summary dt { color: var(--muted); margin-right: -0.7rem; }
310
565
  .summary dd { margin: 0; }
566
+ .report-usage { margin-top: 0.75rem; }
311
567
  .suite { margin-top: 1.25rem; }
312
568
  .suite-header { display: flex; align-items: end; justify-content: space-between; margin: 0 0 0.5rem; padding: 0 0.2rem; }
313
569
  .suite-header > div { display: flex; align-items: center; gap: 0.5rem; }
314
570
  .host { color: var(--muted); font-size: 0.72rem; background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: 0.1rem 0.4rem; }
571
+ .suite-meta { text-align: right; }
315
572
  .suite-counts { color: var(--muted); margin: 0; font-size: 0.78rem; }
573
+ .suite-usage { color: var(--muted); margin: 0.15rem 0 0; font-size: 0.72rem; font-variant-numeric: tabular-nums; }
574
+ .tokens { color: var(--muted); font-size: 0.78rem; font-variant-numeric: tabular-nums; }
575
+ .usage-summary, .scenario-meta {
576
+ background: var(--panel-2);
577
+ border: 1px solid var(--border);
578
+ border-radius: 8px;
579
+ padding: 0.65rem 0.7rem;
580
+ margin: 0 0 0.7rem;
581
+ }
582
+ .usage-compact { margin: 0.45rem 0 0; font-size: 0.72rem; font-variant-numeric: tabular-nums; }
583
+ .meta-grid {
584
+ display: grid;
585
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
586
+ gap: 0.35rem 0.75rem;
587
+ }
588
+ .meta-item { display: flex; flex-direction: column; gap: 0.1rem; }
589
+ .meta-key { color: var(--muted); font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; }
590
+ .meta-val { font-size: 0.88rem; font-variant-numeric: tabular-nums; word-break: break-word; }
591
+ .meta-row { margin-bottom: 0.7rem; }
316
592
  details.scenario {
317
593
  background: var(--panel);
318
594
  border: 1px solid var(--border);
@@ -356,6 +632,7 @@ export function renderHtmlReport(reports, meta = {}) {
356
632
  .failure-label { margin: 0; font-weight: 600; font-size: 0.85rem; color: var(--fail); }
357
633
  .failure-hint { margin: 0.1rem 0 0; font-size: 0.78rem; color: var(--muted); }
358
634
  .failure-message { margin: 0.3rem 0 0; font-size: 0.82rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; word-break: break-word; background: #0b1017; border: 1px solid var(--border); border-radius: 6px; padding: 0.45rem 0.55rem; }
635
+ .failure-evidence { margin: 0.35rem 0 0; font-size: 0.75rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; word-break: break-word; color: var(--muted); background: #0b1017; border: 1px dashed var(--border); border-radius: 6px; padding: 0.4rem 0.5rem; }
359
636
 
360
637
  .verdicts { display: flex; flex-direction: column; gap: 0.55rem; }
361
638
  .verdict { border-left: 3px solid var(--border); padding-left: 0.6rem; }
@@ -417,6 +694,38 @@ export function renderHtmlReport(reports, meta = {}) {
417
694
  .shell-commands { margin: 0; padding-left: 0; list-style: none; display: flex; flex-direction: column; gap: 0.3rem; }
418
695
  .shell-commands li { font-size: 0.8rem; background: #0b1017; border: 1px solid var(--border); border-radius: 6px; padding: 0.3rem 0.5rem; }
419
696
  code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85em; }
697
+
698
+ .compare {
699
+ margin-top: 1.1rem;
700
+ background: var(--panel);
701
+ border: 1px solid var(--border);
702
+ border-radius: 10px;
703
+ padding: 0.85rem 0.9rem 1rem;
704
+ }
705
+ .compare-header { margin-bottom: 0.65rem; }
706
+ .compare-header h2 { margin-bottom: 0.2rem; }
707
+ .compare-summary { margin-bottom: 0.75rem; }
708
+ .compare-table-wrap { overflow-x: auto; }
709
+ .compare-table {
710
+ width: 100%;
711
+ border-collapse: collapse;
712
+ font-size: 0.8rem;
713
+ font-variant-numeric: tabular-nums;
714
+ }
715
+ .compare-table th, .compare-table td {
716
+ border-bottom: 1px solid var(--border);
717
+ padding: 0.4rem 0.45rem;
718
+ text-align: left;
719
+ vertical-align: middle;
720
+ }
721
+ .compare-table th { color: var(--muted); font-weight: 600; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; }
722
+ .compare-name { font-weight: 600; }
723
+ .compare-regress { background: color-mix(in srgb, var(--regress) 10%, transparent); }
724
+ .compare-improve { background: color-mix(in srgb, var(--improve) 10%, transparent); }
725
+ .delta-up { color: var(--fail); }
726
+ .delta-down { color: var(--pass); }
727
+ .delta-flat { color: var(--muted); }
728
+
420
729
  @media (max-width: 720px) {
421
730
  main { padding: 0.75rem; }
422
731
  .summary { align-items: flex-start; flex-direction: column; }
@@ -425,7 +734,37 @@ export function renderHtmlReport(reports, meta = {}) {
425
734
  .diagnostics { grid-template-columns: 1fr; }
426
735
  .bubble, .tool-card { max-width: 92%; }
427
736
  }
428
- </style>
737
+ `;
738
+ }
739
+ /** Build a self-contained HTML report for a completed suite run. */
740
+ export function renderHtmlReport(reports, meta = {}) {
741
+ const generatedAt = meta.generatedAt ?? new Date();
742
+ const totalPassed = reports.reduce((sum, report) => sum + report.passed, 0);
743
+ const totalFailed = reports.reduce((sum, report) => sum + report.failed, 0);
744
+ const totalSkipped = reports.reduce((sum, report) => sum + report.skipped, 0);
745
+ const host = meta.host ?? reports[0]?.host ?? "unknown";
746
+ const runUsage = summarizeReports(reports).usage;
747
+ // Embed A/B only when explicitly requested (compare-pairs / compare labels), not for every 2-suite run.
748
+ const includeCompare = reports.length === 2 &&
749
+ (meta.includeCompare === true ||
750
+ meta.compareALabel !== undefined ||
751
+ meta.compareBLabel !== undefined);
752
+ const compareSection = includeCompare && reports[0] && reports[1]
753
+ ? renderCompareHtmlSection(compareSuiteReports({
754
+ aLabel: meta.compareALabel ?? reports[0].suite,
755
+ bLabel: meta.compareBLabel ?? reports[1].suite,
756
+ a: reports[0],
757
+ b: reports[1],
758
+ }))
759
+ : "";
760
+ const suitesHtml = reports.map(renderSuite).join("\n");
761
+ return `<!DOCTYPE html>
762
+ <html lang="en">
763
+ <head>
764
+ <meta charset="utf-8" />
765
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
766
+ <title>agent-test report</title>
767
+ <style>${sharedReportCss()}</style>
429
768
  </head>
430
769
  <body>
431
770
  <main>
@@ -438,13 +777,24 @@ export function renderHtmlReport(reports, meta = {}) {
438
777
  <span class="stat stat-pass"><strong>${totalPassed}</strong> passed</span>
439
778
  <span class="stat stat-fail"><strong>${totalFailed}</strong> failed</span>
440
779
  <span class="stat stat-skip"><strong>${totalSkipped}</strong> skipped</span>
780
+ ${runUsage?.sumTotalTokens !== undefined
781
+ ? `<span class="stat"><strong>${runUsage.sumTotalTokens}</strong> tokens</span>`
782
+ : ""}
441
783
  </div>
442
784
  <dl>
443
785
  <dt>Host</dt><dd>${escapeHtml(String(host))}</dd>
444
786
  <dt>Generated</dt><dd>${escapeHtml(generatedAt.toISOString())}</dd>
445
787
  ${meta.suitesDir ? `<dt>Suites</dt><dd>${escapeHtml(meta.suitesDir)}</dd>` : ""}
788
+ ${runUsage?.p50TotalTokens !== undefined
789
+ ? `<dt>p50 tokens</dt><dd>${runUsage.p50TotalTokens}</dd>`
790
+ : ""}
791
+ ${runUsage?.p95TotalTokens !== undefined
792
+ ? `<dt>p95 tokens</dt><dd>${runUsage.p95TotalTokens}</dd>`
793
+ : ""}
446
794
  </dl>
447
795
  </div>
796
+ ${runUsage ? `<div class="report-usage">${renderUsageStatsBlock(runUsage, "Run token usage")}</div>` : ""}
797
+ ${compareSection}
448
798
  ${suitesHtml}
449
799
  </main>
450
800
  </body>
@@ -1 +1 @@
1
- {"version":3,"file":"html-report.js","sourceRoot":"","sources":["../src/html-report.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-report.js","sourceRoot":"","sources":["../src/html-report.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,14 +1,15 @@
1
+ export { type ComparePairSpec, compareSuiteReports, formatCompareReportMarkdown, labelForCompareSide, loadSuiteRunReport, metricsFromResult, parseComparePairToken, type ScenarioCompareDelta, type ScenarioCompareMetrics, type SuiteCompareReport, type WriteCompareReportOptions, writeCompareReport, } from "./compare.js";
1
2
  export { buildRerunCommand, collectDebugEnvironment, type DebugEnvironmentSnapshot, type DebugRerunOptions, formatDebugSummaryMarkdown, formatDebugWhySection, formatTranscriptMarkdown, getDebugBundleDir, shellQuote, type WriteDebugBundleOptions, writeDebugBundle, } from "./debug-bundle.js";
2
3
  export { assertRubric, expectTrace, TraceAssertion } from "./expect.js";
3
4
  export { assertionFailure } from "./failures.js";
4
- export { type HtmlReportMeta, renderHtmlReport, writeHtmlReport } from "./html-report.js";
5
+ export { type HtmlReportMeta, renderCompareHtmlReport, renderCompareHtmlSection, renderHtmlReport, writeHtmlReport, } from "./html-report.js";
5
6
  export { loadSuiteFile } from "./load-suite.js";
6
7
  export { assertLiveDogfoodPreflight } from "./preflight.js";
7
8
  export { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingRoot, getLiveStagingRootOverride, getLiveStagingSessionRoot, getStagingResultPath, type LiveScenarioResultSidecar, loadStagingResult, type RecordingPathKind, type ResolvedRecordingPath, recordTrace, resolveRecordingPath, scenarioArtifactSlug, setLiveStagingRootOverride, writeStagingResult, } from "./record-trace.js";
8
9
  export { discoverSuites, type RunSuiteOptions, runAllSuites, runSuite, } from "./run-suite.js";
9
10
  export { ANNOUNCE_STOP_MATCHERS, resolveScenarioRetryMaxAttempts, shouldRetryAnnounceStopFlake, } from "./scenario-retry.js";
10
- export { type FailOnMode, formatRunSummary, shouldFailScenario, summarizeFailures, summarizeReportResults, summarizeReports, } from "./suite-summary.js";
11
- export type { AgentScenario, AgentSuiteFile, AssertionFailure, FailureCategory, JudgeRubricItem, JudgeVerdictResult, McpServerConfig, ScenarioResult, ScenarioRubric, SuiteRunReport, } from "./types.js";
11
+ export { type FailOnMode, formatRunSummary, formatUsageStats, percentileNearestRank, shouldFailScenario, summarizeFailures, summarizeReportResults, summarizeReports, summarizeUsage, } from "./suite-summary.js";
12
+ export type { AgentScenario, AgentSuiteFile, AgentUsage, AssertionFailure, FailureCategory, JudgeRubricItem, JudgeVerdictResult, McpServerConfig, RunSummary, ScenarioResult, ScenarioRubric, SuiteRunReport, UsageStats, } from "./types.js";
12
13
  export { formatSeedValidationReport, type SeedValidationReport, validateSeedPatches, } from "./validate-seeds.js";
13
14
  export { formatValidationReport, type SuiteValidationReport, validateSuiteFile, validateSuitePaths, } from "./validate-suite.js";
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,KAAK,uBAAuB,EAC5B,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,KAAK,cAAc,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,KAAK,eAAe,EACpB,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,UAAU,EACf,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACd,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,eAAe,EACpB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,EACvB,KAAK,yBAAyB,EAC9B,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EACV,KAAK,uBAAuB,EAC5B,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACN,KAAK,cAAc,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,KAAK,eAAe,EACpB,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,KAAK,UAAU,EACf,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACd,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EACX,aAAa,EACb,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,UAAU,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,0BAA0B,EAC1B,KAAK,oBAAoB,EACzB,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,sBAAsB,EACtB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC"}
package/dist/index.js CHANGED
@@ -1,13 +1,14 @@
1
+ export { compareSuiteReports, formatCompareReportMarkdown, labelForCompareSide, loadSuiteRunReport, metricsFromResult, parseComparePairToken, writeCompareReport, } from "./compare.js";
1
2
  export { buildRerunCommand, collectDebugEnvironment, formatDebugSummaryMarkdown, formatDebugWhySection, formatTranscriptMarkdown, getDebugBundleDir, shellQuote, writeDebugBundle, } from "./debug-bundle.js";
2
3
  export { assertRubric, expectTrace, TraceAssertion } from "./expect.js";
3
4
  export { assertionFailure } from "./failures.js";
4
- export { renderHtmlReport, writeHtmlReport } from "./html-report.js";
5
+ export { renderCompareHtmlReport, renderCompareHtmlSection, renderHtmlReport, writeHtmlReport, } from "./html-report.js";
5
6
  export { loadSuiteFile } from "./load-suite.js";
6
7
  export { assertLiveDogfoodPreflight } from "./preflight.js";
7
8
  export { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingRoot, getLiveStagingRootOverride, getLiveStagingSessionRoot, getStagingResultPath, loadStagingResult, recordTrace, resolveRecordingPath, scenarioArtifactSlug, setLiveStagingRootOverride, writeStagingResult, } from "./record-trace.js";
8
9
  export { discoverSuites, runAllSuites, runSuite, } from "./run-suite.js";
9
10
  export { ANNOUNCE_STOP_MATCHERS, resolveScenarioRetryMaxAttempts, shouldRetryAnnounceStopFlake, } from "./scenario-retry.js";
10
- export { formatRunSummary, shouldFailScenario, summarizeFailures, summarizeReportResults, summarizeReports, } from "./suite-summary.js";
11
+ export { formatRunSummary, formatUsageStats, percentileNearestRank, shouldFailScenario, summarizeFailures, summarizeReportResults, summarizeReports, summarizeUsage, } from "./suite-summary.js";
11
12
  export { formatSeedValidationReport, validateSeedPatches, } from "./validate-seeds.js";
12
13
  export { formatValidationReport, validateSuiteFile, validateSuitePaths, } from "./validate-suite.js";
13
14
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EAGvB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EAEV,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAuB,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EAEpB,iBAAiB,EAGjB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EAEd,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,GAChB,MAAM,oBAAoB,CAAC;AAa5B,OAAO,EACN,0BAA0B,EAE1B,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,sBAAsB,EAEtB,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EAKrB,kBAAkB,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EAGvB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,EAEV,gBAAgB,GAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAEN,uBAAuB,EACvB,wBAAwB,EACxB,gBAAgB,EAChB,eAAe,GACf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EAEpB,iBAAiB,EAGjB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EAEd,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,sBAAsB,EACtB,+BAA+B,EAC/B,4BAA4B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAEN,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,gBAAgB,EAChB,cAAc,GACd,MAAM,oBAAoB,CAAC;AAgB5B,OAAO,EACN,0BAA0B,EAE1B,mBAAmB,GACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACN,sBAAsB,EAEtB,iBAAiB,EACjB,kBAAkB,GAClB,MAAM,qBAAqB,CAAC"}