@vercel/agent-eval 2.4.1 → 2.6.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 (132) 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 +4 -0
  26. package/dist/lib/agents/index.js.map +1 -1
  27. package/dist/lib/agents/opencode/agent.d.ts.map +1 -1
  28. package/dist/lib/agents/opencode/agent.js +6 -0
  29. package/dist/lib/agents/opencode/agent.js.map +1 -1
  30. package/dist/lib/agents/pi-coding-agent/agent.d.ts +61 -0
  31. package/dist/lib/agents/pi-coding-agent/agent.d.ts.map +1 -0
  32. package/dist/lib/agents/pi-coding-agent/agent.js +127 -0
  33. package/dist/lib/agents/pi-coding-agent/agent.js.map +1 -0
  34. package/dist/lib/agents/pi-coding-agent/run.mjs +278 -0
  35. package/dist/lib/agents/plugin/contract.d.ts +40 -0
  36. package/dist/lib/agents/plugin/contract.d.ts.map +1 -1
  37. package/dist/lib/agents/plugin/contract.js.map +1 -1
  38. package/dist/lib/agents/plugin/orchestrator.d.ts +19 -0
  39. package/dist/lib/agents/plugin/orchestrator.d.ts.map +1 -1
  40. package/dist/lib/agents/plugin/orchestrator.js +269 -53
  41. package/dist/lib/agents/plugin/orchestrator.js.map +1 -1
  42. package/dist/lib/agents/redact.d.ts +34 -3
  43. package/dist/lib/agents/redact.d.ts.map +1 -1
  44. package/dist/lib/agents/redact.js +148 -35
  45. package/dist/lib/agents/redact.js.map +1 -1
  46. package/dist/lib/agents/shared.d.ts +24 -1
  47. package/dist/lib/agents/shared.d.ts.map +1 -1
  48. package/dist/lib/agents/shared.js +48 -13
  49. package/dist/lib/agents/shared.js.map +1 -1
  50. package/dist/lib/agents/types.d.ts +24 -1
  51. package/dist/lib/agents/types.d.ts.map +1 -1
  52. package/dist/lib/agents/verifier.d.ts +96 -0
  53. package/dist/lib/agents/verifier.d.ts.map +1 -0
  54. package/dist/lib/agents/verifier.js +176 -0
  55. package/dist/lib/agents/verifier.js.map +1 -0
  56. package/dist/lib/config.d.ts.map +1 -1
  57. package/dist/lib/config.js +24 -0
  58. package/dist/lib/config.js.map +1 -1
  59. package/dist/lib/dashboard.d.ts +3 -1
  60. package/dist/lib/dashboard.d.ts.map +1 -1
  61. package/dist/lib/dashboard.js +12 -1
  62. package/dist/lib/dashboard.js.map +1 -1
  63. package/dist/lib/docker-sandbox.d.ts +9 -0
  64. package/dist/lib/docker-sandbox.d.ts.map +1 -1
  65. package/dist/lib/docker-sandbox.js +15 -0
  66. package/dist/lib/docker-sandbox.js.map +1 -1
  67. package/dist/lib/fingerprint.d.ts +3 -0
  68. package/dist/lib/fingerprint.d.ts.map +1 -1
  69. package/dist/lib/fingerprint.js +34 -0
  70. package/dist/lib/fingerprint.js.map +1 -1
  71. package/dist/lib/o11y/index.d.ts +3 -2
  72. package/dist/lib/o11y/index.d.ts.map +1 -1
  73. package/dist/lib/o11y/index.js +2 -1
  74. package/dist/lib/o11y/index.js.map +1 -1
  75. package/dist/lib/o11y/parsers/claude-code.d.ts +19 -1
  76. package/dist/lib/o11y/parsers/claude-code.d.ts.map +1 -1
  77. package/dist/lib/o11y/parsers/claude-code.js +72 -1
  78. package/dist/lib/o11y/parsers/claude-code.js.map +1 -1
  79. package/dist/lib/o11y/parsers/codex.d.ts +13 -1
  80. package/dist/lib/o11y/parsers/codex.d.ts.map +1 -1
  81. package/dist/lib/o11y/parsers/codex.js +68 -1
  82. package/dist/lib/o11y/parsers/codex.js.map +1 -1
  83. package/dist/lib/o11y/parsers/fx.d.ts +2 -1
  84. package/dist/lib/o11y/parsers/fx.d.ts.map +1 -1
  85. package/dist/lib/o11y/parsers/fx.js +21 -1
  86. package/dist/lib/o11y/parsers/fx.js.map +1 -1
  87. package/dist/lib/o11y/parsers/gemini.d.ts +13 -1
  88. package/dist/lib/o11y/parsers/gemini.d.ts.map +1 -1
  89. package/dist/lib/o11y/parsers/gemini.js +35 -1
  90. package/dist/lib/o11y/parsers/gemini.js.map +1 -1
  91. package/dist/lib/o11y/parsers/index.d.ts +9 -2
  92. package/dist/lib/o11y/parsers/index.d.ts.map +1 -1
  93. package/dist/lib/o11y/parsers/index.js +15 -1
  94. package/dist/lib/o11y/parsers/index.js.map +1 -1
  95. package/dist/lib/o11y/parsers/opencode.d.ts +17 -1
  96. package/dist/lib/o11y/parsers/opencode.d.ts.map +1 -1
  97. package/dist/lib/o11y/parsers/opencode.js +47 -4
  98. package/dist/lib/o11y/parsers/opencode.js.map +1 -1
  99. package/dist/lib/o11y/parsers/pi-coding-agent.d.ts +22 -0
  100. package/dist/lib/o11y/parsers/pi-coding-agent.d.ts.map +1 -0
  101. package/dist/lib/o11y/parsers/pi-coding-agent.js +217 -0
  102. package/dist/lib/o11y/parsers/pi-coding-agent.js.map +1 -0
  103. package/dist/lib/o11y/types.d.ts +30 -0
  104. package/dist/lib/o11y/types.d.ts.map +1 -1
  105. package/dist/lib/o11y/usage.d.ts +27 -0
  106. package/dist/lib/o11y/usage.d.ts.map +1 -0
  107. package/dist/lib/o11y/usage.js +75 -0
  108. package/dist/lib/o11y/usage.js.map +1 -0
  109. package/dist/lib/reporters.d.ts +101 -0
  110. package/dist/lib/reporters.d.ts.map +1 -0
  111. package/dist/lib/reporters.js +176 -0
  112. package/dist/lib/reporters.js.map +1 -0
  113. package/dist/lib/results.d.ts +15 -2
  114. package/dist/lib/results.d.ts.map +1 -1
  115. package/dist/lib/results.js +75 -4
  116. package/dist/lib/results.js.map +1 -1
  117. package/dist/lib/runner.d.ts +16 -1
  118. package/dist/lib/runner.d.ts.map +1 -1
  119. package/dist/lib/runner.js +85 -3
  120. package/dist/lib/runner.js.map +1 -1
  121. package/dist/lib/sandbox.d.ts +9 -0
  122. package/dist/lib/sandbox.d.ts.map +1 -1
  123. package/dist/lib/sandbox.js +14 -1
  124. package/dist/lib/sandbox.js.map +1 -1
  125. package/dist/lib/types.d.ts +185 -1
  126. package/dist/lib/types.d.ts.map +1 -1
  127. package/dist/lib/types.js.map +1 -1
  128. package/dist/lib/version.d.ts +7 -0
  129. package/dist/lib/version.d.ts.map +1 -0
  130. package/dist/lib/version.js +8 -0
  131. package/dist/lib/version.js.map +1 -0
  132. package/package.json +1 -1
