@post-print/agent-test 0.1.10 → 0.1.13

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 (50) hide show
  1. package/README.md +52 -6
  2. package/dist/cli-entry.d.ts.map +1 -1
  3. package/dist/cli-entry.js +1 -1
  4. package/dist/cli-entry.js.map +1 -1
  5. package/dist/cli.js +54 -5
  6. package/dist/cli.js.map +1 -1
  7. package/dist/doctor.d.ts +15 -0
  8. package/dist/doctor.d.ts.map +1 -0
  9. package/dist/doctor.js +49 -0
  10. package/dist/doctor.js.map +1 -0
  11. package/dist/html-report.d.ts +11 -0
  12. package/dist/html-report.d.ts.map +1 -0
  13. package/dist/html-report.js +462 -0
  14. package/dist/html-report.js.map +1 -0
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.d.ts.map +1 -1
  17. package/dist/index.js +2 -1
  18. package/dist/index.js.map +1 -1
  19. package/dist/live-isolation.d.ts +23 -0
  20. package/dist/live-isolation.d.ts.map +1 -1
  21. package/dist/live-isolation.js +125 -14
  22. package/dist/live-isolation.js.map +1 -1
  23. package/dist/live-timeout.d.ts +11 -0
  24. package/dist/live-timeout.d.ts.map +1 -0
  25. package/dist/live-timeout.js +29 -0
  26. package/dist/live-timeout.js.map +1 -0
  27. package/dist/progress.d.ts.map +1 -1
  28. package/dist/progress.js +2 -1
  29. package/dist/progress.js.map +1 -1
  30. package/dist/record-trace.d.ts +18 -0
  31. package/dist/record-trace.d.ts.map +1 -1
  32. package/dist/record-trace.js +47 -7
  33. package/dist/record-trace.js.map +1 -1
  34. package/dist/run-suite.d.ts +6 -0
  35. package/dist/run-suite.d.ts.map +1 -1
  36. package/dist/run-suite.js +124 -52
  37. package/dist/run-suite.js.map +1 -1
  38. package/dist/scenario-seed.d.ts +8 -0
  39. package/dist/scenario-seed.d.ts.map +1 -1
  40. package/dist/scenario-seed.js +31 -0
  41. package/dist/scenario-seed.js.map +1 -1
  42. package/dist/theme.d.ts.map +1 -1
  43. package/dist/theme.js +3 -9
  44. package/dist/theme.js.map +1 -1
  45. package/dist/types.d.ts +3 -1
  46. package/dist/types.d.ts.map +1 -1
  47. package/dist/warnings.d.ts.map +1 -1
  48. package/dist/warnings.js +1 -2
  49. package/dist/warnings.js.map +1 -1
  50. package/package.json +5 -2
@@ -1,23 +1,20 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { resolve } from "node:path";
3
+ import { LIVE_SUBPROCESS_SETUP_MAX_MS, LIVE_SUBPROCESS_SIGKILL_ESCALATION_MS, LIVE_SUBPROCESS_TIMEOUT_BUFFER_MS, liveSubprocessTimeoutMs, } from "./live-timeout.js";
4
+ import { getStagingAgentStartPath, readAgentStartMarker } from "./record-trace.js";
3
5
  const DEFAULT_SCENARIO_SETTLE_MS = 5000;
4
6
  /** Child process per live scenario (default) — avoids macOS OOM (exit 137) across council runs. */
5
7
  export function liveScenarioIsolationEnabled() {
6
- return (process.env.AGENT_TEST_CHILD !== "1" &&
7
- process.env.AGENT_TEST_NO_ISOLATE !== "1");
8
+ return process.env.AGENT_TEST_CHILD !== "1" && process.env.AGENT_TEST_NO_ISOLATE !== "1";
8
9
  }
