@post-print/agent-test 1.1.9 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/README.md +18 -66
  2. package/dist/cli.d.ts +2 -64
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +26 -691
  5. package/dist/cli.js.map +1 -1
  6. package/dist/host-login.d.ts +1 -26
  7. package/dist/host-login.d.ts.map +1 -1
  8. package/dist/host-login.js +1 -92
  9. package/dist/host-login.js.map +1 -1
  10. package/dist/index.d.ts +6 -28
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +4 -26
  13. package/dist/index.js.map +1 -1
  14. package/dist/sdk/cli.d.ts +3 -0
  15. package/dist/sdk/cli.d.ts.map +1 -0
  16. package/dist/sdk/cli.js +55 -0
  17. package/dist/sdk/cli.js.map +1 -0
  18. package/dist/sdk/definitions.d.ts +22 -0
  19. package/dist/sdk/definitions.d.ts.map +1 -0
  20. package/dist/sdk/definitions.js +58 -0
  21. package/dist/sdk/definitions.js.map +1 -0
  22. package/dist/sdk/execution-reporter.d.ts +18 -0
  23. package/dist/sdk/execution-reporter.d.ts.map +1 -0
  24. package/dist/sdk/execution-reporter.js +171 -0
  25. package/dist/sdk/execution-reporter.js.map +1 -0
  26. package/dist/sdk/execution-runner.d.ts +14 -0
  27. package/dist/sdk/execution-runner.d.ts.map +1 -0
  28. package/dist/sdk/execution-runner.js +80 -0
  29. package/dist/sdk/execution-runner.js.map +1 -0
  30. package/dist/sdk/execution-store.d.ts +92 -0
  31. package/dist/sdk/execution-store.d.ts.map +1 -0
  32. package/dist/sdk/execution-store.js +357 -0
  33. package/dist/sdk/execution-store.js.map +1 -0
  34. package/dist/sdk/expect.d.ts +31 -0
  35. package/dist/sdk/expect.d.ts.map +1 -0
  36. package/dist/sdk/expect.js +96 -0
  37. package/dist/sdk/expect.js.map +1 -0
  38. package/dist/sdk/judge.d.ts +16 -0
  39. package/dist/sdk/judge.d.ts.map +1 -0
  40. package/dist/sdk/judge.js +82 -0
  41. package/dist/sdk/judge.js.map +1 -0
  42. package/dist/sdk/metrics.d.ts +3 -0
  43. package/dist/sdk/metrics.d.ts.map +1 -0
  44. package/dist/sdk/metrics.js +24 -0
  45. package/dist/sdk/metrics.js.map +1 -0
  46. package/dist/sdk/playwright-cli.d.ts +2 -0
  47. package/dist/sdk/playwright-cli.d.ts.map +1 -0
  48. package/dist/sdk/playwright-cli.js +6 -0
  49. package/dist/sdk/playwright-cli.js.map +1 -0
  50. package/dist/sdk/reporter.d.ts +12 -0
  51. package/dist/sdk/reporter.d.ts.map +1 -0
  52. package/dist/sdk/reporter.js +98 -0
  53. package/dist/sdk/reporter.js.map +1 -0
  54. package/dist/sdk/runtime.d.ts +33 -0
  55. package/dist/sdk/runtime.d.ts.map +1 -0
  56. package/dist/sdk/runtime.js +197 -0
  57. package/dist/sdk/runtime.js.map +1 -0
  58. package/dist/sdk/test.d.ts +36 -0
  59. package/dist/sdk/test.d.ts.map +1 -0
  60. package/dist/sdk/test.js +133 -0
  61. package/dist/sdk/test.js.map +1 -0
  62. package/dist/sdk/types.d.ts +76 -0
  63. package/dist/sdk/types.d.ts.map +1 -0
  64. package/dist/sdk/types.js.map +1 -0
  65. package/dist/sdk/usage.d.ts +10 -0
  66. package/dist/sdk/usage.d.ts.map +1 -0
  67. package/dist/sdk/usage.js +13 -0
  68. package/dist/sdk/usage.js.map +1 -0
  69. package/dist/sdk/viewer.d.ts +5 -0
  70. package/dist/sdk/viewer.d.ts.map +1 -0
  71. package/dist/sdk/viewer.js +74 -0
  72. package/dist/sdk/viewer.js.map +1 -0
  73. package/dist/sdk/workspace.d.ts +33 -0
  74. package/dist/sdk/workspace.d.ts.map +1 -0
  75. package/dist/sdk/workspace.js +100 -0
  76. package/dist/sdk/workspace.js.map +1 -0
  77. package/dist/viewer/bootstrap.d.ts +10 -0
  78. package/dist/viewer/bootstrap.d.ts.map +1 -0
  79. package/dist/viewer/bootstrap.js +2 -0
  80. package/dist/viewer/bootstrap.js.map +1 -0
  81. package/dist/viewer/client-entry.d.ts +2 -0
  82. package/dist/viewer/client-entry.d.ts.map +1 -0
  83. package/dist/viewer/client-entry.js +31 -0
  84. package/dist/viewer/client-entry.js.map +1 -0
  85. package/dist/viewer/generated-api.d.ts +15 -0
  86. package/dist/viewer/generated-api.d.ts.map +1 -0
  87. package/dist/viewer/generated-api.js +42 -0
  88. package/dist/viewer/generated-api.js.map +1 -0
  89. package/dist/viewer/generated-contracts.d.ts +13 -0
  90. package/dist/viewer/generated-contracts.d.ts.map +1 -0
  91. package/dist/viewer/generated-contracts.js +12 -0
  92. package/dist/viewer/generated-contracts.js.map +1 -0
  93. package/dist/viewer/main.js +64 -3
  94. package/dist/viewer/main.js.map +1 -1
  95. package/dist/viewer/page.d.ts +2 -4
  96. package/dist/viewer/page.d.ts.map +1 -1
  97. package/dist/viewer/page.js +18 -194
  98. package/dist/viewer/page.js.map +1 -1
  99. package/dist/viewer/presentation.d.ts +8 -0
  100. package/dist/viewer/presentation.d.ts.map +1 -0
  101. package/dist/viewer/presentation.js +45 -0
  102. package/dist/viewer/presentation.js.map +1 -0
  103. package/dist/viewer/protocol.d.ts +21 -0
  104. package/dist/viewer/protocol.d.ts.map +1 -0
  105. package/dist/viewer/protocol.js +6 -0
  106. package/dist/viewer/protocol.js.map +1 -0
  107. package/dist/viewer/server.d.ts +7 -11
  108. package/dist/viewer/server.d.ts.map +1 -1
  109. package/dist/viewer/server.js +314 -175
  110. package/dist/viewer/server.js.map +1 -1
  111. package/dist/viewer/styles.d.ts +2 -0
  112. package/dist/viewer/styles.d.ts.map +1 -0
  113. package/dist/viewer/styles.js +97 -0
  114. package/dist/viewer/styles.js.map +1 -0
  115. package/dist/viewer/stylex.css +1322 -0
  116. package/dist/viewer/test-catalog.d.ts +43 -0
  117. package/dist/viewer/test-catalog.d.ts.map +1 -0
  118. package/dist/viewer/test-catalog.js +27 -0
  119. package/dist/viewer/test-catalog.js.map +1 -0
  120. package/dist/viewer/v2-client.d.ts +7 -0
  121. package/dist/viewer/v2-client.d.ts.map +1 -0
  122. package/dist/viewer/v2-client.js +1862 -0
  123. package/dist/viewer/v2-client.js.map +1 -0
  124. package/package.json +19 -9
  125. package/dist/check.d.ts +0 -38
  126. package/dist/check.d.ts.map +0 -1
  127. package/dist/check.js +0 -169
  128. package/dist/check.js.map +0 -1
  129. package/dist/command-allowlist.d.ts +0 -9
  130. package/dist/command-allowlist.d.ts.map +0 -1
  131. package/dist/command-allowlist.js +0 -29
  132. package/dist/command-allowlist.js.map +0 -1
  133. package/dist/compare-scenario.d.ts +0 -65
  134. package/dist/compare-scenario.d.ts.map +0 -1
  135. package/dist/compare-scenario.js +0 -328
  136. package/dist/compare-scenario.js.map +0 -1
  137. package/dist/debug-bundle.d.ts +0 -81
  138. package/dist/debug-bundle.d.ts.map +0 -1
  139. package/dist/debug-bundle.js +0 -392
  140. package/dist/debug-bundle.js.map +0 -1
  141. package/dist/discover-suites.d.ts +0 -2
  142. package/dist/discover-suites.d.ts.map +0 -1
  143. package/dist/discover-suites.js +0 -19
  144. package/dist/discover-suites.js.map +0 -1
  145. package/dist/doctor.d.ts +0 -24
  146. package/dist/doctor.d.ts.map +0 -1
  147. package/dist/doctor.js +0 -272
  148. package/dist/doctor.js.map +0 -1
  149. package/dist/expect.d.ts +0 -59
  150. package/dist/expect.d.ts.map +0 -1
  151. package/dist/expect.js +0 -518
  152. package/dist/expect.js.map +0 -1
  153. package/dist/failures.d.ts +0 -4
  154. package/dist/failures.d.ts.map +0 -1
  155. package/dist/failures.js +0 -7
  156. package/dist/failures.js.map +0 -1
  157. package/dist/host-log.d.ts +0 -17
  158. package/dist/host-log.d.ts.map +0 -1
  159. package/dist/host-log.js +0 -154
  160. package/dist/host-log.js.map +0 -1
  161. package/dist/hosts.d.ts +0 -22
  162. package/dist/hosts.d.ts.map +0 -1
  163. package/dist/hosts.js +0 -84
  164. package/dist/hosts.js.map +0 -1
  165. package/dist/html-report.d.ts +0 -18
  166. package/dist/html-report.d.ts.map +0 -1
  167. package/dist/html-report.js +0 -1276
  168. package/dist/html-report.js.map +0 -1
  169. package/dist/live-isolation.d.ts +0 -82
  170. package/dist/live-isolation.d.ts.map +0 -1
  171. package/dist/live-isolation.js +0 -399
  172. package/dist/live-isolation.js.map +0 -1
  173. package/dist/live-timeout.d.ts +0 -11
  174. package/dist/live-timeout.d.ts.map +0 -1
  175. package/dist/live-timeout.js +0 -29
  176. package/dist/live-timeout.js.map +0 -1
  177. package/dist/load-adapters.d.ts +0 -13
  178. package/dist/load-adapters.d.ts.map +0 -1
  179. package/dist/load-adapters.js +0 -76
  180. package/dist/load-adapters.js.map +0 -1
  181. package/dist/load-suite.d.ts +0 -22
  182. package/dist/load-suite.d.ts.map +0 -1
  183. package/dist/load-suite.js +0 -154
  184. package/dist/load-suite.js.map +0 -1
  185. package/dist/mcp-config.d.ts +0 -13
  186. package/dist/mcp-config.d.ts.map +0 -1
  187. package/dist/mcp-config.js +0 -121
  188. package/dist/mcp-config.js.map +0 -1
  189. package/dist/preflight.d.ts +0 -3
  190. package/dist/preflight.d.ts.map +0 -1
  191. package/dist/preflight.js +0 -17
  192. package/dist/preflight.js.map +0 -1
  193. package/dist/progress.d.ts +0 -24
  194. package/dist/progress.d.ts.map +0 -1
  195. package/dist/progress.js +0 -111
  196. package/dist/progress.js.map +0 -1
  197. package/dist/record-trace.d.ts +0 -64
  198. package/dist/record-trace.d.ts.map +0 -1
  199. package/dist/record-trace.js +0 -124
  200. package/dist/record-trace.js.map +0 -1
  201. package/dist/report-preview-server.d.ts +0 -2
  202. package/dist/report-preview-server.d.ts.map +0 -1
  203. package/dist/report-preview-server.js +0 -24
  204. package/dist/report-preview-server.js.map +0 -1
  205. package/dist/report-preview.d.ts +0 -35
  206. package/dist/report-preview.d.ts.map +0 -1
  207. package/dist/report-preview.js +0 -205
  208. package/dist/report-preview.js.map +0 -1
  209. package/dist/run-suite.d.ts +0 -139
  210. package/dist/run-suite.d.ts.map +0 -1
  211. package/dist/run-suite.js +0 -1688
  212. package/dist/run-suite.js.map +0 -1
  213. package/dist/scenario-finalizer.d.ts +0 -27
  214. package/dist/scenario-finalizer.d.ts.map +0 -1
  215. package/dist/scenario-finalizer.js +0 -39
  216. package/dist/scenario-finalizer.js.map +0 -1
  217. package/dist/scenario-retry.d.ts +0 -15
  218. package/dist/scenario-retry.d.ts.map +0 -1
  219. package/dist/scenario-retry.js +0 -52
  220. package/dist/scenario-retry.js.map +0 -1
  221. package/dist/scenario-seed.d.ts +0 -13
  222. package/dist/scenario-seed.d.ts.map +0 -1
  223. package/dist/scenario-seed.js +0 -72
  224. package/dist/scenario-seed.js.map +0 -1
  225. package/dist/scenario-story.d.ts +0 -41
  226. package/dist/scenario-story.d.ts.map +0 -1
  227. package/dist/scenario-story.js +0 -459
  228. package/dist/scenario-story.js.map +0 -1
  229. package/dist/scenario-usage.d.ts +0 -15
  230. package/dist/scenario-usage.d.ts.map +0 -1
  231. package/dist/scenario-usage.js +0 -18
  232. package/dist/scenario-usage.js.map +0 -1
  233. package/dist/suite-summary.d.ts +0 -16
  234. package/dist/suite-summary.d.ts.map +0 -1
  235. package/dist/suite-summary.js +0 -218
  236. package/dist/suite-summary.js.map +0 -1
  237. package/dist/theme.d.ts +0 -96
  238. package/dist/theme.d.ts.map +0 -1
  239. package/dist/theme.js +0 -446
  240. package/dist/theme.js.map +0 -1
  241. package/dist/types.d.ts +0 -364
  242. package/dist/types.d.ts.map +0 -1
  243. package/dist/types.js.map +0 -1
  244. package/dist/validate-seeds.d.ts +0 -20
  245. package/dist/validate-seeds.d.ts.map +0 -1
  246. package/dist/validate-seeds.js +0 -72
  247. package/dist/validate-seeds.js.map +0 -1
  248. package/dist/validate-suite.d.ts +0 -24
  249. package/dist/validate-suite.d.ts.map +0 -1
  250. package/dist/validate-suite.js +0 -542
  251. package/dist/validate-suite.js.map +0 -1
  252. package/dist/viewer/catalog.d.ts +0 -72
  253. package/dist/viewer/catalog.d.ts.map +0 -1
  254. package/dist/viewer/catalog.js +0 -154
  255. package/dist/viewer/catalog.js.map +0 -1
  256. package/dist/viewer/cli.d.ts +0 -17
  257. package/dist/viewer/cli.d.ts.map +0 -1
  258. package/dist/viewer/cli.js +0 -38
  259. package/dist/viewer/cli.js.map +0 -1
  260. package/dist/viewer/client.d.ts +0 -7
  261. package/dist/viewer/client.d.ts.map +0 -1
  262. package/dist/viewer/client.js +0 -14
  263. package/dist/viewer/client.js.map +0 -1
  264. package/dist/viewer/compare-metrics.d.ts +0 -30
  265. package/dist/viewer/compare-metrics.d.ts.map +0 -1
  266. package/dist/viewer/compare-metrics.js +0 -101
  267. package/dist/viewer/compare-metrics.js.map +0 -1
  268. package/dist/viewer/context-files.d.ts +0 -8
  269. package/dist/viewer/context-files.d.ts.map +0 -1
  270. package/dist/viewer/context-files.js +0 -57
  271. package/dist/viewer/context-files.js.map +0 -1
  272. package/dist/viewer/emit.d.ts +0 -7
  273. package/dist/viewer/emit.d.ts.map +0 -1
  274. package/dist/viewer/emit.js +0 -25
  275. package/dist/viewer/emit.js.map +0 -1
  276. package/dist/viewer/events.d.ts +0 -118
  277. package/dist/viewer/events.d.ts.map +0 -1
  278. package/dist/viewer/events.js +0 -51
  279. package/dist/viewer/events.js.map +0 -1
  280. package/dist/viewer/live-runner.d.ts +0 -27
  281. package/dist/viewer/live-runner.d.ts.map +0 -1
  282. package/dist/viewer/live-runner.js +0 -166
  283. package/dist/viewer/live-runner.js.map +0 -1
  284. package/dist/viewer/run-controller.d.ts +0 -41
  285. package/dist/viewer/run-controller.d.ts.map +0 -1
  286. package/dist/viewer/run-controller.js +0 -426
  287. package/dist/viewer/run-controller.js.map +0 -1
  288. package/dist/viewer/session-server.d.ts +0 -2
  289. package/dist/viewer/session-server.d.ts.map +0 -1
  290. package/dist/viewer/session-server.js +0 -71
  291. package/dist/viewer/session-server.js.map +0 -1
  292. package/dist/warnings.d.ts +0 -3
  293. package/dist/warnings.d.ts.map +0 -1
  294. package/dist/warnings.js +0 -13
  295. package/dist/warnings.js.map +0 -1
  296. package/dist/worker-pool.d.ts +0 -8
  297. package/dist/worker-pool.d.ts.map +0 -1
  298. package/dist/worker-pool.js +0 -26
  299. package/dist/worker-pool.js.map +0 -1
  300. /package/dist/{types.js → sdk/types.js} +0 -0