@@ -23,10 +23,30 @@
23
23
  * JWT prefix match flags). The tradeoff is that a credential the framework never
24
24
  * saw is not covered: if a run refreshes its own token mid-flight, only the value
25
25
  * we started with is redacted.
26
+ *
27
+ * "Exact" includes the forms a JSON encoder gives the value. Transcripts are
28
+ * JSON: a credential containing a quote, a backslash, a newline, or non-ASCII
29
+ * text appears escaped there (`a\"b`, `line1\nline2`, `\u00e9`), and a literal
30
+ * match on the raw value would miss it while anyone could decode it back. See
31
+ * {@link encodedForms}.
26
32
  */
27
33
  import type { AgentRunResult } from './types.js';
28
34
  export declare const REDACTED = "[REDACTED]";
29
- /** Replace every occurrence of each secret with {@link REDACTED}. */
35
+ /**
36
+ * The text a secret can turn into inside JSON output: as written, escaped once
37
+ * by the encoders the agent CLIs and common tools use, and escaped twice (JSON
38
+ * inside a JSON string, such as a tool's JSON output recorded in a JSONL
39
+ * transcript).
40
+ *
41
+ * Encoders agree on quotes, backslashes, and control characters but differ on
42
+ * the rest, so each style is covered: plain (JavaScript, Rust), ASCII-only with
43
+ * `\u` escapes for every non-ASCII character (Python's default), HTML-safe
44
+ * `<`, `>`, `&`, U+2028, and U+2029 (Go's default), and escaped slashes. Hex
45
+ * digits appear in both cases. A secret made only of characters no encoder
46
+ * escapes has a single form: itself.
47
+ */
48
+ export declare function encodedForms(secret: string): string[];
49
+ /** Replace every occurrence of each secret, in any of its {@link encodedForms}, with {@link REDACTED}. */
30
50
  export declare function redactSecrets(text: string, secrets: readonly (string | undefined)[]): string;
