@post-print/agent-test 0.3.3 → 0.3.5

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 (106) hide show
  1. package/README.md +126 -157
  2. package/dist/check.d.ts +38 -0
  3. package/dist/check.d.ts.map +1 -0
  4. package/dist/check.js +169 -0
  5. package/dist/check.js.map +1 -0
  6. package/dist/cli.d.ts +12 -14
  7. package/dist/cli.d.ts.map +1 -1
  8. package/dist/cli.js +342 -366
  9. package/dist/cli.js.map +1 -1
  10. package/dist/compare-scenario.d.ts +33 -0
  11. package/dist/compare-scenario.d.ts.map +1 -0
  12. package/dist/compare-scenario.js +128 -0
  13. package/dist/compare-scenario.js.map +1 -0
  14. package/dist/debug-bundle.d.ts +2 -2
  15. package/dist/debug-bundle.d.ts.map +1 -1
  16. package/dist/debug-bundle.js +12 -12
  17. package/dist/debug-bundle.js.map +1 -1
  18. package/dist/doctor.d.ts +6 -1
  19. package/dist/doctor.d.ts.map +1 -1
  20. package/dist/doctor.js +136 -14
  21. package/dist/doctor.js.map +1 -1
  22. package/dist/expect.d.ts +6 -5
  23. package/dist/expect.d.ts.map +1 -1
  24. package/dist/expect.js +67 -57
  25. package/dist/expect.js.map +1 -1
  26. package/dist/host-log.d.ts +17 -0
  27. package/dist/host-log.d.ts.map +1 -0
  28. package/dist/host-log.js +154 -0
  29. package/dist/host-log.js.map +1 -0
  30. package/dist/hosts.d.ts +22 -0
  31. package/dist/hosts.d.ts.map +1 -0
  32. package/dist/hosts.js +84 -0
  33. package/dist/hosts.js.map +1 -0
  34. package/dist/html-report.d.ts +0 -13
  35. package/dist/html-report.d.ts.map +1 -1
  36. package/dist/html-report.js +381 -318
  37. package/dist/html-report.js.map +1 -1
  38. package/dist/index.d.ts +15 -8
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +13 -7
  41. package/dist/index.js.map +1 -1
  42. package/dist/live-isolation.d.ts +11 -5
  43. package/dist/live-isolation.d.ts.map +1 -1
  44. package/dist/live-isolation.js +32 -14
  45. package/dist/live-isolation.js.map +1 -1
  46. package/dist/load-adapters.d.ts +13 -0
  47. package/dist/load-adapters.d.ts.map +1 -0
  48. package/dist/load-adapters.js +76 -0
  49. package/dist/load-adapters.js.map +1 -0
  50. package/dist/load-suite.d.ts.map +1 -1
  51. package/dist/load-suite.js +16 -0
  52. package/dist/load-suite.js.map +1 -1
  53. package/dist/mcp-config.d.ts +8 -0
  54. package/dist/mcp-config.d.ts.map +1 -1
  55. package/dist/mcp-config.js +46 -0
  56. package/dist/mcp-config.js.map +1 -1
  57. package/dist/preflight.d.ts +2 -2
  58. package/dist/preflight.d.ts.map +1 -1
  59. package/dist/preflight.js +4 -4
  60. package/dist/preflight.js.map +1 -1
  61. package/dist/progress.d.ts +7 -0
  62. package/dist/progress.d.ts.map +1 -1
  63. package/dist/progress.js +39 -9
  64. package/dist/progress.js.map +1 -1
  65. package/dist/record-trace.d.ts +11 -20
  66. package/dist/record-trace.d.ts.map +1 -1
  67. package/dist/record-trace.js +10 -57
  68. package/dist/record-trace.js.map +1 -1
  69. package/dist/report-preview-server.d.ts +2 -0
  70. package/dist/report-preview-server.d.ts.map +1 -0
  71. package/dist/report-preview-server.js +24 -0
  72. package/dist/report-preview-server.js.map +1 -0
  73. package/dist/report-preview.d.ts +11 -0
  74. package/dist/report-preview.d.ts.map +1 -0
  75. package/dist/report-preview.js +161 -0
  76. package/dist/report-preview.js.map +1 -0
  77. package/dist/run-suite.d.ts +62 -11
  78. package/dist/run-suite.d.ts.map +1 -1
  79. package/dist/run-suite.js +697 -206
  80. package/dist/run-suite.js.map +1 -1
  81. package/dist/scenario-story.d.ts +41 -0
  82. package/dist/scenario-story.d.ts.map +1 -0
  83. package/dist/scenario-story.js +198 -0
  84. package/dist/scenario-story.js.map +1 -0
  85. package/dist/suite-summary.d.ts +2 -0
  86. package/dist/suite-summary.d.ts.map +1 -1
  87. package/dist/suite-summary.js +70 -22
  88. package/dist/suite-summary.js.map +1 -1
  89. package/dist/theme.d.ts +29 -5
  90. package/dist/theme.d.ts.map +1 -1
  91. package/dist/theme.js +204 -45
  92. package/dist/theme.js.map +1 -1
  93. package/dist/types.d.ts +107 -24
  94. package/dist/types.d.ts.map +1 -1
  95. package/dist/validate-seeds.d.ts.map +1 -1
  96. package/dist/validate-seeds.js +21 -6
  97. package/dist/validate-seeds.js.map +1 -1
  98. package/dist/validate-suite.d.ts +3 -1
  99. package/dist/validate-suite.d.ts.map +1 -1
  100. package/dist/validate-suite.js +256 -22
  101. package/dist/validate-suite.js.map +1 -1
  102. package/package.json +5 -5
  103. package/dist/compare.d.ts +0 -79
  104. package/dist/compare.d.ts.map +0 -1
  105. package/dist/compare.js +0 -232
  106. package/dist/compare.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ import { spawn } from "node:child_process";
