@vercel/agent-eval 2.4.0 → 2.5.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.
Files changed (124) hide show
  1. package/dist/cli.js +27 -21
  2. package/dist/cli.js.map +1 -1
  3. package/dist/index.d.ts +8 -4
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +5 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/lib/agents/claude-code/agent.d.ts.map +1 -1
  8. package/dist/lib/agents/claude-code/agent.js +5 -1
  9. package/dist/lib/agents/claude-code/agent.js.map +1 -1
  10. package/dist/lib/agents/codex/agent.d.ts.map +1 -1
  11. package/dist/lib/agents/codex/agent.js +5 -1
  12. package/dist/lib/agents/codex/agent.js.map +1 -1
  13. package/dist/lib/agents/cursor/agent.d.ts.map +1 -1
  14. package/dist/lib/agents/cursor/agent.js +5 -0
  15. package/dist/lib/agents/cursor/agent.js.map +1 -1
  16. package/dist/lib/agents/fx/agent.d.ts.map +1 -1
  17. package/dist/lib/agents/fx/agent.js +3 -0
  18. package/dist/lib/agents/fx/agent.js.map +1 -1
  19. package/dist/lib/agents/fx/run.mjs +26 -0
  20. package/dist/lib/agents/gemini/agent.d.ts.map +1 -1
  21. package/dist/lib/agents/gemini/agent.js +5 -1
  22. package/dist/lib/agents/gemini/agent.js.map +1 -1
  23. package/dist/lib/agents/index.d.ts +1 -0
  24. package/dist/lib/agents/index.d.ts.map +1 -1
  25. package/dist/lib/agents/index.js +2 -0
  26. package/dist/lib/agents/index.js.map +1 -1
  27. package/dist/lib/agents/opencode/agent.d.ts +3 -3
  28. package/dist/lib/agents/opencode/agent.d.ts.map +1 -1
  29. package/dist/lib/agents/opencode/agent.js +14 -12
  30. package/dist/lib/agents/opencode/agent.js.map +1 -1
  31. package/dist/lib/agents/plugin/contract.d.ts +40 -0
  32. package/dist/lib/agents/plugin/contract.d.ts.map +1 -1
  33. package/dist/lib/agents/plugin/contract.js.map +1 -1
  34. package/dist/lib/agents/plugin/orchestrator.d.ts +19 -0
  35. package/dist/lib/agents/plugin/orchestrator.d.ts.map +1 -1
  36. package/dist/lib/agents/plugin/orchestrator.js +265 -52
  37. package/dist/lib/agents/plugin/orchestrator.js.map +1 -1
  38. package/dist/lib/agents/redact.d.ts +34 -3
  39. package/dist/lib/agents/redact.d.ts.map +1 -1
  40. package/dist/lib/agents/redact.js +148 -35
  41. package/dist/lib/agents/redact.js.map +1 -1
  42. package/dist/lib/agents/shared.d.ts +24 -1
  43. package/dist/lib/agents/shared.d.ts.map +1 -1
  44. package/dist/lib/agents/shared.js +48 -13
  45. package/dist/lib/agents/shared.js.map +1 -1
  46. package/dist/lib/agents/types.d.ts +24 -1
  47. package/dist/lib/agents/types.d.ts.map +1 -1
  48. package/dist/lib/agents/verifier.d.ts +96 -0
  49. package/dist/lib/agents/verifier.d.ts.map +1 -0
  50. package/dist/lib/agents/verifier.js +176 -0
  51. package/dist/lib/agents/verifier.js.map +1 -0
  52. package/dist/lib/config.d.ts.map +1 -1
  53. package/dist/lib/config.js +23 -0
  54. package/dist/lib/config.js.map +1 -1
  55. package/dist/lib/dashboard.d.ts +3 -1
  56. package/dist/lib/dashboard.d.ts.map +1 -1
  57. package/dist/lib/dashboard.js +12 -1
  58. package/dist/lib/dashboard.js.map +1 -1
  59. package/dist/lib/docker-sandbox.d.ts +9 -0
  60. package/dist/lib/docker-sandbox.d.ts.map +1 -1
  61. package/dist/lib/docker-sandbox.js +15 -0
  62. package/dist/lib/docker-sandbox.js.map +1 -1
  63. package/dist/lib/fingerprint.d.ts +3 -0
  64. package/dist/lib/fingerprint.d.ts.map +1 -1
  65. package/dist/lib/fingerprint.js +34 -0
  66. package/dist/lib/fingerprint.js.map +1 -1
  67. package/dist/lib/o11y/index.d.ts +2 -2
  68. package/dist/lib/o11y/index.d.ts.map +1 -1
  69. package/dist/lib/o11y/index.js +1 -1
  70. package/dist/lib/o11y/index.js.map +1 -1
  71. package/dist/lib/o11y/parsers/claude-code.d.ts +19 -1
  72. package/dist/lib/o11y/parsers/claude-code.d.ts.map +1 -1
  73. package/dist/lib/o11y/parsers/claude-code.js +72 -1
  74. package/dist/lib/o11y/parsers/claude-code.js.map +1 -1
  75. package/dist/lib/o11y/parsers/codex.d.ts +13 -1
  76. package/dist/lib/o11y/parsers/codex.d.ts.map +1 -1
  77. package/dist/lib/o11y/parsers/codex.js +68 -1
  78. package/dist/lib/o11y/parsers/codex.js.map +1 -1
  79. package/dist/lib/o11y/parsers/fx.d.ts +2 -1
  80. package/dist/lib/o11y/parsers/fx.d.ts.map +1 -1
  81. package/dist/lib/o11y/parsers/fx.js +21 -1
  82. package/dist/lib/o11y/parsers/fx.js.map +1 -1
  83. package/dist/lib/o11y/parsers/gemini.d.ts +13 -1
  84. package/dist/lib/o11y/parsers/gemini.d.ts.map +1 -1
  85. package/dist/lib/o11y/parsers/gemini.js +35 -1
  86. package/dist/lib/o11y/parsers/gemini.js.map +1 -1
  87. package/dist/lib/o11y/parsers/index.d.ts +6 -1
  88. package/dist/lib/o11y/parsers/index.d.ts.map +1 -1
  89. package/dist/lib/o11y/parsers/index.js +13 -1
  90. package/dist/lib/o11y/parsers/index.js.map +1 -1
  91. package/dist/lib/o11y/parsers/opencode.d.ts +17 -1
  92. package/dist/lib/o11y/parsers/opencode.d.ts.map +1 -1
  93. package/dist/lib/o11y/parsers/opencode.js +47 -4
  94. package/dist/lib/o11y/parsers/opencode.js.map +1 -1
  95. package/dist/lib/o11y/types.d.ts +30 -0
  96. package/dist/lib/o11y/types.d.ts.map +1 -1
  97. package/dist/lib/o11y/usage.d.ts +27 -0
  98. package/dist/lib/o11y/usage.d.ts.map +1 -0
  99. package/dist/lib/o11y/usage.js +75 -0
  100. package/dist/lib/o11y/usage.js.map +1 -0
  101. package/dist/lib/reporters.d.ts +101 -0
  102. package/dist/lib/reporters.d.ts.map +1 -0
  103. package/dist/lib/reporters.js +176 -0
  104. package/dist/lib/reporters.js.map +1 -0
  105. package/dist/lib/results.d.ts +15 -2
  106. package/dist/lib/results.d.ts.map +1 -1
  107. package/dist/lib/results.js +75 -4
  108. package/dist/lib/results.js.map +1 -1
  109. package/dist/lib/runner.d.ts +16 -1
  110. package/dist/lib/runner.d.ts.map +1 -1
  111. package/dist/lib/runner.js +85 -3
  112. package/dist/lib/runner.js.map +1 -1
  113. package/dist/lib/sandbox.d.ts +9 -0
  114. package/dist/lib/sandbox.d.ts.map +1 -1
  115. package/dist/lib/sandbox.js +14 -1
  116. package/dist/lib/sandbox.js.map +1 -1
  117. package/dist/lib/types.d.ts +184 -0
  118. package/dist/lib/types.d.ts.map +1 -1
  119. package/dist/lib/types.js.map +1 -1
  120. package/dist/lib/version.d.ts +7 -0
  121. package/dist/lib/version.d.ts.map +1 -0
  122. package/dist/lib/version.js +8 -0
  123. package/dist/lib/version.js.map +1 -0
  124. package/package.json +1 -1
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Reporters: first-class hooks that send results somewhere besides the local
3
+ * results/ tree.
4
+ *
5
+ * The runner calls {@link notifyRunComplete} once per finished run and
6
+ * {@link notifyExperimentComplete} once per experiment. Both isolate reporter
7
+ * failures: an error is caught, redacted, handed to `onFailure`, and the next
8
+ * reporter still runs. Nothing a reporter does can change an eval result.
9
+ */
10
+ import { appendFile, mkdir } from 'node:fs/promises';
11
+ import { dirname } from 'node:path';
12
+ import { redactSecrets, redactValue } from './agents/redact.js';
13
+ /** One line describing a failed reporter call, for the CLI and logs. */
14
+ export function formatReporterError(event) {
15
+ const where = event.evalName
16
+ ? ` for ${event.evalName}${event.runNumber !== undefined ? ` run ${event.runNumber}` : ''}`
17
+ : '';
18
+ return `\u26a0 Reporter "${event.reporter}" failed in ${event.hook}${where}: ${event.error}`;
19
+ }
20
+ function errorMessage(error) {
21
+ return error instanceof Error ? error.message : String(error);
22
+ }
23
+ /**
24
+ * Deliver a run event to every reporter with an `onRunComplete` hook, in order.
25
+ * Returns the failures (also passed to `onFailure`).
26
+ */
27
+ export async function notifyRunComplete(reporters, event, options) {
28
+ const listening = reporters.filter((reporter) => reporter.onRunComplete);
29
+ if (listening.length === 0)
30
+ return [];
31
+ const payload = redactValue(event, options.secrets);
32
+ const failures = [];
33
+ for (const reporter of listening) {
34
+ try {
35
+ await reporter.onRunComplete(payload);
36
+ }
37
+ catch (error) {
38
+ const failure = {
39
+ reporter: reporter.name,
40
+ hook: 'onRunComplete',
41
+ evalName: event.evalName,
42
+ runIndex: event.runIndex,
43
+ error: redactSecrets(errorMessage(error), options.secrets),
44
+ };
45
+ failures.push(failure);
46
+ options.onFailure?.(failure);
47
+ }
48
+ }
49
+ return failures;
50
+ }
51
+ /**
52
+ * Deliver an experiment event to every reporter with an
53
+ * `onExperimentComplete` hook, in order. Returns the failures (also passed to
54
+ * `onFailure`).
55
+ */
56
+ export async function notifyExperimentComplete(reporters, event, options) {
57
+ const listening = reporters.filter((reporter) => reporter.onExperimentComplete);
58
+ if (listening.length === 0)
59
+ return [];
60
+ const payload = redactValue(event, options.secrets);
61
+ const failures = [];
62
+ for (const reporter of listening) {
63
+ try {
64
+ await reporter.onExperimentComplete(payload);
65
+ }
66
+ catch (error) {
67
+ const failure = {
68
+ reporter: reporter.name,
69
+ hook: 'onExperimentComplete',
70
+ error: redactSecrets(errorMessage(error), options.secrets),
71
+ };
72
+ failures.push(failure);
73
+ options.onFailure?.(failure);
74
+ }
75
+ }
76
+ return failures;
77
+ }
78
+ /**
79
+ * The JSON form of an experiment event used by the built-in reporters.
80
+ *
81
+ * `results` in a {@link ReporterExperimentEvent} carries everything the run
82
+ * produced: transcripts, script output, and generated files as raw bytes. A
83
+ * network payload doesn't need those (they're on disk under `outputDir`), so
84
+ * each run is reduced to its `result`. Config functions and the reporters
85
+ * themselves are left out too, since they aren't data.
86
+ */
87
+ export function experimentEventToJson(event) {
88
+ const { results } = event;
89
+ const config = Object.fromEntries(Object.entries(results.config).filter(([key, value]) => key !== 'reporters' && typeof value !== 'function'));
90
+ const evals = results.evals.map(({ runs, ...summary }) => ({
91
+ ...summary,
92
+ runs: runs.map((run) => run.result),
93
+ }));
94
+ return {
95
+ ...event,
96
+ results: { startedAt: results.startedAt, completedAt: results.completedAt, config, evals },
97
+ };
98
+ }
99
+ /**
100
+ * Append one JSON line per finished run to a file. Each line is a
101
+ * {@link ReporterRunEvent}. Writes are serialized, so concurrent runs never
102
+ * interleave lines.
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * reporters: [jsonlReporter({ path: 'results/runs.jsonl' })]
107
+ * ```
108
+ */
109
+ export function jsonlReporter(options) {
110
+ let pending = Promise.resolve();
111
+ return {
112
+ name: 'jsonl',
113
+ onRunComplete(event) {
114
+ const line = `${JSON.stringify(event)}\n`;
115
+ const write = pending.then(async () => {
116
+ await mkdir(dirname(options.path), { recursive: true });
117
+ await appendFile(options.path, line, 'utf-8');
118
+ });
119
+ // A failed write fails only its own event; later events still write.
120
+ pending = write.catch(() => { });
121
+ return write;
122
+ },
123
+ };
124
+ }
125
+ /**
126
+ * POST each event as JSON. Run events are sent as
127
+ * `{ "type": "run", ...ReporterRunEvent }`; experiment events as
128
+ * `{ "type": "experiment", ...experimentEventToJson(event) }`. Network errors,
129
+ * 429, and 5xx responses are retried with exponential backoff; other non-2xx
130
+ * responses fail at once.
131
+ *
132
+ * @example
133
+ * ```ts
134
+ * reporters: [
135
+ * httpReporter({
136
+ * url: 'https://example.com/ingest',
137
+ * headers: { authorization: `Bearer ${process.env.INGEST_TOKEN}` },
138
+ * }),
139
+ * ]
140
+ * ```
141
+ */
142
+ export function httpReporter(options) {
143
+ const retries = options.retries ?? 2;
144
+ const retryDelayMs = options.retryDelayMs ?? 500;
145
+ const post = async (body) => {
146
+ const payload = JSON.stringify(body);
147
+ for (let attempt = 0;; attempt++) {
148
+ let failure;
149
+ let retryable;
150
+ try {
151
+ const response = await fetch(options.url, {
152
+ method: 'POST',
153
+ headers: { 'content-type': 'application/json', ...options.headers },
154
+ body: payload,
155
+ });
156
+ if (response.ok)
157
+ return;
158
+ failure = `HTTP ${response.status} from ${options.url}`;
159
+ retryable = response.status === 429 || response.status >= 500;
160
+ }
161
+ catch (error) {
162
+ failure = `POST ${options.url} failed: ${errorMessage(error)}`;
163
+ retryable = true;
164
+ }
165
+ if (!retryable || attempt >= retries)
166
+ throw new Error(failure);
167
+ await new Promise((resolve) => setTimeout(resolve, retryDelayMs * 2 ** attempt));
168
+ }
169
+ };
170
+ return {
171
+ name: 'http',
172
+ onRunComplete: (event) => post({ type: 'run', ...event }),
173
+ onExperimentComplete: (event) => post({ type: 'experiment', ...experimentEventToJson(event) }),
174
+ };
175
+ }
176
+ //# sourceMappingURL=reporters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporters.js","sourceRoot":"","sources":["../../src/lib/reporters.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,25 @@
1
1
  /**
2
2
  * Results storage and reporting for eval experiments.
3
3
  */