9
10
  export function scenarioSettleMs() {
10
- const raw = process.env.AGENT_TEST_SCENARIO_SETTLE_MS ??
11
- String(DEFAULT_SCENARIO_SETTLE_MS);
11
+ const raw = process.env.AGENT_TEST_SCENARIO_SETTLE_MS ?? String(DEFAULT_SCENARIO_SETTLE_MS);
12
12
  const parsed = Number(raw);
13
- return Number.isFinite(parsed) && parsed >= 0
14
- ? parsed
15
- : DEFAULT_SCENARIO_SETTLE_MS;
13
+ return Number.isFinite(parsed) && parsed >= 0 ? parsed : DEFAULT_SCENARIO_SETTLE_MS;
16
14
  }
17
15
  /** Build the Node subprocess command for one live scenario (same CLI entry as the parent). */
18
16
  export function buildLiveScenarioCommand(options) {
19
- const cliPath = process.argv[1] ??
20
- resolve(options.cwd, "node_modules/@post-print/agent-test/dist/cli.js");
17
+ const cliPath = process.argv[1] ?? resolve(options.cwd, "node_modules/@post-print/agent-test/dist/cli.js");
21
18
  const args = [cliPath, "--live", "--scenario", options.scenarioName];
22
19
  if (options.suiteFilter) {
23
20
  args.push("--suite", options.suiteFilter);
@@ -37,6 +34,15 @@ export function buildLiveScenarioCommand(options) {
37
34
  if (options.worktree === false) {
38
35
  args.push("--no-worktree");
39
36
  }
37
+ if (options.noTimeout) {
38
+ args.push("--no-timeout");
39
+ }
40
+ else if (options.timeoutMs !== undefined) {
41
+ args.push("--timeout-ms", String(options.timeoutMs));
42
+ }
43
+ if (options.allowUserInput) {
44
+ args.push("--allow-user-input");
45
+ }
40
46
  // Isolated child: agent + rubric only; parent runs judge (avoids OOM after heavy council runs).
41
47
  args.push("--no-judge");
42
48
  return {
@@ -50,6 +56,24 @@ function sleep(ms) {
50
56
  setTimeout(resolveSleep, ms);
51
57
  });
52
58
  }
59
+ async function waitForAgentStartMarker(path, deadlineMs, pollMs = 100, shouldStop) {
60
+ const started = Date.now();
61
+ while (Date.now() - started < deadlineMs) {
62
+ if (shouldStop?.()) {
63
+ return undefined;
64
+ }
65
+ const marker = await readAgentStartMarker(path);
66
+ if (marker !== undefined) {
67
+ return marker;
68
+ }
69
+ await sleep(pollMs);
70
+ }
71
+ return undefined;
72
+ }
73
+ /** Delay from agent-start marker until parent SIGTERM (harness deadline + cleanup slack). */
74
+ export function subprocessKillDelayMs(agentStartMs, agentTimeoutMs) {
75
+ return agentStartMs + agentTimeoutMs + LIVE_SUBPROCESS_TIMEOUT_BUFFER_MS - Date.now();
76
+ }
53
77
  /** Run one live scenario in a fresh Node subprocess; inherit stdio for live progress. */
54
78
  export async function spawnLiveScenario(options) {
55
79
  const { command, args, execArgv } = buildLiveScenarioCommand(options);
@@ -63,14 +87,80 @@ export async function spawnLiveScenario(options) {
63
87
  if (options.scenarioTotal !== undefined) {
64
88
  env.AGENT_TEST_SCENARIO_TOTAL = String(options.scenarioTotal);
65
89
  }
90
+ const agentTimeoutMs = options.timeoutMs;
91
+ const subprocessTimeoutMs = liveSubprocessTimeoutMs(agentTimeoutMs);
66
92
  const exitCode = await new Promise((resolveExit, reject) => {
67
93
  const child = spawn(command, [...execArgv, ...args], {
68
94
  cwd: options.cwd,
69
95
  env,
70
96
  stdio: "inherit",
71
97
  });
72
- child.on("error", reject);
98
+ let childClosed = false;
99
+ let killedForTimeout = false;
100
+ let timeoutId;
101
+ let sigkillId;
102
+ const clearKillTimers = () => {
103
+ if (timeoutId !== undefined) {
104
+ clearTimeout(timeoutId);
105
+ timeoutId = undefined;
106
+ }
107
+ if (sigkillId !== undefined) {
108
+ clearTimeout(sigkillId);
109
+ sigkillId = undefined;
110
+ }
111
+ };
112
+ const killChildForTimeout = () => {
113
+ if (childClosed || killedForTimeout) {
114
+ return;
115
+ }
116
+ killedForTimeout = true;
117
+ child.kill("SIGTERM");
118
+ sigkillId = setTimeout(() => {
119
+ if (childClosed) {
120
+ return;
121
+ }
122
+ child.kill("SIGKILL");
123
+ }, LIVE_SUBPROCESS_SIGKILL_ESCALATION_MS);
124
+ };
125
+ const armKillTimer = (delayMs) => {
126
+ if (childClosed) {
127
+ return;
128
+ }
129
+ if (delayMs <= 0) {
130
+ killChildForTimeout();
131
+ return;
132
+ }
133
+ timeoutId = setTimeout(killChildForTimeout, delayMs);
134
+ };
135
+ if (agentTimeoutMs && agentTimeoutMs > 0 && options.stagingSessionId && !options.noTimeout) {
136
+ const markerPath = getStagingAgentStartPath(options.stagingSessionId, options.suiteName, options.scenarioName);
137
+ void (async () => {
138
+ const agentStartMs = await waitForAgentStartMarker(markerPath, LIVE_SUBPROCESS_SETUP_MAX_MS, 100, () => childClosed);
139
+ if (childClosed) {
140
+ return;
141
+ }
142
+ if (agentStartMs === undefined) {
143
+ killChildForTimeout();
144
+ return;
145
+ }
146
+ armKillTimer(subprocessKillDelayMs(agentStartMs, agentTimeoutMs));
147
+ })();
148
+ }
149
+ else if (subprocessTimeoutMs !== undefined) {
150
+ armKillTimer(subprocessTimeoutMs);
151
+ }
152
+ child.on("error", (error) => {
153
+ childClosed = true;
154
+ clearKillTimers();
155
+ reject(error);
156
+ });
73
157
  child.on("close", (code, signal) => {
158
+ childClosed = true;
159
+ clearKillTimers();
160
+ if (killedForTimeout) {
161
+ resolveExit(124);
162
+ return;
163
+ }
74
164
  if (signal === "SIGKILL") {
75
165
  resolveExit(137);
76
166
  return;
@@ -85,19 +175,40 @@ export async function spawnLiveScenario(options) {
85
175
  return exitCode;
86
176
  }
87
177
  export function subprocessFailureMessage(exitCode) {
178
+ if (exitCode === 124) {
179
+ return "live scenario subprocess timed out (harness deadline exceeded)";
180
+ }
88
181
  if (exitCode === 137) {
89
182
  return "subprocess killed (137) — macOS OOM; close heavy apps or increase AGENT_TEST_SCENARIO_SETTLE_MS";
90
183
  }
91
184
  return `live scenario subprocess exited ${exitCode}`;
92
185
  }
186
+ /**
187
+ * Map isolated child exit + optional staging sidecar to parent failures.
188
+ * A persisted pass sidecar wins over a late timeout kill (exit 124).
189
+ */
190
+ export function failuresForLiveSubprocessExit(exitCode, childResult) {
191
+ if (exitCode === 0) {
192
+ return [];
193
+ }
194
+ if (childResult?.failures.length) {
195
+ return [...childResult.failures];
196
+ }
197
+ if (childResult?.passed === true) {
198
+ return [];
199
+ }
200
+ return [
201
+ {
202
+ matcher: "liveScenario",
203
+ message: subprocessFailureMessage(exitCode),
204
+ },
205
+ ];
206
+ }
93
207
  /** Parent-provided counters for isolated child runs (1-based index). */
94
208
  export function parentScenarioCounters() {
95
209
  const index = Number(process.env.AGENT_TEST_SCENARIO_INDEX);
96
210
  const total = Number(process.env.AGENT_TEST_SCENARIO_TOTAL);
97
- if (Number.isInteger(index) &&
98
- index > 0 &&
99
- Number.isInteger(total) &&
100
- total > 0) {
211
+ if (Number.isInteger(index) && index > 0 && Number.isInteger(total) && total > 0) {
101
212
  return { index, total };
102
213
  }
103
214
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"live-isolation.js","sourceRoot":"","sources":["../src/live-isolation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live-isolation.js","sourceRoot":"","sources":["../src/live-isolation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /** Default live agent deadline — long enough for slow models, short enough to fail closed. */
2
+ export declare const DEFAULT_LIVE_TIMEOUT_MS = 600000;
3
+ /** Extra slack for isolated subprocess kill after the in-process harness timeout. */
4
+ export declare const LIVE_SUBPROCESS_TIMEOUT_BUFFER_MS = 30000;
5
+ /** Grace period after SIGTERM before SIGKILL on a timed-out live child. */
6
+ export declare const LIVE_SUBPROCESS_SIGKILL_ESCALATION_MS = 5000;
7
+ /** Max wait for child worktree/seed setup before parent treats setup as hung. */
8
+ export declare const LIVE_SUBPROCESS_SETUP_MAX_MS = 600000;
9
+ export declare function resolveLiveTimeoutMs(override?: number): number | undefined;
10
+ export declare function liveSubprocessTimeoutMs(agentTimeoutMs?: number): number | undefined;
11
+ //# sourceMappingURL=live-timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-timeout.d.ts","sourceRoot":"","sources":["../src/live-timeout.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,qFAAqF;AACrF,eAAO,MAAM,iCAAiC,QAAS,CAAC;AAExD,2EAA2E;AAC3E,eAAO,MAAM,qCAAqC,OAAQ,CAAC;AAE3D,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,SAAU,CAAC;AAEpD,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAe1E;AAED,wBAAgB,uBAAuB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKnF"}
@@ -0,0 +1,29 @@
1
+ /** Default live agent deadline — long enough for slow models, short enough to fail closed. */
2
+ export const DEFAULT_LIVE_TIMEOUT_MS = 600_000;
3
+ /** Extra slack for isolated subprocess kill after the in-process harness timeout. */
4
+ export const LIVE_SUBPROCESS_TIMEOUT_BUFFER_MS = 30_000;
5
+ /** Grace period after SIGTERM before SIGKILL on a timed-out live child. */
6
+ export const LIVE_SUBPROCESS_SIGKILL_ESCALATION_MS = 5_000;
7
+ /** Max wait for child worktree/seed setup before parent treats setup as hung. */
8
+ export const LIVE_SUBPROCESS_SETUP_MAX_MS = 600_000;
9
+ export function resolveLiveTimeoutMs(override) {
10
+ if (override !== undefined) {
11
+ return override > 0 ? override : undefined;
12
+ }
13
+ const raw = process.env.AGENT_TEST_TIMEOUT_MS?.trim();
14
+ if (!raw) {
15
+ return DEFAULT_LIVE_TIMEOUT_MS;
16
+ }
17
+ if (raw === "0" || raw === "false") {
18
+ return undefined;
19
+ }
20
+ const parsed = Number(raw);
21
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_LIVE_TIMEOUT_MS;
22
+ }
23
+ export function liveSubprocessTimeoutMs(agentTimeoutMs) {
24
+ if (!agentTimeoutMs || agentTimeoutMs <= 0) {
25
+ return undefined;
26
+ }
27
+ return agentTimeoutMs + LIVE_SUBPROCESS_TIMEOUT_BUFFER_MS;
28
+ }
29
+ //# sourceMappingURL=live-timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-timeout.js","sourceRoot":"","sources":["../src/live-timeout.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C,qFAAqF;AACrF,MAAM,CAAC,MAAM,iCAAiC,GAAG,MAAM,CAAC;AAExD,2EAA2E;AAC3E,MAAM,CAAC,MAAM,qCAAqC,GAAG,KAAK,CAAC;AAE3D,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,OAAO,CAAC;AAEpD,MAAM,UAAU,oBAAoB,CAAC,QAAiB;IACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5C,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,uBAAuB,CAAC;IAChC,CAAC;IACD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpC,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,uBAAuB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,cAAuB;IAC9D,IAAI,CAAC,cAAc,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,cAAc,GAAG,iCAAiC,CAAC;AAC3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAO5E;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAQhD;AAiBD,2EAA2E;AAC3E,wBAAsB,aAAa,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAUA,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMjD;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAO5E;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMpD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAQhD;AAiBD,2EAA2E;AAC3E,wBAAsB,aAAa,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChE,OAAO,CAAC,CAAC,CAAC,CAwBZ"}
package/dist/progress.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { logger } from "@post-print/agent-harness";
1
2
  import { formatDurationLabel, theme } from "./theme.js";
2
3
  const DEFAULT_HEARTBEAT_MS = 60_000;
3
4
  function enabled() {
@@ -11,7 +12,7 @@ export function logProgress(message) {
11
12
  return;
12
13
  }
13
14
  clearHeartbeatLine();
14
- console.log(message);
15
+ logger.info(message);
15
16
  }
16
17
  /** Emit a tree phase line (├─ by default; use endPhase for └─). */
17
18
  export function logPhase(message, options) {
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,23 @@
1
1
  import type { AgentTrace } from "@post-print/agent-harness";
2
+ import type { AssertionFailure } from "./types.js";
2
3
  export declare const LIVE_STAGING_DIR_NAME = "agent-spec";
3
4
  export declare function getLiveStagingRoot(): string;
4
5
  export declare function getLiveStagingSessionRoot(sessionId: string): string;
5
6
  /** Staging JSON path for a live scenario trace (matches recordTrace layout). */
6
7
  export declare function getStagingTracePath(stagingSessionId: string, suiteName: string, scenarioName: string): string;
8
+ /** Parent arms subprocess kill from this marker (epoch ms) when the harness deadline starts. */
9
+ export declare function getStagingAgentStartPath(stagingSessionId: string, suiteName: string, scenarioName: string): string;
10
+ /** Child writes when the harness agent deadline clock starts (after pre-stream SDK setup). */
11
+ export declare function writeAgentStartMarker(path: string): Promise<void>;
12
+ /** Parent reads agent-start epoch ms from staging; undefined when absent or invalid. */
13
+ export declare function readAgentStartMarker(path: string): Promise<number | undefined>;
14
+ /** Parent reads rubric failures from isolated child runs when exit code is non-zero. */
15
+ export declare function getStagingResultPath(stagingSessionId: string, suiteName: string, scenarioName: string): string;
16
+ export interface LiveScenarioResultSidecar {
17
+ passed: boolean;
18
+ failures: AssertionFailure[];
19
+ durationMs: number;
20
+ }
7
21
  export declare function createLiveStagingSessionId(): string;
8
22
  export type RecordingPathKind = "staging" | "fixture";
9
23
  export interface ResolvedRecordingPath {
@@ -20,6 +34,10 @@ export declare function resolveRecordingPath(suiteName: string, scenarioName: st
20
34
  export declare function recordTrace(outputPath: string, trace: AgentTrace): Promise<string>;
21
35
  /** Load a staged live trace for parent-process judge after isolated child runs. */
22
36
  export declare function loadStagingTrace(path: string): Promise<AgentTrace>;
37
+ /** Child writes rubric outcome for parent when live scenarios run in subprocess isolation. */
38
+ export declare function writeStagingResult(path: string, result: LiveScenarioResultSidecar): Promise<void>;
39
+ /** Parent merges child rubric failures instead of only reporting subprocess exit code. */
40
+ export declare function loadStagingResult(path: string): Promise<LiveScenarioResultSidecar | undefined>;
23
41
  /** Remove a live staging session directory under $TMPDIR. */
24
42
  export declare function cleanupStagingSession(sessionRoot: string): Promise<void>;
25
43
  /** Remove legacy in-repo staging dirs from before tmpdir staging (best-effort). */
@@ -1 +1 @@
1
- {"version":3,"file":"record-trace.d.ts","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAYlD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,gFAAgF;AAChF,wBAAgB,mBAAmB,CAClC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,MAAM,CAMR;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,2BAA2B,GAClC,qBAAqB,GAAG,SAAS,CAqBnC;AAED,0EAA0E;AAC1E,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBxF;AAED,mFAAmF;AACnF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGxE;AAED,6DAA6D;AAC7D,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED,mFAAmF;AACnF,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBrF"}
1
+ {"version":3,"file":"record-trace.d.ts","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAYlD,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;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,GAClB,MAAM,CAMR;AAED,gGAAgG;AAChG,wBAAgB,wBAAwB,CACvC,gBAAgB,EAAE,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,MAAM,CAMR;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,GAClB,MAAM,CAMR;AAED,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD;AAED,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,iBAAiB,CAAC;CACxB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,6FAA6F;AAC7F,wBAAgB,oBAAoB,CACnC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,cAAc,EAAE,OAAO,EACvB,OAAO,EAAE,2BAA2B,GAClC,qBAAqB,GAAG,SAAS,CAmBnC;AAED,0EAA0E;AAC1E,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBxF;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;AAED,mFAAmF;AACnF,wBAAsB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuBrF"}
@@ -16,30 +16,56 @@ export function getLiveStagingRoot() {
16
16
  export function getLiveStagingSessionRoot(sessionId) {
17
17
  return join(getLiveStagingRoot(), sessionId);
18
18
  }
19
+ function stagingScenarioBasename(scenarioName) {
20
+ return slugifyScenarioName(scenarioName);
21
+ }
19
22
  /** Staging JSON path for a live scenario trace (matches recordTrace layout). */
20
23
  export function getStagingTracePath(stagingSessionId, suiteName, scenarioName) {
21
- return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${slugifyScenarioName(scenarioName)}.json`);
24
+ return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}.json`);
25
+ }
26
+ /** Parent arms subprocess kill from this marker (epoch ms) when the harness deadline starts. */
27
+ export function getStagingAgentStartPath(stagingSessionId, suiteName, scenarioName) {
28
+ return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}.agent-start`);
29
+ }
30
+ /** Child writes when the harness agent deadline clock starts (after pre-stream SDK setup). */
31
+ export async function writeAgentStartMarker(path) {
32
+ await mkdir(dirname(path), { recursive: true });
33
+ await writeFile(path, `${Date.now()}\n`, "utf8");
34
+ }
35
+ /** Parent reads agent-start epoch ms from staging; undefined when absent or invalid. */
36
+ export async function readAgentStartMarker(path) {
37
+ try {
38
+ const raw = (await readFile(path, "utf8")).trim();
39
+ const parsed = Number(raw);
40
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;
41
+ }
42
+ catch {
43
+ return undefined;
44
+ }
45
+ }
46
+ /** Parent reads rubric failures from isolated child runs when exit code is non-zero. */
47
+ export function getStagingResultPath(stagingSessionId, suiteName, scenarioName) {
48
+ return join(getLiveStagingSessionRoot(stagingSessionId), suiteName, `${stagingScenarioBasename(scenarioName)}.result.json`);
22
49
  }
23
50
  export function createLiveStagingSessionId() {
24
51
  return `${process.pid}-${Date.now()}`;
25
52
  }
26
53
  /** Staging lives under $TMPDIR; use --record-fixtures to overwrite committed replayTrace. */
27
54
  export function resolveRecordingPath(suiteName, scenarioName, replayTrace, recordFixtures, options) {
28
- if (!replayTrace) {
29
- return undefined;
30
- }
31
55
  if (recordFixtures) {
56
+ if (!replayTrace) {
57
+ return undefined;
58
+ }
32
59
  return {
33
60
  path: resolve(options.repoRoot, replayTrace),
34
61
  kind: "fixture",
35
62
  };
36
63
  }
37
64
  if (!options.stagingSessionId) {
38
- throw new Error("stagingSessionId required for live staging recordings");
65
+ return undefined;
39
66
  }
40
- const slug = slugifyScenarioName(scenarioName);
41
67
  return {
42
- path: join(getLiveStagingSessionRoot(options.stagingSessionId), suiteName, `${slug}.json`),
68
+ path: getStagingTracePath(options.stagingSessionId, suiteName, scenarioName),
43
69
  kind: "staging",
44
70
  };
45
71
  }
@@ -66,6 +92,20 @@ export async function loadStagingTrace(path) {
66
92
  const raw = JSON.parse(await readFile(path, "utf8"));
67
93
  return enrichTrace(raw);
68
94
  }
95
+ /** Child writes rubric outcome for parent when live scenarios run in subprocess isolation. */
96
+ export async function writeStagingResult(path, result) {
97
+ await mkdir(dirname(path), { recursive: true });
98
+ await writeFile(path, `${JSON.stringify(result, null, 2)}\n`, "utf8");
99
+ }
100
+ /** Parent merges child rubric failures instead of only reporting subprocess exit code. */
101
+ export async function loadStagingResult(path) {
102
+ try {
103
+ return JSON.parse(await readFile(path, "utf8"));
104
+ }
105
+ catch {
106
+ return undefined;
107
+ }
108
+ }
69
109
  /** Remove a live staging session directory under $TMPDIR. */
70
110
  export async function cleanupStagingSession(sessionRoot) {
71
111
  await rm(sessionRoot, { recursive: true, force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"record-trace.js","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-trace.js","sourceRoot":"","sources":["../src/record-trace.ts"],"names":[],"mappings":"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"}
@@ -23,6 +23,10 @@ export interface RunSuiteOptions {
23
23
  keepRecordings?: boolean;
24
24
  suitesDir?: string;
25
25
  suiteFilter?: string;
26
+ /** Hard cap on live agent stream + wait (ms). */
27
+ timeoutMs?: number;
28
+ /** Allow AskQuestion-style tools in live runs (default false). */
29
+ allowUserInput?: boolean;
26
30
  }
27
31
  /** Live-only mode hint from rubric — not part of the user scenario prompt. */
28
32
  export declare function outputContractForRubric(rubric: ScenarioRubric): RoutingContract | undefined;
@@ -39,6 +43,8 @@ export declare function runAllSuites(options: {
39
43
  worktree?: boolean;
40
44
  stagingSessionId?: string;
41
45
  keepRecordings?: boolean;
46
+ timeoutMs?: number;
47
+ allowUserInput?: boolean;
42
48
  }): Promise<SuiteRunReport[]>;
43
49
  export { discoverSuites } from "./discover-suites.js";
44
50
  //# sourceMappingURL=run-suite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,SAAS,EAGT,eAAe,EAEf,MAAM,2BAA2B,CAAC;AAoCnC,OAAO,KAAK,EAMX,cAAc,EACd,cAAc,EACd,MAAM,YAAY,CAAC;AASpB,0FAA0F;AAC1F,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,IAAI,IAAI,CAmB9C;AAUD,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,cAAc,GACpB,eAAe,GAAG,SAAS,CAQ7B;AA6DD,wBAAsB,QAAQ,CAC7B,OAAO,EAAE,eAAe,GACtB,OAAO,CAAC,cAAc,CAAC,CAsJzB;AAqRD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAkC5B;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,SAAS,EAGT,eAAe,EAEf,MAAM,2BAA2B,CAAC;AA0CnC,OAAO,KAAK,EAMX,cAAc,EACd,cAAc,EACd,MAAM,YAAY,CAAC;AA2BpB,0FAA0F;AAC1F,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,oFAAoF;AACpF,wBAAgB,uBAAuB,IAAI,IAAI,CA6B9C;AASD,MAAM,WAAW,eAAe;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yEAAyE;IACzE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,CAQ3F;AA2DD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAqKhF;AAmSD,wBAAsB,YAAY,CAAC,OAAO,EAAE;IAC3C,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA+B5B;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}