@post-print/agent-test 0.1.12 → 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.
- package/README.md +37 -7
- package/dist/cli-entry.d.ts.map +1 -1
- package/dist/cli-entry.js +1 -1
- package/dist/cli-entry.js.map +1 -1
- package/dist/cli.js +33 -4
- package/dist/cli.js.map +1 -1
- package/dist/doctor.d.ts +15 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +49 -0
- package/dist/doctor.js.map +1 -0
- package/dist/html-report.d.ts +11 -0
- package/dist/html-report.d.ts.map +1 -0
- package/dist/html-report.js +462 -0
- package/dist/html-report.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/live-isolation.d.ts.map +1 -1
- package/dist/live-isolation.js +8 -19
- package/dist/live-isolation.js.map +1 -1
- package/dist/progress.d.ts.map +1 -1
- package/dist/progress.js +2 -1
- package/dist/progress.js.map +1 -1
- package/dist/record-trace.d.ts.map +1 -1
- package/dist/record-trace.js.map +1 -1
- package/dist/run-suite.d.ts.map +1 -1
- package/dist/run-suite.js +26 -32
- package/dist/run-suite.js.map +1 -1
- package/dist/scenario-seed.d.ts.map +1 -1
- package/dist/scenario-seed.js +6 -2
- package/dist/scenario-seed.js.map +1 -1
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +3 -9
- package/dist/theme.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/warnings.d.ts.map +1 -1
- package/dist/warnings.js +1 -2
- package/dist/warnings.js.map +1 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -2,29 +2,59 @@
|
|
|
2
2
|
|
|
3
3
|
**Source of truth for** agent-test package.
|
|
4
4
|
|
|
5
|
-
<!-- doc-meta: owner=eng | last-reviewed=2026-07-
|
|
5
|
+
<!-- doc-meta: owner=eng | last-reviewed=2026-07-16 -->
|
|
6
6
|
|
|
7
7
|
Jest-shaped agent scenario runner built on `@post-print/agent-harness`.
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## In-repo smoke (this monorepo)
|
|
10
|
+
|
|
11
|
+
After `bun run build` at the repo root:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node packages/test/dist/cli.js --suites-dir packages/test/fixtures --suite smoke
|
|
15
|
+
node packages/test/dist/cli.js --doctor
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
There is no top-level `agent-suites/` here — consumer examples below assume a consuming repo. Live `--live` needs an **exported** `CURSOR_API_KEY` (copy repo-root `.env.example`; the CLI does not auto-load `.env`).
|
|
19
|
+
|
|
20
|
+
## CLI (consumers, Node >= 22)
|
|
10
21
|
|
|
11
22
|
Works under **Node >= 22** (the published `agent-test` bin):
|
|
12
23
|
|
|
13
24
|
```bash
|
|
14
25
|
npx agent-test --suites-dir agent-suites
|
|
15
|
-
npx agent-test --suite ambient-routing
|
|
16
|
-
npx agent-test --live --suite ambient-routing # CURSOR_API_KEY required
|
|
26
|
+
npx agent-test --suites-dir agent-suites --suite ambient-routing
|
|
27
|
+
npx agent-test --suites-dir agent-suites --live --suite ambient-routing # exported CURSOR_API_KEY required
|
|
28
|
+
npx agent-test --doctor
|
|
17
29
|
```
|
|
18
30
|
|
|
19
31
|
Bun is fine for local package development (`bun install` / `bun run build` in this monorepo), but consumers do not need Bun to run suites.
|
|
20
32
|
|
|
21
|
-
Default suites root: `agent-suites
|
|
33
|
+
Default suites root: `agent-suites/` (must exist, or pass `--suites-dir`).
|
|
34
|
+
|
|
35
|
+
Live output always uses ANSI color (including under Cursor agent shells that set `NO_COLOR`).
|
|
36
|
+
|
|
37
|
+
## Environment variables
|
|
38
|
+
|
|
39
|
+
See repo-root `.env.example`. Common knobs:
|
|
22
40
|
|
|
23
|
-
|
|
41
|
+
| Variable | Purpose |
|
|
42
|
+
| ------------------------------------------- | ------------------------------------------------ |
|
|
43
|
+
| `CURSOR_API_KEY` | Required for `--live` and judge classifiers |
|
|
44
|
+
| `AGENT_TEST_VERBOSE` | Extra tips (e.g. OOM isolation) when `1` |
|
|
45
|
+
| `AGENT_TEST_VERBOSE_PATHS` | Print full paths when `1` |
|
|
46
|
+
| `AGENT_TEST_QUIET` | Suppress progress when `1` |
|
|
47
|
+
| `AGENT_TEST_TIMEOUT_MS` | Live hard timeout (default 600000; `0` disables) |
|
|
48
|
+
| `AGENT_TEST_ALLOW_IN_PLACE` | Allow `--no-worktree` live runs when `1` |
|
|
49
|
+
| `AGENT_TEST_NO_WORKTREE` | Disable worktree isolation when `1`/`true` |
|
|
50
|
+
| `AGENT_TEST_NO_ISOLATE` | Disable isolated subprocesses when `1` |
|
|
51
|
+
| `AGENT_TEST_SCENARIO_SETTLE_MS` | Settle delay between live scenarios |
|
|
52
|
+
| `CURSOR_AGENT_MODEL` / `CURSOR_JUDGE_MODEL` | Optional model overrides |
|
|
53
|
+
| `CURSOR_JUDGE_TEMPERATURE` | Optional judge temperature |
|
|
24
54
|
|
|
25
55
|
## Live dogfood
|
|
26
56
|
|
|
27
|
-
Live runs need `CURSOR_API_KEY` and a suites directory. Preflight fails when `--suites-dir` is
|
|
57
|
+
Live runs need `CURSOR_API_KEY` and a suites directory that exists. Preflight fails when the resolved suites directory is missing (default `agent-suites/` if `--suites-dir` is omitted).
|
|
28
58
|
|
|
29
59
|
Passing live runs write staging traces under `$TMPDIR/agent-spec/sessions/<pid>-<timestamp>/` (removed on exit unless `--keep-recordings`). Use `--record-fixtures` to overwrite each scenario's committed `replayTrace` path. `--no-worktree` requires `AGENT_TEST_ALLOW_IN_PLACE=1`.
|
|
30
60
|
|
package/dist/cli-entry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;GAGG;AACH,wBAAgB,SAAS,
|
|
1
|
+
{"version":3,"file":"cli-entry.d.ts","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":"AAGA,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMpD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/E"}
|
package/dist/cli-entry.js
CHANGED
|
@@ -14,6 +14,6 @@ export function resolveRealPath(path) {
|
|
|
14
14
|
* Compares real paths so `node_modules/.bin/agent-test` matches `dist/cli.js`.
|
|
15
15
|
*/
|
|
16
16
|
export function isCliMain(argv1, entryPath) {
|
|
17
|
-
return
|
|
17
|
+
return argv1 !== undefined && resolveRealPath(argv1) === resolveRealPath(entryPath);
|
|
18
18
|
}
|
|
19
19
|
//# sourceMappingURL=cli-entry.js.map
|
package/dist/cli-entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,oFAAoF;AACpF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,
|
|
1
|
+
{"version":3,"file":"cli-entry.js","sourceRoot":"","sources":["../src/cli-entry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,oFAAoF;AACpF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,IAAI,CAAC;QACJ,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,KAAyB,EAAE,SAAiB;IACrE,OAAO,KAAK,KAAK,SAAS,IAAI,eAAe,CAAC,KAAK,CAAC,KAAK,eAAe,CAAC,SAAS,CAAC,CAAC;AACrF,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env -S node --disable-warning=ExperimentalWarning
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { cleanupStaleScenarioWorktrees
|
|
3
|
+
import { cleanupStaleScenarioWorktrees } from "@post-print/agent-harness";
|
|
4
4
|
import { isCliMain } from "./cli-entry.js";
|
|
5
|
+
import { runDoctor } from "./doctor.js";
|
|
6
|
+
import { writeHtmlReport } from "./html-report.js";
|
|
5
7
|
import { assertLiveDogfoodPreflight } from "./preflight.js";
|
|
6
8
|
import { logProgress } from "./progress.js";
|
|
7
9
|
import { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingSessionRoot, } from "./record-trace.js";
|
|
@@ -26,6 +28,8 @@ function parseArgs(argv) {
|
|
|
26
28
|
let timeoutMs;
|
|
27
29
|
let noTimeout = false;
|
|
28
30
|
let allowUserInput = false;
|
|
31
|
+
let doctor = false;
|
|
32
|
+
let htmlReport = true;
|
|
29
33
|
for (let i = 2; i < argv.length; i++) {
|
|
30
34
|
const token = argv[i];
|
|
31
35
|
if (token === "--host" && argv[i + 1]) {
|
|
@@ -77,6 +81,12 @@ function parseArgs(argv) {
|
|
|
77
81
|
else if (token === "--allow-user-input") {
|
|
78
82
|
allowUserInput = true;
|
|
79
83
|
}
|
|
84
|
+
else if (token === "--doctor") {
|
|
85
|
+
doctor = true;
|
|
86
|
+
}
|
|
87
|
+
else if (token === "--no-html-report") {
|
|
88
|
+
htmlReport = false;
|
|
89
|
+
}
|
|
80
90
|
else if (token && !token.startsWith("-")) {
|
|
81
91
|
filter = token;
|
|
82
92
|
}
|
|
@@ -103,6 +113,8 @@ function parseArgs(argv) {
|
|
|
103
113
|
timeoutMs: noTimeout ? 0 : timeoutMs,
|
|
104
114
|
noTimeout,
|
|
105
115
|
allowUserInput,
|
|
116
|
+
doctor,
|
|
117
|
+
htmlReport,
|
|
106
118
|
};
|
|
107
119
|
}
|
|
108
120
|
async function cleanupLiveRunArtifacts(cwd, stagingSessionRoot, keepRecordings) {
|
|
@@ -124,13 +136,18 @@ async function cleanupLiveRunArtifacts(cwd, stagingSessionRoot, keepRecordings)
|
|
|
124
136
|
}
|
|
125
137
|
async function main() {
|
|
126
138
|
const args = parseArgs(process.argv);
|
|
139
|
+
if (args.doctor) {
|
|
140
|
+
const report = runDoctor();
|
|
141
|
+
for (const message of report.messages) {
|
|
142
|
+
console.log(message);
|
|
143
|
+
}
|
|
144
|
+
return report.ok ? 0 : 1;
|
|
145
|
+
}
|
|
127
146
|
const isChild = process.env.AGENT_TEST_CHILD === "1";
|
|
128
147
|
const verbose = process.env.AGENT_TEST_VERBOSE === "1";
|
|
129
148
|
const stagingSessionId = args.stagingSessionId?.trim() ||
|
|
130
149
|
process.env.AGENT_TEST_STAGING_SESSION_ID?.trim() ||
|
|
131
|
-
(args.live || (args.record && !args.recordFixtures)
|
|
132
|
-
? createLiveStagingSessionId()
|
|
133
|
-
: undefined);
|
|
150
|
+
(args.live || (args.record && !args.recordFixtures) ? createLiveStagingSessionId() : undefined);
|
|
134
151
|
const stagingSessionRoot = stagingSessionId
|
|
135
152
|
? getLiveStagingSessionRoot(stagingSessionId)
|
|
136
153
|
: undefined;
|
|
@@ -203,6 +220,18 @@ async function main() {
|
|
|
203
220
|
}
|
|
204
221
|
console.log(theme.summary(report.suite, report.passed, report.failed, report.skipped));
|
|
205
222
|
}
|
|
223
|
+
if (args.htmlReport && reports.length > 0) {
|
|
224
|
+
try {
|
|
225
|
+
const reportPath = await writeHtmlReport(reports, {
|
|
226
|
+
host: args.host,
|
|
227
|
+
suitesDir: args.suitesDir,
|
|
228
|
+
});
|
|
229
|
+
console.log(`\n${theme.tip(`HTML report: ${reportPath}`)}`);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
console.warn(theme.warn(`HTML report failed: ${error instanceof Error ? error.message : String(error)}`));
|
|
233
|
+
}
|
|
234
|
+
}
|
|
206
235
|
}
|
|
207
236
|
else {
|
|
208
237
|
for (const report of reports) {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAkB,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,eAAe,CAAC;AAE7D,4BAA4B,EAAE,CAAC;AAC/B,iBAAiB,EAAE,CAAC;AAEpB,SAAS,SAAS,CAAC,IAAc;IAmBhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,IAAI,SAAS,GAAG,cAAc,CAAC;IAC/B,IAAI,IAA2B,CAAC;IAChC,IAAI,MAA0B,CAAC;IAC/B,IAAI,cAAkC,CAAC;IACvC,IAAI,gBAAoC,CAAC;IACzC,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,KAA0B,CAAC;IAC/B,IAAI,QAA6B,CAAC;IAClC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,SAA6B,CAAC;IAClC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAc,CAAC;QAC/B,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,CAAW,CAAC;QACjC,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAClD,cAAc,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5B,CAAC;aAAM,IAAI,KAAK,KAAK,sBAAsB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC5D,gBAAgB,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;YAC1C,MAAM,GAAG,IAAI,CAAC;YACd,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,GAAG,IAAI,CAAC;QACb,CAAC;aAAM,IAAI,KAAK,KAAK,mBAAmB,EAAE,CAAC;YAC1C,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAChC,KAAK,GAAG,IAAI,CAAC;QACd,CAAC;aAAM,IAAI,KAAK,KAAK,YAAY,EAAE,CAAC;YACnC,KAAK,GAAG,KAAK,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YACtC,QAAQ,GAAG,KAAK,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,SAAS,GAAG,MAAM,CAAC;YACpB,CAAC;QACF,CAAC;aAAM,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;YACrC,SAAS,GAAG,IAAI,CAAC;QAClB,CAAC;aAAM,IAAI,KAAK,KAAK,oBAAoB,EAAE,CAAC;YAC3C,cAAc,GAAG,IAAI,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;YACjC,MAAM,GAAG,IAAI,CAAC;QACf,CAAC;aAAM,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;YACzC,UAAU,GAAG,KAAK,CAAC;QACpB,CAAC;aAAM,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,KAAK,CAAC;QAChB,CAAC;IACF,CAAC;IAED,IAAI,IAAI,EAAE,CAAC;QACV,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC;QACxB,MAAM,GAAG,IAAI,CAAC;QACd,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC;QACtB,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC;IAC7B,CAAC;IAED,OAAO;QACN,GAAG;QACH,SAAS;QACT,IAAI;QACJ,MAAM;QACN,cAAc;QACd,gBAAgB;QAChB,MAAM;QACN,cAAc;QACd,IAAI;QACJ,KAAK;QACL,QAAQ;QACR,cAAc;QACd,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS;QACpC,SAAS;QACT,cAAc;QACd,MAAM;QACN,UAAU;KACV,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACrC,GAAW,EACX,kBAAsC,EACtC,cAAuB;IAEvB,IAAI,cAAc,EAAE,CAAC;QACpB,OAAO;IACR,CAAC;IAED,IAAI,kBAAkB,EAAE,CAAC;QACxB,IAAI,CAAC;YACJ,MAAM,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QACjD,CAAC;QAAC,MAAM,CAAC;YACR,cAAc;QACf,CAAC;IACF,CAAC;IAED,MAAM,aAAa,GAAG,MAAM,2BAA2B,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,+CAA+C,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1F,CAAC;AACF,CAAC;AAED,KAAK,UAAU,IAAI;IAClB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACtB,CAAC;QACD,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,CAAC;IACvD,MAAM,gBAAgB,GACrB,IAAI,CAAC,gBAAgB,EAAE,IAAI,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,IAAI,EAAE;QACjD,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjG,MAAM,kBAAkB,GAAG,gBAAgB;QAC1C,CAAC,CAAC,yBAAyB,CAAC,gBAAgB,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IAEb,IAAI,CAAC;QACJ,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAC9C,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YACtE,OAAO,CAAC,CAAC;QACV,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC;gBACJ,MAAM,0BAA0B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAC9D,OAAO,CAAC,CAAC;YACV,CAAC;YAED,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,KAAK,GAAG,CAAC;YACrE,MAAM,gBAAgB,GACrB,IAAI,CAAC,QAAQ,KAAK,KAAK;gBACvB,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,GAAG;gBAC1C,OAAO,CAAC,GAAG,CAAC,sBAAsB,KAAK,MAAM,CAAC;YAC/C,IAAI,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;gBACzC,OAAO,CAAC,KAAK,CACZ,4JAA4J,CAC5J,CAAC;gBACF,OAAO,CAAC,CAAC;YACV,CAAC;YAED,uBAAuB,EAAE,CAAC;YAC1B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9D,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CACV,KAAK,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,MAAM,kDAAkD,CAAC,CACvF,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;gBAClC,IAAI,kBAAkB,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;gBACtD,CAAC;gBACD,IAAI,gBAAgB,EAAE,CAAC;oBACtB,OAAO,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CAAC,0EAA0E,CAAC,CACtF,CAAC;gBACH,CAAC;gBACD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,GAAG,EAAE,CAAC;oBAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;wBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC;oBACD,OAAO,CAAC,GAAG,CACV,KAAK,KAAK,CAAC,GAAG,CAAC,mFAAmF,CAAC,EAAE,CACrG,CAAC;gBACH,CAAC;qBAAM,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,EAAE,CAAC,CAAC;gBAClF,CAAC;YACF,CAAC;QACF,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC;YAClC,GAAG,IAAI;YACP,gBAAgB;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,cAAc,EAAE,IAAI,CAAC,cAAc;SACnC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC;YACd,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACpF,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,GAAG,CAAC,CAAC;oBACb,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC;oBAClD,KAAK,MAAM,MAAM,IAAI,MAAM,EAAE,CAAC;wBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;wBACvD,IAAI,OAAO,EAAE,CAAC;4BACb,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gCACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;4BACrE,CAAC;wBACF,CAAC;oBACF,CAAC;gBACF,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YACxF,CAAC;YAED,IAAI,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACJ,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE;wBACjD,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,SAAS,EAAE,IAAI,CAAC,SAAS;qBACzB,CAAC,CAAC;oBACH,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,gBAAgB,UAAU,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7D,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,IAAI,CACX,KAAK,CAAC,IAAI,CACT,uBAAuB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC/E,CACD,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,QAAQ,GAAG,CAAC,CAAC;gBACd,CAAC;YACF,CAAC;QACF,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,WAAW,CAAC,yBAAyB,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC;QACV,CAAC;QAED,OAAO,QAAQ,CAAC;IACjB,CAAC;YAAS,CAAC;QACV,IAAI,gBAAgB,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAClF,CAAC;IACF,CAAC;AACF,CAAC;AAED,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,KAAK,IAAI,EAAE;SACT,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/doctor.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { HEALTH_CHECK_PATH } from "@post-print/agent-harness";
|
|
2
|
+
export interface DoctorReport {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
nodeMajor: number;
|
|
5
|
+
nodeOk: boolean;
|
|
6
|
+
cliPresent: boolean;
|
|
7
|
+
cursorApiKeySet: boolean;
|
|
8
|
+
health: typeof HEALTH_CHECK_PATH;
|
|
9
|
+
messages: string[];
|
|
10
|
+
}
|
|
11
|
+
/** Local diagnostics for agent-test install and live-run readiness. */
|
|
12
|
+
export declare function runDoctor(options?: {
|
|
13
|
+
cliPath?: string;
|
|
14
|
+
}): DoctorReport;
|
|
15
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAKA,OAAO,EAAmB,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE/E,MAAM,WAAW,YAAY;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,OAAO,iBAAiB,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,uEAAuE;AACvE,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CA4CtE"}
|
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { accessSync, constants } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { getHealthStatus, HEALTH_CHECK_PATH } from "@post-print/agent-harness";
|
|
6
|
+
/** Local diagnostics for agent-test install and live-run readiness. */
|
|
7
|
+
export function runDoctor(options) {
|
|
8
|
+
const messages = [];
|
|
9
|
+
const nodeMajor = Number(process.versions.node.split(".")[0] ?? 0);
|
|
10
|
+
const nodeOk = nodeMajor >= 22;
|
|
11
|
+
if (!nodeOk) {
|
|
12
|
+
messages.push(`Node ${process.versions.node} is below the required >=22`);
|
|
13
|
+
}
|
|
14
|
+
const cliPath = options?.cliPath ?? join(dirname(fileURLToPath(import.meta.url)), "cli.js");
|
|
15
|
+
let cliPresent = false;
|
|
16
|
+
try {
|
|
17
|
+
accessSync(cliPath, constants.R_OK);
|
|
18
|
+
cliPresent = true;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
messages.push(`CLI entry missing at ${cliPath} (run bun run build)`);
|
|
22
|
+
}
|
|
23
|
+
const cursorApiKeySet = Boolean(process.env.CURSOR_API_KEY?.trim());
|
|
24
|
+
if (!cursorApiKeySet) {
|
|
25
|
+
messages.push("CURSOR_API_KEY unset (required only for --live)");
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
const require = createRequire(import.meta.url);
|
|
29
|
+
require.resolve("@post-print/agent-harness");
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
messages.push("@post-print/agent-harness not resolvable");
|
|
33
|
+
}
|
|
34
|
+
const health = getHealthStatus();
|
|
35
|
+
const ok = nodeOk && cliPresent && health.ok;
|
|
36
|
+
if (ok) {
|
|
37
|
+
messages.push(`doctor ${HEALTH_CHECK_PATH}: ready`);
|
|
38
|
+
}
|
|
39
|
+
return {
|
|
40
|
+
ok,
|
|
41
|
+
nodeMajor,
|
|
42
|
+
nodeOk,
|
|
43
|
+
cliPresent,
|
|
44
|
+
cursorApiKeySet,
|
|
45
|
+
health: HEALTH_CHECK_PATH,
|
|
46
|
+
messages,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAY/E,uEAAuE;AACvE,MAAM,UAAU,SAAS,CAAC,OAA8B;IACvD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,QAAQ,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAC3E,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC5F,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,CAAC;QACJ,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,UAAU,GAAG,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACR,QAAQ,CAAC,IAAI,CAAC,wBAAwB,OAAO,sBAAsB,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,eAAe,EAAE,CAAC;QACtB,QAAQ,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACR,QAAQ,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;IACjC,MAAM,EAAE,GAAG,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC;IAC7C,IAAI,EAAE,EAAE,CAAC;QACR,QAAQ,CAAC,IAAI,CAAC,UAAU,iBAAiB,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,OAAO;QACN,EAAE;QACF,SAAS;QACT,MAAM;QACN,UAAU;QACV,eAAe;QACf,MAAM,EAAE,iBAAiB;QACzB,QAAQ;KACR,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { SuiteRunReport } from "./types.js";
|
|
2
|
+
export interface HtmlReportMeta {
|
|
3
|
+
generatedAt?: Date;
|
|
4
|
+
host?: string;
|
|
5
|
+
suitesDir?: string;
|
|
6
|
+
}
|
|
7
|
+
/** Build a self-contained HTML report for a completed suite run. */
|
|
8
|
+
export declare function renderHtmlReport(reports: SuiteRunReport[], meta?: HtmlReportMeta): string;
|
|
9
|
+
/** Write an HTML report under a fresh temp directory; returns the report file path. */
|
|
10
|
+
export declare function writeHtmlReport(reports: SuiteRunReport[], meta?: HtmlReportMeta): Promise<string>;
|
|
11
|
+
//# sourceMappingURL=html-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html-report.d.ts","sourceRoot":"","sources":["../src/html-report.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjE,MAAM,WAAW,cAAc;IAC9B,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAmRD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,IAAI,GAAE,cAAmB,GAAG,MAAM,CA0N7F;AAED,uFAAuF;AACvF,wBAAsB,eAAe,CACpC,OAAO,EAAE,cAAc,EAAE,EACzB,IAAI,GAAE,cAAmB,GACvB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|