@post-print/agent-test 2.3.9 → 3.0.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 (94) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +4 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.d.ts +5 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/sdk/baselines.d.ts +7 -0
  10. package/dist/sdk/baselines.d.ts.map +1 -0
  11. package/dist/sdk/baselines.js +40 -0
  12. package/dist/sdk/baselines.js.map +1 -0
  13. package/dist/sdk/claims.d.ts +65 -0
  14. package/dist/sdk/claims.d.ts.map +1 -0
  15. package/dist/sdk/claims.js +156 -0
  16. package/dist/sdk/claims.js.map +1 -0
  17. package/dist/sdk/cli.d.ts +2 -0
  18. package/dist/sdk/cli.d.ts.map +1 -1
  19. package/dist/sdk/cli.js +26 -1
  20. package/dist/sdk/cli.js.map +1 -1
  21. package/dist/sdk/definitions.d.ts.map +1 -1
  22. package/dist/sdk/definitions.js +1 -1
  23. package/dist/sdk/definitions.js.map +1 -1
  24. package/dist/sdk/environment-observation.d.ts +38 -0
  25. package/dist/sdk/environment-observation.d.ts.map +1 -0
  26. package/dist/sdk/environment-observation.js +108 -0
  27. package/dist/sdk/environment-observation.js.map +1 -0
  28. package/dist/sdk/execution-reporter.d.ts.map +1 -1
  29. package/dist/sdk/execution-reporter.js +6 -0
  30. package/dist/sdk/execution-reporter.js.map +1 -1
  31. package/dist/sdk/execution-runner.d.ts +5 -0
  32. package/dist/sdk/execution-runner.d.ts.map +1 -1
  33. package/dist/sdk/execution-runner.js +43 -7
  34. package/dist/sdk/execution-runner.js.map +1 -1
  35. package/dist/sdk/execution-store.d.ts +12 -0
  36. package/dist/sdk/execution-store.d.ts.map +1 -1
  37. package/dist/sdk/execution-store.js +23 -1
  38. package/dist/sdk/execution-store.js.map +1 -1
  39. package/dist/sdk/expect.d.ts +15 -1
  40. package/dist/sdk/expect.d.ts.map +1 -1
  41. package/dist/sdk/expect.js +38 -3
  42. package/dist/sdk/expect.js.map +1 -1
  43. package/dist/sdk/failure.d.ts +1 -1
  44. package/dist/sdk/failure.d.ts.map +1 -1
  45. package/dist/sdk/failure.js +4 -4
  46. package/dist/sdk/failure.js.map +1 -1
  47. package/dist/sdk/judge.d.ts.map +1 -1
  48. package/dist/sdk/judge.js +11 -7
  49. package/dist/sdk/judge.js.map +1 -1
  50. package/dist/sdk/operation-ledger.d.ts +25 -0
  51. package/dist/sdk/operation-ledger.d.ts.map +1 -0
  52. package/dist/sdk/operation-ledger.js +72 -0
  53. package/dist/sdk/operation-ledger.js.map +1 -0
  54. package/dist/sdk/pass-rate.d.ts +57 -0
  55. package/dist/sdk/pass-rate.d.ts.map +1 -0
  56. package/dist/sdk/pass-rate.js +113 -0
  57. package/dist/sdk/pass-rate.js.map +1 -0
  58. package/dist/sdk/run-record.d.ts +76 -0
  59. package/dist/sdk/run-record.d.ts.map +1 -0
  60. package/dist/sdk/run-record.js +152 -0
  61. package/dist/sdk/run-record.js.map +1 -0
  62. package/dist/sdk/runtime.d.ts +11 -0
  63. package/dist/sdk/runtime.d.ts.map +1 -1
  64. package/dist/sdk/runtime.js +56 -14
  65. package/dist/sdk/runtime.js.map +1 -1
  66. package/dist/sdk/sampling.d.ts +23 -0
  67. package/dist/sdk/sampling.d.ts.map +1 -0
  68. package/dist/sdk/sampling.js +55 -0
  69. package/dist/sdk/sampling.js.map +1 -0
  70. package/dist/sdk/test.d.ts +7 -2
  71. package/dist/sdk/test.d.ts.map +1 -1
  72. package/dist/sdk/test.js +32 -3
  73. package/dist/sdk/test.js.map +1 -1
  74. package/dist/sdk/types.d.ts +14 -0
  75. package/dist/sdk/types.d.ts.map +1 -1
  76. package/dist/sdk/verdict.d.ts +43 -0
  77. package/dist/sdk/verdict.d.ts.map +1 -0
  78. package/dist/sdk/verdict.js +195 -0
  79. package/dist/sdk/verdict.js.map +1 -0
  80. package/dist/viewer/client-entry.js +24 -24
  81. package/dist/viewer/presentation.d.ts +4 -0
  82. package/dist/viewer/presentation.d.ts.map +1 -1
  83. package/dist/viewer/presentation.js +17 -0
  84. package/dist/viewer/presentation.js.map +1 -1
  85. package/dist/viewer/run-inbox.d.ts.map +1 -1
  86. package/dist/viewer/run-inbox.js +7 -0
  87. package/dist/viewer/run-inbox.js.map +1 -1
  88. package/dist/viewer/v2-client.d.ts.map +1 -1
  89. package/dist/viewer/v2-client.js +13 -2
  90. package/dist/viewer/v2-client.js.map +1 -1
  91. package/dist/viewer/viewer-queries.d.ts +2 -0
  92. package/dist/viewer/viewer-queries.d.ts.map +1 -1
  93. package/dist/viewer/viewer-queries.js.map +1 -1
  94. package/package.json +2 -2
@@ -2,10 +2,12 @@ import { basename, relative, resolve, sep } from "node:path";
2
2
  import { expect as base } from "@playwright/test";
3
3
  import { shellSegments } from "@post-print/agent-harness";
4
4
  import { consumeCriterionOperations } from "./criterion-provenance.js";