4
- import type { EvalRunResult, EvalRunData, EvalSummary, ExperimentResults, RunnableExperimentConfig } from './types.js';
4
+ import type { EvalRunResult, EvalRunData, EvalSummary, ExperimentResults, RunnableExperimentConfig, UsageSummary } from './types.js';
5
5
  import type { AgentRunResult } from './agents/types.js';
6
6
  /**
7
7
  * Convert AgentRunResult to EvalRunData (result + transcript).
8
+ *
9
+ * `options.o11yAgentName` names the transcript parser used to read token usage
10
+ * when the agent did not report `usage` itself. Without it, usage is taken only
11
+ * from `agentResult.usage`.
12
+ */
13
+ export declare function agentResultToEvalRunData(agentResult: AgentRunResult, options?: {
14
+ o11yAgentName?: string;
15
+ }): EvalRunData;
16
+ /**
17
+ * Aggregate token usage over the runs of one eval. Returns undefined when no
18
+ * run reported usage. Token fields cover the runs that reported usage and
19
+ * appear only when all of those runs reported the field; `costUsd` appears only
20
+ * when every run reported a cost.
8
21
  */
9
- export declare function agentResultToEvalRunData(agentResult: AgentRunResult): EvalRunData;
22
+ export declare function summarizeUsage(runs: readonly EvalRunResult[]): UsageSummary | undefined;
10
23
  /**
11
24
  * Create a summary from multiple run data.
12
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/lib/results.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,OAAO,KAAK,EACX,aAAa,EACb,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,wBAAwB,EACxB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMxD;;GAEG;AACH,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,cAAc,GACzB,WAAW,CA4Cb;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,WAAW,EAAE,GACpB,WAAW,CAab;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,wBAAwB,EAChC,KAAK,EAAE,WAAW,EAAE,EACpB,SAAS,EAAE,IAAI,EACf,WAAW,EAAE,IAAI,GACf,iBAAiB,CAOnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAClC,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC;;qFAEiF;IACjF,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,+EAA+E;IAC/E,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6FAA6F;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAC1B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,kBAAkB,GACzB,MAAM,CAmMR;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CA8DrE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,MAAM,CAwBR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACnE,MAAM,CASR;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAChC,mFAAmF;IACnF,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,OAAO,GAAE,gBAAqB,GAC5B,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAkF7B"}
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/lib/results.ts"],"names":[],"mappings":"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"}
@@ -4,14 +4,19 @@
4
4
  import { mkdirSync, writeFileSync, readdirSync, readFileSync, existsSync, statSync, unlinkSync, } from 'fs';
5
5
  import { join, dirname } from 'path';
6
6
  import chalk from 'chalk';
7
- import { parseTranscript } from './o11y/index.js';
7
+ import { isWorkspacePath } from './agents/shared.js';
8
+ import { parseTranscript, parseTranscriptUsage } from './o11y/index.js';
8
9
  import { isNonModelFailure } from './classifier.js';
9
10
  import { copyFixtureFiles } from './fixture.js';
10
11
  import { computeReuseCompatibilityFingerprint } from './fingerprint.js';
11
12
  /**
12
13
  * Convert AgentRunResult to EvalRunData (result + transcript).
14
+ *
15
+ * `options.o11yAgentName` names the transcript parser used to read token usage
16
+ * when the agent did not report `usage` itself. Without it, usage is taken only
17
+ * from `agentResult.usage`.
13
18
  */
