@post-print/agent-test 1.1.8 → 2.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 (238) hide show
  1. package/README.md +18 -66
  2. package/dist/cli.d.ts +2 -64
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +26 -691
  5. package/dist/cli.js.map +1 -1
  6. package/dist/compare-scenario.d.ts +1 -1
  7. package/dist/compare-scenario.d.ts.map +1 -1
  8. package/dist/compare-scenario.js +72 -75
  9. package/dist/compare-scenario.js.map +1 -1
  10. package/dist/failures.d.ts +5 -1
  11. package/dist/failures.d.ts.map +1 -1
  12. package/dist/failures.js +1 -1
  13. package/dist/failures.js.map +1 -1
  14. package/dist/host-login.d.ts +1 -26
  15. package/dist/host-login.d.ts.map +1 -1
  16. package/dist/host-login.js +1 -92
  17. package/dist/host-login.js.map +1 -1
  18. package/dist/index.d.ts +6 -28
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -26
  21. package/dist/index.js.map +1 -1
  22. package/dist/scenario-story.d.ts.map +1 -1
  23. package/dist/scenario-story.js +57 -39
  24. package/dist/scenario-story.js.map +1 -1
  25. package/dist/sdk/cli.d.ts +3 -0
  26. package/dist/sdk/cli.d.ts.map +1 -0
  27. package/dist/sdk/cli.js +20 -0
  28. package/dist/sdk/cli.js.map +1 -0
  29. package/dist/sdk/definitions.d.ts +22 -0
  30. package/dist/sdk/definitions.d.ts.map +1 -0
  31. package/dist/sdk/definitions.js +58 -0
  32. package/dist/sdk/definitions.js.map +1 -0
  33. package/dist/sdk/expect.d.ts +31 -0
  34. package/dist/sdk/expect.d.ts.map +1 -0
  35. package/dist/sdk/expect.js +68 -0
  36. package/dist/sdk/expect.js.map +1 -0
  37. package/dist/sdk/judge.d.ts +16 -0
  38. package/dist/sdk/judge.d.ts.map +1 -0
  39. package/dist/sdk/judge.js +82 -0
  40. package/dist/sdk/judge.js.map +1 -0
  41. package/dist/sdk/metrics.d.ts +3 -0
  42. package/dist/sdk/metrics.d.ts.map +1 -0
  43. package/dist/sdk/metrics.js +24 -0
  44. package/dist/sdk/metrics.js.map +1 -0
  45. package/dist/sdk/reporter.d.ts +12 -0
  46. package/dist/sdk/reporter.d.ts.map +1 -0
  47. package/dist/sdk/reporter.js +58 -0
  48. package/dist/sdk/reporter.js.map +1 -0
  49. package/dist/sdk/runtime.d.ts +33 -0
  50. package/dist/sdk/runtime.d.ts.map +1 -0
  51. package/dist/sdk/runtime.js +188 -0
  52. package/dist/sdk/runtime.js.map +1 -0
  53. package/dist/sdk/test.d.ts +27 -0
  54. package/dist/sdk/test.d.ts.map +1 -0
  55. package/dist/sdk/test.js +92 -0
  56. package/dist/sdk/test.js.map +1 -0
  57. package/dist/sdk/types.d.ts +75 -0
  58. package/dist/sdk/types.d.ts.map +1 -0
  59. package/dist/sdk/types.js +2 -0
  60. package/dist/sdk/types.js.map +1 -0
  61. package/dist/sdk/usage.d.ts +10 -0
  62. package/dist/sdk/usage.d.ts.map +1 -0
  63. package/dist/sdk/usage.js +13 -0
  64. package/dist/sdk/usage.js.map +1 -0
  65. package/dist/sdk/viewer-results.d.ts +43 -0
  66. package/dist/sdk/viewer-results.d.ts.map +1 -0
  67. package/dist/sdk/viewer-results.js +126 -0
  68. package/dist/sdk/viewer-results.js.map +1 -0
  69. package/dist/sdk/viewer.d.ts +11 -0
  70. package/dist/sdk/viewer.d.ts.map +1 -0
  71. package/dist/sdk/viewer.js +160 -0
  72. package/dist/sdk/viewer.js.map +1 -0
  73. package/dist/sdk/workspace.d.ts +33 -0
  74. package/dist/sdk/workspace.d.ts.map +1 -0
  75. package/dist/sdk/workspace.js +100 -0
  76. package/dist/sdk/workspace.js.map +1 -0
  77. package/dist/types.d.ts +4 -40
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/viewer/catalog.d.ts +2 -8
  80. package/dist/viewer/catalog.d.ts.map +1 -1
  81. package/dist/viewer/catalog.js +23 -128
  82. package/dist/viewer/catalog.js.map +1 -1
  83. package/dist/viewer/client.d.ts.map +1 -1
  84. package/dist/viewer/client.js +12 -12
  85. package/dist/viewer/client.js.map +1 -1
  86. package/dist/viewer/run-controller.d.ts +4 -2
  87. package/dist/viewer/run-controller.d.ts.map +1 -1
  88. package/dist/viewer/run-controller.js +297 -248
  89. package/dist/viewer/run-controller.js.map +1 -1
  90. package/dist/viewer/server.d.ts +4 -3
  91. package/dist/viewer/server.d.ts.map +1 -1
  92. package/dist/viewer/server.js +149 -112
  93. package/dist/viewer/server.js.map +1 -1
  94. package/dist/viewer/styles.d.ts +2 -0
  95. package/dist/viewer/styles.d.ts.map +1 -0
  96. package/dist/viewer/styles.js +444 -0
  97. package/dist/viewer/styles.js.map +1 -0
  98. package/dist/worker-pool.d.ts +5 -1
  99. package/dist/worker-pool.d.ts.map +1 -1
  100. package/dist/worker-pool.js +1 -1
  101. package/dist/worker-pool.js.map +1 -1
  102. package/package.json +7 -7
  103. package/dist/check.d.ts +0 -38
  104. package/dist/check.d.ts.map +0 -1
  105. package/dist/check.js +0 -169
  106. package/dist/check.js.map +0 -1
  107. package/dist/command-allowlist.d.ts +0 -9
  108. package/dist/command-allowlist.d.ts.map +0 -1
  109. package/dist/command-allowlist.js +0 -29
  110. package/dist/command-allowlist.js.map +0 -1
  111. package/dist/debug-bundle.d.ts +0 -81
  112. package/dist/debug-bundle.d.ts.map +0 -1
  113. package/dist/debug-bundle.js +0 -392
  114. package/dist/debug-bundle.js.map +0 -1
  115. package/dist/discover-suites.d.ts +0 -2
  116. package/dist/discover-suites.d.ts.map +0 -1
  117. package/dist/discover-suites.js +0 -19
  118. package/dist/discover-suites.js.map +0 -1
  119. package/dist/doctor.d.ts +0 -24
  120. package/dist/doctor.d.ts.map +0 -1
  121. package/dist/doctor.js +0 -272
  122. package/dist/doctor.js.map +0 -1
  123. package/dist/expect.d.ts +0 -59
  124. package/dist/expect.d.ts.map +0 -1
  125. package/dist/expect.js +0 -518
  126. package/dist/expect.js.map +0 -1
  127. package/dist/host-log.d.ts +0 -17
  128. package/dist/host-log.d.ts.map +0 -1
  129. package/dist/host-log.js +0 -154
  130. package/dist/host-log.js.map +0 -1
  131. package/dist/hosts.d.ts +0 -22
  132. package/dist/hosts.d.ts.map +0 -1
  133. package/dist/hosts.js +0 -84
  134. package/dist/hosts.js.map +0 -1
  135. package/dist/html-report.d.ts +0 -18
  136. package/dist/html-report.d.ts.map +0 -1
  137. package/dist/html-report.js +0 -1276
  138. package/dist/html-report.js.map +0 -1
  139. package/dist/live-isolation.d.ts +0 -82
  140. package/dist/live-isolation.d.ts.map +0 -1
  141. package/dist/live-isolation.js +0 -399
  142. package/dist/live-isolation.js.map +0 -1
  143. package/dist/live-timeout.d.ts +0 -11
  144. package/dist/live-timeout.d.ts.map +0 -1
  145. package/dist/live-timeout.js +0 -29
  146. package/dist/live-timeout.js.map +0 -1
  147. package/dist/load-adapters.d.ts +0 -13
  148. package/dist/load-adapters.d.ts.map +0 -1
  149. package/dist/load-adapters.js +0 -76
  150. package/dist/load-adapters.js.map +0 -1
  151. package/dist/load-suite.d.ts +0 -22
  152. package/dist/load-suite.d.ts.map +0 -1
  153. package/dist/load-suite.js +0 -154
  154. package/dist/load-suite.js.map +0 -1
  155. package/dist/mcp-config.d.ts +0 -13
  156. package/dist/mcp-config.d.ts.map +0 -1
  157. package/dist/mcp-config.js +0 -121
  158. package/dist/mcp-config.js.map +0 -1
  159. package/dist/preflight.d.ts +0 -3
  160. package/dist/preflight.d.ts.map +0 -1
  161. package/dist/preflight.js +0 -17
  162. package/dist/preflight.js.map +0 -1
  163. package/dist/progress.d.ts +0 -24
  164. package/dist/progress.d.ts.map +0 -1
  165. package/dist/progress.js +0 -111
  166. package/dist/progress.js.map +0 -1
  167. package/dist/record-trace.d.ts +0 -64
  168. package/dist/record-trace.d.ts.map +0 -1
  169. package/dist/record-trace.js +0 -124
  170. package/dist/record-trace.js.map +0 -1
  171. package/dist/report-preview-server.d.ts +0 -2
  172. package/dist/report-preview-server.d.ts.map +0 -1
  173. package/dist/report-preview-server.js +0 -24
  174. package/dist/report-preview-server.js.map +0 -1
  175. package/dist/report-preview.d.ts +0 -35
  176. package/dist/report-preview.d.ts.map +0 -1
  177. package/dist/report-preview.js +0 -205
  178. package/dist/report-preview.js.map +0 -1
  179. package/dist/run-suite.d.ts +0 -139
  180. package/dist/run-suite.d.ts.map +0 -1
  181. package/dist/run-suite.js +0 -1669
  182. package/dist/run-suite.js.map +0 -1
  183. package/dist/scenario-finalizer.d.ts +0 -27
  184. package/dist/scenario-finalizer.d.ts.map +0 -1
  185. package/dist/scenario-finalizer.js +0 -39
  186. package/dist/scenario-finalizer.js.map +0 -1
  187. package/dist/scenario-retry.d.ts +0 -15
  188. package/dist/scenario-retry.d.ts.map +0 -1
  189. package/dist/scenario-retry.js +0 -52
  190. package/dist/scenario-retry.js.map +0 -1
  191. package/dist/scenario-seed.d.ts +0 -13
  192. package/dist/scenario-seed.d.ts.map +0 -1
  193. package/dist/scenario-seed.js +0 -72
  194. package/dist/scenario-seed.js.map +0 -1
  195. package/dist/suite-summary.d.ts +0 -16
  196. package/dist/suite-summary.d.ts.map +0 -1
  197. package/dist/suite-summary.js +0 -218
  198. package/dist/suite-summary.js.map +0 -1
  199. package/dist/theme.d.ts +0 -96
  200. package/dist/theme.d.ts.map +0 -1
  201. package/dist/theme.js +0 -446
  202. package/dist/theme.js.map +0 -1
  203. package/dist/validate-seeds.d.ts +0 -20
  204. package/dist/validate-seeds.d.ts.map +0 -1
  205. package/dist/validate-seeds.js +0 -72
  206. package/dist/validate-seeds.js.map +0 -1
  207. package/dist/validate-suite.d.ts +0 -24
  208. package/dist/validate-suite.d.ts.map +0 -1
  209. package/dist/validate-suite.js +0 -542
  210. package/dist/validate-suite.js.map +0 -1
  211. package/dist/viewer/cli.d.ts +0 -17
  212. package/dist/viewer/cli.d.ts.map +0 -1
  213. package/dist/viewer/cli.js +0 -38
  214. package/dist/viewer/cli.js.map +0 -1
  215. package/dist/viewer/compare-metrics.d.ts +0 -30
  216. package/dist/viewer/compare-metrics.d.ts.map +0 -1
  217. package/dist/viewer/compare-metrics.js +0 -101
  218. package/dist/viewer/compare-metrics.js.map +0 -1
  219. package/dist/viewer/context-files.d.ts +0 -8
  220. package/dist/viewer/context-files.d.ts.map +0 -1
  221. package/dist/viewer/context-files.js +0 -57
  222. package/dist/viewer/context-files.js.map +0 -1
  223. package/dist/viewer/emit.d.ts +0 -7
  224. package/dist/viewer/emit.d.ts.map +0 -1
  225. package/dist/viewer/emit.js +0 -25
  226. package/dist/viewer/emit.js.map +0 -1
  227. package/dist/viewer/live-runner.d.ts +0 -27
  228. package/dist/viewer/live-runner.d.ts.map +0 -1
  229. package/dist/viewer/live-runner.js +0 -166
  230. package/dist/viewer/live-runner.js.map +0 -1
  231. package/dist/viewer/session-server.d.ts +0 -2
  232. package/dist/viewer/session-server.d.ts.map +0 -1
  233. package/dist/viewer/session-server.js +0 -71
  234. package/dist/viewer/session-server.js.map +0 -1
  235. package/dist/warnings.d.ts +0 -3
  236. package/dist/warnings.d.ts.map +0 -1
  237. package/dist/warnings.js +0 -13
  238. package/dist/warnings.js.map +0 -1