2
+ import { existsSync } from "node:fs";
3
+ import { readFile } from "node:fs/promises";
4
+ import { createServer } from "node:http";
5
+ import { resolve } from "node:path";
6
+ import { fileURLToPath } from "node:url";
7
+ /** Preview process exits after this idle time. */
8
+ export const REPORT_PREVIEW_IDLE_MS = 30 * 60 * 1000;
9
+ const PREVIEW_HOST = "127.0.0.1";
10
+ export function shouldStartReportPreview(env = process.env, stdoutIsTty = Boolean(process.stdout.isTTY)) {
11
+ if (env.CI === "1" || env.CI === "true") {
12
+ return false;
13
+ }
14
+ if (env.AGENT_TEST_NO_REPORT_PREVIEW === "1") {
15
+ return false;
16
+ }
17
+ return stdoutIsTty;
18
+ }
19
+ export function listenReportPreview(filePath, options = {}) {
20
+ const absolutePath = resolve(filePath);
21
+ const idleMs = options.idleMs;
22
+ return new Promise((resolveListen, reject) => {
23
+ let idle;
24
+ const bumpIdle = () => {
25
+ if (idleMs === undefined) {
26
+ return;
27
+ }
28
+ if (idle !== undefined) {
29
+ clearTimeout(idle);
30
+ }
31
+ idle = setTimeout(() => {
32
+ void close();
33
+ }, idleMs);
34
+ };
35
+ const server = createServer((req, res) => {
36
+ bumpIdle();
37
+ void serveReportFile(absolutePath, req, res);
38
+ });
39
+ const close = () => new Promise((resolveClose, rejectClose) => {
40
+ if (idle !== undefined) {
41
+ clearTimeout(idle);
42
+ idle = undefined;
43
+ }
44
+ server.close((error) => {
45
+ if (error) {
46
+ rejectClose(error);
47
+ return;
48
+ }
49
+ resolveClose();
50
+ });
51
+ });
52
+ server.once("error", reject);
53
+ server.listen(0, PREVIEW_HOST, () => {
54
+ const addr = server.address();
55
+ if (!addr || typeof addr === "string") {
56
+ reject(new Error("report preview has no port"));
57
+ return;
58
+ }
59
+ bumpIdle();
60
+ resolveListen({ url: `http://${PREVIEW_HOST}:${addr.port}/`, close });
61
+ });
62
+ });
63
+ }
64
+ export async function startDetachedReportPreview(filePath) {
65
+ const serverPath = resolvePreviewServerEntry();
66
+ if (!serverPath) {
67
+ return undefined;
68
+ }
69
+ const child = spawn(process.execPath, [serverPath, resolve(filePath), String(REPORT_PREVIEW_IDLE_MS)], {
70
+ detached: true,
71
+ stdio: ["ignore", "pipe", "ignore"],
72
+ });
73
+ if (!child.stdout) {
74
+ child.kill();
75
+ return undefined;
76
+ }
77
+ try {
78
+ const line = await readFirstLine(child.stdout, 3000);
79
+ if (!isLocalPreviewUrl(line)) {
80
+ child.kill();
81
+ return undefined;
82
+ }
83
+ child.stdout.destroy();
84
+ child.unref();
85
+ return line;
86
+ }
87
+ catch {
88
+ killPreviewChild(child);
89
+ return undefined;
90
+ }
91
+ }
92
+ function isLocalPreviewUrl(url) {
93
+ return /^http:\/\/127\.0\.0\.1:\d+\/$/.test(url);
94
+ }
95
+ function resolvePreviewServerEntry() {
96
+ const js = fileURLToPath(new URL("./report-preview-server.js", import.meta.url));
97
+ const ts = fileURLToPath(new URL("./report-preview-server.ts", import.meta.url));
98
+ if (existsSync(js)) {
99
+ return js;
100
+ }
101
+ if (existsSync(ts)) {
102
+ return ts;
103
+ }
104
+ return undefined;
105
+ }
106
+ function killPreviewChild(child) {
107
+ if (!child.killed) {
108
+ child.kill();
109
+ }
110
+ }
111
+ function readFirstLine(stream, timeoutMs) {
112
+ return new Promise((resolveLine, reject) => {
113
+ let buf = "";
114
+ const timer = setTimeout(() => {
115
+ cleanup();
116
+ reject(new Error("report preview timed out"));
117
+ }, timeoutMs);
118
+ const onData = (chunk) => {
119
+ buf += String(chunk);
120
+ const nl = buf.indexOf("\n");
121
+ if (nl === -1) {
122
+ return;
123
+ }
124
+ cleanup();
125
+ resolveLine(buf.slice(0, nl).trim());
126
+ };
127
+ const onError = (error) => {
128
+ cleanup();
129
+ reject(error);
130
+ };
131
+ const cleanup = () => {
132
+ clearTimeout(timer);
133
+ stream.off("data", onData);
134
+ stream.off("error", onError);
135
+ };
136
+ stream.on("data", onData);
137
+ stream.on("error", onError);
138
+ });
139
+ }
140
+ async function serveReportFile(filePath, req, res) {
141
+ const url = req.url ?? "/";
142
+ const path = url.split("?")[0] ?? "/";
143
+ if (req.method !== "GET" || (path !== "/" && path !== "/index.html")) {
144
+ res.writeHead(404);
145
+ res.end();
146
+ return;
147
+ }
148
+ try {
149
+ const body = await readFile(filePath);
150
+ res.writeHead(200, {
151
+ "content-type": "text/html; charset=utf-8",
152
+ "cache-control": "no-store",
153
+ });
154
+ res.end(body);
155
+ }
156
+ catch {
157
+ res.writeHead(404);
158
+ res.end();
159
+ }
160
+ }
161
+ //# sourceMappingURL=report-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report-preview.js","sourceRoot":"","sources":["../src/report-preview.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import type { AgentHost, RoutingContract } from "@post-print/agent-harness";
2
- import type { ScenarioRubric, SuiteRunReport } from "./types.js";
1
+ import type { AgentHost, JudgeCriterion, RoutingContract } from "@post-print/agent-harness";
2
+ import type { AgentScenario, AgentSuiteDefaults, ScenarioResult, ScenarioRubric, SuiteRunReport } from "./types.js";
3
3
  /** Parent process prints suite headers and final verdicts; children only print phases. */
