@post-print/agent-test 0.3.13 → 1.1.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 (78) hide show
  1. package/README.md +23 -7
  2. package/dist/cli.js +2 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/compare-scenario.d.ts +16 -28
  5. package/dist/compare-scenario.d.ts.map +1 -1
  6. package/dist/compare-scenario.js +163 -261
  7. package/dist/compare-scenario.js.map +1 -1
  8. package/dist/context-panel.d.ts +5 -0
  9. package/dist/context-panel.d.ts.map +1 -0
  10. package/dist/context-panel.js +60 -0
  11. package/dist/context-panel.js.map +1 -0
  12. package/dist/debug-bundle.d.ts.map +1 -1
  13. package/dist/debug-bundle.js +2 -0
  14. package/dist/debug-bundle.js.map +1 -1
  15. package/dist/expect.d.ts +1 -0
  16. package/dist/expect.d.ts.map +1 -1
  17. package/dist/expect.js +19 -0
  18. package/dist/expect.js.map +1 -1
  19. package/dist/html-report.d.ts.map +1 -1
  20. package/dist/html-report.js +238 -38
  21. package/dist/html-report.js.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +1 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/live-isolation.d.ts +2 -0
  27. package/dist/live-isolation.d.ts.map +1 -1
  28. package/dist/live-isolation.js +66 -6
  29. package/dist/live-isolation.js.map +1 -1
  30. package/dist/record-trace.d.ts +7 -1
  31. package/dist/record-trace.d.ts.map +1 -1
  32. package/dist/record-trace.js.map +1 -1
  33. package/dist/run-suite.d.ts.map +1 -1
  34. package/dist/run-suite.js +137 -31
  35. package/dist/run-suite.js.map +1 -1
  36. package/dist/scenario-story.d.ts +4 -3
  37. package/dist/scenario-story.d.ts.map +1 -1
  38. package/dist/scenario-story.js +47 -71
  39. package/dist/scenario-story.js.map +1 -1
  40. package/dist/scenario-usage.d.ts.map +1 -1
  41. package/dist/scenario-usage.js +2 -3
  42. package/dist/scenario-usage.js.map +1 -1
  43. package/dist/types.d.ts +61 -24
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/validate-suite.d.ts.map +1 -1
  46. package/dist/validate-suite.js +100 -38
  47. package/dist/validate-suite.js.map +1 -1
  48. package/dist/viewer/catalog.d.ts +6 -2
  49. package/dist/viewer/catalog.d.ts.map +1 -1
  50. package/dist/viewer/catalog.js +14 -0
  51. package/dist/viewer/catalog.js.map +1 -1
  52. package/dist/viewer/compare-metrics.d.ts +30 -0
  53. package/dist/viewer/compare-metrics.d.ts.map +1 -0
  54. package/dist/viewer/compare-metrics.js +102 -0
  55. package/dist/viewer/compare-metrics.js.map +1 -0
  56. package/dist/viewer/context-files.d.ts +8 -0
  57. package/dist/viewer/context-files.d.ts.map +1 -0
  58. package/dist/viewer/context-files.js +57 -0
  59. package/dist/viewer/context-files.js.map +1 -0
  60. package/dist/viewer/events.d.ts +20 -0
  61. package/dist/viewer/events.d.ts.map +1 -1
  62. package/dist/viewer/events.js +2 -0
  63. package/dist/viewer/events.js.map +1 -1
  64. package/dist/viewer/live-runner.d.ts +6 -0
  65. package/dist/viewer/live-runner.d.ts.map +1 -1
  66. package/dist/viewer/live-runner.js +34 -5
  67. package/dist/viewer/live-runner.js.map +1 -1
  68. package/dist/viewer/page.d.ts.map +1 -1
  69. package/dist/viewer/page.js +1463 -93
  70. package/dist/viewer/page.js.map +1 -1
  71. package/dist/viewer/run-controller.d.ts +5 -0
  72. package/dist/viewer/run-controller.d.ts.map +1 -1
  73. package/dist/viewer/run-controller.js +27 -1
  74. package/dist/viewer/run-controller.js.map +1 -1
  75. package/dist/viewer/server.d.ts.map +1 -1
  76. package/dist/viewer/server.js +18 -11
  77. package/dist/viewer/server.js.map +1 -1
  78. package/package.json +7 -5
