@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.
- package/README.md +126 -157
- package/dist/check.d.ts +38 -0
- package/dist/check.d.ts.map +1 -0
- package/dist/check.js +169 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.d.ts +12 -14
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +342 -366
- package/dist/cli.js.map +1 -1
- package/dist/compare-scenario.d.ts +33 -0
- package/dist/compare-scenario.d.ts.map +1 -0
- package/dist/compare-scenario.js +128 -0
- package/dist/compare-scenario.js.map +1 -0
- package/dist/debug-bundle.d.ts +2 -2
- package/dist/debug-bundle.d.ts.map +1 -1
- package/dist/debug-bundle.js +12 -12
- package/dist/debug-bundle.js.map +1 -1
- package/dist/doctor.d.ts +6 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +136 -14
- package/dist/doctor.js.map +1 -1
- package/dist/expect.d.ts +6 -5
- package/dist/expect.d.ts.map +1 -1
- package/dist/expect.js +67 -57
- package/dist/expect.js.map +1 -1
- package/dist/host-log.d.ts +17 -0
- package/dist/host-log.d.ts.map +1 -0
- package/dist/host-log.js +154 -0
- package/dist/host-log.js.map +1 -0
- package/dist/hosts.d.ts +22 -0
- package/dist/hosts.d.ts.map +1 -0
- package/dist/hosts.js +84 -0
- package/dist/hosts.js.map +1 -0
- package/dist/html-report.d.ts +0 -13
- package/dist/html-report.d.ts.map +1 -1
- package/dist/html-report.js +381 -318
- package/dist/html-report.js.map +1 -1
- package/dist/index.d.ts +15 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/live-isolation.d.ts +11 -5
- package/dist/live-isolation.d.ts.map +1 -1
- package/dist/live-isolation.js +32 -14
- package/dist/live-isolation.js.map +1 -1
- package/dist/load-adapters.d.ts +13 -0
- package/dist/load-adapters.d.ts.map +1 -0
- package/dist/load-adapters.js +76 -0
- package/dist/load-adapters.js.map +1 -0
- package/dist/load-suite.d.ts.map +1 -1
- package/dist/load-suite.js +16 -0
- package/dist/load-suite.js.map +1 -1
- package/dist/mcp-config.d.ts +8 -0
- package/dist/mcp-config.d.ts.map +1 -1
- package/dist/mcp-config.js +46 -0
- package/dist/mcp-config.js.map +1 -1
- package/dist/preflight.d.ts +2 -2
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +4 -4
- package/dist/preflight.js.map +1 -1
- package/dist/progress.d.ts +7 -0
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +39 -9
- package/dist/progress.js.map +1 -1
- package/dist/record-trace.d.ts +11 -20
- package/dist/record-trace.d.ts.map +1 -1
- package/dist/record-trace.js +10 -57
- package/dist/record-trace.js.map +1 -1
- package/dist/report-preview-server.d.ts +2 -0
- package/dist/report-preview-server.d.ts.map +1 -0
- package/dist/report-preview-server.js +24 -0
- package/dist/report-preview-server.js.map +1 -0
- package/dist/report-preview.d.ts +11 -0
- package/dist/report-preview.d.ts.map +1 -0
- package/dist/report-preview.js +161 -0
- package/dist/report-preview.js.map +1 -0
- package/dist/run-suite.d.ts +62 -11
- package/dist/run-suite.d.ts.map +1 -1
- package/dist/run-suite.js +697 -206
- package/dist/run-suite.js.map +1 -1
- package/dist/scenario-story.d.ts +41 -0
- package/dist/scenario-story.d.ts.map +1 -0
- package/dist/scenario-story.js +198 -0
- package/dist/scenario-story.js.map +1 -0
- package/dist/suite-summary.d.ts +2 -0
- package/dist/suite-summary.d.ts.map +1 -1
- package/dist/suite-summary.js +70 -22
- package/dist/suite-summary.js.map +1 -1
- package/dist/theme.d.ts +29 -5
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +204 -45
- package/dist/theme.js.map +1 -1
- package/dist/types.d.ts +107 -24
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-seeds.d.ts.map +1 -1
- package/dist/validate-seeds.js +21 -6
- package/dist/validate-seeds.js.map +1 -1
- package/dist/validate-suite.d.ts +3 -1
- package/dist/validate-suite.d.ts.map +1 -1
- package/dist/validate-suite.js +256 -22
- package/dist/validate-suite.js.map +1 -1
- package/package.json +5 -5
- package/dist/compare.d.ts +0 -79
- package/dist/compare.d.ts.map +0 -1
- package/dist/compare.js +0 -232
- 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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"}
|
package/dist/run-suite.d.ts
CHANGED
|
@@ -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
|
-
/**
|
|
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
|
|
20
|
+
/** Isolate each scenario in a detached git worktree. */
|
|
20
21
|
worktree?: boolean;
|
|
21
|
-
/** Session id for
|
|
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
|
package/dist/run-suite.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,SAAS,
|
|
1
|
+
{"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}
|