@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.
- package/README.md +18 -66
- package/dist/cli.d.ts +2 -64
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +26 -691
- package/dist/cli.js.map +1 -1
- package/dist/compare-scenario.d.ts +1 -1
- package/dist/compare-scenario.d.ts.map +1 -1
- package/dist/compare-scenario.js +72 -75
- package/dist/compare-scenario.js.map +1 -1
- package/dist/failures.d.ts +5 -1
- package/dist/failures.d.ts.map +1 -1
- package/dist/failures.js +1 -1
- package/dist/failures.js.map +1 -1
- package/dist/host-login.d.ts +1 -26
- package/dist/host-login.d.ts.map +1 -1
- package/dist/host-login.js +1 -92
- package/dist/host-login.js.map +1 -1
- package/dist/index.d.ts +6 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -26
- package/dist/index.js.map +1 -1
- package/dist/scenario-story.d.ts.map +1 -1
- package/dist/scenario-story.js +57 -39
- package/dist/scenario-story.js.map +1 -1
- package/dist/sdk/cli.d.ts +3 -0
- package/dist/sdk/cli.d.ts.map +1 -0
- package/dist/sdk/cli.js +20 -0
- package/dist/sdk/cli.js.map +1 -0
- package/dist/sdk/definitions.d.ts +22 -0
- package/dist/sdk/definitions.d.ts.map +1 -0
- package/dist/sdk/definitions.js +58 -0
- package/dist/sdk/definitions.js.map +1 -0
- package/dist/sdk/expect.d.ts +31 -0
- package/dist/sdk/expect.d.ts.map +1 -0
- package/dist/sdk/expect.js +68 -0
- package/dist/sdk/expect.js.map +1 -0
- package/dist/sdk/judge.d.ts +16 -0
- package/dist/sdk/judge.d.ts.map +1 -0
- package/dist/sdk/judge.js +82 -0
- package/dist/sdk/judge.js.map +1 -0
- package/dist/sdk/metrics.d.ts +3 -0
- package/dist/sdk/metrics.d.ts.map +1 -0
- package/dist/sdk/metrics.js +24 -0
- package/dist/sdk/metrics.js.map +1 -0
- package/dist/sdk/reporter.d.ts +12 -0
- package/dist/sdk/reporter.d.ts.map +1 -0
- package/dist/sdk/reporter.js +58 -0
- package/dist/sdk/reporter.js.map +1 -0
- package/dist/sdk/runtime.d.ts +33 -0
- package/dist/sdk/runtime.d.ts.map +1 -0
- package/dist/sdk/runtime.js +188 -0
- package/dist/sdk/runtime.js.map +1 -0
- package/dist/sdk/test.d.ts +27 -0
- package/dist/sdk/test.d.ts.map +1 -0
- package/dist/sdk/test.js +92 -0
- package/dist/sdk/test.js.map +1 -0
- package/dist/sdk/types.d.ts +75 -0
- package/dist/sdk/types.d.ts.map +1 -0
- package/dist/sdk/types.js +2 -0
- package/dist/sdk/types.js.map +1 -0
- package/dist/sdk/usage.d.ts +10 -0
- package/dist/sdk/usage.d.ts.map +1 -0
- package/dist/sdk/usage.js +13 -0
- package/dist/sdk/usage.js.map +1 -0
- package/dist/sdk/viewer-results.d.ts +43 -0
- package/dist/sdk/viewer-results.d.ts.map +1 -0
- package/dist/sdk/viewer-results.js +126 -0
- package/dist/sdk/viewer-results.js.map +1 -0
- package/dist/sdk/viewer.d.ts +11 -0
- package/dist/sdk/viewer.d.ts.map +1 -0
- package/dist/sdk/viewer.js +160 -0
- package/dist/sdk/viewer.js.map +1 -0
- package/dist/sdk/workspace.d.ts +33 -0
- package/dist/sdk/workspace.d.ts.map +1 -0
- package/dist/sdk/workspace.js +100 -0
- package/dist/sdk/workspace.js.map +1 -0
- package/dist/types.d.ts +4 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/viewer/catalog.d.ts +2 -8
- package/dist/viewer/catalog.d.ts.map +1 -1
- package/dist/viewer/catalog.js +23 -128
- package/dist/viewer/catalog.js.map +1 -1
- package/dist/viewer/client.d.ts.map +1 -1
- package/dist/viewer/client.js +12 -12
- package/dist/viewer/client.js.map +1 -1
- package/dist/viewer/run-controller.d.ts +4 -2
- package/dist/viewer/run-controller.d.ts.map +1 -1
- package/dist/viewer/run-controller.js +297 -248
- package/dist/viewer/run-controller.js.map +1 -1
- package/dist/viewer/server.d.ts +4 -3
- package/dist/viewer/server.d.ts.map +1 -1
- package/dist/viewer/server.js +149 -112
- package/dist/viewer/server.js.map +1 -1
- package/dist/viewer/styles.d.ts +2 -0
- package/dist/viewer/styles.d.ts.map +1 -0
- package/dist/viewer/styles.js +444 -0
- package/dist/viewer/styles.js.map +1 -0
- package/dist/worker-pool.d.ts +5 -1
- package/dist/worker-pool.d.ts.map +1 -1
- package/dist/worker-pool.js +1 -1
- package/dist/worker-pool.js.map +1 -1
- package/package.json +7 -7
- package/dist/check.d.ts +0 -38
- package/dist/check.d.ts.map +0 -1
- package/dist/check.js +0 -169
- package/dist/check.js.map +0 -1
- package/dist/command-allowlist.d.ts +0 -9
- package/dist/command-allowlist.d.ts.map +0 -1
- package/dist/command-allowlist.js +0 -29
- package/dist/command-allowlist.js.map +0 -1
- package/dist/debug-bundle.d.ts +0 -81
- package/dist/debug-bundle.d.ts.map +0 -1
- package/dist/debug-bundle.js +0 -392
- package/dist/debug-bundle.js.map +0 -1
- package/dist/discover-suites.d.ts +0 -2
- package/dist/discover-suites.d.ts.map +0 -1
- package/dist/discover-suites.js +0 -19
- package/dist/discover-suites.js.map +0 -1
- package/dist/doctor.d.ts +0 -24
- package/dist/doctor.d.ts.map +0 -1
- package/dist/doctor.js +0 -272
- package/dist/doctor.js.map +0 -1
- package/dist/expect.d.ts +0 -59
- package/dist/expect.d.ts.map +0 -1
- package/dist/expect.js +0 -518
- package/dist/expect.js.map +0 -1
- package/dist/host-log.d.ts +0 -17
- package/dist/host-log.d.ts.map +0 -1
- package/dist/host-log.js +0 -154
- package/dist/host-log.js.map +0 -1
- package/dist/hosts.d.ts +0 -22
- package/dist/hosts.d.ts.map +0 -1
- package/dist/hosts.js +0 -84
- package/dist/hosts.js.map +0 -1
- package/dist/html-report.d.ts +0 -18
- package/dist/html-report.d.ts.map +0 -1
- package/dist/html-report.js +0 -1276
- package/dist/html-report.js.map +0 -1
- package/dist/live-isolation.d.ts +0 -82
- package/dist/live-isolation.d.ts.map +0 -1
- package/dist/live-isolation.js +0 -399
- package/dist/live-isolation.js.map +0 -1
- package/dist/live-timeout.d.ts +0 -11
- package/dist/live-timeout.d.ts.map +0 -1
- package/dist/live-timeout.js +0 -29
- package/dist/live-timeout.js.map +0 -1
- package/dist/load-adapters.d.ts +0 -13
- package/dist/load-adapters.d.ts.map +0 -1
- package/dist/load-adapters.js +0 -76
- package/dist/load-adapters.js.map +0 -1
- package/dist/load-suite.d.ts +0 -22
- package/dist/load-suite.d.ts.map +0 -1
- package/dist/load-suite.js +0 -154
- package/dist/load-suite.js.map +0 -1
- package/dist/mcp-config.d.ts +0 -13
- package/dist/mcp-config.d.ts.map +0 -1
- package/dist/mcp-config.js +0 -121
- package/dist/mcp-config.js.map +0 -1
- package/dist/preflight.d.ts +0 -3
- package/dist/preflight.d.ts.map +0 -1
- package/dist/preflight.js +0 -17
- package/dist/preflight.js.map +0 -1
- package/dist/progress.d.ts +0 -24
- package/dist/progress.d.ts.map +0 -1
- package/dist/progress.js +0 -111
- package/dist/progress.js.map +0 -1
- package/dist/record-trace.d.ts +0 -64
- package/dist/record-trace.d.ts.map +0 -1
- package/dist/record-trace.js +0 -124
- package/dist/record-trace.js.map +0 -1
- package/dist/report-preview-server.d.ts +0 -2
- package/dist/report-preview-server.d.ts.map +0 -1
- package/dist/report-preview-server.js +0 -24
- package/dist/report-preview-server.js.map +0 -1
- package/dist/report-preview.d.ts +0 -35
- package/dist/report-preview.d.ts.map +0 -1
- package/dist/report-preview.js +0 -205
- package/dist/report-preview.js.map +0 -1
- package/dist/run-suite.d.ts +0 -139
- package/dist/run-suite.d.ts.map +0 -1
- package/dist/run-suite.js +0 -1669
- package/dist/run-suite.js.map +0 -1
- package/dist/scenario-finalizer.d.ts +0 -27
- package/dist/scenario-finalizer.d.ts.map +0 -1
- package/dist/scenario-finalizer.js +0 -39
- package/dist/scenario-finalizer.js.map +0 -1
- package/dist/scenario-retry.d.ts +0 -15
- package/dist/scenario-retry.d.ts.map +0 -1
- package/dist/scenario-retry.js +0 -52
- package/dist/scenario-retry.js.map +0 -1
- package/dist/scenario-seed.d.ts +0 -13
- package/dist/scenario-seed.d.ts.map +0 -1
- package/dist/scenario-seed.js +0 -72
- package/dist/scenario-seed.js.map +0 -1
- package/dist/suite-summary.d.ts +0 -16
- package/dist/suite-summary.d.ts.map +0 -1
- package/dist/suite-summary.js +0 -218
- package/dist/suite-summary.js.map +0 -1
- package/dist/theme.d.ts +0 -96
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -446
- package/dist/theme.js.map +0 -1
- package/dist/validate-seeds.d.ts +0 -20
- package/dist/validate-seeds.d.ts.map +0 -1
- package/dist/validate-seeds.js +0 -72
- package/dist/validate-seeds.js.map +0 -1
- package/dist/validate-suite.d.ts +0 -24
- package/dist/validate-suite.d.ts.map +0 -1
- package/dist/validate-suite.js +0 -542
- package/dist/validate-suite.js.map +0 -1
- package/dist/viewer/cli.d.ts +0 -17
- package/dist/viewer/cli.d.ts.map +0 -1
- package/dist/viewer/cli.js +0 -38
- package/dist/viewer/cli.js.map +0 -1
- package/dist/viewer/compare-metrics.d.ts +0 -30
- package/dist/viewer/compare-metrics.d.ts.map +0 -1
- package/dist/viewer/compare-metrics.js +0 -101
- package/dist/viewer/compare-metrics.js.map +0 -1
- package/dist/viewer/context-files.d.ts +0 -8
- package/dist/viewer/context-files.d.ts.map +0 -1
- package/dist/viewer/context-files.js +0 -57
- package/dist/viewer/context-files.js.map +0 -1
- package/dist/viewer/emit.d.ts +0 -7
- package/dist/viewer/emit.d.ts.map +0 -1
- package/dist/viewer/emit.js +0 -25
- package/dist/viewer/emit.js.map +0 -1
- package/dist/viewer/live-runner.d.ts +0 -27
- package/dist/viewer/live-runner.d.ts.map +0 -1
- package/dist/viewer/live-runner.js +0 -166
- package/dist/viewer/live-runner.js.map +0 -1
- package/dist/viewer/session-server.d.ts +0 -2
- package/dist/viewer/session-server.d.ts.map +0 -1
- package/dist/viewer/session-server.js +0 -71
- package/dist/viewer/session-server.js.map +0 -1
- package/dist/warnings.d.ts +0 -3
- package/dist/warnings.d.ts.map +0 -1
- package/dist/warnings.js +0 -13
- package/dist/warnings.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,77 +1,29 @@
|
|
|
1
1
|
# @post-print/agent-test
|
|
2
2
|
|
|
3
|
-
<!-- source-of-truth:
|
|
4
|
-
|
|
3
|
+
<!-- source-of-truth: named agent and judge factories for TypeScript tests -->
|
|
5
4
|
<!-- doc-meta: owner=eng | last-reviewed=2026-09-16 -->
|
|
6
|
-
|
|
7
5
|
<!-- review-deps: paths=packages/test/src/*.ts,packages/test/src/**/*.ts,packages/test/package.json -->
|
|
8
6
|
|
|
9
|
-
Scenario runner for real Cursor, Claude, and OpenAI Codex agents, built on `@post-print/agent-harness`.
|
|
10
|
-
|
|
11
|
-
> **Deprecated and removed:** stored-trace replay is not an agent test. `host: "replay"`, `replayTrace`, `--record-fixtures`, and the old `--live` mode flag are rejected with migration guidance.
|
|
12
|
-
|
|
13
|
-
## Direct TypeScript API
|
|
14
|
-
|
|
15
|
-
`runAgentTest` is the execution core. JSON suites load into this same function.
|
|
16
|
-
|
|
17
7
|
```ts
|
|
18
|
-
import {
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
8
|
+
import { describe, expect, z } from "@post-print/agent-test";
|
|
9
|
+
|
|
10
|
+
const test = describe("project answers", ({ agent, judge }) => ({
|
|
11
|
+
coder: agent({ skills: ["./skills/research"] }),
|
|
12
|
+
accuracy: judge({
|
|
13
|
+
prompt: "Assess the answer against the reference.",
|
|
14
|
+
schema: z.object({ correct: z.boolean(), reason: z.string() }),
|
|
15
|
+
}),
|
|
16
|
+
}));
|
|
17
|
+
|
|
18
|
+
test("answers correctly", async ({ coder, accuracy }) => {
|
|
19
|
+
const run = await coder.run({ prompt: "Who owns the project?" });
|
|
20
|
+
const evaluation = await accuracy.run({ input: { answer: run.output, reference: "Mina" } });
|
|
21
|
+
expect(evaluation.output.correct).toBe(true);
|
|
29
22
|
});
|
|
30
23
|
```
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
OpenAI scenarios can set `networkAccess: true` when the task must reach a package registry or another network service. It is scenario-only and defaults to `false`. The opt-in does not disable the sealed workspace, temporary user home, or leak checks, and it does not apply to the read-only judge.
|
|
35
|
-
|
|
36
|
-
The viewer and HTML report put a **Starting context** summary beside each task. It names supplied files, servers, tools, and skills, while the recorded conversation shows the submitted task prompt. In host-native mode, the summary states that the host discovers workspace files and instructions; agent-test does not claim which host-owned context was loaded.
|
|
37
|
-
|
|
38
|
-
## JSON suites and CLI
|
|
39
|
-
|
|
40
|
-
JSON is an authoring adapter, not a stored answer. This repository keeps host-agent suites under `agent-suites/<suite>/scenarios.json`.
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npx agent-test login
|
|
44
|
-
npx agent-test --check --suites-dir agent-suites
|
|
45
|
-
npx agent-test viewer --suites-dir agent-suites --workers 2
|
|
46
|
-
npx agent-test --suites-dir agent-suites --host cursor --suite test-sdk-capabilities
|
|
47
|
-
npx agent-test --suites-dir agent-suites --host cursor --auth-mode api-key
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
First run: [docs/getting-started.md](../../docs/getting-started.md). Flags: [docs/cli.md](../../docs/cli.md). Suite fields, rubric, compare, and MCP: [docs/suites.md](../../docs/suites.md). Auth and adapters: [docs/hosts.md](../../docs/hosts.md). Sealed workspace and debug: [docs/isolation.md](../../docs/isolation.md).
|
|
51
|
-
|
|
52
|
-
`--doctor`, `--validate-only`, `--validate-paths`, and `--validate-seeds` are aliases for `--check`.
|
|
53
|
-
|
|
54
|
-
## In-repo package checks
|
|
55
|
-
|
|
56
|
-
Default CI does not launch a host agent:
|
|
57
|
-
|
|
58
|
-
```bash
|
|
59
|
-
bun run build
|
|
60
|
-
node packages/test/dist/cli.js --check --suites-dir packages/test/fixtures --suite smoke
|
|
61
|
-
node packages/test/dist/cli.js --check --suites-dir agent-suites
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
`bun run test` is offline and sandbox-safe. Provider-backed runs are manual: `bun run test:capabilities` exercises supported `runAgentTest` capabilities on Cursor, and the tour has its own command. The host matrix and 20-run qualification are also manual. CI does not launch a provider-backed host.
|
|
65
|
-
|
|
66
|
-
`bun run test:sdk:consumer` packs both packages, installs them in a clean Node 22 fixture, compiles the public declarations, runs a fake adapter, inspects comparison results, and runs the installed CLI. It does not use host credentials.
|
|
25
|
+
Set default `agent`, `judge`, and `workspace` directly in `defineConfig`. Harness definitions select providers, models, and auth. Factories only declare resources; each test receives its own executable handles. Every run starts fresh; use `run.continue` for the same task. Compare with ordinary JavaScript and `expect`.
|
|
67
26
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
Playwright drives the suite viewer and the HTML report preview. The viewer shows completed tests and completed arms separately. Completed arms remain provisional until their comparison is finalized; each ready comparison finalizes within the worker limit while unrelated agents continue. Navigator, selected-test header, and host tabs share the same status, and reloading an active run restores its event stream. Cancellation suppresses unfinished verdicts. Each compare arm has a tab that swaps the visible chat.
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
bunx playwright install chromium
|
|
74
|
-
bun run test:e2e
|
|
75
|
-
```
|
|
27
|
+
Judge input is explicitly selected JSON data. Output is schema-validated and typed. The runner records artifacts and usage, handles cancellation, and owns cleanup. Global skills default to false. No browser is required for CLI execution.
|
|
76
28
|
|
|
77
|
-
|
|
29
|
+
See [the SDK guide](../../docs/sdk-v2.md), [tour](../../agent-suites/tour/tour.spec.ts), and [getting started](../../docs/getting-started.md). The old `test.use`, `compare`, `defineJudge`, and run-owned judge API are removed.
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,65 +1,3 @@
|
|
|
1
|
-
#!/usr/bin/env
|
|
2
|
-
|
|
3
|
-
import { type FailOnMode } from "./suite-summary.js";
|
|
4
|
-
import type { CompareArmId } from "./types.js";
|
|
5
|
-
export interface ParsedCliArgs {
|
|
6
|
-
cwd: string;
|
|
7
|
-
suitesDir: string;
|
|
8
|
-
/** Prefer `<rubricsDir>/<suite>/rubrics.json` (harness-only answer keys). */
|
|
9
|
-
rubricsDir?: string;
|
|
10
|
-
host?: AgentHost;
|
|
11
|
-
/** Host matrix when `--host` lists more than one adapter. */
|
|
12
|
-
hosts?: AgentHost[];
|
|
13
|
-
/** True when `--host` included `all`. Re-expand after adapters load. */
|
|
14
|
-
hostAll?: boolean;
|
|
15
|
-
/** Consumer adapter modules (`--adapter`). */
|
|
16
|
-
adapterModules?: string[];
|
|
17
|
-
filter?: string;
|
|
18
|
-
scenarioFilter?: string;
|
|
19
|
-
stagingSessionId?: string;
|
|
20
|
-
judge?: boolean;
|
|
21
|
-
worktree?: boolean;
|
|
22
|
-
keepRecordings: boolean;
|
|
23
|
-
timeoutMs?: number;
|
|
24
|
-
noTimeout: boolean;
|
|
25
|
-
allowUserInput: boolean;
|
|
26
|
-
/** Check the suite and host. Do not launch an agent. */
|
|
27
|
-
check: boolean;
|
|
28
|
-
help: boolean;
|
|
29
|
-
doctor: boolean;
|
|
30
|
-
htmlReport: boolean;
|
|
31
|
-
/** Explicit HTML report path (ends in .html) or output directory for all report content. */
|
|
32
|
-
reportOut?: string;
|
|
33
|
-
debug: boolean;
|
|
34
|
-
debugDir?: string;
|
|
35
|
-
validateOnly: boolean;
|
|
36
|
-
validateSeeds: boolean;
|
|
37
|
-
validatePaths: boolean;
|
|
38
|
-
failOn: FailOnMode;
|
|
39
|
-
/** Live announce-stop retries (overrides AGENT_TEST_SCENARIO_RETRIES). */
|
|
40
|
-
scenarioRetries?: number;
|
|
41
|
-
/** Host billing mode. Default is subscription when omitted. */
|
|
42
|
-
authMode?: HostAuthMode;
|
|
43
|
-
/** `agent-test login` — store host CLI or Cursor SDK credentials. */
|
|
44
|
-
login: boolean;
|
|
45
|
-
/** `agent-test viewer` — localhost catalog and live chat UI. */
|
|
46
|
-
viewer: boolean;
|
|
47
|
-
/** Isolated child: run one compare arm only. */
|
|
48
|
-
compareArm?: CompareArmId;
|
|
49
|
-
/** Viewer listen port. `0` picks a free port. */
|
|
50
|
-
viewerPort?: number;
|
|
51
|
-
/** How many live agents run at once. Viewer default is 4. CLI default is 1. */
|
|
52
|
-
workers?: number;
|
|
53
|
-
}
|
|
54
|
-
/** Usage text for `--help`. */
|
|
55
|
-
export declare function formatHelp(): string;
|
|
56
|
-
/** Parse agent-test CLI argv (exported for unit tests). */
|
|
57
|
-
export declare function parseCliArgs(argv: string[]): ParsedCliArgs;
|
|
58
|
-
/** Resolve an explicit report target into the HTML path and optional artifact directory. */
|
|
59
|
-
export declare function resolveReportOutput(reportOut?: string): {
|
|
60
|
-
htmlPath?: string;
|
|
61
|
-
outDir?: string;
|
|
62
|
-
};
|
|
63
|
-
/** Path passed to `writeHtmlReport`. `undefined` keeps the temp default. */
|
|
64
|
-
export declare function resolveHtmlReportWritePath(htmlReport: boolean, reportOut?: string): string | undefined;
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export declare function runCli(args: string[]): Promise<number>;
|
|
65
3
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAQA,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAoB5D"}
|