14
- export function agentResultToEvalRunData(agentResult) {
19
+ export function agentResultToEvalRunData(agentResult, options = {}) {
15
20
  // Collect output content from scripts and tests
16
21
  const outputContent = {};
17
22
  // Add EVAL.ts test output
@@ -39,6 +44,25 @@ export function agentResultToEvalRunData(agentResult) {
39
44
  if (agentResult.modelRepair) {
40
45
  result.modelRepair = agentResult.modelRepair;
41
46
  }
47
+ if (agentResult.provenance) {
48
+ result.provenance = agentResult.provenance;
49
+ }
50
+ const usage = agentResult.usage ??
51
+ (options.o11yAgentName
52
+ ? parseTranscriptUsage(agentResult.transcript, options.o11yAgentName)
53
+ : undefined);
54
+ if (usage) {
55
+ result.usage = usage;
56
+ }
57
+ if (agentResult.verifier) {
58
+ result.verifier = agentResult.verifier;
59
+ }
60
+ if (agentResult.verifierSandboxId) {
61
+ result.verifierSandboxId = agentResult.verifierSandboxId;
62
+ }
63
+ if (agentResult.tampering) {
64
+ result.tampering = agentResult.tampering;
65
+ }
42
66
  return {
43
67
  result,
44
68
  transcript: agentResult.transcript,
@@ -47,6 +71,38 @@ export function agentResultToEvalRunData(agentResult) {
47
71
  deletedFiles: agentResult.deletedFiles,
48
72
  };
49
73
  }
74
+ const USAGE_TOKEN_FIELDS = [
75
+ 'totalTokens',
76
+ 'inputTokens',
77
+ 'outputTokens',
78
+ 'cacheReadTokens',
79
+ 'cacheWriteTokens',
80
+ 'reasoningTokens',
81
+ ];
82
+ /**
83
+ * Aggregate token usage over the runs of one eval. Returns undefined when no
84
+ * run reported usage. Token fields cover the runs that reported usage and
85
+ * appear only when all of those runs reported the field; `costUsd` appears only
86
+ * when every run reported a cost.
87
+ */
88
+ export function summarizeUsage(runs) {
89
+ const reported = runs.flatMap((run) => (run.usage ? [run.usage] : []));
90
+ if (reported.length === 0)
91
+ return undefined;
92
+ const summary = { runsWithUsage: reported.length };
93
+ for (const field of USAGE_TOKEN_FIELDS) {
94
+ if (reported.every((usage) => usage[field] !== undefined)) {
95
+ summary[field] = reported.reduce((sum, usage) => sum + usage[field], 0);
96
+ }
97
+ }
98
+ if (summary.totalTokens !== undefined) {
99
+ summary.meanTotalTokens = summary.totalTokens / reported.length;
100
+ }
101
+ if (runs.every((run) => run.usage?.costUsd !== undefined)) {
102
+ summary.costUsd = runs.reduce((sum, run) => sum + run.usage.costUsd, 0);
103
+ }
104
+ return summary;
105
+ }
50
106
  /**
51
107
  * Create a summary from multiple run data.
52
108
  */
@@ -54,12 +110,14 @@ export function createEvalSummary(name, runData) {
54
110
  const runs = runData.map((r) => r.result);
55
111
  const passedRuns = runs.filter((r) => r.status === 'passed').length;
56
112
  const totalDuration = runs.reduce((sum, r) => sum + r.duration, 0);
113
+ const usage = summarizeUsage(runs);
57
114
  return {
58
115
  name,
59
116
  totalRuns: runs.length,
60
117
  passedRuns,
61
118
  passRate: runs.length > 0 ? (passedRuns / runs.length) * 100 : 0,
62
119
  meanDuration: runs.length > 0 ? totalDuration / runs.length : 0,
120
+ ...(usage ? { usage } : {}),
63
121
  runs: runData,
64
122
  };
65
123
  }
@@ -109,6 +167,10 @@ export function saveResults(results, options) {
109
167
  passRate: `${evalSummary.passRate.toFixed(0)}%`,
110
168
  meanDuration: evalSummary.meanDuration,
111
169
  };
170
+ const usage = summarizeUsage(evalSummary.runs.map((run) => run.result));
171
+ if (usage) {
172
+ summaryForFile.usage = usage;
173
+ }
112
174
  if (fingerprint) {
113
175
  summaryForFile.fingerprint = fingerprint;
114
176
  }
@@ -154,8 +216,11 @@ export function saveResults(results, options) {
154
216
  // Save raw transcript for debugging (transcript-raw.jsonl)
155
217
  writeFileSync(join(runDir, 'transcript-raw.jsonl'), runData.transcript);
156
218
  resultWithPaths.transcriptRawPath = './transcript-raw.jsonl';
157
- // Include summary in result.json for quick access
158
- resultWithPaths.o11y = transcript.summary;
219
+ // Include summary in result.json for quick access. Usage the agent
220
+ // reported directly (outside its transcript) wins, as in the result.
221
+ resultWithPaths.o11y = runData.result.usage
222
+ ? { ...transcript.summary, usage: runData.result.usage }
223
+ : transcript.summary;
159
224
  }
160
225
  // Save script/test outputs to outputs/
161
226
  const outputsDir = join(runDir, 'outputs');
@@ -205,6 +270,10 @@ export function saveResults(results, options) {
205
270
  // Remove deleted files from the copied project
206
271
  if (runData.deletedFiles) {
207
272
  for (const filePath of runData.deletedFiles) {
273
+ // Captured paths come from the agent's sandbox; never let one
274
+ // reach outside the project directory on this machine.
275
+ if (!isWorkspacePath(filePath))
276
+ continue;
208
277
  const fullPath = join(projectDir, filePath);
209
278
  if (existsSync(fullPath)) {
210
279
  unlinkSync(fullPath);
@@ -215,6 +284,8 @@ export function saveResults(results, options) {
215
284
  // Write generated files (overwrites originals in 'all' mode where paths match)
216
285
  if (runData.generatedFiles) {
217
286
  for (const [filePath, content] of Object.entries(runData.generatedFiles)) {
287
+ if (!isWorkspacePath(filePath))
288
+ continue;
218
289
  const fullPath = join(projectDir, filePath);
219
290
  mkdirSync(dirname(fullPath), { recursive: true });
220
291
  writeFileSync(fullPath, content);
@@ -1 +1 @@
1
- {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/lib/results.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/lib/results.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * 429 rate-limit errors are retried with exponential backoff.
5
5
  * With earlyExit, in-flight attempts are aborted when one passes.
6
6
  */
7
- import type { ResolvedExperimentConfig, EvalFixture, EvalRunData, ExperimentResults, RunnableExperimentConfig, ProgressEvent } from './types.js';
7
+ import type { ResolvedExperimentConfig, Classification, EvalFixture, EvalRunData, ExperimentResults, RunnableExperimentConfig, ProgressEvent, Reporter } from './types.js';
8
8
  /**
9
9
  * Rate-limits how many operations can START within a time window.
10
10
  * Once started, operations run freely with no concurrency limit.
@@ -50,6 +50,18 @@ export interface RunExperimentOptions {
50
50
  smoke?: boolean;
51
51
  /** Shared rate limiter to control how many sandbox runs start per time window */
52
52
  rateLimiter?: StartRateLimiter;
53
+ /** Reporters to call in addition to `config.reporters`. @default undefined */
54
+ reporters?: Reporter[];
55
+ /** Evals the caller skipped because a cached result was reused. Listed in the
56
+ * reporters' experiment event; they get no run events. @default undefined */
57
+ reusedEvals?: string[];
58
+ /**
59
+ * Optional step that runs after results are saved and before reporters'
60
+ * `onExperimentComplete`. Classifications it returns are included in the
61
+ * reporter event. The CLI uses this for failure classification, which can
62
+ * remove non-model failures from the results directory. @default undefined
63
+ */
64
+ classify?: (results: ExperimentResults, outputDir: string) => Promise<Map<string, Classification> | void>;
53
65
  }
54
66
  /**
55
67
  * Run an experiment - execute all evals with configured runs concurrently.
@@ -76,5 +88,8 @@ export declare function runSingleEval<T extends ResolvedExperimentConfig['model'
76
88
  webResearch?: ResolvedExperimentConfig['webResearch'];
77
89
  disableBundledSkills?: ResolvedExperimentConfig['disableBundledSkills'];
78
90
  judge?: ResolvedExperimentConfig['judge'];
91
+ agentEnv?: ResolvedExperimentConfig['agentEnv'];
92
+ verifier?: ResolvedExperimentConfig['verifier'];
93
+ protectedPaths?: ResolvedExperimentConfig['protectedPaths'];
79
94
  }): Promise<T extends Array<unknown> ? EvalRunData[] : EvalRunData>;
80
95
  //# sourceMappingURL=runner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,wBAAwB,EACxB,WAAW,EACX,WAAW,EAEX,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACd,MAAM,YAAY,CAAC;AASpB;;;;GAIG;AACH,qBAAa,gBAAgB;IAMzB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAN3B,OAAO,CAAC,KAAK,CAAsB;IACnC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,KAAK,CAA+C;gBAGzC,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM;IAGnC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC,OAAO,CAAC,WAAW;CAgBpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,wCAAwC;IACxC,MAAM,EAAE,wBAAwB,CAAC;IACjC,sBAAsB;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,wEAAwE;IACxE,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7C,oCAAoC;IACpC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,qCAAqC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAoBD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CAsQ5B;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,CAAC,SAAS,wBAAwB,CAAC,OAAO,CAAC,EAC7E,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE;IACP,KAAK,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC1C,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,wBAAwB,CAAC,YAAY,CAAC,CAAC;IACpD,OAAO,CAAC,EAAE,wBAAwB,CAAC,SAAS,CAAC,CAAC;IAC9C,YAAY,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACxD,WAAW,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACtD,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAAC;IACxD,WAAW,CAAC,EAAE,wBAAwB,CAAC,aAAa,CAAC,CAAC;IACtD,oBAAoB,CAAC,EAAE,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IACxE,KAAK,CAAC,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC;CAC3C,GACA,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC,CA8CjE"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/lib/runner.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,8 @@
4
4
  * 429 rate-limit errors are retried with exponential backoff.
5
5
  * With earlyExit, in-flight attempts are aborted when one passes.
6
6
  */
7
- import { assertRunRuntimeControls, getAgent } from './agents/index.js';
7
+ import { assertRunRuntimeControls, getAgent, runCredentials } from './agents/index.js';
8
+ import { formatReporterError, notifyExperimentComplete, notifyRunComplete, } from './reporters.js';
8
9
  import { agentResultToEvalRunData, createEvalSummary, createExperimentResults, saveResults, } from './results.js';
9
10
  /**
10
11
  * Rate-limits how many operations can START within a time window.
@@ -60,17 +61,40 @@ export class StartRateLimiter {
60
61
  export async function runExperiment(options) {
61
62
  const { config, fixtures, apiKey, resultsDir, experimentName, fingerprints, contentFingerprints, onProgress, smoke, rateLimiter } = options;
62
63
  const startedAt = new Date();
64
+ const reporters = [...(config.reporters ?? []), ...(options.reporters ?? [])];
63
65
  assertRunRuntimeControls(config.agent, {
64
66
  disableBundledSkills: config.disableBundledSkills,
65
67
  webResearch: config.webResearch,
66
68
  }, config.judge?.agent);
67
69
  // Get the agent from registry
68
70
  const agent = getAgent(config.agent);
71
+ // Transcript parser for reading token usage (falls back to the agent id, which
72
+ // is what saveResults parses transcripts with).
73
+ const o11yAgentName = agent.definition?.o11yAgentName ?? config.agent;
69
74
  const emit = (event) => {
70
75
  if (onProgress) {
71
76
  onProgress(event);
72
77
  }
73
78
  };
79
+ // Reporter payloads are redacted with the same credentials the agent's own
80
+ // result is (the codegen key and a pinned judge's key).
81
+ const reporterSecrets = reporters.length > 0 ? reporterCredentials(agent, config, apiKey) : [];
82
+ const onReporterFailure = (failure) => {
83
+ const event = {
84
+ type: 'reporter:error',
85
+ reporter: failure.reporter,
86
+ hook: failure.hook,
87
+ error: failure.error,
88
+ ...(failure.evalName !== undefined ? { evalName: failure.evalName } : {}),
89
+ ...(failure.runIndex !== undefined ? { runNumber: failure.runIndex + 1 } : {}),
90
+ };
91
+ // Never swallow a reporter failure silently: without a progress handler,
92
+ // log it directly.
93
+ if (onProgress)
94
+ emit(event);
95
+ else
96
+ console.warn(formatReporterError(event));
97
+ };
74
98
  // Create AbortController per fixture for earlyExit
75
99
  const abortControllers = new Map();
76
100
  for (const fixture of fixtures) {
@@ -128,6 +152,9 @@ export async function runExperiment(options) {
128
152
  webResearch: config.webResearch,
129
153
  disableBundledSkills: config.disableBundledSkills,
130
154
  judge: config.judge,
155
+ agentEnv: config.agentEnv,
156
+ verifier: config.verifier,
157
+ protectedPaths: config.protectedPaths,
131
158
  }),
132
159
  new Promise((_, reject) => {
133
160
  timeoutId = setTimeout(() => {
@@ -161,7 +188,7 @@ export async function runExperiment(options) {
161
188
  aborted: true,
162
189
  };
163
190
  }
164
- let runData = agentResultToEvalRunData(agentResult);
191
+ let runData = agentResultToEvalRunData(agentResult, { o11yAgentName });
165
192
  if (config.onRunComplete) {
166
193
  try {
167
194
  const updatedRunData = await config.onRunComplete({
@@ -226,6 +253,23 @@ export async function runExperiment(options) {
226
253
  emit({ type: 'experiment:earlyExit', evalName: attempt.fixture.name, runNumber: attempt.runIndex + 1 });
227
254
  abortControllers.get(attempt.fixture.name).abort();
228
255
  }
256
+ // Reporters see the final attempt only (after any retry) and the result
257
+ // after the user's onRunComplete hook, which ran inside runAttempt.
258
+ if (reporters.length > 0) {
259
+ const fingerprint = fingerprints?.[attempt.fixture.name];
260
+ const contentFingerprint = contentFingerprints?.[attempt.fixture.name];
261
+ await notifyRunComplete(reporters, {
262
+ schemaVersion: 1,
263
+ experimentName,
264
+ evalName: attempt.fixture.name,
265
+ runIndex: attempt.runIndex,
266
+ agent: config.agent,
267
+ model: config.model,
268
+ result: result.runData.result,
269
+ ...(fingerprint ? { fingerprint } : {}),
270
+ ...(contentFingerprint ? { contentFingerprint } : {}),
271
+ }, { secrets: reporterSecrets, onFailure: onReporterFailure });
272
+ }
229
273
  }
230
274
  return result;
231
275
  };
@@ -274,8 +318,42 @@ export async function runExperiment(options) {
274
318
  });
275
319
  emit({ type: 'experiment:saved', outputDir });
276
320
  emit({ type: 'experiment:summary', results: experimentResults });
321
+ const classifications = options.classify
322
+ ? await options.classify(experimentResults, outputDir)
323
+ : undefined;
324
+ if (reporters.length > 0) {
325
+ await notifyExperimentComplete(reporters, {
326
+ schemaVersion: 1,
327
+ experimentName,
328
+ outputDir,
329
+ results: experimentResults,
330
+ reused: [...(options.reusedEvals ?? [])],
331
+ ...(classifications ? { classifications: Object.fromEntries(classifications) } : {}),
332
+ }, { secrets: reporterSecrets, onFailure: onReporterFailure });
333
+ }
277
334
  return experimentResults;
278
335
  }
336
+ /** The credentials a run of this experiment injects, for redacting reporter payloads. */
337
+ function reporterCredentials(agent, config, apiKey) {
338
+ // Without a definition there is no judge to resolve; the codegen key and the
339
+ // agentEnv values are still known.
340
+ if (!agent.definition)
341
+ return [apiKey, ...Object.values(config.agentEnv ?? {})];
342
+ const modelPolicy = config.modelPolicy ?? 'agent-default';
343
+ const options = {
344
+ prompt: '',
345
+ model: modelPolicy === 'native-default' ? undefined : config.model,
346
+ modelPolicy,
347
+ timeout: config.timeout * 1000,
348
+ apiKey,
349
+ agentOptions: config.agentOptions,
350
+ webResearch: config.webResearch,
351
+ disableBundledSkills: config.disableBundledSkills,
352
+ judge: config.judge,
353
+ agentEnv: config.agentEnv,
354
+ };
355
+ return runCredentials(agent.definition, options);
356
+ }
279
357
  /**
280
358
  * Run a single eval (for testing/debugging).
281
359
  */
@@ -286,6 +364,7 @@ export async function runSingleEval(fixture, options) {
286
364
  webResearch: options.webResearch,
287
365
  }, options.judge?.agent);
288
366
  const agent = getAgent(agentName);
367
+ const o11yAgentName = agent.definition?.o11yAgentName ?? agentName;
289
368
  const models = Array.isArray(options.model) ? options.model : [options.model];
290
369
  const prompt = options.editPrompt ? options.editPrompt(fixture.prompt) : fixture.prompt;
291
370
  const results = [];
@@ -306,8 +385,11 @@ export async function runSingleEval(fixture, options) {
306
385
  webResearch: options.webResearch,
307
386
  disableBundledSkills: options.disableBundledSkills,
308
387
  judge: options.judge,
388
+ agentEnv: options.agentEnv,
389
+ verifier: options.verifier,
390
+ protectedPaths: options.protectedPaths,
309
391
  });
310
- results.push(agentResultToEvalRunData(agentResult));
392
+ results.push(agentResultToEvalRunData(agentResult, { o11yAgentName }));
311
393
  }
312
394
  // TODO: remove this on the next major and return an array directly...it's just here to prevent breaking changes
313
395
  if (!Array.isArray(options.model)) {