31
51
  /**
32
52
  * Buffer-level equivalent of {@link redactSecrets}.
@@ -37,8 +57,8 @@ export declare function redactSecrets(text: string, secrets: readonly (string |
37
57
  * exactly the files byte-fidelity exists to protect. Passing a Buffer to
38
58
  * {@link redactSecrets} is worse still — Buffer has no `split`, so it throws.
39
59
  *
40
- * Credentials are ASCII, so their UTF-8 byte sequence is located and spliced out
41
- * directly and every other byte is copied through untouched.
60
+ * Each secret form's UTF-8 byte sequence is located and spliced out directly,
61
+ * and every other byte is copied through untouched.
42
62
  */
43
63
  export declare function redactSecretsBuffer(content: Buffer, secrets: readonly (string | undefined)[]): Buffer;
44
64
  /**
@@ -52,4 +72,15 @@ export declare function redactSecretsBuffer(content: Buffer, secrets: readonly (
52
72
  * model names, deleted-file paths — are passed through untouched.
53
73
  */
54
74
  export declare function redactRunResult(result: AgentRunResult, secrets: readonly (string | undefined)[]): AgentRunResult;
75
+ /**
76
+ * Redact every string (and Buffer) inside an arbitrary value. Used for payloads
77
+ * that leave the run as plain data, such as reporter events, where the value
78
+ * carries user-attached fields (`analysis`, `metadata`) that
79
+ * {@link redactRunResult} never saw.
80
+ *
81
+ * Returns a copy: arrays and plain objects are rebuilt, strings and Buffers are
82
+ * redacted, and everything else (numbers, functions, class instances such as
83
+ * Date) is passed through by reference. The input is not mutated.
84
+ */
85
+ export declare function redactValue<T>(value: T, secrets: readonly (string | undefined)[]): T;
55
86
  //# sourceMappingURL=redact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,QAAQ,eAAe,CAAC;AAmBrC,qEAAqE;AACrE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,MAAM,CAQR;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,MAAM,CAoBR;AASD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,cAAc,CAmChB"}
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,QAAQ,eAAe,CAAC;AA0CrC;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrD;AA+CD,0GAA0G;AAC1G,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,MAAM,CAER;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,MAAM,CAER;AAMD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GACvC,cAAc,CAoChB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,CAAC,CA4BpF"}
@@ -6,42 +6,93 @@ export const REDACTED = '[REDACTED]';
6
6
  * replace every empty string in the output.
7
7
  */
8
8
  const MIN_SECRET_LENGTH = 16;