@@ -1,3 +1,4 @@
1
+ import { resolvedTotalTokens } from "@post-print/agent-harness";
1
2
  import { assertionFailure } from "./failures.js";
2
3
  const RUBRIC_ARRAY_KEYS = [
3
4
  "must",
@@ -5,6 +6,7 @@ const RUBRIC_ARRAY_KEYS = [
5
6
  "mustRun",
6
7
  "allowedCommands",
7
8
  "mustCallTool",
9
+ "mustCallToolsInOrder",
8
10
  "mustNotCallTool",
9
11
  "mustReadPath",
10
12
  "mustNotReadPath",
@@ -12,11 +14,9 @@ const RUBRIC_ARRAY_KEYS = [
12
14
  "mustNotInvokeSkill",
13
15
  ];
14
16
  const COMPARE_ARM_ID_PATTERN = /^[a-z][a-z0-9_-]{0,63}$/;
15
- /** Append arm-only array checks. Keep the shared judge on the scenario rubric. */
16
17
  export function mergeArmRubric(base, overlay) {
17
- if (!overlay) {
18
+ if (!overlay)
18
19
  return base;
19
- }
20
20
  const merged = {
21
21
  ...base,
22
22
  tier: overlay.tier ?? base.tier,
@@ -27,139 +27,80 @@ export function mergeArmRubric(base, overlay) {
27
27
  };
28
28
  for (const key of RUBRIC_ARRAY_KEYS) {
29
29
  const extra = overlay[key];
30
- if (extra !== undefined) {
30
+ if (extra !== undefined)
31
31
  merged[key] = [...(base[key] ?? []), ...extra];
32
- }
33
32
  }
34
33
  return merged;
35
34
  }
36
35
  export function parseCompareArmId(value) {
37
- if (typeof value !== "string") {
36
+ if (typeof value !== "string")
38
37
  return undefined;
39
- }
40
38
  const id = value.trim();
41
39
  return COMPARE_ARM_ID_PATTERN.test(id) ? id : undefined;
42
40
  }
43
41
  export function compareArmLabel(arm, side) {
44
- const label = arm?.label?.trim();
45
- if (label) {
46
- return label;
47
- }
48
- if (side === "a") {
49
- return "control";
50
- }
51
- if (side === "b") {
52
- return "experimental";
53
- }
54
- return side;
42
+ return arm?.label?.trim() || (side === "a" ? "control" : side === "b" ? "experimental" : side);
55
43
  }
56
- /** Trim a description. Empty text becomes undefined. */
57
44
  export function plainDescription(value) {
58
- const text = value?.trim();
59
- return text ? text : undefined;
45
+ return value?.trim() || undefined;
60
46
  }
61
47
  export function compareArmDescription(arm) {
62
48
  return plainDescription(arm?.description);
63
49
  }
64
50
  export function resolveCompareArms(compare) {
65
- if (!compare) {
51
+ if (!compare)
66
52
  return [];
67
- }
68
- if (Array.isArray(compare.arms)) {
53
+ if (Array.isArray(compare.arms))
69
54
  return compare.arms
70
55
  .filter((arm) => typeof arm === "object" && arm !== null)
71
- .map((arm) => ({
72
- id: typeof arm.id === "string" ? arm.id.trim() : "",
73
- arm,
74
- }));
75
- }
56
+ .map((arm) => ({ id: typeof arm.id === "string" ? arm.id.trim() : "", arm }));
76
57
  const arms = [];
77
- if (compare.a && typeof compare.a === "object") {
58
+ if (compare.a && typeof compare.a === "object")
78
59
  arms.push({ id: "a", arm: compare.a });
79
- }
80
- if (compare.b && typeof compare.b === "object") {
60
+ if (compare.b && typeof compare.b === "object")
81
61
  arms.push({ id: "b", arm: compare.b });
82
- }
83
62
  return arms;
84
63
  }
85
64
  export function compareResultArms(result) {
86
- if (result.arms && result.arms.length > 0) {
87
- return result.arms;
88
- }
89
- const arms = [];
90
- if (result.a) {
91
- arms.push(result.a);
92
- }
93
- if (result.b) {
94
- arms.push(result.b);
95
- }
96
- return arms;
65
+ return result.arms.length > 0
66
+ ? result.arms
67
+ : [result.a, result.b].filter((arm) => arm !== undefined);
97
68
  }
98
69
  export function buildCompareResult(arms, gates) {
99
70
  return {
100
71
  arms,
101
72
  a: arms.find((arm) => arm.id === "a"),
102
73
  b: arms.find((arm) => arm.id === "b"),
103
- faster: gates?.faster,
104
- cheaper: gates?.cheaper,
74
+ gates,
105
75
  };
106
76
  }
107
- export function resolveCompareMetricPairs(gate, armIds) {
108
- if (gate === undefined) {
109
- return [];
110
- }
111
- if (typeof gate === "string") {
112
- if (armIds.length !== 2 || !armIds.includes(gate)) {
113
- return [];
114
- }
115
- const loser = armIds.find((id) => id !== gate);
116
- if (!loser) {
117
- return [];
118
- }
119
- return [{ winner: gate, loser }];
120
- }
121
- if (!Array.isArray(gate)) {
122
- return [];
123
- }
124
- return gate.filter((pair) => typeof pair === "object" &&
125
- pair !== null &&
126
- typeof pair.winner === "string" &&
127
- typeof pair.loser === "string");
128
- }
129
77
  export function compareArmTokens(arm) {
130
- const total = arm.trace?.usage?.totalTokens;
131
- return typeof total === "number" ? total : undefined;
78
+ return resolvedTotalTokens(arm.trace?.usage);
132
79
  }
133
- /** Assistant messages on the trace. One message is one agent turn after stream coalesce. */
134
80
  export function compareArmTurns(arm) {
135
- if (!arm.trace) {
136
- return undefined;
137
- }
138
- return arm.trace.messages.filter((message) => message.role === "assistant").length;
81
+ return arm.trace?.messages.filter((message) => message.role === "assistant").length;
82
+ }
83
+ export function compareArmTools(arm) {
84
+ return arm.trace?.toolCalls.length;
139
85
  }
140
86
  export function formatCompareTurns(turns) {
141
87
  return turns === 1 ? "1 turn" : `${turns} turns`;
142
88
  }
143
- /** Apply one compare arm, or throw when the arm id is missing. */
144
89
  export function requireCompareArm(scenario, side) {
145
- const resolved = resolveCompareArms(scenario.compare);
146
- if (!resolved.some((entry) => entry.id === side)) {
90
+ if (!resolveCompareArms(scenario.compare).some((entry) => entry.id === side))
147
91
  throw new Error(`Scenario ${scenario.name} has no compare arm ${side}`);
148
- }
149
92
  return applyCompareArm(scenario, side);
150
93
  }
151
- /** Apply one compare arm onto the shared scenario. Drops `compare` so the arm is a normal run. */
152
94
  export function applyCompareArm(scenario, side) {
153
95
  const { compare, ...rest } = scenario;
154
- const resolved = resolveCompareArms(compare).find((entry) => entry.id === side);
155
- const arm = resolved?.arm;
156
- if (!arm) {
96
+ const arm = resolveCompareArms(compare).find((entry) => entry.id === side)?.arm;
97
+ if (!arm)
157
98
  return rest;
158
- }
159
99
  return {
160
100
  ...rest,
161
101
  prompt: arm.prompt ?? rest.prompt,
162
102
  host: arm.host ?? rest.host,
103
+ contextMode: arm.contextMode ?? rest.contextMode,
163
104
  profile: arm.profile ?? rest.profile,
164
105
  workspace: arm.workspace ?? rest.workspace,
165
106
  skills: arm.skills ?? rest.skills,
@@ -171,23 +112,8 @@ export function applyCompareArm(scenario, side) {
171
112
  rubric: mergeArmRubric(rest.rubric, arm.rubric),
172
113
  };
173
114
  }
174
- export function attachCompareStoryResults(fields, result) {
175
- const byId = new Map(compareResultArms(result).map((arm) => [arm.id, arm]));
176
- return {
177
- ...fields,
178
- faster: result.faster ?? fields.faster,
179
- cheaper: result.cheaper ?? fields.cheaper,
180
- arms: fields.arms.map((arm) => ({
181
- ...arm,
182
- trace: byId.get(arm.id)?.trace,
183
- durationMs: byId.get(arm.id)?.durationMs,
184
- })),
185
- };
186
- }
187
115
  export function compareStoryFields(scenario) {
188
- const resolved = resolveCompareArms(scenario.compare);
189
- const armIds = resolved.map((entry) => entry.id);
190
- const arms = resolved.map((entry) => ({
116
+ const arms = resolveCompareArms(scenario.compare).map((entry) => ({
191
117
  id: entry.id,
192
118
  label: compareArmLabel(entry.arm, entry.id),
193
119
  description: compareArmDescription(entry.arm),
@@ -195,187 +121,163 @@ export function compareStoryFields(scenario) {
195
121
  }));
196
122
  return {
197
123
  arms,
198
- faster: resolveCompareMetricPairs(scenario.compare?.faster, armIds),
199
- cheaper: resolveCompareMetricPairs(scenario.compare?.cheaper, armIds),
200
- aLabel: arms[0]?.label ?? compareArmLabel(scenario.compare?.a, "a"),
201
- bLabel: arms[1]?.label ?? compareArmLabel(scenario.compare?.b, "b"),
124
+ gates: scenario.compare?.gates,
125
+ aLabel: arms[0]?.label ?? "control",
126
+ bLabel: arms[1]?.label ?? "experimental",
202
127
  aDescription: arms[0]?.description,
203
128
  bDescription: arms[1]?.description,
204
129
  aRubric: arms[0]?.rubric,
205
130
  bRubric: arms[1]?.rubric,
206
131
  };
207
132
  }
133
+ export function attachCompareStoryResults(fields, result) {
134
+ const byId = new Map(compareResultArms(result).map((arm) => [arm.id, arm]));
135
+ return {
136
+ ...fields,
137
+ gates: result.gates ?? fields.gates,
138
+ arms: fields.arms.map((arm) => {
139
+ const measured = byId.get(arm.id);
140
+ return {
141
+ ...arm,
142
+ trace: measured?.trace,
143
+ durationMs: measured?.durationMs,
144
+ passed: measured?.passed,
145
+ failures: measured?.failures,
146
+ judgeVerdicts: measured?.judgeVerdicts,
147
+ };
148
+ }),
149
+ };
150
+ }
208
151
  export function prefixCompareFailures(label, failures) {
209
- return failures.map((failure) => ({
210
- ...failure,
211
- message: `${label}: ${failure.message}`,
212
- }));
152
+ return failures.map((failure) => ({ ...failure, message: `${label}: ${failure.message}` }));
213
153
  }
214
- function armToolCount(arm) {
215
- return arm.trace ? arm.trace.toolCalls.length : undefined;
154
+ function judgeValue(arm, id) {
155
+ const verdict = arm.judgeVerdicts?.find((item) => item.id === id);
156
+ return verdict ? (verdict.pass ? "pass" : "fail") : undefined;
216
157
  }
217
- function armById(arms, id) {
218
- return arms.find((arm) => arm.id === id);
158
+ export function compareMetricValue(arm, metric) {
159
+ if (metric === "outcome")
160
+ return arm.passed === undefined ? undefined : arm.passed ? "pass" : "fail";
161
+ if (metric === "turns")
162
+ return compareArmTurns(arm);
163
+ if (metric === "tokens")
164
+ return compareArmTokens(arm);
165
+ if (metric === "tools")
166
+ return compareArmTools(arm);
167
+ if (metric === "durationMs")
168
+ return arm.durationMs;
169
+ return judgeValue(arm, metric.slice("judge:".length));
219
170
  }
220
- function describePairTurns(winner, loser) {
221
- const winnerTurns = compareArmTurns(winner);
222
- const loserTurns = compareArmTurns(loser);
223
- if (typeof winnerTurns !== "number" || typeof loserTurns !== "number") {
224
- return undefined;
225
- }
226
- if (winnerTurns === loserTurns) {
227
- return `${winner.label} and ${loser.label} use ${formatCompareTurns(winnerTurns)}`;
228
- }
229
- if (winnerTurns < loserTurns) {
230
- return `${winner.label} uses fewer turns than ${loser.label} (${winnerTurns} vs ${loserTurns})`;
231
- }
232
- return `${loser.label} uses fewer turns than ${winner.label} (${loserTurns} vs ${winnerTurns})`;
171
+ function normalizedValue(value) {
172
+ return typeof value === "number" ? value : value === "pass" ? 1 : 0;
233
173
  }
234
- function describePairTokens(winner, loser) {
235
- const winnerTokens = compareArmTokens(winner);
236
- const loserTokens = compareArmTokens(loser);
237
- if (typeof winnerTokens !== "number" || typeof loserTokens !== "number") {
238
- return undefined;
239
- }
240
- if (winnerTokens === loserTokens) {
241
- return `${winner.label} and ${loser.label} use ${winnerTokens} tokens`;
242
- }
243
- if (winnerTokens < loserTokens) {
244
- return `${winner.label} uses fewer tokens than ${loser.label} (${winnerTokens} vs ${loserTokens})`;
245
- }
246
- return `${loser.label} uses fewer tokens than ${winner.label} (${loserTokens} vs ${winnerTokens})`;
174
+ function compareAbsolute(left, operator, right) {
175
+ const a = normalizedValue(left);
176
+ const b = normalizedValue(right);
177
+ if (operator === "equal")
178
+ return a === b;
179
+ if (operator === "lessThan")
180
+ return a < b;
181
+ if (operator === "atMost")
182
+ return a <= b;
183
+ if (operator === "atLeast")
184
+ return a >= b;
185
+ return a > b;
247
186
  }
248
- function describeTwoArmOutcome(left, right) {
249
- const lines = [];
250
- const aTurns = compareArmTurns(left);
251
- const bTurns = compareArmTurns(right);
252
- if (typeof aTurns === "number" && typeof bTurns === "number") {
253
- if (aTurns === bTurns) {
254
- lines.push(`both arms use ${formatCompareTurns(aTurns)}`);
255
- }
256
- else {
257
- const turns = describePairTurns(left, right);
258
- if (turns) {
259
- lines.push(turns);
260
- }
261
- }
262
- }
263
- const aTokens = compareArmTokens(left);
264
- const bTokens = compareArmTokens(right);
265
- if (typeof aTokens === "number" && typeof bTokens === "number") {
266
- if (aTokens === bTokens) {
267
- lines.push(`both arms use ${aTokens} tokens`);
268
- }
269
- else {
270
- const tokens = describePairTokens(left, right);
271
- if (tokens) {
272
- lines.push(tokens);
273
- }
274
- }
275
- }
276
- const aTools = armToolCount(left);
277
- const bTools = armToolCount(right);
278
- if (typeof aTools === "number" && typeof bTools === "number") {
279
- if (aTools === bTools) {
280
- lines.push(aTools === 1 ? "both arms make 1 tool call" : `both arms make ${aTools} tool calls`);
281
- }
282
- else if (aTools < bTools) {
283
- lines.push(`${left.label} makes fewer tool calls than ${right.label} (${aTools} vs ${bTools})`);
284
- }
285
- else {
286
- lines.push(`${right.label} makes fewer tool calls than ${left.label} (${bTools} vs ${aTools})`);
187
+ export function evaluateCompareGates(gates, result) {
188
+ const byId = new Map(compareResultArms(result).map((arm) => [arm.id, arm]));
189
+ return (gates ?? []).map((gate) => {
190
+ if ("winner" in gate) {
191
+ const winner = byId.get(gate.winner);
192
+ const loser = byId.get(gate.loser);
193
+ const left = winner ? compareMetricValue(winner, gate.metric) : undefined;
194
+ const right = loser ? compareMetricValue(loser, gate.metric) : undefined;
195
+ const passed = left !== undefined &&
196
+ right !== undefined &&
197
+ (typeof left === "number" && typeof right === "number"
198
+ ? left < right
199
+ : left === "pass" && right === "fail");
200
+ return {
201
+ gate,
202
+ passed,
203
+ left,
204
+ right,
205
+ message: `${gate.winner} must beat ${gate.loser} on ${gate.metric}`,
206
+ };
287
207
  }
288
- }
289
- return lines;
208
+ const arm = byId.get(gate.arm);
209
+ const left = arm ? compareMetricValue(arm, gate.metric) : undefined;
210
+ const passed = left !== undefined && compareAbsolute(left, gate.operator, gate.value);
211
+ return {
212
+ gate,
213
+ passed,
214
+ left,
215
+ right: gate.value,
216
+ message: `${gate.arm} ${gate.metric} must be ${gate.operator} ${gate.value}`,
217
+ };
218
+ });
219
+ }
220
+ export function assertCompareGates(gates, result) {
221
+ return evaluateCompareGates(gates, result)
222
+ .filter((item) => !item.passed)
223
+ .map((item) => assertionFailure(`compareGate:${item.gate.metric}`, `${item.message} (actual ${String(item.left)} vs ${String(item.right)})`, "rubric_miss"));
290
224
  }
291
- /**
292
- * Plain-language outcomes after the arms finish.
293
- * Two-arm form reports the single pair. Named-arm form reports declared pairs only.
294
- */
295
225
  export function describeCompareOutcome(compare) {
296
- const arms = compareResultArms(compare);
297
- if (arms.length === 2 && arms[0] && arms[1]) {
298
- return describeTwoArmOutcome(arms[0], arms[1]);
299
- }
300
- const lines = [];
301
- for (const pair of compare.faster ?? []) {
302
- const winner = armById(arms, pair.winner);
303
- const loser = armById(arms, pair.loser);
304
- if (!winner || !loser) {
305
- continue;
306
- }
307
- const line = describePairTurns(winner, loser);
308
- if (line) {
309
- lines.push(line);
310
- }
311
- }
312
- for (const pair of compare.cheaper ?? []) {
313
- const winner = armById(arms, pair.winner);
314
- const loser = armById(arms, pair.loser);
315
- if (!winner || !loser) {
316
- continue;
317
- }
318
- const line = describePairTokens(winner, loser);
319
- if (line) {
320
- lines.push(line);
226
+ const lines = compareResultArms(compare).map((arm) => {
227
+ const values = [
228
+ arm.passed === undefined ? undefined : arm.passed ? "pass" : "fail",
229
+ compareArmTurns(arm) === undefined ? undefined : `${compareArmTurns(arm)} turns`,
230
+ compareArmTokens(arm) === undefined ? undefined : `${compareArmTokens(arm)} tokens`,
231
+ compareArmTools(arm) === undefined ? undefined : `${compareArmTools(arm)} tools`,
232
+ arm.durationMs === undefined ? undefined : `${arm.durationMs} ms`,
233
+ ].filter(Boolean);
234
+ return `${arm.label}: ${values.join(", ")}`;
235
+ });
236
+ for (const arm of compareResultArms(compare)) {
237
+ for (const verdict of arm.judgeVerdicts ?? []) {
238
+ lines.push(`${arm.label} judge ${verdict.id}: ${verdict.pass ? "pass" : "fail"}. ${verdict.rationale}`);
321
239
  }
322
240
  }
323
241
  return lines;
324
242
  }
325
243
  export function applySidecarCompareDurations(compare, sidecar) {
326
- if (!sidecar?.compare) {
244
+ if (!sidecar?.compare)
327
245
  return compare;
328
- }
329
- const arms = compareResultArms(compare).map((arm) => {
330
- const fromMap = sidecar.compare?.arms?.[arm.id]?.durationMs;
331
- const fromAlias = arm.id === "a"
332
- ? sidecar.compare?.a?.durationMs
333
- : arm.id === "b"
334
- ? sidecar.compare?.b?.durationMs
335
- : undefined;
336
- return {
337
- ...arm,
338
- durationMs: fromMap ?? fromAlias ?? arm.durationMs,
339
- };
340
- });
341
- return buildCompareResult(arms, { faster: compare.faster, cheaper: compare.cheaper });
342
- }
343
- function assertMetricPair(matcher, pair, byId, read, verb, unit, reported) {
344
- const winner = byId.get(pair.winner);
345
- const loser = byId.get(pair.loser);
346
- if (!winner || !loser) {
347
- return [
348
- assertionFailure(matcher, `${pair.winner} must ${verb} ${pair.loser}, but one arm is missing from the result`, "rubric_miss"),
349
- ];
350
- }
351
- const winnerValue = read(winner);
352
- const loserValue = read(loser);
353
- if (winnerValue === undefined || loserValue === undefined) {
354
- return [
355
- assertionFailure(matcher, `${winner.label} must ${verb} ${loser.label}, but one arm did not report ${reported}`, "rubric_miss"),
356
- ];
357
- }
358
- if (!(winnerValue < loserValue)) {
359
- const winnerText = unit ? `${winnerValue}${unit}` : `${winnerValue}`;
360
- const loserText = unit ? `${loserValue}${unit}` : `${loserValue}`;
361
- return [
362
- assertionFailure(matcher, `${winner.label} must ${verb} ${loser.label} (${winnerText} vs ${loserText})`, "rubric_miss"),
363
- ];
364
- }
365
- return [];
366
- }
367
- /** Score optional faster/cheaper gates after the arms finish. */
368
- export function assertCompareMetrics(spec, result) {
369
- const arms = compareResultArms(result);
370
- const armIds = arms.map((arm) => arm.id);
371
- const byId = new Map(arms.map((arm) => [arm.id, arm]));
372
- const failures = [];
373
- for (const pair of resolveCompareMetricPairs(spec.faster, armIds)) {
374
- failures.push(...assertMetricPair("faster", pair, byId, compareArmTurns, "use fewer turns than", "", "turns"));
375
- }
376
- for (const pair of resolveCompareMetricPairs(spec.cheaper, armIds)) {
377
- failures.push(...assertMetricPair("cheaper", pair, byId, compareArmTokens, "use fewer tokens than", "", "tokens"));
378
- }
379
- return failures;
246
+ const arms = compareResultArms(compare).map((arm) => ({
247
+ ...arm,
248
+ contextMode: sidecar.compare?.arms?.[arm.id]?.contextMode ??
249
+ (arm.id === "a"
250
+ ? sidecar.compare?.a?.contextMode
251
+ : arm.id === "b"
252
+ ? sidecar.compare?.b?.contextMode
253
+ : undefined) ??
254
+ arm.contextMode,
255
+ contextFiles: sidecar.compare?.arms?.[arm.id]?.contextFiles ??
256
+ (arm.id === "a"
257
+ ? sidecar.compare?.a?.contextFiles
258
+ : arm.id === "b"
259
+ ? sidecar.compare?.b?.contextFiles
260
+ : undefined) ??
261
+ arm.contextFiles,
262
+ hostInput: sidecar.compare?.arms?.[arm.id]?.hostInput ??
263
+ (arm.id === "a"
264
+ ? sidecar.compare?.a?.hostInput
265
+ : arm.id === "b"
266
+ ? sidecar.compare?.b?.hostInput
267
+ : undefined) ??
268
+ arm.hostInput,
269
+ durationMs: sidecar.compare?.arms?.[arm.id]?.durationMs ??
270
+ (arm.id === "a"
271
+ ? sidecar.compare?.a?.durationMs
272
+ : arm.id === "b"
273
+ ? sidecar.compare?.b?.durationMs
274
+ : undefined) ??
275
+ arm.durationMs,
276
+ }));
277
+ return {
278
+ ...compare,
279
+ ...buildCompareResult(arms, compare.gates),
280
+ gateResults: compare.gateResults,
281
+ };
380
282
  }
381
283
  //# sourceMappingURL=compare-scenario.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compare-scenario.js","sourceRoot":"","sources":["../src/compare-scenario.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compare-scenario.js","sourceRoot":"","sources":["../src/compare-scenario.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ContextMode, ScenarioContextFile } from "./types.js";
2
+ export declare function contextFileCountLabel(count: number): string;
3
+ /** Context-delivery visual for the viewer and HTML report. */
4
+ export declare function renderContextPanel(files?: ScenarioContextFile[], mode?: ContextMode, hostInput?: string): string;
5
+ //# sourceMappingURL=context-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-panel.d.ts","sourceRoot":"","sources":["../src/context-panel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE3D;AA8BD,8DAA8D;AAC9D,wBAAgB,kBAAkB,CACjC,KAAK,GAAE,mBAAmB,EAAO,EACjC,IAAI,GAAE,WAAgC,EACtC,SAAS,CAAC,EAAE,MAAM,GAChB,MAAM,CAsBR"}