@post-print/agent-test 0.1.5 → 0.1.7

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/dist/cli.js CHANGED
@@ -3,8 +3,10 @@ import { fileURLToPath } from "node:url";
3
3
  import { cleanupStaleScenarioWorktrees, } from "@post-print/agent-harness";
4
4
  import { isCliMain } from "./cli-entry.js";
5
5
  import { assertLiveDogfoodPreflight } from "./preflight.js";
6
+ import { logProgress } from "./progress.js";
6
7
  import { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingSessionRoot, } from "./record-trace.js";
7
8
  import { registerLiveRunHandlers, runAllSuites } from "./run-suite.js";
9
+ import { theme } from "./theme.js";
8
10
  function parseArgs(argv) {
9
11
  const cwd = process.cwd();
10
12
  let suitesDir = "agent-suites";
@@ -102,6 +104,7 @@ async function cleanupLiveRunArtifacts(cwd, stagingSessionRoot, keepRecordings)
102
104
  async function main() {
103
105
  const args = parseArgs(process.argv);
104
106
  const isChild = process.env.AGENT_TEST_CHILD === "1";
107
+ const verbose = process.env.AGENT_TEST_VERBOSE === "1";
105
108
  const stagingSessionId = args.stagingSessionId?.trim() ||
106
109
  process.env.AGENT_TEST_STAGING_SESSION_ID?.trim() ||
107
110
  (args.live || (args.record && !args.recordFixtures)
@@ -135,20 +138,21 @@ async function main() {
135
138
  registerLiveRunHandlers();
136
139
  const removed = await cleanupStaleScenarioWorktrees(args.cwd);
137
140
  if (removed.length > 0) {
138
- console.log(`Cleaned ${removed.length} stale agent-test worktree(s) from a prior crash`);
141
+ console.log(theme.warn(`Cleaned ${removed.length} stale agent-test worktree(s) from a prior crash`));
139
142
  }
140
- console.log("Live dogfood: cursor SDK → worktree → rubric → judge → $TMPDIR staging (use --record-fixtures to overwrite replay JSON)");
143
+ console.log(theme.banner());
144
+ console.log(theme.bannerDetail("cursor SDK → worktree → rubric → judge → $TMPDIR staging"));
141
145
  if (stagingSessionRoot) {
142
- console.log(`Live staging session: ${stagingSessionRoot}`);
146
+ console.log(theme.bannerSession(stagingSessionRoot));
143
147
  if (!args.keepRecordings) {
144
- console.log("Staging traces are removed on exit unless --keep-recordings");
148
+ console.log(` ${theme.tip("traces removed on exit unless --keep-recordings")}`);
145
149
  }
146
150
  }
147
151
  if (worktreeDisabled) {
148
- console.warn("Warning: running in repo cwd — agent file edits will persist in your working tree");
152
+ console.warn(theme.warn("running in repo cwd — agent file edits will persist in your working tree"));
149
153
  }
150
154
  else {
151
- console.log("Tip: exit 137 (Killed) is usually macOS OOM — live runs isolate each scenario in a subprocess by default; set AGENT_TEST_NO_ISOLATE=1 to disable");
155
+ console.log(` ${theme.tip("tip: exit 137 = macOS OOM — scenarios run in isolated subprocesses (AGENT_TEST_NO_ISOLATE=1 to disable)")}`);
152
156
  }
153
157
  }
154
158
  }
@@ -161,18 +165,20 @@ async function main() {
161
165
  const failed = report.results.filter((result) => !result.passed && !result.skipped);
162
166
  if (failed.length > 0) {
163
167
  exitCode = 1;
164
- console.log(`\n${report.suite} — failure details`);
168
+ console.log(`\n${theme.failedScenariosHeader()}`);
165
169
  for (const result of failed) {
166
- console.log(` ✗ ${result.scenario}`);
167
- for (const failure of result.failures) {
168
- console.log(` ${failure.matcher}: ${failure.message}`);
170
+ console.log(theme.failedScenarioName(result.scenario));
171
+ if (verbose) {
172
+ for (const failure of result.failures) {
173
+ console.log(theme.verboseFailure(failure.matcher, failure.message));
174
+ }
169
175
  }
170
176
  }
171
177
  }
172
- console.log(`${report.suite}: ${report.passed} passed, ${report.failed} failed, ${report.skipped} skipped`);
178
+ console.log(theme.summary(report.suite, report.passed, report.failed, report.skipped));
173
179
  }
174
180
  if (reports.length === 0) {
175
- console.log(`No suites found under ${args.suitesDir}`);
181
+ logProgress(`No suites found under ${args.suitesDir}`);
176
182
  return 1;
177
183
  }
178
184
  return exitCode;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -2,6 +2,6 @@ export { assertRubric, expectTrace, TraceAssertion } from "./expect.js";
2
2
  export { loadSuiteFile } from "./load-suite.js";
3
3
  export { assertLiveDogfoodPreflight } from "./preflight.js";
4
4
  export { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingRoot, getLiveStagingSessionRoot, type RecordingPathKind, type ResolvedRecordingPath, recordTrace, resolveRecordingPath, } from "./record-trace.js";
5
- export { discoverSuites, type RunSuiteOptions, runAllSuites, runSuite } from "./run-suite.js";
6
- export type { AgentScenario, AgentSuiteFile, AssertionFailure, JudgeRubricItem, ScenarioResult, ScenarioRubric, SuiteRunReport, } from "./types.js";
5
+ export { discoverSuites, type RunSuiteOptions, runAllSuites, runSuite, } from "./run-suite.js";
6
+ export type { AgentScenario, AgentSuiteFile, AssertionFailure, JudgeRubricItem, JudgeVerdictResult, ScenarioResult, ScenarioRubric, SuiteRunReport, } from "./types.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,KAAK,eAAe,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9F,YAAY,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,cAAc,EACd,cAAc,GACd,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EACd,KAAK,eAAe,EACpB,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACX,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,GACd,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -2,5 +2,5 @@ export { assertRubric, expectTrace, TraceAssertion } from "./expect.js";
2
2
  export { loadSuiteFile } from "./load-suite.js";
3
3
  export { assertLiveDogfoodPreflight } from "./preflight.js";
4
4
  export { cleanupLegacyRepoRecordings, cleanupStagingSession, createLiveStagingSessionId, getLiveStagingRoot, getLiveStagingSessionRoot, recordTrace, resolveRecordingPath, } from "./record-trace.js";
5
- export { discoverSuites, runAllSuites, runSuite } from "./run-suite.js";
5
+ export { discoverSuites, runAllSuites, runSuite, } from "./run-suite.js";
6
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EAGzB,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAwB,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EACN,2BAA2B,EAC3B,qBAAqB,EACrB,0BAA0B,EAC1B,kBAAkB,EAClB,yBAAyB,EAGzB,WAAW,EACX,oBAAoB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,cAAc,EAEd,YAAY,EACZ,QAAQ,GACR,MAAM,gBAAgB,CAAC"}
@@ -1,6 +1,13 @@
1
1
  export declare function formatDuration(ms: number): string;
2
2
  export declare function logProgress(message: string): void;
3
- export declare function logPhase(message: string): void;
3
+ /** Emit a tree phase line (├─ by default; use endPhase for └─). */
4
+ export declare function logPhase(message: string, options?: {
5
+ last?: boolean;
6
+ }): void;
7
+ /** Nested heartbeat / continuation under the current phase. */
8
+ export declare function logPhaseNested(message: string): void;
9
+ /** Print a verdict block (PASS/FAIL + reasons). */
10
+ export declare function logVerdict(lines: string[]): void;
4
11
  /** Log every `intervalMs` while `promise` is pending (live agent runs). */
5
12
  export declare function withHeartbeat<T>(promise: Promise<T>, options: {
6
13
  label: string;
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAK9C;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,CAAC,CAAC,CAgBZ"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKjD;AAED,mEAAmE;AACnE,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAM5E;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAKpD;AAED,mDAAmD;AACnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAOhD;AAED,2EAA2E;AAC3E,wBAAsB,aAAa,CAAC,CAAC,EACpC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,OAAO,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D,OAAO,CAAC,CAAC,CAAC,CAkBZ"}
package/dist/progress.js CHANGED
@@ -1,11 +1,9 @@
1
+ import { formatDurationLabel, theme } from "./theme.js";
1
2
  function enabled() {
2
3
  return process.env.AGENT_TEST_QUIET !== "1" && !process.env.VITEST;
3
4
  }
4
5
  export function formatDuration(ms) {
5
- if (ms < 1000) {
6
- return `${Math.round(ms)}ms`;
7
- }
8
- return `${(ms / 1000).toFixed(1)}s`;
6
+ return formatDurationLabel(ms);
9
7
  }
10
8
  export function logProgress(message) {
11
9
  if (!enabled()) {
@@ -13,11 +11,29 @@ export function logProgress(message) {
13
11
  }
14
12
  console.log(message);
15
13
  }
16
- export function logPhase(message) {
14
+ /** Emit a tree phase line (├─ by default; use endPhase for └─). */
15
+ export function logPhase(message, options) {
16
+ if (!enabled()) {
17
+ return;
18
+ }
19
+ const prefix = options?.last ? "└─" : "├─";
20
+ console.log(theme.phaseTree(prefix, message));
21
+ }
22
+ /** Nested heartbeat / continuation under the current phase. */
23
+ export function logPhaseNested(message) {
17
24
  if (!enabled()) {
18
25
  return;
19
26
  }
20
- console.log(` ${message}`);
27
+ console.log(theme.phaseTree("│ ", message));
28
+ }
29
+ /** Print a verdict block (PASS/FAIL + reasons). */
30
+ export function logVerdict(lines) {
31
+ if (!enabled()) {
32
+ return;
33
+ }
34
+ for (const line of lines) {
35
+ console.log(line);
36
+ }
21
37
  }
22
38
  /** Log every `intervalMs` while `promise` is pending (live agent runs). */
23
39
  export async function withHeartbeat(promise, options) {
@@ -27,7 +43,7 @@ export async function withHeartbeat(promise, options) {
27
43
  const started = options.started ?? performance.now();
28
44
  const intervalMs = options.intervalMs ?? 30_000;
29
45
  const timer = setInterval(() => {
30
- logPhase(`${options.label} … ${formatDuration(performance.now() - started)} elapsed`);
46
+ logPhaseNested(`${options.label} … ${theme.duration(formatDuration(performance.now() - started))}`);
31
47
  }, intervalMs);
32
48
  try {
33
49
  return await promise;
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,SAAS,OAAO;IACf,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACxC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC;QACf,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC;IAC9B,CAAC;IACD,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IAC1C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACvC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAAmB,EACnB,OAAiE;IAEjE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,QAAQ,CAAC,GAAG,OAAO,CAAC,KAAK,MAAM,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACvF,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,IAAI,CAAC;QACJ,OAAO,MAAM,OAAO,CAAC;IACtB,CAAC;YAAS,CAAC;QACV,aAAa,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExD,SAAS,OAAO;IACf,OAAO,OAAO,CAAC,GAAG,CAAC,gBAAgB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,EAAU;IACxC,OAAO,mBAAmB,CAAC,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IAC1C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACtB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,QAAQ,CAAC,OAAe,EAAE,OAA4B;IACrE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,OAAe;IAC7C,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,UAAU,CAAC,KAAe;IACzC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO;IACR,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;AACF,CAAC;AAED,2EAA2E;AAC3E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,OAAmB,EACnB,OAAiE;IAEjE,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAChB,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,WAAW,CAAC,GAAG,EAAE,CAAC;IACrD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,cAAc,CACb,GAAG,OAAO,CAAC,KAAK,MAAM,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CACnF,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;IAEf,IAAI,CAAC;QACJ,OAAO,MAAM,OAAO,CAAC;IACtB,CAAC;YAAS,CAAC;QACV,aAAa,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACF,CAAC"}
@@ -1,5 +1,7 @@
1
- import type { AgentHost } from "@post-print/agent-harness";
2
- import type { SuiteRunReport } from "./types.js";
1
+ import type { AgentHost, RoutingContract } from "@post-print/agent-harness";
2
+ import type { ScenarioRubric, SuiteRunReport } from "./types.js";
3
+ /** Parent process prints suite headers and final verdicts; children only print phases. */
4
+ export declare function shouldPrintSuiteChrome(): boolean;
3
5
  /** Best-effort worktree cleanup when live runs are interrupted (SIGINT/SIGTERM). */
4
6
  export declare function registerLiveRunHandlers(): void;
5
7
  export interface RunSuiteOptions {
@@ -22,6 +24,8 @@ export interface RunSuiteOptions {
22
24
  suitesDir?: string;
23
25
  suiteFilter?: string;
24
26
  }
27
+ /** Live-only mode hint from rubric — not part of the user scenario prompt. */
28
+ export declare function outputContractForRubric(rubric: ScenarioRubric): RoutingContract | undefined;
25
29
  export declare function runSuite(options: RunSuiteOptions): Promise<SuiteRunReport>;
26
30
  export declare function runAllSuites(options: {
27
31
  cwd: string;
@@ -1 +1 @@
1
- {"version":3,"file":"run-suite.d.ts","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,SAAS,EAKT,MAAM,2BAA2B,CAAC;AA4BnC,OAAO,KAAK,EAMX,cAAc,EACd,MAAM,YAAY,CAAC;AAKpB,oFAAoF;AACpF,wBAAgB,uBAAuB,IAAI,IAAI,CAmB9C;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;CACrB;AAsBD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAwHhF;AA0ND,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,CA6B5B;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;AAmCnC,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,CA6IzB;AAsRD,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"}
package/dist/run-suite.js CHANGED
@@ -4,11 +4,19 @@ import { discoverSuites } from "./discover-suites.js";
4
4
  import { assertRubric } from "./expect.js";
5
5
  import { liveScenarioIsolationEnabled, spawnLiveScenario, subprocessFailureMessage, } from "./live-isolation.js";
6
6
  import { loadSuiteFile } from "./load-suite.js";
7
- import { formatDuration, logPhase, logProgress, withHeartbeat } from "./progress.js";
7
+ import { formatDuration, logPhase, logProgress, logVerdict, withHeartbeat, } from "./progress.js";
8
8
  import { getStagingTracePath, loadStagingTrace, recordTrace, resolveRecordingPath, } from "./record-trace.js";
9
9
  import { seedScenarioWorktree } from "./scenario-seed.js";
10
+ import { theme } from "./theme.js";
10
11
  let activeWorktreeCleanup;
11
12
  let liveSignalHandlersRegistered = false;
13
+ function isChildProcess() {
14
+ return process.env.AGENT_TEST_CHILD === "1";
15
+ }
16
+ /** Parent process prints suite headers and final verdicts; children only print phases. */
17
+ export function shouldPrintSuiteChrome() {
18
+ return !isChildProcess();
19
+ }
12
20
  /** Best-effort worktree cleanup when live runs are interrupted (SIGINT/SIGTERM). */
13
21
  export function registerLiveRunHandlers() {
14
22
  if (liveSignalHandlersRegistered) {
@@ -29,16 +37,20 @@ export function registerLiveRunHandlers() {
29
37
  process.on("SIGTERM", () => interrupt(143));
30
38
  }
31
39
  function releaseLiveMemory() {
32
- const bunGc = globalThis.Bun?.gc;
40
+ const bunGc = globalThis.Bun
41
+ ?.gc;
33
42
  if (typeof bunGc === "function") {
34
43
  bunGc(true);
35
44
  }
36
45
  }
37
46
  /** Live-only mode hint from rubric — not part of the user scenario prompt. */
38
- function outputContractForRubric(rubric) {
47
+ export function outputContractForRubric(rubric) {
39
48
  if (rubric.routingBlock) {
40
49
  return "hands-off";
41
50
  }
51
+ if (rubric.handsOnRouting) {
52
+ return "hands-on";
53
+ }
42
54
  return undefined;
43
55
  }
44
56
  function normalizeJudgeCriteria(judge) {
@@ -52,6 +64,34 @@ function normalizeJudgeCriteria(judge) {
52
64
  return { id: item.id ?? `judge-${index}`, question: item.question };
53
65
  });
54
66
  }
67
+ function questionForCriterion(criteria, id) {
68
+ return criteria.find((c) => c.id === id)?.question ?? id;
69
+ }
70
+ function toJudgeVerdictResults(trace, criteria) {
71
+ return (trace.judgeVerdicts ?? []).map((verdict) => ({
72
+ id: verdict.id,
73
+ question: questionForCriterion(criteria, verdict.id),
74
+ pass: verdict.pass,
75
+ rationale: verdict.rationale,
76
+ }));
77
+ }
78
+ function rubricFailuresOnly(failures) {
79
+ return failures.filter((f) => !f.matcher.startsWith("judge"));
80
+ }
81
+ function emitScenarioVerdict(options) {
82
+ if (!shouldPrintSuiteChrome()) {
83
+ return;
84
+ }
85
+ logVerdict(theme.scenarioVerdict({
86
+ passed: options.passed,
87
+ index: options.index,
88
+ total: options.total,
89
+ name: options.name,
90
+ durationMs: options.durationMs,
91
+ judgeVerdicts: options.judgeVerdicts,
92
+ rubricFailures: rubricFailuresOnly(options.failures),
93
+ }));
94
+ }
55
95
  export async function runSuite(options) {
56
96
  const suite = await loadSuiteFile(options.suitePath);
57
97
  const defaultHost = options.host ?? suite.defaults?.host ?? "replay";
@@ -64,10 +104,15 @@ export async function runSuite(options) {
64
104
  }
65
105
  const total = scenarios.length;
66
106
  const isLiveSuite = defaultHost !== "replay";
67
- const isolateLive = isLiveSuite && liveScenarioIsolationEnabled() && !options.scenarioFilter && total > 1;
68
- logProgress(`\n${suite.name} (${defaultHost}) — ${total} scenario(s)`);
69
- if (isolateLive && total > 1) {
70
- logPhase("live isolation: one subprocess per scenario (AGENT_TEST_NO_ISOLATE=1 to disable)");
107
+ const isolateLive = isLiveSuite &&
108
+ liveScenarioIsolationEnabled() &&
109
+ !options.scenarioFilter &&
110
+ total > 1;
111
+ if (shouldPrintSuiteChrome()) {
112
+ logProgress(`\n${theme.suiteHeader(suite.name, defaultHost, total)}`);
113
+ if (isolateLive && total > 1) {
114
+ logProgress(` ${theme.isolationNote()}`);
115
+ }
71
116
  }
72
117
  for (let index = 0; index < scenarios.length; index++) {
73
118
  const scenario = scenarios[index];
@@ -90,6 +135,7 @@ export async function runSuite(options) {
90
135
  });
91
136
  const durationMs = Math.round(performance.now() - started);
92
137
  const failures = [];
138
+ let judgeVerdicts;
93
139
  if (exitCode !== 0) {
94
140
  failures.push({
95
141
  matcher: "liveScenario",
@@ -100,30 +146,41 @@ export async function runSuite(options) {
100
146
  const criteria = normalizeJudgeCriteria(scenario.rubric.judge);
101
147
  if (criteria.length > 0) {
102
148
  releaseLiveMemory();
103
- logPhase(`LLM judge (${criteria.length} criterion/criteria)…`);
149
+ logPhase(theme.judgePhase(criteria.length), { last: true });
104
150
  try {
105
151
  const tracePath = getStagingTracePath(options.stagingSessionId, suite.name, scenario.name);
106
152
  const trace = await loadStagingTrace(tracePath);
107
153
  const judged = await runJudgeRubric(trace, scenario.rubric, options.cwd);
108
154
  failures.push(...judged.failures);
155
+ judgeVerdicts = toJudgeVerdictResults(judged.trace, criteria);
109
156
  }
110
157
  catch (error) {
111
158
  failures.push({
112
159
  matcher: "judge",
113
- message: error instanceof Error ? error.message : "failed to load staging trace for judge",
160
+ message: error instanceof Error
161
+ ? error.message
162
+ : "failed to load staging trace for judge",
114
163
  });
115
164
  }
116
165
  }
117
166
  }
118
167
  const passed = failures.length === 0;
119
- const icon = passed ? "✓" : "✗";
120
- logProgress(`${icon} [${index + 1}/${total}] ${scenario.name} (${formatDuration(durationMs)})`);
168
+ emitScenarioVerdict({
169
+ passed,
170
+ index: index + 1,
171
+ total,
172
+ name: scenario.name,
173
+ durationMs,
174
+ judgeVerdicts,
175
+ failures,
176
+ });
121
177
  results.push({
122
178
  suite: suite.name,
123
179
  scenario: scenario.name,
124
180
  passed,
125
181
  failures,
126
182
  durationMs,
183
+ judgeVerdicts,
127
184
  });
128
185
  releaseLiveMemory();
129
186
  continue;
@@ -144,11 +201,11 @@ export async function runSuite(options) {
144
201
  }
145
202
  async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile, defaultSkills, record, recordFixtures, judge, worktree, stagingSessionId, scenarioIndex, scenarioTotal) {
146
203
  const started = performance.now();
147
- const label = scenarioIndex !== undefined && scenarioTotal !== undefined
148
- ? `[${scenarioIndex}/${scenarioTotal}] ${scenario.name}`
149
- : scenario.name;
150
204
  if (scenario.skip) {
151
- logProgress(`${label} skipped`);
205
+ const skipLabel = scenarioIndex !== undefined && scenarioTotal !== undefined
206
+ ? `[${scenarioIndex}/${scenarioTotal}] ${scenario.name}`
207
+ : scenario.name;
208
+ logProgress(theme.skipped(skipLabel));
152
209
  return {
153
210
  suite: suiteName,
154
211
  scenario: scenario.name,
@@ -159,41 +216,52 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
159
216
  };
160
217
  }
161
218
  const host = scenario.host ?? defaultHost;
162
- const profile = scenario.profile ?? defaultProfile ?? (host === "cursor" ? "cursor" : "shared");
219
+ const profile = scenario.profile ??
220
+ defaultProfile ??
221
+ (host === "cursor" ? "cursor" : "shared");
163
222
  const skills = scenario.skills ?? defaultSkills;
164
223
  const isLive = host !== "replay";
165
- logProgress(`${label} ${host}`);
224
+ if (scenarioIndex !== undefined && scenarioTotal !== undefined) {
225
+ logProgress(theme.scenarioTitle(scenarioIndex, scenarioTotal, scenario.name, host));
226
+ }
227
+ else {
228
+ logProgress(theme.scenarioLabel(scenario.name, host));
229
+ }
166
230
  const useWorktree = isLive && worktree !== false && !process.env.AGENT_TEST_NO_WORKTREE;
167
231
  let worktreeHandle;
168
- const callerTreeBefore = useWorktree ? await captureWorkingTreeStatus(cwd) : undefined;
232
+ const callerTreeBefore = useWorktree
233
+ ? await captureWorkingTreeStatus(cwd)
234
+ : undefined;
169
235
  if (useWorktree) {
170
- logPhase("creating git worktree…");
236
+ logPhase(theme.phaseDim("creating git worktree…"));
171
237
  worktreeHandle = await createScenarioWorktree(cwd, `${suiteName}-${scenario.name}`);
172
238
  activeWorktreeCleanup = worktreeHandle.cleanup;
173
- logPhase(`worktree → ${worktreeHandle.path}`);
239
+ logPhase(`worktree → ${theme.path(worktreeHandle.path)}`);
174
240
  if (isLive && scenario.seedPatch) {
175
- logPhase(`seeding worktree diff (${scenario.seedPatch})…`);
241
+ logPhase(`seeding diff ${theme.basename(scenario.seedPatch)}`);
176
242
  await seedScenarioWorktree(cwd, worktreeHandle.path, scenario.seedPatch);
177
243
  }
178
244
  }
179
245
  else if (isLive) {
180
- logPhase("worktree disabled — agent may mutate repo cwd (AGENT_TEST_ALLOW_IN_PLACE=1)");
246
+ logPhase(theme.phaseDim("worktree disabled — agent may mutate repo cwd (AGENT_TEST_ALLOW_IN_PLACE=1)"));
181
247
  }
182
248
  const runCwd = worktreeHandle?.path ?? cwd;
183
249
  try {
184
- logPhase("loading agent context…");
250
+ logPhase(theme.phaseDim("loading agent context…"));
185
251
  // Live worktree runs code in an isolated checkout; load rules/AGENTS from caller cwd
186
252
  // so uncommitted .cursor/rules and AGENTS.md edits apply during dogfood.
187
253
  const contextRoot = isLive && useWorktree ? cwd : runCwd;
188
254
  const context = await loadContext({ cwd: contextRoot, profile, skills });
189
255
  const useReplay = host === "replay";
190
256
  if (useReplay) {
191
- logPhase(`replaying ${scenario.replayTrace ?? "trace"}…`);
257
+ logPhase(`replaying ${theme.path(scenario.replayTrace ?? "trace")}…`);
192
258
  }
193
259
  else {
194
- logPhase("running cursor agent (may take several minutes)…");
260
+ logPhase(theme.phaseDim("running cursor agent (may take several minutes)…"));
195
261
  }
196
- const outputContract = isLive ? outputContractForRubric(scenario.rubric) : undefined;
262
+ const outputContract = isLive
263
+ ? outputContractForRubric(scenario.rubric)
264
+ : undefined;
197
265
  const agentStarted = performance.now();
198
266
  const session = await (isLive
199
267
  ? withHeartbeat(runAgent({
@@ -203,7 +271,7 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
203
271
  profile,
204
272
  prompt: scenario.prompt,
205
273
  outputContract,
206
- }), { label: "agent still running", started: agentStarted })
274
+ }), { label: "still running", started: agentStarted })
207
275
  : runAgent({
208
276
  host,
209
277
  cwd: runCwd,
@@ -213,7 +281,7 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
213
281
  replayTracePath: useReplay ? scenario.replayTrace : undefined,
214
282
  }));
215
283
  if (isLive) {
216
- logPhase(`agent finished (${formatDuration(performance.now() - agentStarted)}) — ${session.status}`);
284
+ logPhase(`agent finished — ${theme.statusCompleted(session.status)} ${theme.duration(`(${formatDuration(performance.now() - agentStarted)})`)}`);
217
285
  }
218
286
  let trace = enrichTrace(session.trace);
219
287
  const failures = [];
@@ -223,8 +291,10 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
223
291
  message: session.error ?? `agent session ${session.status}`,
224
292
  });
225
293
  }
226
- logPhase("scoring rubric…");
227
- failures.push(...assertRubric(trace, scenario.rubric, { skillsMode: context.skillsMode }));
294
+ logPhase(theme.phaseDim("scoring rubric…"));
295
+ failures.push(...assertRubric(trace, scenario.rubric, {
296
+ skillsMode: context.skillsMode,
297
+ }));
228
298
  if (useWorktree && callerTreeBefore !== undefined) {
229
299
  const callerTreeAfter = await captureWorkingTreeStatus(cwd);
230
300
  const leaked = findWorkingTreeLeak(callerTreeBefore, callerTreeAfter);
@@ -238,11 +308,13 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
238
308
  if (record && isLive) {
239
309
  const resolved = resolveRecordingPath(suiteName, scenario.name, scenario.replayTrace, recordFixtures === true, { repoRoot: cwd, stagingSessionId });
240
310
  if (resolved) {
241
- logPhase("recording trace…");
311
+ logPhase(theme.phaseDim("recording trace…"));
242
312
  try {
243
313
  const path = await recordTrace(resolved.path, trace);
244
- const recordLabel = resolved.kind === "fixture" ? "recorded fixture" : "recorded staging";
245
- logPhase(`${recordLabel} ${path}`);
314
+ const recordLabel = resolved.kind === "fixture"
315
+ ? "recorded fixture"
316
+ : "recorded staging";
317
+ logPhase(`${recordLabel} → ${theme.path(path)}`);
246
318
  }
247
319
  catch (error) {
248
320
  failures.push({
@@ -252,34 +324,56 @@ async function runScenario(cwd, suiteName, scenario, defaultHost, defaultProfile
252
324
  }
253
325
  }
254
326
  }
255
- const deferJudgeToParent = process.env.AGENT_TEST_CHILD === "1";
327
+ if (worktreeHandle) {
328
+ const willJudge = Boolean(judge) &&
329
+ isLive &&
330
+ !isChildProcess() &&
331
+ normalizeJudgeCriteria(scenario.rubric.judge).length > 0;
332
+ logPhase(theme.phaseDim("removing worktree…"), { last: !willJudge });
333
+ await worktreeHandle.cleanup();
334
+ if (activeWorktreeCleanup === worktreeHandle.cleanup) {
335
+ activeWorktreeCleanup = undefined;
336
+ }
337
+ worktreeHandle = undefined;
338
+ }
339
+ const deferJudgeToParent = isChildProcess();
340
+ let judgeVerdicts;
256
341
  if (judge && isLive && !deferJudgeToParent) {
257
342
  const criteria = normalizeJudgeCriteria(scenario.rubric.judge);
258
343
  if (criteria.length > 0) {
259
- logPhase(`LLM judge (${criteria.length} criterion/criteria)…`);
344
+ logPhase(theme.judgePhase(criteria.length), { last: true });
260
345
  }
261
346
  const judged = await runJudgeRubric(trace, scenario.rubric, runCwd);
262
347
  failures.push(...judged.failures);
263
348
  trace = judged.trace;
349
+ judgeVerdicts = toJudgeVerdictResults(judged.trace, criteria);
264
350
  }
265
351
  const durationMs = Math.round(performance.now() - started);
266
- const icon = failures.length === 0 ? "✓" : "✗";
267
- logProgress(`${icon} ${label} (${formatDuration(durationMs)})`);
352
+ emitScenarioVerdict({
353
+ passed: failures.length === 0,
354
+ index: scenarioIndex,
355
+ total: scenarioTotal,
356
+ name: scenario.name,
357
+ durationMs,
358
+ judgeVerdicts,
359
+ failures,
360
+ });
268
361
  return {
269
362
  suite: suiteName,
270
363
  scenario: scenario.name,
271
364
  passed: failures.length === 0,
272
365
  failures,
273
366
  durationMs,
367
+ judgeVerdicts,
274
368
  };
275
369
  }
276
370
  finally {
277
371
  if (worktreeHandle) {
278
- logPhase("removing worktree…");
279
- }
280
- await worktreeHandle?.cleanup();
281
- if (activeWorktreeCleanup === worktreeHandle?.cleanup) {
282
- activeWorktreeCleanup = undefined;
372
+ logPhase(theme.phaseDim("removing worktree…"), { last: true });
373
+ await worktreeHandle.cleanup();
374
+ if (activeWorktreeCleanup === worktreeHandle.cleanup) {
375
+ activeWorktreeCleanup = undefined;
376
+ }
283
377
  }
284
378
  }
285
379
  }
@@ -292,7 +386,9 @@ async function runJudgeRubric(trace, rubric, runCwd) {
292
386
  if (result.skipped) {
293
387
  return {
294
388
  trace,
295
- failures: [{ matcher: "judge", message: result.error ?? "judge skipped" }],
389
+ failures: [
390
+ { matcher: "judge", message: result.error ?? "judge skipped" },
391
+ ],
296
392
  };
297
393
  }
298
394
  const judgedTrace = { ...trace, judgeVerdicts: result.verdicts };
@@ -318,7 +414,8 @@ export async function runAllSuites(options) {
318
414
  const filtered = options.filter
319
415
  ? suitePaths.filter((suitePath) => {
320
416
  const suiteName = suiteNameFromPath(suitePath);
321
- return suiteName === options.filter || suitePath.includes(`/${options.filter}/`);
417
+ return (suiteName === options.filter ||
418
+ suitePath.includes(`/${options.filter}/`));
322
419
  })
323
420
  : suitePaths;
324
421
  const reports = [];
@@ -1 +1 @@
1
- {"version":3,"file":"run-suite.js","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-suite.js","sourceRoot":"","sources":["../src/run-suite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export declare function colorEnabled(): boolean;
2
+ /** Truncate long temp/session paths to `…/last` or `…/parent/last`. */
3
+ export declare function truncatePath(path: string): string;
4
+ /** Word-wrap text at `cols` without breaking words when possible. */
5
+ export declare function wrapText(text: string, cols?: number): string[];
6
+ export interface JudgeVerdictDisplay {
7
+ id: string;
8
+ question: string;
9
+ pass: boolean;
10
+ rationale: string;
11
+ }
12
+ export interface RubricFailureDisplay {
13
+ matcher: string;
14
+ message: string;
15
+ }
16
+ export interface ScenarioVerdictOptions {
17
+ passed: boolean;
18
+ index?: number;
19
+ total?: number;
20
+ name: string;
21
+ durationMs: number;
22
+ judgeVerdicts?: JudgeVerdictDisplay[];
23
+ rubricFailures?: RubricFailureDisplay[];
24
+ }
25
+ export declare function formatDurationLabel(ms: number): string;
26
+ export declare const theme: {
27
+ suiteHeader(name: string, host: string, count: number): string;
28
+ scenarioTitle(index: number, total: number, name: string, host: string): string;
29
+ scenarioLabel(name: string, host?: string): string;
30
+ phaseTree(prefix: "├─" | "└─" | "│ ", message: string): string;
31
+ path(p: string): string;
32
+ basename(p: string): string;
33
+ duration(label: string): string;
34
+ phaseDim(message: string): string;
35
+ statusCompleted(status: string): string;
36
+ tip(message: string): string;
37
+ warn(message: string): string;
38
+ banner(): string;
39
+ bannerDetail(message: string): string;
40
+ bannerSession(path: string): string;
41
+ summary(suite: string, passed: number, failed: number, skipped: number): string;
42
+ failedScenariosHeader(): string;
43
+ failedScenarioName(name: string): string;
44
+ verboseFailure(matcher: string, message: string): string;
45
+ judgePhase(count: number): string;
46
+ isolationNote(): string;
47
+ skipped(label: string): string;
48
+ scenarioVerdict(options: ScenarioVerdictOptions): string[];
49
+ };
50
+ //# sourceMappingURL=theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASjD;AAED,qEAAqE;AACrE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAsB,GAAG,MAAM,EAAE,CAkB3E;AAED,MAAM,WAAW,mBAAmB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACtC,cAAc,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACxC;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKtD;AAMD,eAAO,MAAM,KAAK;IACjB,WAAW,OAAO,MAAM,QAAQ,MAAM,SAAS,MAAM,GAAG,MAAM;IAK9D,aAAa,QACL,MAAM,SACN,MAAM,QACP,MAAM,QACN,MAAM,GACV,MAAM;IAIT,aAAa,OAAO,MAAM,SAAS,MAAM,GAAG,MAAM;IAMlD,SAAS,SAAS,IAAI,GAAG,IAAI,GAAG,MAAM,WAAW,MAAM,GAAG,MAAM;IAIhE,IAAI,IAAI,MAAM,GAAG,MAAM;IAIvB,QAAQ,IAAI,MAAM,GAAG,MAAM;IAI3B,QAAQ,QAAQ,MAAM,GAAG,MAAM;IAI/B,QAAQ,UAAU,MAAM,GAAG,MAAM;IAIjC,eAAe,SAAS,MAAM,GAAG,MAAM;IAIvC,GAAG,UAAU,MAAM,GAAG,MAAM;IAI5B,IAAI,UAAU,MAAM,GAAG,MAAM;IAI7B,MAAM,IAAI,MAAM;IAIhB,YAAY,UAAU,MAAM,GAAG,MAAM;IAIrC,aAAa,OAAO,MAAM,GAAG,MAAM;IAInC,OAAO,QACC,MAAM,UACL,MAAM,UACN,MAAM,WACL,MAAM,GACb,MAAM;IAYT,qBAAqB,IAAI,MAAM;IAI/B,kBAAkB,OAAO,MAAM,GAAG,MAAM;IAIxC,cAAc,UAAU,MAAM,WAAW,MAAM,GAAG,MAAM;IAIxD,UAAU,QAAQ,MAAM,GAAG,MAAM;IAIjC,aAAa,IAAI,MAAM;IAIvB,OAAO,QAAQ,MAAM,GAAG,MAAM;IAI9B,eAAe,UAAU,sBAAsB,GAAG,MAAM,EAAE;CAqC1D,CAAC"}
package/dist/theme.js ADDED
@@ -0,0 +1,151 @@
1
+ import { basename } from "node:path";
2
+ import chalk from "chalk";
3
+ const RATIONALE_WRAP_COLS = 72;
4
+ export function colorEnabled() {
5
+ return chalk.level > 0;
6
+ }
7
+ /** Truncate long temp/session paths to `…/last` or `…/parent/last`. */
8
+ export function truncatePath(path) {
9
+ if (process.env.AGENT_TEST_VERBOSE_PATHS === "1") {
10
+ return path;
11
+ }
12
+ const parts = path.split("/").filter(Boolean);
13
+ if (parts.length <= 2) {
14
+ return path;
15
+ }
16
+ return `…/${parts.slice(-2).join("/")}`;
17
+ }
18
+ /** Word-wrap text at `cols` without breaking words when possible. */
19
+ export function wrapText(text, cols = RATIONALE_WRAP_COLS) {
20
+ const words = text.trim().split(/\s+/).filter(Boolean);
21
+ if (words.length === 0) {
22
+ return [];
23
+ }
24
+ const lines = [];
25
+ let current = words[0] ?? "";
26
+ for (let i = 1; i < words.length; i++) {
27
+ const word = words[i] ?? "";
28
+ if (`${current} ${word}`.length <= cols) {
29
+ current = `${current} ${word}`;
30
+ }
31
+ else {
32
+ lines.push(current);
33
+ current = word;
34
+ }
35
+ }
36
+ lines.push(current);
37
+ return lines;
38
+ }
39
+ export function formatDurationLabel(ms) {
40
+ if (ms < 1000) {
41
+ return `${Math.round(ms)}ms`;
42
+ }
43
+ return `${(ms / 1000).toFixed(1)}s`;
44
+ }
45
+ function criterionLabel(count) {
46
+ return count === 1 ? "1 criterion" : `${count} criteria`;
47
+ }
48
+ export const theme = {
49
+ suiteHeader(name, host, count) {
50
+ const scenarios = count === 1 ? "1 scenario" : `${count} scenarios`;
51
+ return `${chalk.bold.cyan(name)}${chalk.dim(` (${host})`)} ${chalk.dim(scenarios)}`;
52
+ },
53
+ scenarioTitle(index, total, name, host) {
54
+ return `${chalk.bold(`[${index}/${total}]`)} ${chalk.bold.white(name)}${chalk.dim(` (${host})`)}`;
55
+ },
56
+ scenarioLabel(name, host) {
57
+ return host
58
+ ? `${chalk.bold.white(name)}${chalk.dim(` (${host})`)}`
59
+ : chalk.bold.white(name);
60
+ },
61
+ phaseTree(prefix, message) {
62
+ return ` ${chalk.dim(prefix)} ${message}`;
63
+ },
64
+ path(p) {
65
+ return chalk.cyan(truncatePath(p));
66
+ },
67
+ basename(p) {
68
+ return chalk.cyan(basename(p));
69
+ },
70
+ duration(label) {
71
+ return chalk.yellow(label);
72
+ },
73
+ phaseDim(message) {
74
+ return chalk.dim(message);
75
+ },
76
+ statusCompleted(status) {
77
+ return status === "completed" ? chalk.green(status) : chalk.red(status);
78
+ },
79
+ tip(message) {
80
+ return chalk.dim.italic(message);
81
+ },
82
+ warn(message) {
83
+ return `${chalk.yellow("⚠")} ${chalk.yellow(message)}`;
84
+ },
85
+ banner() {
86
+ return `${chalk.bold.cyan("agent-test")} ${chalk.dim("live dogfood")}`;
87
+ },
88
+ bannerDetail(message) {
89
+ return ` ${chalk.dim(message)}`;
90
+ },
91
+ bannerSession(path) {
92
+ return ` ${chalk.dim("session")} ${chalk.cyan(truncatePath(path))}`;
93
+ },
94
+ summary(suite, passed, failed, skipped) {
95
+ const parts = [
96
+ `${chalk.bold.cyan(suite)}:`,
97
+ chalk.green(`${passed} passed`),
98
+ failed > 0
99
+ ? chalk.red(`${failed} failed`)
100
+ : chalk.dim(`${failed} failed`),
101
+ chalk.dim(`${skipped} skipped`),
102
+ ];
103
+ return parts.join(" ");
104
+ },
105
+ failedScenariosHeader() {
106
+ return chalk.dim("Failed scenarios:");
107
+ },
108
+ failedScenarioName(name) {
109
+ return ` ${chalk.red("✗")} ${name}`;
110
+ },
111
+ verboseFailure(matcher, message) {
112
+ return ` ${chalk.dim(matcher)} ${message}`;
113
+ },
114
+ judgePhase(count) {
115
+ return `LLM judge ${chalk.dim(`(${criterionLabel(count)})`)}…`;
116
+ },
117
+ isolationNote() {
118
+ return chalk.dim.italic("live isolation: one subprocess per scenario");
119
+ },
120
+ skipped(label) {
121
+ return `${chalk.dim(label)} — ${chalk.dim("skipped")}`;
122
+ },
123
+ scenarioVerdict(options) {
124
+ const status = options.passed
125
+ ? chalk.bold.green("PASS")
126
+ : chalk.bold.red("FAIL");
127
+ const counter = options.index !== undefined && options.total !== undefined
128
+ ? `[${options.index}/${options.total}] `
129
+ : "";
130
+ const duration = chalk.yellow(`(${formatDurationLabel(options.durationMs)})`);
131
+ const lines = [
132
+ ` ${chalk.dim("│")}`,
133
+ ` ${chalk.dim("│")} ${status} ${counter}${chalk.bold.white(options.name)} ${duration}`,
134
+ ];
135
+ for (const verdict of options.judgeVerdicts ?? []) {
136
+ const color = verdict.pass ? chalk.green : chalk.red;
137
+ lines.push(` ${chalk.dim("│")} ${chalk.dim("judge")} ${chalk.dim(verdict.question)}`);
138
+ for (const wrapped of wrapText(verdict.rationale)) {
139
+ lines.push(` ${chalk.dim("│")} ${color(wrapped)}`);
140
+ }
141
+ }
142
+ for (const failure of options.rubricFailures ?? []) {
143
+ lines.push(` ${chalk.dim("│")} ${chalk.yellow("rubric")} ${chalk.dim(failure.matcher)}`);
144
+ for (const wrapped of wrapText(failure.message)) {
145
+ lines.push(` ${chalk.dim("│")} ${chalk.yellow(wrapped)}`);
146
+ }
147
+ }
148
+ return lines;
149
+ },
150
+ };
151
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -46,6 +46,12 @@ export interface AssertionFailure {
46
46
  matcher: string;
47
47
  message: string;
48
48
  }
49
+ export interface JudgeVerdictResult {
50
+ id: string;
51
+ question: string;
52
+ pass: boolean;
53
+ rationale: string;
54
+ }
49
55
  export interface ScenarioResult {
50
56
  suite: string;
51
57
  scenario: string;
@@ -53,6 +59,8 @@ export interface ScenarioResult {
53
59
  failures: AssertionFailure[];
54
60
  skipped?: boolean;
55
61
  durationMs: number;
62
+ /** LLM judge verdicts when judge criteria were evaluated. */
63
+ judgeVerdicts?: JudgeVerdictResult[];
56
64
  }
57
65
  export interface SuiteRunReport {
58
66
  suite: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhG,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjC,kGAAkG;IAClG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IACzD,4DAA4D;IAC5D,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,yDAAyD;IACzD,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,wEAAwE;QACxE,MAAM,CAAC,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC1B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjC,kGAAkG;IAClG,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qFAAqF;IACrF,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;IACzD,4DAA4D;IAC5D,KAAK,CAAC,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,yDAAyD;IACzD,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,iFAAiF;IACjF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,IAAI,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE;QACV,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,wEAAwE;QACxE,MAAM,CAAC,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IACF,SAAS,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,cAAc,EAAE,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@post-print/agent-test",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "agent-test": "./dist/cli.js"
@@ -23,7 +23,8 @@
23
23
  "clean": "rm -rf dist tsconfig.tsbuildinfo"
24
24
  },
25
25
  "dependencies": {
26
- "@post-print/agent-harness": "0.1.5"
26
+ "@post-print/agent-harness": "0.1.7",
27
+ "chalk": "5"
27
28
  },
28
29
  "devDependencies": {
29
30
  "@types/node": "^26.1.1",