@@ -1,64 +0,0 @@
1
- import type { AgentTrace } from "@post-print/agent-harness";
2
- import type { AssertionFailure, ContextMode, ScenarioContextFile } from "./types.js";
3
- export declare const LIVE_STAGING_DIR_NAME = "agent-spec";
4
- /** Override the sessions parent (default: `$TMPDIR/agent-spec`). Used by `--debug-dir`. */
5
- export declare function setLiveStagingRootOverride(root: string | undefined): void;
6
- export declare function getLiveStagingRootOverride(): string | undefined;
7
- /**
8
- * Stable filesystem basename for a scenario. Readable slug + short hash so
9
- * distinct names that normalize alike (e.g. "Foo Bar" / "foo-bar") never collide.
10
- */
11
- export declare function scenarioArtifactSlug(name: string): string;
12
- export declare function getLiveStagingRoot(): string;
13
- export declare function getLiveStagingSessionRoot(sessionId: string): string;
14
- /** Staging JSON path for a live scenario trace (matches recordTrace layout). */
15
- export declare function getStagingTracePath(stagingSessionId: string, suiteName: string, scenarioName: string, arm?: string): string;
16
- /** Parent arms subprocess kill from this marker (epoch ms) when the harness deadline starts. */
17
- export declare function getStagingAgentStartPath(stagingSessionId: string, suiteName: string, scenarioName: string, arm?: string): string;
18
- /** Child writes when the harness agent deadline clock starts (after pre-stream SDK setup). */
19
- export declare function writeAgentStartMarker(path: string): Promise<void>;
20
- /** Parent reads agent-start epoch ms from staging; undefined when absent or invalid. */
21
- export declare function readAgentStartMarker(path: string): Promise<number | undefined>;
22
- /** Parent reads rubric failures from isolated child runs when exit code is non-zero. */
23
- export declare function getStagingResultPath(stagingSessionId: string, suiteName: string, scenarioName: string, arm?: string): string;
24
- export interface LiveCompareArmSidecar {
25
- durationMs: number;
26
- contextMode?: ContextMode;
27
- contextFiles?: ScenarioContextFile[];
28
- hostInput?: string;
29
- judgeWorkspace?: {
30
- name: string;
31
- path: string;
32
- };
33
- }
34
- export interface LiveScenarioResultSidecar {
35
- passed: boolean;
36
- failures: AssertionFailure[];
37
- durationMs: number;
38
- contextMode?: ContextMode;
39
- contextFiles?: ScenarioContextFile[];
40
- hostInput?: string;
41
- judgeWorkspace?: {
42
- name: string;
43
- path: string;
44
- };
45
- compare?: {
46
- a?: LiveCompareArmSidecar;
47
- b?: LiveCompareArmSidecar;
48
- arms?: Record<string, LiveCompareArmSidecar>;
49
- };
50
- }
51
- export declare function createLiveStagingSessionId(): string;
52
- /** Resolve the transient trace used by isolated direct-agent runs. */
53
- export declare function resolveRecordingPath(suiteName: string, scenarioName: string, stagingSessionId: string | undefined, arm?: string): string | undefined;
54
- /** Persist a direct-run trace for parent-process judging and diagnostics. */
55
- export declare function recordTrace(outputPath: string, trace: AgentTrace): Promise<string>;
56
- /** Load a staged live trace for parent-process judge after isolated child runs. */
57
- export declare function loadStagingTrace(path: string): Promise<AgentTrace>;
58
- /** Child writes rubric outcome for parent when live scenarios run in subprocess isolation. */
59
- export declare function writeStagingResult(path: string, result: LiveScenarioResultSidecar): Promise<void>;
60
- /** Parent merges child rubric failures instead of only reporting subprocess exit code. */
61
- export declare function loadStagingResult(path: string): Promise<LiveScenarioResultSidecar | undefined>;
62
- /** Remove a live staging session directory under $TMPDIR. */
63
- export declare function cleanupStagingSession(sessionRoot: string): Promise<void>;
64
- //# sourceMappingURL=record-trace.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-trace.d.ts","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAErF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAIlD,2FAA2F;AAC3F,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAEzE;AAED,wBAAgB,0BAA0B,IAAI,MAAM,GAAG,SAAS,CAE/D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASzD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAK3C;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAMD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAClC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,MAAM,GACV,MAAM,CAOR;AAED,gGAAgG;AAChG,wBAAgB,wBAAwB,CACvC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,MAAM,GACV,MAAM,CAOR;AAED,8FAA8F;AAC9F,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGvE;AAED,wFAAwF;AACxF,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQpF;AAED,wFAAwF;AACxF,wBAAgB,oBAAoB,CACnC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,MAAM,GACV,MAAM,CAOR;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,OAAO,CAAC,EAAE;QACT,CAAC,CAAC,EAAE,qBAAqB,CAAC;QAC1B,CAAC,CAAC,EAAE,qBAAqB,CAAC;QAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;KAC7C,CAAC;CACF;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GAAG,SAAS,EACpC,GAAG,CAAC,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAKpB;AAED,6EAA6E;AAC7E,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxF;AAED,mFAAmF;AACnF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGxE;AAED,8FAA8F;AAC9F,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,yBAAyB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,0FAA0F;AAC1F,wBAAsB,iBAAiB,CACtC,IAAI,EAAE,MAAM,GACV,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC,CAMhD;AAED,6DAA6D;AAC7D,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E"}
@@ -1,124 +0,0 @@
1
- import { createHash } from "node:crypto";
2
- import { mkdir, readFile, rm, writeFile } from "node:fs/promises";
3
- import { tmpdir } from "node:os";
4
- import { dirname, join } from "node:path";
5
- import { enrichTrace } from "@post-print/agent-harness";
6
- export const LIVE_STAGING_DIR_NAME = "agent-spec";
7
- let liveStagingRootOverride;
8
- /** Override the sessions parent (default: `$TMPDIR/agent-spec`). Used by `--debug-dir`. */
9
- export function setLiveStagingRootOverride(root) {
10
- liveStagingRootOverride = root?.trim() ? root : undefined;
11
- }
12
- export function getLiveStagingRootOverride() {
13
- return liveStagingRootOverride;
14
- }
15
- /**
16
- * Stable filesystem basename for a scenario. Readable slug + short hash so
17
- * distinct names that normalize alike (e.g. "Foo Bar" / "foo-bar") never collide.
18
- */
19
- export function scenarioArtifactSlug(name) {
20
- const base = name
21
- .toLowerCase()
22
- .replace(/[^a-z0-9]+/g, "-")
23
- .replace(/^-+|-+$/g, "")
24
- .slice(0, 40) || "scenario";
25
- const hash = createHash("sha256").update(name).digest("hex").slice(0, 8);
26
- return `${base}-${hash}`;
27
- }
28
- export function getLiveStagingRoot() {
29
- if (liveStagingRootOverride) {
30
- return join(liveStagingRootOverride, "sessions");
31
- }
32
- return join(tmpdir(), LIVE_STAGING_DIR_NAME, "sessions");
33
- }
34
- export function getLiveStagingSessionRoot(sessionId) {
35
- return join(getLiveStagingRoot(), sessionId);
36
- }
37
- function stagingScenarioBasename(scenarioName) {
38
- return scenarioArtifactSlug(scenarioName);
39
- }
40
- /** Staging JSON path for a live scenario trace (matches recordTrace layout). */
41
- export function getStagingTracePath(stagingSessionId, suiteName, scenarioName, arm) {
42
- const suffix = arm ? `.${arm}` : "";
43
- return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}${suffix}.json`);
44
- }
45
- /** Parent arms subprocess kill from this marker (epoch ms) when the harness deadline starts. */
46
- export function getStagingAgentStartPath(stagingSessionId, suiteName, scenarioName, arm) {
47
- const suffix = arm ? `.${arm}` : "";
48
- return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}${suffix}.agent-start`);
49
- }
50
- /** Child writes when the harness agent deadline clock starts (after pre-stream SDK setup). */
51
- export async function writeAgentStartMarker(path) {
52
- await mkdir(dirname(path), { recursive: true });
53
- await writeFile(path, `${Date.now()}\n`, "utf8");
54
- }
55
- /** Parent reads agent-start epoch ms from staging; undefined when absent or invalid. */
56
- export async function readAgentStartMarker(path) {
57
- try {
58
- const raw = (await readFile(path, "utf8")).trim();
59
- const parsed = Number(raw);
60
- return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
61
- }
62
- catch {
63
- return undefined;
64
- }
65
- }
66
- /** Parent reads rubric failures from isolated child runs when exit code is non-zero. */
67
- export function getStagingResultPath(stagingSessionId, suiteName, scenarioName, arm) {
68
- const suffix = arm ? `.${arm}` : "";
69
- return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}${suffix}.result.json`);
70
- }
71
- export function createLiveStagingSessionId() {
72
- return `${process.pid}-${Date.now()}`;
73
- }
74
- /** Resolve the transient trace used by isolated direct-agent runs. */
75
- export function resolveRecordingPath(suiteName, scenarioName, stagingSessionId, arm) {
76
- if (!stagingSessionId) {
77
- return undefined;
78
- }
79
- return getStagingTracePath(stagingSessionId, suiteName, scenarioName, arm);
80
- }
81
- /** Persist a direct-run trace for parent-process judging and diagnostics. */
82
- export async function recordTrace(outputPath, trace) {
83
- const enriched = enrichTrace(trace);
84
- const payload = {
85
- messages: enriched.messages,
86
- toolCalls: enriched.toolCalls,
87
- shellCommands: enriched.shellCommands,
88
- gitDiff: enriched.gitDiff,
89
- prBody: enriched.prBody,
90
- artifacts: enriched.artifacts,
91
- routing: enriched.routing,
92
- skillsInvoked: enriched.skillsInvoked,
93
- assistantTextBeforeTools: enriched.assistantTextBeforeTools,
94
- usage: enriched.usage,
95
- judgeVerdicts: enriched.judgeVerdicts,
96
- };
97
- await mkdir(dirname(outputPath), { recursive: true });
98
- await writeFile(outputPath, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
99
- return outputPath;
100
- }
101
- /** Load a staged live trace for parent-process judge after isolated child runs. */
102
- export async function loadStagingTrace(path) {
103
- const raw = JSON.parse(await readFile(path, "utf8"));
104
- return enrichTrace(raw);
105
- }
106
- /** Child writes rubric outcome for parent when live scenarios run in subprocess isolation. */
107
- export async function writeStagingResult(path, result) {
108
- await mkdir(dirname(path), { recursive: true });
109
- await writeFile(path, `${JSON.stringify(result, null, 2)}\n`, "utf8");
110
- }
111
- /** Parent merges child rubric failures instead of only reporting subprocess exit code. */
112
- export async function loadStagingResult(path) {
113
- try {
114
- return JSON.parse(await readFile(path, "utf8"));
115
- }
116
- catch {
117
- return undefined;
118
- }
119
- }
120
- /** Remove a live staging session directory under $TMPDIR. */
121
- export async function cleanupStagingSession(sessionRoot) {
122
- await rm(sessionRoot, { recursive: true, force: true });
123
- }
124
- //# sourceMappingURL=record-trace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"record-trace.js","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=report-preview-server.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-preview-server.d.ts","sourceRoot":"","sources":["../src/report-preview-server.ts"],"names":[],"mappings":""}
@@ -1,24 +0,0 @@
1
- import { resolve } from "node:path";
2
- import { fileURLToPath } from "node:url";
3
- import { isCliMain } from "./cli-entry.js";
4
- import { listenReportPreview } from "./report-preview.js";
5
- const entry = fileURLToPath(import.meta.url);
6
- if (isCliMain(process.argv[1], entry)) {
7
- const filePath = process.argv[2];
8
- if (!filePath) {
9
- process.stderr.write("report preview needs an html file path\n");
10
- process.exit(1);
11
- }
12
- const idleMs = Number(process.argv[3]);
13
- void listenReportPreview(resolve(filePath), {
14
- idleMs: Number.isFinite(idleMs) && idleMs > 0 ? idleMs : undefined,
15
- })
16
- .then(({ url }) => {
17
- process.stdout.write(`${url}\n`);
18
- })
19
- .catch((error) => {
20
- process.stderr.write(`${error instanceof Error ? error.message : String(error)}\n`);
21
- process.exit(1);
22
- });
23
- }
24
- //# sourceMappingURL=report-preview-server.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-preview-server.js","sourceRoot":"","sources":["../src/report-preview-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAE7C,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,KAAK,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;QAC3C,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC;SACA,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;IAClC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,35 +0,0 @@
1
- import type { HostAuthMode } from "@post-print/agent-harness";
2
- import type { SuiteRunReport } from "./types.js";
3
- import type { ViewerRunRequest } from "./viewer/catalog.js";
4
- /** Preview process exits after this idle time. */
5
- export declare const REPORT_PREVIEW_IDLE_MS: number;
6
- export interface DetachedViewerManifest {
7
- /** CLI entrypoint that started this session; isolated reruns execute this, not the session server. */
8
- cliPath?: string;
9
- cwd: string;
10
- suitesDir: string;
11
- rubricsDir?: string;
12
- judge?: boolean;
13
- timeoutMs?: number;
14
- authMode?: HostAuthMode;
15
- adapterModules?: string[];
16
- workers?: number;
17
- worktree?: boolean;
18
- keepRecordings?: boolean;
19
- allowUserInput?: boolean;
20
- debug?: boolean;
21
- debugDir?: string;
22
- request?: ViewerRunRequest;
23
- reports: SuiteRunReport[];
24
- }
25
- export declare function shouldStartReportPreview(env?: NodeJS.ProcessEnv, stdoutIsTty?: boolean): boolean;
26
- export declare function listenReportPreview(filePath: string, options?: {
27
- idleMs?: number;
28
- }): Promise<{
29
- url: string;
30
- close: () => Promise<void>;
31
- }>;
32
- export declare function startDetachedReportPreview(filePath: string): Promise<string | undefined>;
33
- /** Start the active unified viewer around one completed CLI run. */
34
- export declare function startDetachedViewer(manifest: DetachedViewerManifest): Promise<string | undefined>;
35
- //# sourceMappingURL=report-preview.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-preview.d.ts","sourceRoot":"","sources":["../src/report-preview.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,kDAAkD;AAClD,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AAErD,MAAM,WAAW,sBAAsB;IACtC,sGAAsG;IACtG,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAC;CAC1B;AAID,wBAAgB,wBAAwB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,WAAW,UAAgC,GACzC,OAAO,CAQT;AAED,wBAAgB,mBAAmB,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA6CtD;AAED,wBAAsB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA8B9F;AAED,oEAAoE;AACpE,wBAAsB,mBAAmB,CACxC,QAAQ,EAAE,sBAAsB,GAC9B,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkC7B"}
@@ -1,205 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { existsSync } from "node:fs";
3
- import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises";
4
- import { createServer } from "node:http";
5
- import { tmpdir } from "node:os";
6
- import { join, resolve } from "node:path";
7
- import { fileURLToPath } from "node:url";
8
- /** Preview process exits after this idle time. */
9
- export const REPORT_PREVIEW_IDLE_MS = 30 * 60 * 1000;
10
- const PREVIEW_HOST = "127.0.0.1";
11
- export function shouldStartReportPreview(env = process.env, stdoutIsTty = Boolean(process.stdout.isTTY)) {
12
- if (env.CI === "1" || env.CI === "true") {
13
- return false;
14
- }
15
- if (env.AGENT_TEST_NO_REPORT_PREVIEW === "1") {
16
- return false;
17
- }
18
- return stdoutIsTty;
19
- }
20
- export function listenReportPreview(filePath, options = {}) {
21
- const absolutePath = resolve(filePath);
22
- const idleMs = options.idleMs;
23
- return new Promise((resolveListen, reject) => {
24
- let idle;
25
- const bumpIdle = () => {
26
- if (idleMs === undefined) {
27
- return;
28
- }
29
- if (idle !== undefined) {
30
- clearTimeout(idle);
31
- }
32
- idle = setTimeout(() => {
33
- void close();
34
- }, idleMs);
35
- };
36
- const server = createServer((req, res) => {
37
- bumpIdle();
38
- void serveReportFile(absolutePath, req, res);
39
- });
40
- const close = () => new Promise((resolveClose, rejectClose) => {
41
- if (idle !== undefined) {
42
- clearTimeout(idle);
43
- idle = undefined;
44
- }
45
- server.close((error) => {
46
- if (error) {
47
- rejectClose(error);
48
- return;
49
- }
50
- resolveClose();
51
- });
52
- });
53
- server.once("error", reject);
54
- server.listen(0, PREVIEW_HOST, () => {
55
- const addr = server.address();
56
- if (!addr || typeof addr === "string") {
57
- reject(new Error("report preview has no port"));
58
- return;
59
- }
60
- bumpIdle();
61
- resolveListen({ url: `http://${PREVIEW_HOST}:${addr.port}/`, close });
62
- });
63
- });
64
- }
65
- export async function startDetachedReportPreview(filePath) {
66
- const serverPath = resolvePreviewServerEntry();
67
- if (!serverPath) {
68
- return undefined;
69
- }
70
- const child = spawn(process.execPath, [serverPath, resolve(filePath), String(REPORT_PREVIEW_IDLE_MS)], {
71
- detached: true,
72
- stdio: ["ignore", "pipe", "ignore"],
73
- });
74
- if (!child.stdout) {
75
- child.kill();
76
- return undefined;
77
- }
78
- try {
79
- const line = await readFirstLine(child.stdout, 3000);
80
- if (!isLocalPreviewUrl(line)) {
81
- child.kill();
82
- return undefined;
83
- }
84
- child.stdout.destroy();
85
- child.unref();
86
- return line;
87
- }
88
- catch {
89
- killPreviewChild(child);
90
- return undefined;
91
- }
92
- }
93
- /** Start the active unified viewer around one completed CLI run. */
94
- export async function startDetachedViewer(manifest) {
95
- const serverPath = resolveViewerServerEntry();
96
- if (!serverPath)
97
- return undefined;
98
- const manifestDir = await mkdtemp(join(tmpdir(), "agent-test-viewer-"));
99
- const manifestPath = join(manifestDir, "session.json");
100
- await writeFile(manifestPath, `${JSON.stringify(manifest)}\n`, { encoding: "utf8", mode: 0o600 });
101
- const child = spawn(process.execPath, [serverPath, manifestPath, String(REPORT_PREVIEW_IDLE_MS)], {
102
- detached: true,
103
- stdio: ["ignore", "pipe", "ignore"],
104
- });
105
- if (!child.stdout) {
106
- child.kill();
107
- await rm(manifestDir, { recursive: true, force: true });
108
- return undefined;
109
- }
110
- try {
111
- const line = await readFirstLine(child.stdout, 3000);
112
- if (!isLocalPreviewUrl(line)) {
113
- child.kill();
114
- await rm(manifestDir, { recursive: true, force: true });
115
- return undefined;
116
- }
117
- child.stdout.destroy();
118
- child.unref();
119
- return line;
120
- }
121
- catch {
122
- killPreviewChild(child);
123
- await rm(manifestDir, { recursive: true, force: true });
124
- return undefined;
125
- }
126
- }
127
- function isLocalPreviewUrl(url) {
128
- return /^http:\/\/127\.0\.0\.1:\d+\/$/.test(url);
129
- }
130
- function resolvePreviewServerEntry() {
131
- const js = fileURLToPath(new URL("./report-preview-server.js", import.meta.url));
132
- const ts = fileURLToPath(new URL("./report-preview-server.ts", import.meta.url));
133
- if (existsSync(js)) {
134
- return js;
135
- }
136
- if (existsSync(ts)) {
137
- return ts;
138
- }
139
- return undefined;
140
- }
141
- function resolveViewerServerEntry() {
142
- const js = fileURLToPath(new URL("./viewer/session-server.js", import.meta.url));
143
- const ts = fileURLToPath(new URL("./viewer/session-server.ts", import.meta.url));
144
- if (existsSync(js))
145
- return js;
146
- if (existsSync(ts))
147
- return ts;
148
- return undefined;
149
- }
150
- function killPreviewChild(child) {
151
- if (!child.killed) {
152
- child.kill();
153
- }
154
- }
155
- function readFirstLine(stream, timeoutMs) {
156
- return new Promise((resolveLine, reject) => {
157
- let buf = "";
158
- const timer = setTimeout(() => {
159
- cleanup();
160
- reject(new Error("report preview timed out"));
161
- }, timeoutMs);
162
- const onData = (chunk) => {
163
- buf += String(chunk);
164
- const nl = buf.indexOf("\n");
165
- if (nl === -1) {
166
- return;
167
- }
168
- cleanup();
169
- resolveLine(buf.slice(0, nl).trim());
170
- };
171
- const onError = (error) => {
172
- cleanup();
173
- reject(error);
174
- };
175
- const cleanup = () => {
176
- clearTimeout(timer);
177
- stream.off("data", onData);
178
- stream.off("error", onError);
179
- };
180
- stream.on("data", onData);
181
- stream.on("error", onError);
182
- });
183
- }
184
- async function serveReportFile(filePath, req, res) {
185
- const url = req.url ?? "/";
186
- const path = url.split("?")[0] ?? "/";
187
- if (req.method !== "GET" || (path !== "/" && path !== "/index.html")) {
188
- res.writeHead(404);
189
- res.end();
190
- return;
191
- }
192
- try {
193
- const body = await readFile(filePath);
194
- res.writeHead(200, {
195
- "content-type": "text/html; charset=utf-8",
196
- "cache-control": "no-store",
197
- });
198
- res.end(body);
199
- }
200
- catch {
201
- res.writeHead(404);
202
- res.end();
203
- }
204
- }
205
- //# sourceMappingURL=report-preview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"report-preview.js","sourceRoot":"","sources":["../src/report-preview.ts"],"names":[],"mappings":"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"}
@@ -1,139 +0,0 @@
1
- import type { AgentHost, HostAuthMode, JudgeCriterion, JudgeProgressEvent, RoutingContract } from "@post-print/agent-harness";
2
- import type { AgentScenario, AgentSuiteDefaults, CompareArmId, ScenarioResult, ScenarioRubric, SuiteRunReport } from "./types.js";
3
- import type { ViewerCatalogScenario } from "./viewer/catalog.js";
4
- /** Parent process prints suite headers and final verdicts; children only print phases. */
5
- export declare function shouldPrintSuiteChrome(): boolean;
6
- /** Best-effort cancel + worktree cleanup when live runs are interrupted (Ctrl+C / SIGINT/SIGTERM). */
7
- export declare function registerLiveRunHandlers(): void;
8
- export interface RunSuiteOptions {
9
- cwd: string;
10
- suitePath: string;
11
- host?: AgentHost;
12
- /**
13
- * When true, skip scenarios pinned to a different host.
14
- * Set by a multi-host matrix so `scenario.host` does not rerun on every cell.
15
- */
16
- hostLocked?: boolean;
17
- /** Run only this scenario name (used by live subprocess isolation). */
18
- scenarioFilter?: string;
19
- /** Run the harness LLM judge for rubric.judge criteria. */
20
- judge?: boolean;
21
- /** Isolate each scenario in a detached git worktree. */
22
- worktree?: boolean;
23
- /** Session id for transient staging traces under $TMPDIR (see record-trace.ts). */
24
- stagingSessionId?: string;
25
- keepRecordings?: boolean;
26
- suitesDir?: string;
27
- suiteFilter?: string;
28
- /** Hard cap on live agent stream + wait (ms). */
29
- timeoutMs?: number;
30
- /** Allow AskQuestion-style tools in live runs (default false). */
31
- allowUserInput?: boolean;
32
- /** Evidence-rich failures + on-disk debug bundles. */
33
- debug?: boolean;
34
- /** Override staging sessions parent (from --debug-dir). */
35
- debugDir?: string;
36
- /** Live announce-stop retries (overrides AGENT_TEST_SCENARIO_RETRIES). */
37
- scenarioRetries?: number;
38
- /** Prefer `<rubricsDir>/<suite>/rubrics.json` over sibling rubrics (harness-only). */
39
- rubricsDir?: string;
40
- /** Consumer adapter modules to forward to isolated children. */
41
- adapterModules?: string[];
42
- /** Host billing mode. Default is subscription when omitted. */
43
- authMode?: HostAuthMode;
44
- /** Isolated child: run one compare arm only. */
45
- compareArm?: CompareArmId;
46
- /** Parallel isolated live children. Default 1. */
47
- workers?: number;
48
- }
49
- export interface RunAgentTestOptions {
50
- cwd: string;
51
- scenario: AgentScenario;
52
- suiteName?: string;
53
- defaults?: AgentSuiteDefaults;
54
- /** Overrides the suite default; a scenario host still wins. */
55
- host?: AgentHost;
56
- judge?: boolean;
57
- worktree?: boolean;
58
- timeoutMs?: number;
59
- allowUserInput?: boolean;
60
- debug?: boolean;
61
- debugDir?: string;
62
- keepRecordings?: boolean;
63
- scenarioRetries?: number;
64
- /** Internal suite orchestration metadata; safe for programmatic callers to omit. */
65
- stagingSessionId?: string;
66
- suitesDir?: string;
67
- rubricsDir?: string;
68
- scenarioIndex?: number;
69
- scenarioTotal?: number;
70
- /** Host billing mode. Default is subscription when omitted. */
71
- authMode?: HostAuthMode;
72
- /** Isolated child: run one compare arm only. */
73
- compareArm?: CompareArmId;
74
- }
75
- /** Live-only mode hint from rubric — not part of the user scenario prompt. */
76
- export declare function outputContractForRubric(rubric: ScenarioRubric): RoutingContract | undefined;
77
- /** Explicit judge questions plus skill-invoke questions for mustInvokeSkill. */
78
- export declare function collectJudgeCriteria(rubric: ScenarioRubric): JudgeCriterion[];
79
- /** Shared judge questions only. Skill-follow checks stay per-arm and deterministic. */
80
- export declare function collectCompareJudgeCriteria(rubric: ScenarioRubric): JudgeCriterion[];
81
- /** Judge auth and the judge call apply only when a rubric has judge work. */
82
- export declare function judgeAuthRequired(judge: boolean, rubrics: readonly ScenarioRubric[]): boolean;
83
- /** Shared judge on compare. Skill-follow judge questions stay on non-compare scenarios. */
84
- export declare function scenarioNeedsJudge(judge: boolean, scenario: Pick<AgentScenario, "compare" | "rubric">): boolean;
85
- /** True when the selected live run will call the judge. */
86
- export declare function selectedRunNeedsJudge(options: {
87
- cwd: string;
88
- suitesDir: string;
89
- filter?: string;
90
- scenarioFilter?: string;
91
- rubricsDir?: string;
92
- judge?: boolean;
93
- }): Promise<boolean>;
94
- export declare function runSuite(options: RunSuiteOptions): Promise<SuiteRunReport>;
95
- /** Run one real agent scenario. JSON suites delegate to this same execution boundary. */
96
- export declare function runAgentTest(options: RunAgentTestOptions): Promise<ScenarioResult>;
97
- /** Finalize viewer-scheduled compare arms through the same domain and judge path as the CLI. */
98
- export declare function finalizeScheduledCompareScenario(options: {
99
- cwd: string;
100
- suite: string;
101
- scenario: ViewerCatalogScenario;
102
- host: AgentHost;
103
- armResults: Map<string, ScenarioResult>;
104
- judge?: boolean;
105
- }): Promise<ScenarioResult>;
106
- /** Finalize one viewer-scheduled scenario through the parent-owned judge path. */
107
- export declare function finalizeScheduledScenario(options: {
108
- cwd: string;
109
- suite: string;
110
- scenario: ViewerCatalogScenario;
111
- host: AgentHost;
112
- result: ScenarioResult;
113
- judge?: boolean;
114
- onJudgeEvent?: (event: JudgeProgressEvent) => void;
115
- }): Promise<ScenarioResult>;
116
- export declare function runAllSuites(options: {
117
- cwd: string;
118
- suitesDir: string;
119
- host?: AgentHost;
120
- hosts?: readonly AgentHost[];
121
- filter?: string;
122
- scenarioFilter?: string;
123
- judge?: boolean;
124
- worktree?: boolean;
125
- stagingSessionId?: string;
126
- keepRecordings?: boolean;
127
- timeoutMs?: number;
128
- allowUserInput?: boolean;
129
- debug?: boolean;
130
- debugDir?: string;
131
- scenarioRetries?: number;
132
- rubricsDir?: string;
133
- adapterModules?: string[];
134
- authMode?: HostAuthMode;
135
- compareArm?: CompareArmId;
136
- workers?: number;
137
- }): Promise<SuiteRunReport[]>;
138
- export { discoverSuites } from "./discover-suites.js";
139
- //# sourceMappingURL=run-suite.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}