package/dist/theme.js DELETED
@@ -1,446 +0,0 @@
1
- import { basename, join } from "node:path";
2
- import { pathToFileURL } from "node:url";
3
- import chalk from "chalk";
4
- const FALLBACK_COLUMNS = 80;
5
- const MIN_WRAP_COLS = 40;
6
- const STORY_GUTTER = " ";
7
- const STORY_LABEL_WIDTH = 12;
8
- const STORY_INDENT = STORY_GUTTER.length + STORY_LABEL_WIDTH;
9
- /** Word-wrap width for a line that already has `indent` visible columns. */
10
- export function wrapColumnWidth(indent, columns = process.stdout.columns) {
11
- const cols = typeof columns === "number" && columns > 0 ? columns : FALLBACK_COLUMNS;
12
- return Math.max(MIN_WRAP_COLS, cols - indent);
13
- }
14
- /** OSC 8 hyperlink: ESC ] 8 ; ; URL BEL text ESC ] 8 ; ; BEL */
15
- const OSC8_OPEN = "\u001b]8;;";
16
- const OSC8_CLOSE = "\u0007";
17
- /** Always enable ANSI color — agent-test is a human CLI, not a pipe filter. */
18
- export function configureCliColor() {
19
- chalk.level = 3;
20
- }
21
- export function colorEnabled() {
22
- return chalk.level > 0;
23
- }
24
- /** OSC-8 hyperlink. Cursor opens `http://` in the browser and `file://` in the editor. */
25
- export function formatHyperlink(url, display) {
26
- return `${OSC8_OPEN}${url}${OSC8_CLOSE}${display}${OSC8_OPEN}${OSC8_CLOSE}`;
27
- }
28
- /**
29
- * Wrap a filesystem path in an OSC-8 `file://` hyperlink.
30
- * Display text stays a plain path for copy-paste.
31
- */
32
- export function formatFileHyperlink(absolutePath, display = absolutePath) {
33
- return formatHyperlink(pathToFileURL(absolutePath).href, display);
34
- }
35
- /** Truncate long temp/session paths to `…/last` or `…/parent/last`. */
36
- export function truncatePath(path) {
37
- if (process.env.AGENT_TEST_VERBOSE_PATHS === "1" ||
38
- process.env.AGENT_TEST_DEBUG === "1" ||
39
- process.env.AGENT_TEST_DEBUG === "true") {
40
- return path;
41
- }
42
- const parts = path.split("/").filter(Boolean);
43
- if (parts.length <= 2) {
44
- return path;
45
- }
46
- return `…/${parts.slice(-2).join("/")}`;
47
- }
48
- /** Word-wrap text at `cols` without breaking words when possible. */
49
- export function wrapText(text, cols = wrapColumnWidth(0)) {
50
- const words = text.trim().split(/\s+/).filter(Boolean);
51
- if (words.length === 0) {
52
- return [];
53
- }
54
- const lines = [];
55
- let current = words[0] ?? "";
56
- for (let i = 1; i < words.length; i++) {
57
- const word = words[i] ?? "";
58
- if (`${current} ${word}`.length <= cols) {
59
- current = `${current} ${word}`;
60
- }
61
- else {
62
- lines.push(current);
63
- current = word;
64
- }
65
- }
66
- lines.push(current);
67
- return lines;
68
- }
69
- export function formatTokenNumber(totalTokens) {
70
- if (totalTokens >= 1_000_000) {
71
- return `${(totalTokens / 1_000_000).toFixed(1)}M`;
72
- }
73
- if (totalTokens >= 1000) {
74
- return `${(totalTokens / 1000).toFixed(1)}k`;
75
- }
76
- return String(totalTokens);
77
- }
78
- export function formatTokenCount(totalTokens) {
79
- return `${formatTokenNumber(totalTokens)} tok`;
80
- }
81
- const FAILURE_CATEGORY_LABEL = {
82
- rubric_miss: "rubric",
83
- judge_infra: "judge infra",
84
- judge_parse: "judge parse",
85
- agent_runtime: "agent runtime",
86
- worktree_leak: "worktree leak",
87
- recording_error: "recording",
88
- };
89
- export function formatFailureCategory(category) {
90
- if (!category) {
91
- return undefined;
92
- }
93
- return FAILURE_CATEGORY_LABEL[category] ?? category.replaceAll("_", " ");
94
- }
95
- export function formatDurationLabel(ms) {
96
- if (ms < 1000) {
97
- return `${Math.round(ms)}ms`;
98
- }
99
- return `${(ms / 1000).toFixed(1)}s`;
100
- }
101
- /** Elapsed clock for an in-flight agent. Tenths of a second. */
102
- export function formatClock(ms) {
103
- return `${Math.max(0, ms / 1000).toFixed(1)}s`;
104
- }
105
- /** Visible character count that skips CSI color sequences. */
106
- export function visibleLength(text) {
107
- let count = 0;
108
- for (let index = 0; index < text.length; index++) {
109
- if (text.charCodeAt(index) === 27) {
110
- const end = text.indexOf("m", index);
111
- if (end === -1) {
112
- break;
113
- }
114
- index = end;
115
- continue;
116
- }
117
- count += 1;
118
- }
119
- return count;
120
- }
121
- /** Keep a live clock line on one terminal row so `\r` can overwrite it. */
122
- export function clipToColumns(text, columns) {
123
- const cols = Math.max(20, columns);
124
- if (visibleLength(text) <= cols) {
125
- return text;
126
- }
127
- let count = 0;
128
- let end = 0;
129
- for (let index = 0; index < text.length; index++) {
130
- if (text.charCodeAt(index) === 27) {
131
- const seqEnd = text.indexOf("m", index);
132
- if (seqEnd === -1) {
133
- end = text.length;
134
- break;
135
- }
136
- index = seqEnd;
137
- end = index + 1;
138
- continue;
139
- }
140
- if (count >= cols - 1) {
141
- break;
142
- }
143
- count += 1;
144
- end = index + 1;
145
- }
146
- return `${text.slice(0, end)}…`;
147
- }
148
- function criterionLabel(count) {
149
- return count === 1 ? "1 criterion" : `${count} criteria`;
150
- }
151
- export const theme = {
152
- suiteHeader(name, host, count) {
153
- const scenarios = count === 1 ? "1 scenario" : `${count} scenarios`;
154
- return `${chalk.bold.cyan(name)} ${chalk.dim("·")} ${chalk.dim(host)} ${chalk.dim("·")} ${chalk.dim(scenarios)}`;
155
- },
156
- scenarioTitle(index, total, name, host) {
157
- return `\n${chalk.bold(`[${index}/${total}]`)} ${chalk.bold.white(name)} ${chalk.dim(`(${host})`)}`;
158
- },
159
- scenarioLabel(name, host) {
160
- return host ? `${chalk.bold.white(name)} ${chalk.dim(`(${host})`)}` : chalk.bold.white(name);
161
- },
162
- scenarioDescription(text) {
163
- return wrapText(text.trim(), wrapColumnWidth(4)).map((line) => ` ${chalk.dim(line)}`);
164
- },
165
- phaseTree(_prefix, message) {
166
- return ` ${message}`;
167
- },
168
- hostLog(level, service, detail) {
169
- const levelColor = level === "error" ? chalk.red : level === "warn" ? chalk.yellow : chalk.dim;
170
- return ` ${chalk.dim("host")} ${levelColor(level.toUpperCase())} ${chalk.dim(service)} ${chalk.dim(detail)}`;
171
- },
172
- path(p) {
173
- return chalk.cyan(truncatePath(p));
174
- },
175
- basename(p) {
176
- return chalk.cyan(basename(p));
177
- },
178
- duration(label) {
179
- return chalk.yellow(label);
180
- },
181
- phaseDim(message) {
182
- return chalk.dim(message);
183
- },
184
- phase(label, detail) {
185
- if (!detail) {
186
- return chalk.dim(label);
187
- }
188
- return `${chalk.dim(label)} ${detail}`;
189
- },
190
- agentClock(elapsedLabel, preview) {
191
- const clock = theme.phase("agent", theme.duration(elapsedLabel));
192
- if (!preview) {
193
- return clock;
194
- }
195
- return `${clock} ${chalk.dim(preview)}`;
196
- },
197
- liveTool(name, detail) {
198
- if (!detail) {
199
- return chalk.dim(name);
200
- }
201
- return `${chalk.dim(name)} ${chalk.cyan(detail)}`;
202
- },
203
- statusCompleted(status) {
204
- return status === "completed" ? chalk.green(status) : chalk.red(status);
205
- },
206
- tip(message) {
207
- return chalk.dim.italic(message);
208
- },
209
- /**
210
- * Tip line with a clickable target.
211
- * `http://` stays visible so Cursor can open the browser.
212
- * A filesystem path stays visible. Cursor opens that path in the editor.
213
- */
214
- fileTip(label, pathOrUrl) {
215
- if (pathOrUrl.startsWith("http://") || pathOrUrl.startsWith("https://")) {
216
- return theme.tip(`${formatHyperlink(pathOrUrl, label)} ${pathOrUrl}`);
217
- }
218
- return theme.tip(`${label} file ${formatFileHyperlink(pathOrUrl)}`);
219
- },
220
- warn(message) {
221
- return `${chalk.yellow("⚠")} ${chalk.yellow(message)}`;
222
- },
223
- banner(mode = "live") {
224
- return `${chalk.bold.cyan("agent-test")} ${chalk.dim(mode)}`;
225
- },
226
- bannerDetail(message) {
227
- return ` ${chalk.dim(message)}`;
228
- },
229
- bannerSession(path) {
230
- return ` ${chalk.dim("session")} ${chalk.cyan(truncatePath(path))}`;
231
- },
232
- bannerHints(hints) {
233
- return ` ${chalk.dim(hints.join(" · "))}`;
234
- },
235
- runSummary(text) {
236
- return text
237
- .split("\n")
238
- .map((line) => (line.startsWith("failures") ? chalk.red(line) : chalk.dim(line)))
239
- .join("\n");
240
- },
241
- summary(suite, passed, failed, skipped) {
242
- const parts = [
243
- `${chalk.bold.cyan(suite)}:`,
244
- chalk.green(`${passed} passed`),
245
- failed > 0 ? chalk.red(`${failed} failed`) : chalk.dim(`${failed} failed`),
246
- chalk.dim(`${skipped} skipped`),
247
- ];
248
- return parts.join(" ");
249
- },
250
- failedScenariosHeader() {
251
- return chalk.dim("Failed scenarios:");
252
- },
253
- failedScenarioName(name) {
254
- return ` ${chalk.red("✗")} ${name}`;
255
- },
256
- verboseFailure(matcher, message, evidence, category) {
257
- const prefix = category ? `${chalk.dim(category)} ` : "";
258
- const base = ` ${prefix}${chalk.dim(matcher)} ${message}`;
259
- if (!evidence) {
260
- return base;
261
- }
262
- return `${base}\n ${chalk.dim(evidence)}`;
263
- },
264
- debugBundlePointer(path) {
265
- return theme.phase("debug", theme.path(path));
266
- },
267
- judgePhase(count) {
268
- return theme.phase("judge", chalk.dim(`(${criterionLabel(count)})`));
269
- },
270
- isolationNote() {
271
- return chalk.dim.italic("isolated subprocesses");
272
- },
273
- skipped(label) {
274
- return `${chalk.dim(label)} — ${chalk.dim("skipped")}`;
275
- },
276
- scenarioVerdict(options) {
277
- const mark = options.passed ? chalk.bold.green("✓") : chalk.bold.red("✗");
278
- const status = options.passed ? chalk.bold.green("PASS") : chalk.bold.red("FAIL");
279
- const duration = chalk.yellow(formatDurationLabel(options.durationMs));
280
- const tokens = options.totalTokens !== undefined
281
- ? chalk.dim(` · ${formatTokenCount(options.totalTokens)}`)
282
- : "";
283
- const primaryCategory = !options.passed
284
- ? formatFailureCategory(options.failureCategory)
285
- : undefined;
286
- const category = primaryCategory ? `${chalk.yellow(primaryCategory)} ` : "";
287
- const lines = ["", ` ${mark} ${status} ${category}${duration}${tokens}`, ""];
288
- if (options.story) {
289
- const sectionLines = options.story.sections
290
- ? renderStorySections(options.story.sections, options.story.verdict, options.passed)
291
- : [
292
- ...storyLines("criteria", options.story.criteria),
293
- ...blankIf(options.story.criteria.length > 0 &&
294
- (options.story.result.length > 0 || options.story.verdict.length > 0)),
295
- ...storyLines("result", options.story.result),
296
- ...blankIf(options.story.result.length > 0 && options.story.verdict.length > 0),
297
- ...storyLines("result", options.story.verdict, options.passed, {
298
- continueLabel: options.story.result.length > 0,
299
- }),
300
- ];
301
- lines.push(...sectionLines);
302
- lines.push("");
303
- if (options.debug) {
304
- const evidenceCols = wrapColumnWidth(STORY_INDENT);
305
- for (const failure of options.rubricFailures ?? []) {
306
- if (!failure.evidence) {
307
- continue;
308
- }
309
- for (const wrapped of wrapText(failure.evidence, evidenceCols)) {
310
- lines.push(`${STORY_GUTTER}${" ".repeat(STORY_LABEL_WIDTH)}${chalk.dim(wrapped)}`);
311
- }
312
- }
313
- }
314
- }
315
- else {
316
- const bodyCols = wrapColumnWidth(STORY_INDENT);
317
- for (const verdict of options.judgeVerdicts ?? []) {
318
- const color = verdict.pass ? chalk.green : chalk.red;
319
- lines.push(`${STORY_GUTTER}${chalk.dim("judge".padEnd(STORY_LABEL_WIDTH))}${chalk.dim(verdict.question)}`);
320
- for (const wrapped of wrapText(verdict.rationale, bodyCols)) {
321
- lines.push(`${STORY_GUTTER}${" ".repeat(STORY_LABEL_WIDTH)}${color(wrapped)}`);
322
- }
323
- lines.push("");
324
- }
325
- for (const failure of options.rubricFailures ?? []) {
326
- const categoryLabel = formatFailureCategory(failure.category) ?? "rubric";
327
- lines.push(`${STORY_GUTTER}${chalk.yellow(categoryLabel.padEnd(STORY_LABEL_WIDTH))}${chalk.dim(failure.matcher)}`);
328
- for (const wrapped of wrapText(failure.message, bodyCols)) {
329
- lines.push(`${STORY_GUTTER}${" ".repeat(STORY_LABEL_WIDTH)}${chalk.yellow(wrapped)}`);
330
- }
331
- if (options.debug && failure.evidence) {
332
- for (const wrapped of wrapText(failure.evidence, bodyCols)) {
333
- lines.push(`${STORY_GUTTER}${" ".repeat(STORY_LABEL_WIDTH)}${chalk.dim(wrapped)}`);
334
- }
335
- }
336
- lines.push("");
337
- }
338
- }
339
- if (options.debug && options.debugBundleDir) {
340
- lines.push(` ${chalk.dim("debug")} ${chalk.cyan(truncatePath(join(options.debugBundleDir, "transcript.md")))}`);
341
- }
342
- return lines;
343
- },
344
- };
345
- function blankIf(condition) {
346
- return condition ? [""] : [];
347
- }
348
- function checkMark(status) {
349
- if (status === "pass") {
350
- return "✓";
351
- }
352
- if (status === "fail") {
353
- return "✗";
354
- }
355
- return "·";
356
- }
357
- function checkColor(status) {
358
- if (status === "pass") {
359
- return chalk.green;
360
- }
361
- if (status === "fail") {
362
- return chalk.red;
363
- }
364
- return (text) => text;
365
- }
366
- function renderCheckLines(check, cols) {
367
- const hang = " ".repeat(STORY_LABEL_WIDTH);
368
- const mark = checkMark(check.status);
369
- const color = checkColor(check.status);
370
- const wrapped = wrapText(`${mark} ${check.text}`, cols);
371
- const body = wrapped.length > 0 ? wrapped : [`${mark} ${check.text}`];
372
- return body.map((part) => `${STORY_GUTTER}${hang}${color(part)}`);
373
- }
374
- function renderStorySections(sections, verdict, passed) {
375
- const titled = sections.some((section) => section.title);
376
- if (!titled && sections.length === 1 && sections[0]) {
377
- const section = sections[0];
378
- const checkTexts = section.checks.map((check) => `${checkMark(check.status)} ${check.text}`);
379
- const notes = section.notes ?? [];
380
- return [
381
- ...storyLines("criteria", checkTexts),
382
- ...blankIf(checkTexts.length > 0 && (notes.length > 0 || verdict.length > 0)),
383
- ...storyLines("result", notes),
384
- ...blankIf(notes.length > 0 && verdict.length > 0),
385
- ...storyLines("result", verdict, passed, { continueLabel: notes.length > 0 }),
386
- ];
387
- }
388
- const cols = wrapColumnWidth(STORY_INDENT);
389
- const hang = " ".repeat(STORY_LABEL_WIDTH);
390
- const lines = [];
391
- for (const [index, section] of sections.entries()) {
392
- if (index > 0) {
393
- lines.push("");
394
- }
395
- if (section.title) {
396
- lines.push(`${STORY_GUTTER}${chalk.bold(section.title)}`);
397
- }
398
- if (section.description) {
399
- for (const part of wrapText(section.description, cols)) {
400
- lines.push(`${STORY_GUTTER}${hang}${chalk.dim(part)}`);
401
- }
402
- }
403
- for (const check of section.checks) {
404
- lines.push(...renderCheckLines(check, cols));
405
- }
406
- for (const note of section.notes ?? []) {
407
- const wrapped = wrapText(note, cols);
408
- const body = wrapped.length > 0 ? wrapped : [note];
409
- for (const part of body) {
410
- lines.push(`${STORY_GUTTER}${hang}${part}`);
411
- }
412
- }
413
- }
414
- if (verdict.length > 0) {
415
- if (lines.length > 0) {
416
- lines.push("");
417
- }
418
- lines.push(...storyLines("result", verdict, passed));
419
- }
420
- return lines;
421
- }
422
- function storyLines(label, values, passed, options) {
423
- if (values.length === 0) {
424
- return [];
425
- }
426
- const lines = [];
427
- const hang = " ".repeat(STORY_LABEL_WIDTH);
428
- const cols = wrapColumnWidth(STORY_INDENT);
429
- const continueLabel = options?.continueLabel === true;
430
- for (const [index, value] of values.entries()) {
431
- if (index > 0 && passed !== undefined) {
432
- lines.push("");
433
- }
434
- const wrapped = wrapText(value, cols);
435
- const body = wrapped.length > 0 ? wrapped : [value];
436
- for (const [wrapIndex, part] of body.entries()) {
437
- const prefix = index === 0 && wrapIndex === 0 && !continueLabel
438
- ? chalk.dim(label.padEnd(STORY_LABEL_WIDTH))
439
- : hang;
440
- const color = passed === false ? chalk.yellow : passed === true ? chalk.green : (text) => text;
441
- lines.push(`${STORY_GUTTER}${prefix}${color(part)}`);
442
- }
443
- }
444
- return lines;
445
- }
446
- //# sourceMappingURL=theme.js.map
package/dist/theme.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"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"}