5
+ import { offeredTool } from "./run-record.js";
5
6
  const FILE_PROTOCOL = /^file:\/\//;
6
7
  const COMMAND_TOOL = /shell|bash|terminal|exec|command/i;
7
8
  const READ_TOOL = /read/i;
8
9
  const SEARCH_TOOL = /^(grep|glob)$/i;
10
+ const SKILL_TOOL = /^skill$/i;
9
11
  const GLOB_CHARS = /[*?[]/;
10
12
  const PATH_ARG_KEYS = ["path", "file_path", "filePath", "target_file", "uri", "pattern"];
11
13
  const FILE_READING_COMMANDS = new Set([
@@ -91,6 +93,14 @@ function commandMatches(call, expected) {
91
93
  return { call, ownsExitCode: ownsExitCode(segments, index) };
92
94
  return matches(raw, expected) ? { call, ownsExitCode: segments.length <= 1 } : undefined;
93
95
  }
96
+ const RECURSIVE_FLAG = /^-[a-zA-Z]*[rR][a-zA-Z]*$|^--recursive$/;
97
+ /** `grep -r x` and `rg x` read everything under the working directory. */
98
+ function isUnscopedShellSearch(tokens) {
99
+ const executable = basename(tokens[0] ?? "");
100
+ const args = tokens.slice(1);
101
+ const recursive = executable === "rg" || (executable === "grep" && args.some((arg) => RECURSIVE_FLAG.test(arg)));
102
+ return recursive && args.filter((arg) => !arg.startsWith("-")).length <= 1;
103
+ }
94
104
  function accessesPath(run, call, path) {
95
105
  const args = call.args ?? {};
96
106
  const named = PATH_ARG_KEYS.map((key) => args[key]).filter((value) => typeof value === "string");
@@ -100,7 +110,8 @@ function accessesPath(run, call, path) {
100
110
  return true;
101
111
  if (!COMMAND_TOOL.test(call.name))
102
112
  return false;
103
- return shellSegments(commandText(call)).some(({ tokens }) => tokens.slice(1).some((token) => !token.startsWith("-") && mayExpose(run, token, path)));
113
+ return shellSegments(commandText(call)).some(({ tokens }) => isUnscopedShellSearch(tokens) ||
114
+ tokens.slice(1).some((token) => !token.startsWith("-") && mayExpose(run, token, path)));
104
115
  }
105
116
  const outcome = (pass, description) => ({ pass, message: () => description });
106
117
  function executedCommandMessage(expected, calls, unattributed) {
@@ -110,6 +121,11 @@ function executedCommandMessage(expected, calls, unattributed) {
110
121
  : "";
111
122
  return `Expected command ${String(expected.command)}${exit}${note}\nObserved: ${JSON.stringify(calls)}`;
112
123
  }
124
+ function matchesToolCall(call, { args, succeeded }) {
125
+ if (succeeded !== undefined && call.succeeded !== succeeded)
126
+ return false;
127
+ return Object.entries(args ?? {}).every(([key, value]) => JSON.stringify(call.args?.[key]) === JSON.stringify(value));
128
+ }
113
129
  const extendedExpect = base.extend({
114
130
  toHaveExecutedCommand(run, expected) {
115
131
  requireTools(run);
@@ -126,9 +142,12 @@ const extendedExpect = base.extend({
126
142
  throw new Error("Command exit-code evidence unavailable");
127
143
  return outcome(found, executedCommandMessage(expected, calls, matching.length - attributable.length));
128
144
  },
129
- toHaveCalledTool(run, expected) {
145
+ toHaveCalledTool(run, expected, details = {}) {
130
146
  requireTools(run);
131
- return outcome(run.toolCalls.some((call) => matches(call.name, expected)), `Expected tool ${String(expected)}; observed ${run.toolCalls.map((call) => call.name).join(", ")}`);
147
+ const named = run.toolCalls.filter((call) => matches(call.name, expected));
148
+ if (details.succeeded !== undefined && named.some((call) => call.succeeded === undefined))
149
+ throw new Error(`Tool success evidence unavailable for ${String(expected)}`);
150
+ return outcome(named.some((call) => matchesToolCall(call, details)), `Expected tool ${String(expected)}${details.args || details.succeeded !== undefined ? ` with ${JSON.stringify(details)}` : ""}; observed ${JSON.stringify(run.toolCalls.map(({ name, args, succeeded }) => ({ name, args, succeeded })))}`);
132
151
  },
133
152
  toHaveCalledToolsInOrder(run, expected) {
134
153
  requireTools(run);
@@ -150,10 +169,26 @@ const extendedExpect = base.extend({
150
169
  throw new Error(`Successful file-read evidence unavailable: ${path}`);
151
170
  return outcome(found, `Expected successful read of ${path}`);
152
171
  },
172
+ /** A host may load a skill through its own tool or by reading the file. Either is evidence. */
173
+ toHaveUsedSkill(run, name) {
174
+ requireTools(run);
175
+ const skillFile = run.startingContext.skills
176
+ .map(({ destination }) => `${destination}/SKILL.md`)
177
+ .find((path) => path.includes(`/${name}/`));
178
+ const loaded = run.toolCalls.some((call) => SKILL_TOOL.test(call.name) && call.args?.skill === name && call.succeeded !== false);
179
+ const read = run.toolCalls.some((call) => call.succeeded === true &&
180
+ skillFile !== undefined &&
181
+ (Object.values(call.args ?? {}).some((value) => typeof value === "string" && samePath(run, value, skillFile)) ||
182
+ shellReadsPath(run, commandText(call), skillFile)));
183
+ return outcome(loaded || read, `Expected the agent to use skill ${name}`);
184
+ },
153
185
  toHaveAccessedPath(run, path) {
154
186
  requireTools(run);
155
187
  return outcome(run.toolCalls.some((call) => accessesPath(run, call, path)), `Expected possible access to ${path} (exact path, enclosing directory, matching glob, or an unscoped search)`);
156
188
  },
189
+ toHaveBeenOffered(run, tool) {
190
+ return outcome(offeredTool(run.exposure, tool), `Expected the agent to be offered ${tool}; offered (${run.exposure.source}): ${run.exposure.tools.map(({ name }) => name).join(", ")}`);
191
+ },
157
192
  toHaveModifiedPath(run, path) {
158
193
  return outcome(run.workspace.changedPaths.includes(path), `Expected resulting modification to ${path}; changed: ${run.workspace.changedPaths.join(", ")}`);
159
194
  },
@@ -1 +1 @@
1
- {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/sdk/expect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"expect.js","sourceRoot":"","sources":["../../src/sdk/expect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAqB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,aAAa,GAAG,YAAY,CAAC;AACnC,MAAM,YAAY,GAAG,mCAAmC,CAAC;AACzD,MAAM,SAAS,GAAG,OAAO,CAAC;AAC1B,MAAM,WAAW,GAAG,gBAAgB,CAAC;AACrC,MAAM,UAAU,GAAG,UAAU,CAAC;AAC9B,MAAM,UAAU,GAAG,OAAO,CAAC;AAC3B,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AACzF,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC;IACrC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;CACL,CAAC,CAAC;AAGH,MAAM,OAAO,GAAG,CAAC,MAAc,EAAE,QAAyB,EAAE,EAAE,CAC7D,OAAO,QAAQ,KAAK,QAAQ;IAC3B,CAAC,CAAC,MAAM,KAAK,QAAQ;IACrB,CAAC,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/F,SAAS,aAAa,CAAC,GAAQ,EAAE,KAAa;IAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;AACtE,CAAC;AACD,SAAS,QAAQ,CAAC,GAAQ,EAAE,MAAc,EAAE,QAAgB;IAC3D,OAAO,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACpE,CAAC;AACD,kFAAkF;AAClF,SAAS,UAAU,CAAC,GAAQ,EAAE,MAAc,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/E,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5F,CAAC;AACD,SAAS,UAAU,CAAC,IAAY;IAC/B,MAAM,MAAM,GAAG,IAAI;SACjB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACb,IAAI;SACF,OAAO,CAAC,gBAAgB,EAAE,MAAM,CAAC;SACjC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC;SACxB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CACzB;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,IAAI,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,WAAW,CAAC,GAAQ,EAAE,IAAY,EAAE,QAAgB;IAC5D,OAAO,UAAU,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChF,CAAC;AACD,gGAAgG;AAChG,SAAS,SAAS,CAAC,GAAQ,EAAE,KAAa,EAAE,QAAgB;IAC3D,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B,CAAC,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;QACnC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AACD,SAAS,WAAW,CAAC,IAAc;IAClC,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;AAC3D,CAAC;AACD,SAAS,YAAY,CAAC,GAAQ;IAC7B,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS;QAC9B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACxE,CAAC;AACD,SAAS,cAAc,CAAC,GAAQ,EAAE,OAAe,EAAE,IAAY;IAC9D,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACjD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,OAAO,CACb,UAAU;YACT,qBAAqB,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC/C,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC;AACD;;;GAGG;AACH,SAAS,YAAY,CAAC,QAAwB,EAAE,KAAa;IAC5D,IAAI,KAAK,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;AACpF,CAAC;AACD,SAAS,WAAW,CAAC,OAAqB;IACzC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAKD,SAAS,cAAc,CAAC,IAAc,EAAE,QAAyB;IAChE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACvF,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7E,OAAO,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AACD,MAAM,cAAc,GAAG,yCAAyC,CAAC;AACjE,0EAA0E;AAC1E,SAAS,qBAAqB,CAAC,MAAgB;IAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,SAAS,GACd,UAAU,KAAK,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChG,OAAO,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;AAC5E,CAAC;AACD,SAAS,YAAY,CAAC,GAAQ,EAAE,IAAc,EAAE,IAAY;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CACzD,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CACrD,CAAC;IACF,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAC3C,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACd,qBAAqB,CAAC,MAAM,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CACvF,CAAC;AACH,CAAC;AACD,MAAM,OAAO,GAAG,CAAC,IAAa,EAAE,WAAmB,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAK/F,SAAS,sBAAsB,CAC9B,QAAyB,EACzB,KAAiB,EACjB,YAAoB;IAEpB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC3F,MAAM,IAAI,GAAG,YAAY;QACxB,CAAC,CAAC,KAAK,YAAY,uHAAuH;QAC1I,CAAC,CAAC,EAAE,CAAC;IACN,OAAO,oBAAoB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,IAAI,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;AACzG,CAAC;AAMD,SAAS,eAAe,CAAC,IAAc,EAAE,EAAE,IAAI,EAAE,SAAS,EAAoB;IAC7E,IAAI,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1E,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CACtC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAC5E,CAAC;AACH,CAAC;AACD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IAClC,qBAAqB,CAAC,GAAQ,EAAE,QAAyB;QACxD,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC;QAClD,IAAI,SAAS,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,gBAAgB;YAClD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,KAAK;aACpB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;aACrD,MAAM,CAAC,CAAC,KAAK,EAAyB,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;QAChE,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3F,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAC9B,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAClE,CAAC;QACF,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC3D,OAAO,OAAO,CACb,KAAK,EACL,sBAAsB,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAC9E,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,GAAQ,EAAE,QAAyB,EAAE,OAAO,GAAqB,EAAE;QACnF,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC3E,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC9E,OAAO,OAAO,CACb,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,EACpD,iBAAiB,MAAM,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAC1O,CAAC;IACH,CAAC;IACD,wBAAwB,CAAC,GAAQ,EAAE,QAA6B;QAC/D,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,SAAS;YAC/B,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAAE,KAAK,EAAE,CAAC;QAC7E,OAAO,OAAO,CACb,KAAK,KAAK,QAAQ,CAAC,MAAM,EACzB,0BAA0B,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5D,CAAC;IACH,CAAC;IACD,cAAc,CAAC,GAAQ,EAAE,IAAY;QACpC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS;YAC9B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC/E,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CACrC,CAAC,IAAI,EAAE,EAAE,CACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAClE,CACF,CAAC;QACF,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,CAAC,MAAM,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CACtF,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACzF,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;YAC5F,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC,KAAK,EAAE,+BAA+B,IAAI,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,+FAA+F;IAC/F,eAAe,CAAC,GAAQ,EAAE,IAAY;QACrC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,MAAM,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM;aAC1C,GAAG,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,GAAG,WAAW,WAAW,CAAC;aACnD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAChC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAC7F,CAAC;QACF,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAC9B,CAAC,IAAI,EAAE,EAAE,CACR,IAAI,CAAC,SAAS,KAAK,IAAI;YACvB,SAAS,KAAK,SAAS;YACvB,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CACnC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CACvE;gBACA,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CACpD,CAAC;QACF,OAAO,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,kBAAkB,CAAC,GAAQ,EAAE,IAAY;QACxC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,OAAO,OAAO,CACb,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAC3D,+BAA+B,IAAI,0EAA0E,CAC7G,CAAC;IACH,CAAC;IACD,iBAAiB,CAAC,GAAQ,EAAE,IAAY;QACvC,OAAO,OAAO,CACb,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,EAC/B,oCAAoC,IAAI,cAAc,GAAG,CAAC,QAAQ,CAAC,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtI,CAAC;IACH,CAAC;IACD,kBAAkB,CAAC,GAAQ,EAAE,IAAY;QACxC,OAAO,OAAO,CACb,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,EACzC,sCAAsC,IAAI,cAAc,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC/F,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,SAAS,qBAAqB,CAAC,MAAe,EAAE,SAAkB;IACjE,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACrD,IAAI,iBAAiB,CAAC,MAAM,CAAC;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACrD,IACC,OAAO,SAAS,KAAK,QAAQ;QAC7B,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAE3E,OAAO;IACR,KAAK,MAAM,KAAK,IAAI,MAAM;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,gBAAgB,IAAI,CAAC,SAAS,CAAC;YAC9B,KAAK;YACL,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,EAAE,SAAS,EAAE;SACpB,CAAC,IAAI,CACN,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc;IACxC,OAAO,OAAO,CACb,KAAK;QACJ,OAAO,KAAK,KAAK,QAAQ;QACzB,IAAI,IAAI,KAAK;QACb,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;QAC5B,OAAO,IAAI,KAAK,CACjB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,cAAc,EAAE;IAC/C,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa;QACnC,qBAAqB,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACtD,CAAC;CACD,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { AgentInfrastructureFailure } from "@post-print/agent-harness";
1
+ import { type AgentInfrastructureFailure } from "@post-print/agent-harness";
2
2
  export type RecordedFailure = AgentInfrastructureFailure | {
3
3
  kind: "runtime";
4
4
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../../src/sdk/failure.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,0BAA0B,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG,0BAA0B,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAa/D"}
1
+ {"version":3,"file":"failure.d.ts","sourceRoot":"","sources":["../../src/sdk/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,0BAA0B,EAE/B,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG,0BAA0B,GAAG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhG,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAa/D"}
@@ -1,10 +1,11 @@
1
+ import { isAgentInfrastructureCode, } from "@post-print/agent-harness";
1
2
  export function recordedFailure(error) {
2
3
  if (isInfrastructureFailure(error)) {
3
4
  return {
4
5
  kind: "infrastructure",
5
6
  code: error.code,
6
7
  message: error.message,
7
- timeoutMs: error.timeoutMs,
8
+ ...(error.timeoutMs === undefined ? {} : { timeoutMs: error.timeoutMs }),
8
9
  };
9
10
  }
10
11
  return {
@@ -17,8 +18,7 @@ function isInfrastructureFailure(error) {
17
18
  return false;
18
19
  const value = error;
19
20
  return (value.kind === "infrastructure" &&
20
- value.code === "timeout" &&
21
- typeof value.message === "string" &&
22
- typeof value.timeoutMs === "number");
21
+ isAgentInfrastructureCode(value.code) &&
22
+ typeof value.message === "string");
23
23
  }
24
24
  //# sourceMappingURL=failure.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/sdk/failure.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,eAAe,CAAC,KAAc;IAC7C,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;YACN,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,SAAS,EAAE,KAAK,CAAC,SAAS;SAC1B,CAAC;IACH,CAAC;IACD,OAAO;QACN,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/D,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,KAA0C,CAAC;IACzD,OAAO,CACN,KAAK,CAAC,IAAI,KAAK,gBAAgB;QAC/B,KAAK,CAAC,IAAI,KAAK,SAAS;QACxB,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QACjC,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ,CACnC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"failure.js","sourceRoot":"","sources":["../../src/sdk/failure.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,yBAAyB,GACzB,MAAM,2BAA2B,CAAC;AAInC,MAAM,UAAU,eAAe,CAAC,KAAc;IAC7C,IAAI,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO;YACN,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,GAAG,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;SACxE,CAAC;IACH,CAAC;IACD,OAAO;QACN,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;KAC/D,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,KAA0C,CAAC;IACzD,OAAO,CACN,KAAK,CAAC,IAAI,KAAK,gBAAgB;QAC/B,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CACjC,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/sdk/judge.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,eAAe,EAKpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMvE,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAEzF;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAevD;AACD,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;IACrD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;CACjG;AAiBD,wBAAsB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EACjD,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAiDlC"}
1
+ {"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../src/sdk/judge.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,eAAe,EAKpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAMvE,wBAAgB,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAEzF;AACD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAevD;AACD,MAAM,WAAW,iBAAiB,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO;IACrD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,SAAS,CAAC;QAAC,UAAU,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;CACjG;AA0BD,wBAAsB,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EACjD,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC3B,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CA4ClC"}
package/dist/sdk/judge.js CHANGED
@@ -36,6 +36,15 @@ async function evaluationPrompt(request, workspace) {
36
36
  throw new Error("Judge context exceeds 200000 bytes; select less input");
37
37
  return { prompt, input: JSON.parse(input), schema, context };
38
38
  }
39
+ function reviewerSession(request, workspace) {
40
+ return createAgentSession({
41
+ agent: request.definition,
42
+ workspace,
43
+ signal: request.signal,
44
+ readOnly: true,
45
+ protectedPaths: request.protectedPaths,
46
+ });
47
+ }
39
48
  export async function evaluate(request) {
40
49
  request.signal.throwIfAborted();
41
50
  const id = request.id ?? crypto.randomUUID(), directory = join(request.outputDir, id);
@@ -47,13 +56,7 @@ export async function evaluate(request) {
47
56
  try {
48
57
  const prepared = await evaluationPrompt(request, workspace);
49
58
  await writeJson(join(directory, "request.json"), prepared);
50
- session = await createAgentSession({
51
- agent: request.definition,
52
- workspace,
53
- signal: request.signal,
54
- readOnly: true,
55
- protectedPaths: request.protectedPaths,
56
- });
59
+ session = await reviewerSession(request, workspace);
57
60
  request.onStart?.({
58
61
  input: prepared.input,
59
62
  evaluation: { prompt: request.settings.prompt, schema: prepared.schema },
@@ -71,6 +74,7 @@ export async function evaluate(request) {
71
74
  output: parseEvaluation(response, request.settings.schema),
72
75
  usage: runUsage(trace.usage),
73
76
  artifact: directory,
77
+ model: { requested: request.definition.options.model, observed: trace.hostReport?.model },
74
78
  };
75
79
  await writeJson(join(directory, "evaluation.json"), result);
76
80
  return result;
@@ -1 +1 @@
1
- {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/sdk/judge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAEN,qBAAqB,EACrB,kBAAkB,EAClB,0BAA0B,GAE1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEtE,MAAM,UAAU,GAAG,kBAAkB,CAAC;AACtC,MAAM,WAAW,GAAG,SAAS,CAAC;AAC9B,MAAM,UAAU,eAAe,CAAsB,IAAY,EAAE,MAAS;IAC3E,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AACxF,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,KAAgB;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAClD,IACC,KAAK,KAAK,SAAS;YACnB,OAAO,KAAK,KAAK,UAAU;YAC3B,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,QAAQ;YAEzB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YACvD,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC;AACb,CAAC;AAaD,KAAK,UAAU,gBAAgB,CAC9B,OAA6B,EAC7B,SAAiB;IAEjB,cAAc,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,WAAW,CACzB,+JAA+J,OAAO,CAAC,QAAQ,CAAC,MAAM,qBAAqB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,KAAK,EAAE,EACrP,OAAO,CACP,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,OAAO;QACtC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC1E,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC9D,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC7B,OAA6B;IAE7B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,EAAE,EAC3C,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACzC,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,wEAAwE;IACxE,MAAM,MAAM,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAClD,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,OAAmC,CAAC;IACxC,IAAI,CAAC;QACJ,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC3D,OAAO,GAAG,MAAM,kBAAkB,CAAC;YAClC,KAAK,EAAE,OAAO,CAAC,UAAU;YACzB,SAAS;YACT,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,QAAQ,EAAE,IAAI;YACd,cAAc,EAAE,OAAO,CAAC,cAAc;SACtC,CAAC,CAAC;QACH,OAAO,CAAC,OAAO,EAAE,CAAC;YACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,UAAU,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE;SACxE,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjD,qBAAqB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ;aAC7B,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,CAAC;aACjD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;aACjC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,MAAM,MAAM,GAAG;YACd,EAAE;YACF,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1D,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,QAAQ,EAAE,SAAS;SACnB,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;QACvE,MAAM,KAAK,CAAC;IACb,CAAC;YAAS,CAAC;QACV,IAAI,CAAC;YACJ,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACV,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACxB,CAAC;IACF,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["../../src/sdk/judge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { WorkspaceEscapeError } from "@post-print/agent-harness";
2
+ import type { Run } from "./types.js";
3
+ export interface WorkspaceEscapeOutcome {
4
+ escaped?: WorkspaceEscapeError;
5
+ run?: Run;
6
+ }
7
+ /**
8
+ * The one way a test accepts a workspace escape. Any other caught escape still fails the test.
9
+ * Without `allowRefusal`, a run that made no attempt fails too.
10
+ */
11
+ export declare function expectWorkspaceEscape(operation: Promise<Run>, options?: {
12
+ allowRefusal?: boolean;
13
+ }): Promise<WorkspaceEscapeOutcome>;
14
+ /** Every agent and judge operation of one test, so a result can only come from work that happened. */
15
+ export declare class OperationLedger {
16
+ private readonly operations;
17
+ private readonly escapes;
18
+ record<T>(underlying: Promise<T>): Promise<T>;
19
+ /** Throws when the test body finished without earning its result. */
20
+ assertResultEarned(options: {
21
+ noAgent: boolean;
22
+ }): void;
23
+ private assertNoFloatingOperation;
24
+ }
25
+ //# sourceMappingURL=operation-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-ledger.d.ts","sourceRoot":"","sources":["../../src/sdk/operation-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAoBtC,MAAM,WAAW,sBAAsB;IACtC,OAAO,CAAC,EAAE,oBAAoB,CAAC;IAC/B,GAAG,CAAC,EAAE,GAAG,CAAC;CACV;AACD;;;GAGG;AACH,wBAAsB,qBAAqB,CAC1C,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,EACvB,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACtC,OAAO,CAAC,sBAAsB,CAAC,CAUjC;AAID,sGAAsG;AACtG,qBAAa,eAAe;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CACvB;IACJ,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,MAAM,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAkB5C;IAED,qEAAqE;IACrE,kBAAkB,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAUtD;IAED,OAAO,CAAC,yBAAyB;CASjC"}
@@ -0,0 +1,72 @@
1
+ import { WorkspaceEscapeError } from "@post-print/agent-harness";
2
+ /** A promise that knows whether the test ever looked at its outcome, however late. */
3
+ class ObservedOperation extends Promise {
4
+ static get [Symbol.species]() {
5
+ return Promise;
6
+ }
7
+ observed = false;
8
+ // biome-ignore lint/suspicious/noThenProperty: await and Promise.all only reach a subclass through then, which is how observation is detected.
9
+ then(onFulfilled, onRejected) {
10
+ this.observed = true;
11
+ return super.then(onFulfilled, onRejected);
12
+ }
13
+ }
14
+ const acknowledgedEscapes = new WeakSet();
15
+ /**
16
+ * The one way a test accepts a workspace escape. Any other caught escape still fails the test.
17
+ * Without `allowRefusal`, a run that made no attempt fails too.
18
+ */
19
+ export async function expectWorkspaceEscape(operation, options = {}) {
20
+ try {
21
+ const run = await operation;
22
+ if (options.allowRefusal)
23
+ return { run };
24
+ }
25
+ catch (error) {
26
+ if (!(error instanceof WorkspaceEscapeError))
27
+ throw error;
28
+ acknowledgedEscapes.add(error);
29
+ return { escaped: error };
30
+ }
31
+ throw new Error("Expected the run to fail with WorkspaceEscapeError, but it completed");
32
+ }
33
+ /** Every agent and judge operation of one test, so a result can only come from work that happened. */
34
+ export class OperationLedger {
35
+ operations = [];
36
+ escapes = new Set();
37
+ record(underlying) {
38
+ const operation = new ObservedOperation((resolve, reject) => {
39
+ underlying.then(resolve, reject);
40
+ });
41
+ const entry = { operation, state: "pending" };
42
+ this.operations.push(entry);
43
+ // Internal bookkeeping must not count as the test observing the outcome.
44
+ Promise.prototype.then.call(operation, undefined, () => undefined);
45
+ underlying.then(() => {
46
+ entry.state = "fulfilled";
47
+ }, (error) => {
48
+ entry.state = "rejected";
49
+ if (error instanceof WorkspaceEscapeError)
50
+ this.escapes.add(error);
51
+ });
52
+ return operation;
53
+ }
54
+ /** Throws when the test body finished without earning its result. */
55
+ assertResultEarned(options) {
56
+ this.assertNoFloatingOperation();
57
+ const escapes = [...this.escapes];
58
+ const unacknowledged = escapes.find((error) => !acknowledgedEscapes.has(error));
59
+ if (unacknowledged)
60
+ throw unacknowledged;
61
+ if (options.noAgent)
62
+ return;
63
+ if (escapes.length === 0 && !this.operations.some(({ state }) => state === "fulfilled"))
64
+ throw new Error("The test finished without a completed agent operation, so its result says nothing about an agent. Declare noAgent: true if that is intended.");
65
+ }
66
+ assertNoFloatingOperation() {
67
+ const floating = this.operations.filter(({ operation, state }) => state !== "fulfilled" && !operation.observed);
68
+ if (floating.length > 0)
69
+ throw new Error(`${floating.length} agent operation(s) were not awaited and did not complete. Await each run, or handle its rejection.`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=operation-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operation-ledger.js","sourceRoot":"","sources":["../../src/sdk/operation-ledger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /** P(X <= k) for X ~ Binomial(n, p). */
2
+ export declare function binomialCdf(k: number, n: number, p: number): number;
3
+ export interface RateInterval {
4
+ low: number;
5
+ high: number;
6
+ }
7
+ /** Clopper-Pearson: never narrower than the truth, however small n is. */
8
+ export declare function exactInterval(k: number, n: number): RateInterval;
9
+ /** "p is at least this" with 95% confidence. 20 of 20 gives about 0.861. */
10
+ export declare function lowerBound(k: number, n: number): number;
11
+ export interface SamplingPlan {
12
+ n: number;
13
+ /** Flag the claim at this many failures. */
14
+ flagAt: number;
15
+ falseAlarmRate: number;
16
+ power: number;
17
+ }
18
+ /**
19
+ * The smallest fixed plan that tells `target` from `detect`, computed before any run so a result
20
+ * is never decided by watching an interval move. Stopping once `flagAt` is reached or can no longer
21
+ * be reached does not change the decision, so the error rates stand.
22
+ */
23
+ export declare function samplingPlan(input: {
24
+ target: number;
25
+ detect: number;
26
+ falseAlarm?: number;
27
+ power?: number;
28
+ }): SamplingPlan;
29
+ /** Whether more runs could change this plan's decision. */
30
+ export declare function planIsDecided(input: {
31
+ flagAt: number;
32
+ n: number;
33
+ failures: number;
34
+ ran: number;
35
+ }): boolean;
36
+ export interface RateDifference extends RateInterval {
37
+ difference: number;
38
+ /** The interval excludes zero. */
39
+ distinguishable: boolean;
40
+ }
41
+ /** Newcombe's interval for a difference of two independent rates: first minus second. */
42
+ export declare function differenceInterval(first: {
43
+ passed: number;
44
+ total: number;
45
+ }, second: {
46
+ passed: number;
47
+ total: number;
48
+ }): RateDifference;
49
+ /** Whether k of n is below what the baseline supports, measured against its cautious lower bound. */
50
+ export declare function regressedFrom(baseline: {
51
+ passed: number;
52
+ total: number;
53
+ }, current: {
54
+ passed: number;
55
+ total: number;
56
+ }): boolean;
57
+ //# sourceMappingURL=pass-rate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pass-rate.d.ts","sourceRoot":"","sources":["../../src/sdk/pass-rate.ts"],"names":[],"mappings":"AAcA,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAInE;AAoBD,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACb;AACD,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,YAAY,CAGhE;AACD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,MAAM,WAAW,YAAY;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,YAAY,CAaf;AACD,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,WAGhG;AAcD,MAAM,WAAW,cAAe,SAAQ,YAAY;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,kCAAkC;IAClC,eAAe,EAAE,OAAO,CAAC;CACzB;AACD,yFAAyF;AACzF,wBAAgB,kBAAkB,CACjC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EACxC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACvC,cAAc,CAShB;AACD,qGAAqG;AACrG,wBAAgB,aAAa,CAC5B,QAAQ,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAC3C,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAGT"}
@@ -0,0 +1,113 @@
1
+ /** Exact statistics for "k of n runs passed". Pure, so every number is tested directly. */
2
+ const BISECTION_STEPS = 60;
3
+ const Z_95 = 1.959_963_985;
4
+ function logChoose(n, k) {
5
+ let total = 0;
6
+ for (let index = 1; index <= k; index++)
7
+ total += Math.log((n - k + index) / index);
8
+ return total;
9
+ }
10
+ function binomialTerm(n, k, p) {
11
+ if (p <= 0)
12
+ return k === 0 ? 1 : 0;
13
+ if (p >= 1)
14
+ return k === n ? 1 : 0;
15
+ return Math.exp(logChoose(n, k) + k * Math.log(p) + (n - k) * Math.log(1 - p));
16
+ }
17
+ /** P(X <= k) for X ~ Binomial(n, p). */
18
+ export function binomialCdf(k, n, p) {
19
+ let total = 0;
20
+ for (let value = 0; value <= Math.min(k, n); value++)
21
+ total += binomialTerm(n, value, p);
22
+ return Math.min(total, 1);
23
+ }
24
+ /** The p where a function that increases with p crosses the target. */
25
+ function solveIncreasing(value, target) {
26
+ let low = 0;
27
+ let high = 1;
28
+ for (let step = 0; step < BISECTION_STEPS; step++) {
29
+ const middle = (low + high) / 2;
30
+ if (value(middle) < target)
31
+ low = middle;
32
+ else
33
+ high = middle;
34
+ }
35
+ return (low + high) / 2;
36
+ }
37
+ function lowerAt(k, n, alpha) {
38
+ if (k === 0)
39
+ return 0;
40
+ return solveIncreasing((p) => 1 - binomialCdf(k - 1, n, p), alpha);
41
+ }
42
+ function upperAt(k, n, alpha) {
43
+ if (k === n)
44
+ return 1;
45
+ return solveIncreasing((p) => 1 - binomialCdf(k, n, p), 1 - alpha);
46
+ }
47
+ /** Clopper-Pearson: never narrower than the truth, however small n is. */
48
+ export function exactInterval(k, n) {
49
+ if (n === 0)
50
+ return { low: 0, high: 1 };
51
+ return { low: lowerAt(k, n, 0.025), high: upperAt(k, n, 0.025) };
52
+ }
53
+ /** "p is at least this" with 95% confidence. 20 of 20 gives about 0.861. */
54
+ export function lowerBound(k, n) {
55
+ return n === 0 ? 0 : lowerAt(k, n, 0.05);
56
+ }
57
+ const MAX_PLAN_SAMPLES = 2_000;
58
+ /**
59
+ * The smallest fixed plan that tells `target` from `detect`, computed before any run so a result
60
+ * is never decided by watching an interval move. Stopping once `flagAt` is reached or can no longer
61
+ * be reached does not change the decision, so the error rates stand.
62
+ */
63
+ export function samplingPlan(input) {
64
+ const { target, detect, falseAlarm = 0.05, power = 0.8 } = input;
65
+ for (let n = 1; n <= MAX_PLAN_SAMPLES; n++) {
66
+ for (let flagAt = 1; flagAt <= n; flagAt++) {
67
+ // Failures are Binomial(n, 1 - p); flagging needs at least flagAt of them.
68
+ const falseAlarmRate = 1 - binomialCdf(flagAt - 1, n, 1 - target);
69
+ if (falseAlarmRate > falseAlarm)
70
+ continue;
71
+ const planPower = 1 - binomialCdf(flagAt - 1, n, 1 - detect);
72
+ if (planPower >= power)
73
+ return { n, flagAt, falseAlarmRate, power: planPower };
74
+ break;
75
+ }
76
+ }
77
+ throw new Error(`No plan within ${MAX_PLAN_SAMPLES} runs tells ${target} from ${detect}`);
78
+ }
79
+ /** Whether more runs could change this plan's decision. */
80
+ export function planIsDecided(input) {
81
+ const { flagAt, n, failures, ran } = input;
82
+ return failures >= flagAt || flagAt - failures > n - ran;
83
+ }
84
+ function wilson(k, n) {
85
+ if (n === 0)
86
+ return { low: 0, high: 1 };
87
+ const p = k / n;
88
+ const z2 = Z_95 * Z_95;
89
+ const centre = p + z2 / (2 * n);
90
+ const margin = Z_95 * Math.sqrt((p * (1 - p)) / n + z2 / (4 * n * n));
91
+ const denominator = 1 + z2 / n;
92
+ return {
93
+ low: k === 0 ? 0 : (centre - margin) / denominator,
94
+ high: k === n ? 1 : (centre + margin) / denominator,
95
+ };
96
+ }
97
+ /** Newcombe's interval for a difference of two independent rates: first minus second. */
98
+ export function differenceInterval(first, second) {
99
+ const p1 = first.total ? first.passed / first.total : 0;
100
+ const p2 = second.total ? second.passed / second.total : 0;
101
+ const a = wilson(first.passed, first.total);
102
+ const b = wilson(second.passed, second.total);
103
+ const difference = p1 - p2;
104
+ const low = difference - Math.hypot(p1 - a.low, b.high - p2);
105
+ const high = difference + Math.hypot(a.high - p1, p2 - b.low);
106
+ return { difference, low, high, distinguishable: low > 0 || high < 0 };
107
+ }
108
+ /** Whether k of n is below what the baseline supports, measured against its cautious lower bound. */
109
+ export function regressedFrom(baseline, current) {
110
+ const floor = lowerBound(baseline.passed, baseline.total);
111
+ return binomialCdf(current.passed, current.total, floor) < 0.05;
112
+ }
113
+ //# sourceMappingURL=pass-rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pass-rate.js","sourceRoot":"","sources":["../../src/sdk/pass-rate.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,IAAI,GAAG,aAAa,CAAC;AAE3B,SAAS,SAAS,CAAC,CAAS,EAAE,CAAS;IACtC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE;QAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;IACpF,OAAO,KAAK,CAAC;AACd,CAAC;AACD,SAAS,YAAY,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IACpD,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAChF,CAAC;AACD,wCAAwC;AACxC,MAAM,UAAU,WAAW,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS;IAC1D,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE;QAAE,KAAK,IAAI,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC3B,CAAC;AACD,uEAAuE;AACvE,SAAS,eAAe,CAAC,KAA4B,EAAE,MAAc;IACpE,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,eAAe,EAAE,IAAI,EAAE,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM;YAAE,GAAG,GAAG,MAAM,CAAC;;YACpC,IAAI,GAAG,MAAM,CAAC;IACpB,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AACD,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC;AACD,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtB,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;AACpE,CAAC;AAKD,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAAC,CAAS,EAAE,CAAS;IACjD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;AAClE,CAAC;AACD,4EAA4E;AAC5E,MAAM,UAAU,UAAU,CAAC,CAAS,EAAE,CAAS;IAC9C,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1C,CAAC;AASD,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAC/B;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAK5B;IACA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC;IACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC;YAC5C,2EAA2E;YAC3E,MAAM,cAAc,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YAClE,IAAI,cAAc,GAAG,UAAU;gBAAE,SAAS;YAC1C,MAAM,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YAC7D,IAAI,SAAS,IAAI,KAAK;gBAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;YAC/E,MAAM;QACP,CAAC;IACF,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,kBAAkB,gBAAgB,eAAe,MAAM,SAAS,MAAM,EAAE,CAAC,CAAC;AAC3F,CAAC;AACD,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAAC,KAAmE;IAChG,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO,QAAQ,IAAI,MAAM,IAAI,MAAM,GAAG,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC;AAC1D,CAAC;AAED,SAAS,MAAM,CAAC,CAAS,EAAE,CAAS;IACnC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IACxC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAChB,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IACvB,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO;QACN,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,WAAW;QAClD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,WAAW;KACnD,CAAC;AACH,CAAC;AAMD,yFAAyF;AACzF,MAAM,UAAU,kBAAkB,CACjC,KAAwC,EACxC,MAAyC;IAEzC,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3D,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7D,MAAM,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9D,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AACxE,CAAC;AACD,qGAAqG;AACrG,MAAM,UAAU,aAAa,CAC5B,QAA2C,EAC3C,OAA0C;IAE1C,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1D,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;AACjE,CAAC"}
@@ -0,0 +1,76 @@
1
+ import type { AgentDefinition, AgentTrace, Confinement, HostConditions, McpCatalogEntry, NetworkState } from "@post-print/agent-harness";
2
+ import type { StartingContext, WorkspaceSnapshot } from "./workspace.js";
3
+ /** The test asked about something this run cannot show, so it has no verdict either way. */
4
+ export declare class ConditionsUnknownError extends Error {
5
+ readonly kind: "conditions-unknown";
6
+ constructor(message: string);
7
+ }
8
+ export interface OfferedTool {
9
+ name: string;
10
+ server?: string;
11
+ description?: string;
12
+ }
13
+ /**
14
+ * `host`: the host listed every tool it offered. `mcp-query`: the harness asked the MCP servers,
15
+ * so MCP tools are known and built-in tools are not. `unknown`: nothing could be established.
16
+ */
17
+ export interface RunExposure {
18
+ source: "host" | "mcp-query" | "unknown";
19
+ tools: OfferedTool[];
20
+ mcpServers: {
21
+ name: string;
22
+ status: string;
23
+ error?: string;
24
+ }[];
25
+ }
26
+ export declare function runExposure(report: AgentTrace["hostReport"], catalog: McpCatalogEntry[]): RunExposure;
27
+ /** Whether the agent was offered a tool. An unknown catalog answers neither yes nor no. */
28
+ export declare function offeredTool(exposure: RunExposure, requested: string): boolean;
29
+ export interface RunRecord {
30
+ host: string;
31
+ binary?: string;
32
+ binaryVersion?: string;
33
+ authMode?: string;
34
+ confinement: Confinement;
35
+ network: NetworkState;
36
+ settingSources?: string[];
37
+ overridingEnv: string[];
38
+ requestedModel?: string;
39
+ observedModel?: string;
40
+ /** False when no definition names a model, so the host or environment chose it. */
41
+ modelPinned: boolean;
42
+ /** True when this host version has a passing host probe on record. */
43
+ calibrated: boolean;
44
+ packageVersion?: string;
45
+ git?: {
46
+ sha: string;
47
+ dirty: boolean;
48
+ };
49
+ hashes: {
50
+ suite?: string;
51
+ prompt: string;
52
+ skills: string;
53
+ initialSnapshot: string;
54
+ };
55
+ }
56
+ export interface RunRecordBase {
57
+ baseDir: string;
58
+ packageVersion?: string;
59
+ git?: {
60
+ sha: string;
61
+ dirty: boolean;
62
+ };
63
+ suiteHash?: string;
64
+ }
65
+ export declare function runRecordBase(baseDir: string, testFile?: string): Promise<RunRecordBase>;
66
+ /** Called by the host probe after every check passed. Other runs read it to label themselves. */
67
+ export declare function recordHostCalibration(configDir: string, record: Pick<RunRecord, "host" | "binaryVersion">): Promise<void>;
68
+ export declare function buildRunRecord(base: RunRecordBase, input: {
69
+ conditions: HostConditions;
70
+ definition: AgentDefinition;
71
+ hostReport: AgentTrace["hostReport"];
72
+ prompt: string;
73
+ context: StartingContext;
74
+ initial: WorkspaceSnapshot;
75
+ }): Promise<RunRecord>;
76
+ //# sourceMappingURL=run-record.d.ts.map