9
- /** Usable secrets, deduped and ordered longest-first so overlaps redact whole. */
10
- function usableSecrets(secrets) {
11
- const seen = new Set();
12
- for (const s of secrets) {
13
- if (s && s.length >= MIN_SECRET_LENGTH)
14
- seen.add(s);
9
+ /** Escape one UTF-16 code unit as `\uXXXX`. */
10
+ function unicodeEscape(code, upper) {
11
+ const hex = code.toString(16).padStart(4, '0');
12
+ return `\\u${upper ? hex.toUpperCase() : hex}`;
13
+ }
14
+ const SHORT_ESCAPES = {
15
+ '"': '\\"',
16
+ '\\': '\\\\',
17
+ '\n': '\\n',
18
+ '\r': '\\r',
19
+ '\t': '\\t',
20
+ '\b': '\\b',
21
+ '\f': '\\f',
22
+ };
23
+ /**
24
+ * JSON string escaping with configurable `\uXXXX` coverage: control
25
+ * characters always, plus whatever `escapeAlso` selects.
26
+ */
27
+ function escapeJson(text, escapeAlso, upper) {
28
+ let out = '';
29
+ for (let i = 0; i < text.length; i++) {
30
+ const char = text[i];
31
+ const code = text.charCodeAt(i);
32
+ if (SHORT_ESCAPES[char])
33
+ out += SHORT_ESCAPES[char];
34
+ else if (code < 0x20 || escapeAlso(code))
35
+ out += unicodeEscape(code, upper);
36
+ else
37
+ out += char;
15
38
  }
16
- return [...seen].sort((a, b) => b.length - a.length);
39
+ return out;
17
40
  }
18
- /** Replace every occurrence of each secret with {@link REDACTED}. */
19
- export function redactSecrets(text, secrets) {
41
+ /**
42
+ * The text a secret can turn into inside JSON output: as written, escaped once
43
+ * by the encoders the agent CLIs and common tools use, and escaped twice (JSON
44
+ * inside a JSON string, such as a tool's JSON output recorded in a JSONL
45
+ * transcript).
46
+ *
47
+ * Encoders agree on quotes, backslashes, and control characters but differ on
48
+ * the rest, so each style is covered: plain (JavaScript, Rust), ASCII-only with
49
+ * `\u` escapes for every non-ASCII character (Python's default), HTML-safe
50
+ * `<`, `>`, `&`, U+2028, and U+2029 (Go's default), and escaped slashes. Hex
51
+ * digits appear in both cases. A secret made only of characters no encoder
52
+ * escapes has a single form: itself.
53
+ */
54
+ export function encodedForms(secret) {
55
+ const htmlUnsafe = (code) => code === 0x3c || code === 0x3e || code === 0x26 || code === 0x2028 || code === 0x2029;
56
+ const nonAscii = (code) => code > 0x7f;
57
+ const plain = JSON.stringify(secret).slice(1, -1);
58
+ const once = new Set([plain, plain.replace(/\//g, '\\/')]);
59
+ for (const upper of [false, true]) {
60
+ once.add(escapeJson(secret, nonAscii, upper));
61
+ once.add(escapeJson(secret, htmlUnsafe, upper));
62
+ }
63
+ const forms = new Set([secret, ...once]);
64
+ for (const form of once)
65
+ forms.add(JSON.stringify(form).slice(1, -1));
66
+ return [...forms];
67
+ }
68
+ /**
69
+ * Every string to replace for these secrets: each usable secret in all of its
70
+ * encoded forms, deduped and ordered longest-first so overlaps redact whole.
71
+ */
72
+ function redactionNeedles(secrets) {
73
+ const needles = new Set();
74
+ for (const secret of secrets) {
75
+ if (!secret || secret.length < MIN_SECRET_LENGTH)
76
+ continue;
77
+ for (const form of encodedForms(secret))
78
+ needles.add(form);
79
+ }
80
+ return [...needles].sort((a, b) => b.length - a.length);
81
+ }
82
+ function replaceText(text, needles) {
20
83
  let out = text;
21
- for (const secret of usableSecrets(secrets)) {
84
+ for (const needle of needles) {
22
85
  // split/join rather than RegExp: the secret is arbitrary text and must not be
23
86
  // interpreted as a pattern.
24
- out = out.split(secret).join(REDACTED);
87
+ out = out.split(needle).join(REDACTED);
25
88
  }
26
89
  return out;
27
90
  }
28
91
  const REDACTED_BYTES = Buffer.from(REDACTED, 'utf-8');
29
- /**
30
- * Buffer-level equivalent of {@link redactSecrets}.
31
- *
32
- * `generatedFiles` holds raw bytes so that binary assets survive collection
33
- * intact. Redaction therefore cannot route through a string: decoding to UTF-8
34
- * and re-encoding replaces every non-UTF-8 byte with U+FFFD, which would corrupt
35
- * exactly the files byte-fidelity exists to protect. Passing a Buffer to
36
- * {@link redactSecrets} is worse still — Buffer has no `split`, so it throws.
37
- *
38
- * Credentials are ASCII, so their UTF-8 byte sequence is located and spliced out
39
- * directly and every other byte is copied through untouched.
40
- */
41
- export function redactSecretsBuffer(content, secrets) {
92
+ function replaceBuffer(content, needles) {
42
93
  let out = content;
43
- for (const secret of usableSecrets(secrets)) {
44
- const needle = Buffer.from(secret, 'utf-8');
94
+ for (const text of needles) {
95
+ const needle = Buffer.from(text, 'utf-8');
45
96
  let found = out.indexOf(needle);
46
97
  if (found === -1)
47
98
  continue;
@@ -57,8 +108,27 @@ export function redactSecretsBuffer(content, secrets) {
57
108
  }
58
109
  return out;
59
110
  }
60
- function redactScriptResult(result, secrets) {
61
- return { ...result, output: redactSecrets(result.output, secrets) };
111
+ /** Replace every occurrence of each secret, in any of its {@link encodedForms}, with {@link REDACTED}. */
112
+ export function redactSecrets(text, secrets) {
113
+ return replaceText(text, redactionNeedles(secrets));
114
+ }
115
+ /**
116
+ * Buffer-level equivalent of {@link redactSecrets}.
117
+ *
118
+ * `generatedFiles` holds raw bytes so that binary assets survive collection
119
+ * intact. Redaction therefore cannot route through a string: decoding to UTF-8
120
+ * and re-encoding replaces every non-UTF-8 byte with U+FFFD, which would corrupt
121
+ * exactly the files byte-fidelity exists to protect. Passing a Buffer to
122
+ * {@link redactSecrets} is worse still — Buffer has no `split`, so it throws.
123
+ *
124
+ * Each secret form's UTF-8 byte sequence is located and spliced out directly,
125
+ * and every other byte is copied through untouched.
126
+ */
127
+ export function redactSecretsBuffer(content, secrets) {
128
+ return replaceBuffer(content, redactionNeedles(secrets));
129
+ }
130
+ function redactScriptResult(result, needles) {
131
+ return { ...result, output: replaceText(result.output, needles) };
62
132
  }
63
133
  /**
64
134
  * Redact every text-bearing field of a run result. Returns a new object; the
@@ -71,33 +141,76 @@ function redactScriptResult(result, secrets) {
71
141
  * model names, deleted-file paths — are passed through untouched.
72
142
  */
73
143
  export function redactRunResult(result, secrets) {
74
- if (usableSecrets(secrets).length === 0)
144
+ const needles = redactionNeedles(secrets);
145
+ if (needles.length === 0)
75
146
  return result;
76
147
  const redacted = {
77
148
  ...result,
78
- output: redactSecrets(result.output, secrets),
149
+ output: replaceText(result.output, needles),
79
150
  };
80
151
  if (result.transcript !== undefined) {
81
- redacted.transcript = redactSecrets(result.transcript, secrets);
152
+ redacted.transcript = replaceText(result.transcript, needles);
82
153
  }
83
154
  if (result.error !== undefined) {
84
- redacted.error = redactSecrets(result.error, secrets);
155
+ redacted.error = replaceText(result.error, needles);
85
156
  }
86
157
  if (result.testResult) {
87
- redacted.testResult = redactScriptResult(result.testResult, secrets);
158
+ redacted.testResult = redactScriptResult(result.testResult, needles);
88
159
  }
89
160
  if (result.scriptsResults) {
90
161
  redacted.scriptsResults = Object.fromEntries(Object.entries(result.scriptsResults).map(([name, script]) => [
91
162
  name,
92
- redactScriptResult(script, secrets),
163
+ redactScriptResult(script, needles),
93
164
  ]));
94
165
  }
95
166
  if (result.generatedFiles) {
96
167
  redacted.generatedFiles = Object.fromEntries(Object.entries(result.generatedFiles).map(([path, content]) => [
97
168
  path,
98
- redactSecretsBuffer(content, secrets),
169
+ replaceBuffer(content, needles),
99
170
  ]));
100
171
  }
101
172
  return redacted;
102
173
  }
174
+ /**
175
+ * Redact every string (and Buffer) inside an arbitrary value. Used for payloads
176
+ * that leave the run as plain data, such as reporter events, where the value
177
+ * carries user-attached fields (`analysis`, `metadata`) that
178
+ * {@link redactRunResult} never saw.
179
+ *
180
+ * Returns a copy: arrays and plain objects are rebuilt, strings and Buffers are
181
+ * redacted, and everything else (numbers, functions, class instances such as
182
+ * Date) is passed through by reference. The input is not mutated.
183
+ */
184
+ export function redactValue(value, secrets) {
185
+ const needles = redactionNeedles(secrets);
186
+ if (needles.length === 0)
187
+ return value;
188
+ const copies = new Map();
189
+ const visit = (current) => {
190
+ if (typeof current === 'string')
191
+ return replaceText(current, needles);
192
+ if (Buffer.isBuffer(current))
193
+ return replaceBuffer(current, needles);
194
+ if (current === null || typeof current !== 'object')
195
+ return current;
196
+ if (copies.has(current))
197
+ return copies.get(current);
198
+ if (Array.isArray(current)) {
199
+ const copy = [];
200
+ copies.set(current, copy);
201
+ for (const item of current)
202
+ copy.push(visit(item));
203
+ return copy;
204
+ }
205
+ const prototype = Object.getPrototypeOf(current);
206
+ if (prototype !== Object.prototype && prototype !== null)
207
+ return current;
208
+ const copy = {};
209
+ copies.set(current, copy);
210
+ for (const [key, item] of Object.entries(current))
211
+ copy[key] = visit(item);
212
+ return copy;
213
+ };
214
+ return visit(value);
215
+ }
103
216
  //# sourceMappingURL=redact.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/lib/agents/redact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/lib/agents/redact.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  import type { ScriptResult } from './types.js';
5
5
  import type { SandboxManager } from '../sandbox.js';
6
6
  import type { DockerSandboxManager } from '../docker-sandbox.js';
7
+ import { type TokenUsage } from '../o11y/index.js';
7
8
  import type { ValidationMode } from '../types.js';
8
9
  /** Union type for sandbox implementations */
9
10
  type AnySandbox = SandboxManager | DockerSandboxManager;
@@ -75,11 +76,29 @@ export declare function ensureValidationRunner(sandbox: AnySandbox): Promise<voi
75
76
  * Run validation scripts in the sandbox.
76
77
  */
77
78
  export declare function runValidation(sandbox: AnySandbox, scripts: string[], validation?: ValidationMode, env?: Record<string, string>): Promise<ValidationResults>;
79
+ /**
80
+ * Identity variables set on the agent and validation processes so the agent
81
+ * sees a generic user rather than the sandbox's own account name.
82
+ */
83
+ export declare const NEUTRAL_WORKSPACE_ENV: Readonly<Record<string, string>>;
78
84
  export declare function prepareNeutralWorkspace(sandbox: AnySandbox): Promise<NeutralWorkspace>;
79
85
  export declare function initGitAndCommit(sandbox: AnySandbox): Promise<void>;
86
+ /**
87
+ * Whether `path` is a canonical path inside the workspace, the only kind git
88
+ * prints for a tracked file: relative, with no `.` or `..` segments, no empty
89
+ * segments, no trailing slash, and nothing inside a `.git` directory.
90
+ *
91
+ * Diff capture runs git in the agent's sandbox, where the agent can put its own
92
+ * `git` first on PATH. Every path it reports is therefore untrusted input, and
93
+ * anything that fails this check is dropped before it is read, written, or
94
+ * deleted anywhere: `../` could otherwise reach outside a results directory on
95
+ * the host, and an alias like `./EVAL.ts` could slip past a glob.
96
+ */
97
+ export declare function isWorkspacePath(path: string): boolean;
80
98
  /**
81
99
  * Capture source files generated by the agent.
82
100
  * Returns both modified/added files (with content) and deleted file paths.
101
+ * Paths that aren't canonical workspace paths are dropped (see {@link isWorkspacePath}).
83
102
  */
84
103
  export declare function captureGeneratedFiles(sandbox: AnySandbox): Promise<{
85
104
  generatedFiles: Record<string, Buffer>;
@@ -93,9 +112,13 @@ export declare function createVitestConfig(sandbox: AnySandbox): Promise<void>;
93
112
  * Inject transcript context into the sandbox so EVAL.ts tests can assert on agent behavior.
94
113
  * Writes parsed transcript summary to `__agent_eval__/results.json`.
95
114
  *
115
+ * `usage` is token usage the agent reported outside its transcript. It takes
116
+ * precedence over the transcript's own usage, the same order the run's result
117
+ * uses, so EVAL.ts and result.json agree.
118
+ *
96
119
  * This is best-effort: failures are silently ignored since it's supplementary data.
97
120
  */
98
- export declare function injectTranscriptContext(sandbox: AnySandbox, rawTranscript: string | undefined, agentName: string, model?: string): Promise<void>;
121
+ export declare function injectTranscriptContext(sandbox: AnySandbox, rawTranscript: string | undefined, agentName: string, model?: string, usage?: TokenUsage): Promise<void>;
99
122
  /**
100
123
  * AI Gateway configuration.
101
124
  */
@@ -1 +1 @@
1
- {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/shared.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,6CAA6C;AAC7C,KAAK,UAAU,GAAG,cAAc,GAAG,oBAAoB,CAAC;AAExD;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AAEvD,mDAAmD;AACnD,eAAO,MAAM,uBAAuB,gCAA2C,CAAC;AAMhF,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,mCAA8C,CAAC;AAE5E,oFAAoF;AACpF,eAAO,MAAM,qBAAqB,kCAA6C,CAAC;AAEhF,6EAA6E;AAC7E,eAAO,MAAM,iBAAiB,qCAAgD,CAAC;AAE/E;oFACoF;AACpF,eAAO,MAAM,iBAAiB,iCAA4C,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,MAAM,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpF;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7B;AAgCD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAc/E;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EAAE,EACjB,UAAU,GAAE,cAAyB,EAIrC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC3B,OAAO,CAAC,iBAAiB,CAAC,CAwC5B;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA0B5F;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzE;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,UAAU,GAClB,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,YAAY,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAuC7E;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B3E;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,UAAU,EACnB,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CAgBf;AAED;;GAEG;AACH,eAAO,MAAM,UAAU;;;;CAIb,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;CAEnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;;CAEhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa;;CAEhB,CAAC"}
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/shared.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Shared utilities for agent implementations.
3
3
  */
4
+ import { posix } from 'node:path';
4
5
  import { parseTranscript } from '../o11y/index.js';
5
6
  /**
6
7
  * Well-known directory where transcript context is written inside the sandbox.
@@ -140,8 +141,16 @@ env) {
140
141
  }
141
142
  return results;
142
143
  }
144
+ /**
145
+ * Identity variables set on the agent and validation processes so the agent
146
+ * sees a generic user rather than the sandbox's own account name.
147
+ */
148
+ export const NEUTRAL_WORKSPACE_ENV = Object.freeze({
149
+ USER: 'user',
150
+ LOGNAME: 'user',
151
+ });
143
152
  export async function prepareNeutralWorkspace(sandbox) {
144
- const neutralEnv = { USER: 'user', LOGNAME: 'user' };
153
+ const neutralEnv = { ...NEUTRAL_WORKSPACE_ENV };
145
154
  const currentWorkingDirectory = sandbox.getWorkingDirectory();
146
155
  await sandbox.runShell('git remote remove origin 2>/dev/null || true; rm -rf .git/logs');
147
156
  if (!currentWorkingDirectory.includes('/vercel/')) {
@@ -171,24 +180,46 @@ export async function initGitAndCommit(sandbox) {
171
180
  // the generated files
172
181
  await sandbox.runShell('git init && git config user.email "agent-eval@localhost" && git config user.name "agent-eval" && git add . && git commit -m "init"');
173
182
  }
183
+ /**
184
+ * Whether `path` is a canonical path inside the workspace, the only kind git
185
+ * prints for a tracked file: relative, with no `.` or `..` segments, no empty
186
+ * segments, no trailing slash, and nothing inside a `.git` directory.
187
+ *
188
+ * Diff capture runs git in the agent's sandbox, where the agent can put its own
189
+ * `git` first on PATH. Every path it reports is therefore untrusted input, and
190
+ * anything that fails this check is dropped before it is read, written, or
191
+ * deleted anywhere: `../` could otherwise reach outside a results directory on
192
+ * the host, and an alias like `./EVAL.ts` could slip past a glob.
193
+ */
194
+ export function isWorkspacePath(path) {
195
+ if (!path || path.includes('\0') || path.startsWith('/'))
196
+ return false;
197
+ if (posix.normalize(path) !== path)
198
+ return false;
199
+ return path.split('/').every((segment) => segment !== '' && segment !== '.' && segment !== '..' && segment !== '.git');
200
+ }
174
201
  /**
175
202
  * Capture source files generated by the agent.
176
203
  * Returns both modified/added files (with content) and deleted file paths.
204
+ * Paths that aren't canonical workspace paths are dropped (see {@link isWorkspacePath}).
177
205
  */
178
206
  export async function captureGeneratedFiles(sandbox) {
179
207
  const generatedFiles = {};
180
208
  const deletedFiles = [];
181
209
  try {
182
- // Use --name-status to distinguish added/modified from deleted
183
- const findResult = await sandbox.runShell("git add . && git diff HEAD --name-status");
184
- const lines = findResult.stdout
185
- .trim()
186
- .split('\n')
187
- .filter(Boolean);
188
- for (const line of lines) {
189
- const [status, ...rest] = line.split('\t');
190
- const filePath = rest.join('\t');
191
- if (!filePath)
210
+ // --name-status distinguishes added/modified from deleted. --no-renames is
211
+ // needed because `git diff` detects renames by default and reports a moved
212
+ // file as one `R<score>\t<old>\t<new>` entry, which would lose both the old
213
+ // path's deletion and the new path's content. -z keeps paths verbatim:
214
+ // without it, git C-quotes paths containing quotes, backslashes, control
215
+ // characters, or non-ASCII bytes, and the quoted form can't be read back.
216
+ const findResult = await sandbox.runShell('git add . && git diff HEAD --name-status --no-renames -z');
217
+ // Records are "<status>\0<path>\0".
218
+ const fields = findResult.stdout.split('\0');
219
+ for (let i = 0; i + 1 < fields.length; i += 2) {
220
+ const status = fields[i].trim();
221
+ const filePath = fields[i + 1];
222
+ if (!isWorkspacePath(filePath))
192
223
  continue;
193
224
  if (status === 'D') {
194
225
  deletedFiles.push(filePath);
@@ -247,15 +278,19 @@ export default defineConfig({
247
278
  * Inject transcript context into the sandbox so EVAL.ts tests can assert on agent behavior.
248
279
  * Writes parsed transcript summary to `__agent_eval__/results.json`.
249
280
  *
281
+ * `usage` is token usage the agent reported outside its transcript. It takes
282
+ * precedence over the transcript's own usage, the same order the run's result
283
+ * uses, so EVAL.ts and result.json agree.
284
+ *
250
285
  * This is best-effort: failures are silently ignored since it's supplementary data.
251
286
  */
252
- export async function injectTranscriptContext(sandbox, rawTranscript, agentName, model) {
287
+ export async function injectTranscriptContext(sandbox, rawTranscript, agentName, model, usage) {
253
288
  try {
254
289
  const transcript = rawTranscript
255
290
  ? parseTranscript(rawTranscript, agentName, model)
256
291
  : null;
257
292
  const context = {
258
- o11y: transcript?.summary ?? null,
293
+ o11y: transcript ? { ...transcript.summary, ...(usage ? { usage } : {}) } : null,
259
294
  };
260
295
  await sandbox.writeFiles({
261
296
  [TRANSCRIPT_CONTEXT_PATH]: JSON.stringify(context, null, 2),
@@ -1 +1 @@
1
- {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/agents/shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/lib/agents/shared.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  /**
2
2
  * Agent interface and common types for all agents.
3
3
  */
4
- import type { JudgeConfig, ModelPolicy, ModelTier, SetupFunction, SandboxBackend, ValidationMode } from '../types.js';
4
+ import type { JudgeConfig, ModelPolicy, ModelTier, RunProvenance, SetupFunction, SandboxBackend, ValidationMode, VerifierMode } from '../types.js';
5
+ import type { TokenUsage } from '../o11y/types.js';
5
6
  import type { AgentDefinition } from './plugin/contract.js';
6
7
  /**
7
8
  * Common options for all agents.
@@ -59,6 +60,16 @@ export interface AgentRunOptions {
59
60
  /** Pin the agentic LLM judge to a fixed agent+model. Undefined → the judge
60
61
  * self-grades with this run's agent+model. */
61
62
  judge?: JudgeConfig;
63
+ /** Extra environment variables for the agent process only (see
64
+ * `ExperimentConfig.agentEnv`). Default undefined: the agent's environment is
65
+ * unchanged. */
66
+ agentEnv?: Record<string, string>;
67
+ /** Where validation runs (see `ExperimentConfig.verifier`). Default
68
+ * undefined: validation runs in the agent's sandbox, as before. */
69
+ verifier?: VerifierMode;
70
+ /** Globs the agent must not change (see `ExperimentConfig.protectedPaths`).
71
+ * Default undefined: no tampering report in shared mode. */
72
+ protectedPaths?: string[];
62
73
  }
63
74
  /**
64
75
  * Result from running a script.
@@ -95,6 +106,18 @@ export interface AgentRunResult {
95
106
  observedModel?: string;
96
107
  /** Codex only: model re-stated explicitly by the shell-tool repair (see RunnerResult.modelRepair) */
97
108
  modelRepair?: string;
109
+ /** Token usage reported by the agent. When omitted, agent-eval reads it from
110
+ * the transcript with the agent's transcript parser. */
111
+ usage?: TokenUsage;
112
+ /** What ran (harness and agent CLI versions, sandbox environment). Set by the
113
+ * shared orchestrator; custom agents may set it themselves. */
114
+ provenance?: RunProvenance;
115
+ /** `'separate'` when validation ran in a separate verifier sandbox. */
116
+ verifier?: VerifierMode;
117
+ /** Id of the separate verifier sandbox, for debugging. */
118
+ verifierSandboxId?: string;
119
+ /** Protected paths the agent changed, sorted (see `EvalRunResult.tampering`). */
120
+ tampering?: string[];
98
121
  }
99
122
  /**
100
123
  * Agent interface that all agents must implement.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2CAA2C;IAC3C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B;IAC7B,OAAO,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC;IAClC;mFAC+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;qCAEiC;IACjC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;8DAC0D;IAC1D,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;kDAC8C;IAC9C,KAAK,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,UAAU,CAAC,EAAE,YAAY,CAAC;IAC1B,sCAAsC;IACtC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC9C,+BAA+B;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,kEAAkE;IAClE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IAEb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IAEpB,iCAAiC;IACjC,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAE5E,+DAA+D;IAC/D,eAAe,IAAI,MAAM,CAAC;IAE1B,2CAA2C;IAC3C,eAAe,IAAI,SAAS,CAAC;IAE7B;mFAC+E;IAC/E,UAAU,EAAE,eAAe,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/agents/types.ts"],"names":[],"mappings":"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"}