4
4
  export declare function shouldPrintSuiteChrome(): boolean;
5
5
  /** Best-effort cancel + worktree cleanup when live runs are interrupted (Ctrl+C / SIGINT/SIGTERM). */
@@ -8,17 +8,18 @@ export interface RunSuiteOptions {
8
8
  cwd: string;
9
9
  suitePath: string;
10
10
  host?: AgentHost;
11
+ /**
12
+ * When true, skip scenarios pinned to a different host.
13
+ * Set by a multi-host matrix so `scenario.host` does not rerun on every cell.
14
+ */
15
+ hostLocked?: boolean;
11
16
  /** Run only this scenario name (used by live subprocess isolation). */
12
17
  scenarioFilter?: string;
13
- /** Write live traces after a fully passing run. */
14
- record?: boolean;
15
- /** Overwrite committed replayTrace paths (default: write staging traces under $TMPDIR). */
16
- recordFixtures?: boolean;
17
- /** Run harness LLM judge for rubric.judge criteria (live hosts only). */
18
+ /** Run the harness LLM judge for rubric.judge criteria. */
18
19
  judge?: boolean;
19
- /** Isolate each live scenario in a detached git worktree. */
20
+ /** Isolate each scenario in a detached git worktree. */
20
21
  worktree?: boolean;
21
- /** Session id for live staging traces under $TMPDIR (see record-trace.ts). */
22
+ /** Session id for transient staging traces under $TMPDIR (see record-trace.ts). */
22
23
  stagingSessionId?: string;
23
24
  keepRecordings?: boolean;
24
25
  suitesDir?: string;
@@ -35,18 +36,67 @@ export interface RunSuiteOptions {
35
36
  scenarioRetries?: number;
36
37
  /** Prefer `<rubricsDir>/<suite>/rubrics.json` over sibling rubrics (harness-only). */
37
38
  rubricsDir?: string;
39
+ /** Consumer adapter modules to forward to isolated children. */
40
+ adapterModules?: string[];
41
+ }
42
+ export interface RunAgentTestOptions {
43
+ cwd: string;
44
+ scenario: AgentScenario;
45
+ suiteName?: string;
46
+ defaults?: AgentSuiteDefaults;
47
+ /** Overrides the suite default; a scenario host still wins. */
48
+ host?: AgentHost;
49
+ judge?: boolean;
50
+ worktree?: boolean;
51
+ timeoutMs?: number;
52
+ allowUserInput?: boolean;
53
+ debug?: boolean;
54
+ debugDir?: string;
55
+ keepRecordings?: boolean;
56
+ scenarioRetries?: number;
57
+ /** Internal suite orchestration metadata; safe for programmatic callers to omit. */
58
+ stagingSessionId?: string;
59
+ suitesDir?: string;
60
+ rubricsDir?: string;
61
+ scenarioIndex?: number;
62
+ scenarioTotal?: number;
38
63
  }
39
64
  /** Live-only mode hint from rubric — not part of the user scenario prompt. */
40
65
  export declare function outputContractForRubric(rubric: ScenarioRubric): RoutingContract | undefined;
66
+ /** Explicit judge questions plus skill-invoke questions for mustInvokeSkill. */
67
+ export declare function collectJudgeCriteria(rubric: ScenarioRubric): JudgeCriterion[];
68
+ /** Pairwise judge questions only. Skill-follow checks stay per-arm and deterministic. */
69
+ export declare function collectCompareJudgeCriteria(rubric: ScenarioRubric): JudgeCriterion[];
70
+ /** Judge auth and the judge call apply only when a rubric has judge work. */
71
+ export declare function judgeAuthRequired(judge: boolean, rubrics: readonly ScenarioRubric[]): boolean;
72
+ /** Pairwise judge on compare. Skill-follow judge questions stay on non-compare scenarios. */
73
+ export declare function scenarioNeedsJudge(judge: boolean, scenario: Pick<AgentScenario, "compare" | "rubric">): boolean;
74
+ /** True when the selected live run will call the judge. */
75
+ export declare function selectedRunNeedsJudge(options: {
76
+ cwd: string;
77
+ suitesDir: string;
78
+ filter?: string;
79
+ scenarioFilter?: string;
80
+ rubricsDir?: string;
81
+ judge?: boolean;
82
+ }): Promise<boolean>;
83
+ export declare function loadSelectedRubrics(options: {
84
+ cwd: string;
85
+ suitesDir: string;
86
+ filter?: string;
87
+ scenarioFilter?: string;
88
+ rubricsDir?: string;
89
+ }): Promise<ScenarioRubric[]>;
41
90
  export declare function runSuite(options: RunSuiteOptions): Promise<SuiteRunReport>;
91
+ /** Run one real agent scenario. JSON suites delegate to this same execution boundary. */
92
+ export declare function runAgentTest(options: RunAgentTestOptions): Promise<ScenarioResult>;
42
93
  export declare function runAllSuites(options: {
43
94
  cwd: string;
44
95
  suitesDir: string;
45
96
  host?: AgentHost;
97
+ hosts?: readonly AgentHost[];
46
98
  filter?: string;
47
99
  scenarioFilter?: string;
48
- record?: boolean;
49
- recordFixtures?: boolean;
50
100
  judge?: boolean;
51
101
  worktree?: boolean;
52
102
  stagingSessionId?: string;
@@ -57,6 +107,7 @@ export declare function runAllSuites(options: {
57
107
  debugDir?: string;
58
108
  scenarioRetries?: number;
59
109
  rubricsDir?: string;
110
+ adapterModules?: string[];
60
111
  }): Promise<SuiteRunReport[]>;
61
112
  export { discoverSuites } from "./discover-suites.js";
62
113
  //# sourceMappingURL=run-suite.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,SAAS,EAIT,eAAe,EAEf,MAAM,2BAA2B,CAAC;AA6DnC,OAAO,KAAK,EAMX,cAAc,EACd,cAAc,EACd,MAAM,YAAY,CAAC;AA8BpB,0FAA0F;AAC1F,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED,sGAAsG;AACtG,wBAAgB,uBAAuB,IAAI,IAAI,CAgC9C;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;IACzB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sFAAsF;IACtF,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,GAAG,SAAS,CAQ3F;AAqMD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAahF;AA0wBD,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;IACzB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAmC5B;AAED,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}