@post-print/agent-test 1.1.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) 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/compare-scenario.d.ts +1 -1
  7. package/dist/compare-scenario.d.ts.map +1 -1
  8. package/dist/compare-scenario.js +72 -75
  9. package/dist/compare-scenario.js.map +1 -1
  10. package/dist/failures.d.ts +5 -1
  11. package/dist/failures.d.ts.map +1 -1
  12. package/dist/failures.js +1 -1
  13. package/dist/failures.js.map +1 -1
  14. package/dist/host-login.d.ts +1 -26
  15. package/dist/host-login.d.ts.map +1 -1
  16. package/dist/host-login.js +1 -92
  17. package/dist/host-login.js.map +1 -1
  18. package/dist/index.d.ts +6 -28
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +4 -26
  21. package/dist/index.js.map +1 -1
  22. package/dist/scenario-story.d.ts.map +1 -1
  23. package/dist/scenario-story.js +57 -39
  24. package/dist/scenario-story.js.map +1 -1
  25. package/dist/sdk/cli.d.ts +3 -0
  26. package/dist/sdk/cli.d.ts.map +1 -0
  27. package/dist/sdk/cli.js +20 -0
  28. package/dist/sdk/cli.js.map +1 -0
  29. package/dist/sdk/definitions.d.ts +22 -0
  30. package/dist/sdk/definitions.d.ts.map +1 -0
  31. package/dist/sdk/definitions.js +58 -0
  32. package/dist/sdk/definitions.js.map +1 -0
  33. package/dist/sdk/expect.d.ts +31 -0
  34. package/dist/sdk/expect.d.ts.map +1 -0
  35. package/dist/sdk/expect.js +68 -0
  36. package/dist/sdk/expect.js.map +1 -0
  37. package/dist/sdk/judge.d.ts +16 -0
  38. package/dist/sdk/judge.d.ts.map +1 -0
  39. package/dist/sdk/judge.js +82 -0
  40. package/dist/sdk/judge.js.map +1 -0
  41. package/dist/sdk/metrics.d.ts +3 -0
  42. package/dist/sdk/metrics.d.ts.map +1 -0
  43. package/dist/sdk/metrics.js +24 -0
  44. package/dist/sdk/metrics.js.map +1 -0
  45. package/dist/sdk/reporter.d.ts +12 -0
  46. package/dist/sdk/reporter.d.ts.map +1 -0
  47. package/dist/sdk/reporter.js +58 -0
  48. package/dist/sdk/reporter.js.map +1 -0
  49. package/dist/sdk/runtime.d.ts +33 -0
  50. package/dist/sdk/runtime.d.ts.map +1 -0
  51. package/dist/sdk/runtime.js +188 -0
  52. package/dist/sdk/runtime.js.map +1 -0
  53. package/dist/sdk/test.d.ts +27 -0
  54. package/dist/sdk/test.d.ts.map +1 -0
  55. package/dist/sdk/test.js +92 -0
  56. package/dist/sdk/test.js.map +1 -0
  57. package/dist/sdk/types.d.ts +75 -0
  58. package/dist/sdk/types.d.ts.map +1 -0
  59. package/dist/sdk/types.js +2 -0
  60. package/dist/sdk/types.js.map +1 -0
  61. package/dist/sdk/usage.d.ts +10 -0
  62. package/dist/sdk/usage.d.ts.map +1 -0
  63. package/dist/sdk/usage.js +13 -0
  64. package/dist/sdk/usage.js.map +1 -0
  65. package/dist/sdk/viewer-results.d.ts +43 -0
  66. package/dist/sdk/viewer-results.d.ts.map +1 -0
  67. package/dist/sdk/viewer-results.js +126 -0
  68. package/dist/sdk/viewer-results.js.map +1 -0
  69. package/dist/sdk/viewer.d.ts +11 -0
  70. package/dist/sdk/viewer.d.ts.map +1 -0
  71. package/dist/sdk/viewer.js +160 -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/types.d.ts +4 -40
  78. package/dist/types.d.ts.map +1 -1
  79. package/dist/viewer/catalog.d.ts +2 -8
  80. package/dist/viewer/catalog.d.ts.map +1 -1
  81. package/dist/viewer/catalog.js +23 -128
  82. package/dist/viewer/catalog.js.map +1 -1
  83. package/dist/viewer/client.d.ts.map +1 -1
  84. package/dist/viewer/client.js +12 -12
  85. package/dist/viewer/client.js.map +1 -1
  86. package/dist/viewer/run-controller.d.ts +4 -2
  87. package/dist/viewer/run-controller.d.ts.map +1 -1
  88. package/dist/viewer/run-controller.js +297 -248
  89. package/dist/viewer/run-controller.js.map +1 -1
  90. package/dist/viewer/server.d.ts +4 -3
  91. package/dist/viewer/server.d.ts.map +1 -1
  92. package/dist/viewer/server.js +149 -112
  93. package/dist/viewer/server.js.map +1 -1
  94. package/dist/viewer/styles.d.ts +2 -0
  95. package/dist/viewer/styles.d.ts.map +1 -0
  96. package/dist/viewer/styles.js +444 -0
  97. package/dist/viewer/styles.js.map +1 -0
  98. package/dist/worker-pool.d.ts +5 -1
  99. package/dist/worker-pool.d.ts.map +1 -1
  100. package/dist/worker-pool.js +1 -1
  101. package/dist/worker-pool.js.map +1 -1
  102. package/package.json +7 -7
  103. package/dist/check.d.ts +0 -38
  104. package/dist/check.d.ts.map +0 -1
  105. package/dist/check.js +0 -169
  106. package/dist/check.js.map +0 -1
  107. package/dist/command-allowlist.d.ts +0 -9
  108. package/dist/command-allowlist.d.ts.map +0 -1
  109. package/dist/command-allowlist.js +0 -29
  110. package/dist/command-allowlist.js.map +0 -1
  111. package/dist/debug-bundle.d.ts +0 -81
  112. package/dist/debug-bundle.d.ts.map +0 -1
  113. package/dist/debug-bundle.js +0 -392
  114. package/dist/debug-bundle.js.map +0 -1
  115. package/dist/discover-suites.d.ts +0 -2
  116. package/dist/discover-suites.d.ts.map +0 -1
  117. package/dist/discover-suites.js +0 -19
  118. package/dist/discover-suites.js.map +0 -1
  119. package/dist/doctor.d.ts +0 -24
  120. package/dist/doctor.d.ts.map +0 -1
  121. package/dist/doctor.js +0 -272
  122. package/dist/doctor.js.map +0 -1
  123. package/dist/expect.d.ts +0 -59
  124. package/dist/expect.d.ts.map +0 -1
  125. package/dist/expect.js +0 -518
  126. package/dist/expect.js.map +0 -1
  127. package/dist/host-log.d.ts +0 -17
  128. package/dist/host-log.d.ts.map +0 -1
  129. package/dist/host-log.js +0 -154
  130. package/dist/host-log.js.map +0 -1
  131. package/dist/hosts.d.ts +0 -22
  132. package/dist/hosts.d.ts.map +0 -1
  133. package/dist/hosts.js +0 -84
  134. package/dist/hosts.js.map +0 -1
  135. package/dist/html-report.d.ts +0 -18
  136. package/dist/html-report.d.ts.map +0 -1
  137. package/dist/html-report.js +0 -1276
  138. package/dist/html-report.js.map +0 -1
  139. package/dist/live-isolation.d.ts +0 -82
  140. package/dist/live-isolation.d.ts.map +0 -1
  141. package/dist/live-isolation.js +0 -399
  142. package/dist/live-isolation.js.map +0 -1
  143. package/dist/live-timeout.d.ts +0 -11
  144. package/dist/live-timeout.d.ts.map +0 -1
  145. package/dist/live-timeout.js +0 -29
  146. package/dist/live-timeout.js.map +0 -1
  147. package/dist/load-adapters.d.ts +0 -13
  148. package/dist/load-adapters.d.ts.map +0 -1
  149. package/dist/load-adapters.js +0 -76
  150. package/dist/load-adapters.js.map +0 -1
  151. package/dist/load-suite.d.ts +0 -22
  152. package/dist/load-suite.d.ts.map +0 -1
  153. package/dist/load-suite.js +0 -154
  154. package/dist/load-suite.js.map +0 -1
  155. package/dist/mcp-config.d.ts +0 -13
  156. package/dist/mcp-config.d.ts.map +0 -1
  157. package/dist/mcp-config.js +0 -121
  158. package/dist/mcp-config.js.map +0 -1
  159. package/dist/preflight.d.ts +0 -3
  160. package/dist/preflight.d.ts.map +0 -1
  161. package/dist/preflight.js +0 -17
  162. package/dist/preflight.js.map +0 -1
  163. package/dist/progress.d.ts +0 -24
  164. package/dist/progress.d.ts.map +0 -1
  165. package/dist/progress.js +0 -111
  166. package/dist/progress.js.map +0 -1
  167. package/dist/record-trace.d.ts +0 -64
  168. package/dist/record-trace.d.ts.map +0 -1
  169. package/dist/record-trace.js +0 -124
  170. package/dist/record-trace.js.map +0 -1
  171. package/dist/report-preview-server.d.ts +0 -2
  172. package/dist/report-preview-server.d.ts.map +0 -1
  173. package/dist/report-preview-server.js +0 -24
  174. package/dist/report-preview-server.js.map +0 -1
  175. package/dist/report-preview.d.ts +0 -35
  176. package/dist/report-preview.d.ts.map +0 -1
  177. package/dist/report-preview.js +0 -205
  178. package/dist/report-preview.js.map +0 -1
  179. package/dist/run-suite.d.ts +0 -139
  180. package/dist/run-suite.d.ts.map +0 -1
  181. package/dist/run-suite.js +0 -1669
  182. package/dist/run-suite.js.map +0 -1
  183. package/dist/scenario-finalizer.d.ts +0 -27
  184. package/dist/scenario-finalizer.d.ts.map +0 -1
  185. package/dist/scenario-finalizer.js +0 -39
  186. package/dist/scenario-finalizer.js.map +0 -1
  187. package/dist/scenario-retry.d.ts +0 -15
  188. package/dist/scenario-retry.d.ts.map +0 -1
  189. package/dist/scenario-retry.js +0 -52
  190. package/dist/scenario-retry.js.map +0 -1
  191. package/dist/scenario-seed.d.ts +0 -13
  192. package/dist/scenario-seed.d.ts.map +0 -1
  193. package/dist/scenario-seed.js +0 -72
  194. package/dist/scenario-seed.js.map +0 -1
  195. package/dist/suite-summary.d.ts +0 -16
  196. package/dist/suite-summary.d.ts.map +0 -1
  197. package/dist/suite-summary.js +0 -218
  198. package/dist/suite-summary.js.map +0 -1
  199. package/dist/theme.d.ts +0 -96
  200. package/dist/theme.d.ts.map +0 -1
  201. package/dist/theme.js +0 -446
  202. package/dist/theme.js.map +0 -1
  203. package/dist/validate-seeds.d.ts +0 -20
  204. package/dist/validate-seeds.d.ts.map +0 -1
  205. package/dist/validate-seeds.js +0 -72
  206. package/dist/validate-seeds.js.map +0 -1
  207. package/dist/validate-suite.d.ts +0 -24
  208. package/dist/validate-suite.d.ts.map +0 -1
  209. package/dist/validate-suite.js +0 -542
  210. package/dist/validate-suite.js.map +0 -1
  211. package/dist/viewer/cli.d.ts +0 -17
  212. package/dist/viewer/cli.d.ts.map +0 -1
  213. package/dist/viewer/cli.js +0 -38
  214. package/dist/viewer/cli.js.map +0 -1
  215. package/dist/viewer/compare-metrics.d.ts +0 -30
  216. package/dist/viewer/compare-metrics.d.ts.map +0 -1
  217. package/dist/viewer/compare-metrics.js +0 -101
  218. package/dist/viewer/compare-metrics.js.map +0 -1
  219. package/dist/viewer/context-files.d.ts +0 -8
  220. package/dist/viewer/context-files.d.ts.map +0 -1
  221. package/dist/viewer/context-files.js +0 -57
  222. package/dist/viewer/context-files.js.map +0 -1
  223. package/dist/viewer/emit.d.ts +0 -7
  224. package/dist/viewer/emit.d.ts.map +0 -1
  225. package/dist/viewer/emit.js +0 -25
  226. package/dist/viewer/emit.js.map +0 -1
  227. package/dist/viewer/live-runner.d.ts +0 -27
  228. package/dist/viewer/live-runner.d.ts.map +0 -1
  229. package/dist/viewer/live-runner.js +0 -166
  230. package/dist/viewer/live-runner.js.map +0 -1
  231. package/dist/viewer/session-server.d.ts +0 -2
  232. package/dist/viewer/session-server.d.ts.map +0 -1
  233. package/dist/viewer/session-server.js +0 -71
  234. package/dist/viewer/session-server.js.map +0 -1
  235. package/dist/warnings.d.ts +0 -3
  236. package/dist/warnings.d.ts.map +0 -1
  237. package/dist/warnings.js +0 -13
  238. package/dist/warnings.js.map +0 -1
@@ -0,0 +1,444 @@
1
+ export function reportCss() {
2
+ return `
3
+ @layer reset, base, layout, components;
4
+ :root {
5
+ color-scheme: dark;
6
+ --bg: oklch(0.18 0.02 250);
7
+ --panel: oklch(0.23 0.025 250);
8
+ --panel-2: oklch(0.2 0.022 250);
9
+ --text: oklch(0.93 0.015 250);
10
+ --muted: oklch(0.72 0.03 250);
11
+ --border: oklch(0.32 0.03 250);
12
+ --pass: oklch(0.8 0.16 155);
13
+ --fail: oklch(0.72 0.16 20);
14
+ --skip: oklch(0.84 0.14 85);
15
+ --user-bubble: oklch(0.3 0.06 250);
16
+ --assistant-bubble: oklch(0.26 0.04 155);
17
+ --system-bubble: oklch(0.26 0.04 300);
18
+ --tool: oklch(0.82 0.12 80);
19
+ --tool-bubble: oklch(0.26 0.04 80);
20
+ --arm-a: oklch(0.72 0.12 250);
21
+ --arm-b: oklch(0.78 0.14 75);
22
+ --arm-0: var(--arm-a);
23
+ --arm-1: var(--arm-b);
24
+ --arm-2: oklch(0.76 0.13 145);
25
+ --arm-3: oklch(0.74 0.12 20);
26
+ }
27
+ @layer reset {
28
+ * { box-sizing: border-box; }
29
+ body { margin: 0; }
30
+ h1, h2, h3, h4, p, ol { margin: 0; }
31
+ dl, dd { margin: 0; }
32
+ }
33
+ @layer base {
34
+ body {
35
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
36
+ background: var(--bg);
37
+ color: var(--text);
38
+ line-height: 1.5;
39
+ word-spacing: normal;
40
+ }
41
+ main { max-width: 68rem; margin-inline: auto; padding: 1.5rem 1.25rem 3rem; }
42
+ main:has(.compare-layout) { max-width: 96rem; }
43
+ h1 { font-size: 1.7rem; font-weight: 650; letter-spacing: -0.02em; }
44
+ h2 { font-size: 1.05rem; font-weight: 650; }
45
+ h3 { font-size: 0.8rem; color: var(--muted); font-weight: 650; }
46
+ h4 { font-size: 0.75rem; margin-block: 0.9rem 0.35rem; color: var(--muted); font-weight: 650; }
47
+ .muted { color: var(--muted); }
48
+ .empty { color: var(--muted); font-size: 0.85rem; font-style: italic; }
49
+ .empty.note { margin-bottom: 0.5rem; }
50
+ }
51
+ @layer layout {
52
+ .report-header { display: grid; gap: 0.25rem; margin-bottom: 1rem; }
53
+ .brand { color: var(--muted); font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; }
54
+ .lede, .when { color: var(--muted); font-size: 0.85rem; }
55
+ .summary, .cost, .guide, .compare {
56
+ background: var(--panel);
57
+ border: 1px solid var(--border);
58
+ border-radius: 12px;
59
+ padding: 0.9rem 1rem;
60
+ }
61
+ .summary { display: grid; gap: 0.65rem; }
62
+ .stats { display: flex; flex-wrap: wrap; gap: 0.5rem; }
63
+ .suite { margin-top: 1.75rem; display: grid; gap: 0.55rem; }
64
+ .suite-header { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 0.5rem 1rem; }
65
+ .suite-title { display: flex; align-items: center; gap: 0.5rem; }
66
+ .cost { margin-top: 0.85rem; display: grid; gap: 0.65rem; }
67
+ .cost-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); gap: 0.75rem; }
68
+ .guide { margin-top: 0.85rem; }
69
+ .diagnostics { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.7rem; margin-bottom: 0.9rem; }
70
+ .meta-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: 0.45rem 0.75rem; }
71
+ }
72
+ @layer components {
73
+ .stat {
74
+ display: inline-flex;
75
+ align-items: baseline;
76
+ gap: 0.35rem;
77
+ padding: 0.4rem 0.65rem;
78
+ border-radius: 8px;
79
+ background: var(--panel-2);
80
+ font-size: 0.85rem;
81
+ }
82
+ .stat strong { font-size: 1.15rem; font-variant-numeric: tabular-nums; }
83
+ .stat-pass strong { color: var(--pass); }
84
+ .stat-fail strong { color: var(--fail); }
85
+ .stat-skip strong { color: var(--skip); }
86
+ .guide h2 { font-size: 0.95rem; }
87
+ .guide ol { margin: 0.65rem 0 0; padding-inline-start: 1.2rem; display: grid; gap: 0.35rem; color: var(--muted); font-size: 0.88rem; }
88
+ .cost-lede { color: var(--muted); font-size: 0.85rem; }
89
+ .cost-item { display: grid; gap: 0.15rem; }
90
+ .cost-value { font-size: 1.2rem; font-weight: 650; font-variant-numeric: tabular-nums; }
91
+ .cost-label { font-size: 0.8rem; font-weight: 650; }
92
+ .cost-detail { color: var(--muted); font-size: 0.75rem; }
93
+ .host {
94
+ color: var(--muted);
95
+ font-size: 0.72rem;
96
+ background: var(--panel-2);
97
+ border: 1px solid var(--border);
98
+ border-radius: 999px;
99
+ padding: 0.1rem 0.5rem;
100
+ }
101
+ .suite-counts { display: flex; flex-wrap: wrap; gap: 0.75rem; color: var(--muted); font-size: 0.85rem; }
102
+ .tokens { color: var(--muted); font-size: 0.78rem; font-variant-numeric: tabular-nums; }
103
+ .usage-summary, .scenario-meta {
104
+ background: var(--panel-2);
105
+ border: 1px solid var(--border);
106
+ border-radius: 8px;
107
+ padding: 0.65rem 0.7rem;
108
+ }
109
+ .meta-item { display: grid; gap: 0.1rem; }
110
+ .meta-key { color: var(--muted); font-size: 0.75rem; }
111
+ .meta-val { font-size: 0.88rem; font-variant-numeric: tabular-nums; word-break: break-word; }
112
+ .meta-row { margin-bottom: 0.7rem; }
113
+ details.scenario {
114
+ background: var(--panel);
115
+ border: 1px solid var(--border);
116
+ border-radius: 10px;
117
+ margin: 0.45rem 0;
118
+ overflow: hidden;
119
+ }
120
+ details.scenario summary {
121
+ cursor: pointer;
122
+ display: flex;
123
+ flex-wrap: wrap;
124
+ gap: 0.45rem 0.65rem;
125
+ align-items: center;
126
+ list-style: none;
127
+ padding: 0.55rem 0.7rem;
128
+ }
129
+ details.scenario[open] summary { border-bottom: 1px solid var(--border); background: #17202d; }
130
+ details.scenario summary::-webkit-details-marker { display: none; }
131
+ .scenario-heading { display: grid; gap: 0.1rem; min-width: 12rem; flex: 1 1 16rem; }
132
+ .scenario-name { font-weight: 600; font-size: 0.9rem; }
133
+ .scenario-lede { color: var(--muted); font-size: 0.78rem; font-weight: 400; }
134
+ .duration { color: var(--muted); margin-left: auto; font-variant-numeric: tabular-nums; }
135
+ .badge {
136
+ display: inline-block;
137
+ font-size: 0.66rem;
138
+ font-weight: 700;
139
+ text-transform: uppercase;
140
+ letter-spacing: 0.04em;
141
+ padding: 0.1rem 0.4rem;
142
+ border-radius: 999px;
143
+ border: 1px solid transparent;
144
+ }
145
+ .status-passed { color: var(--pass); border-color: color-mix(in srgb, var(--pass) 40%, transparent); }
146
+ .status-failed { color: var(--fail); border-color: color-mix(in srgb, var(--fail) 40%, transparent); }
147
+ .status-skipped { color: var(--skip); border-color: color-mix(in srgb, var(--skip) 40%, transparent); }
148
+ .scenario-body { padding: 0.7rem; }
149
+ .diagnostics { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.7rem; margin-bottom: 0.9rem; }
150
+ .diagnostics section { background: var(--panel-2); border: 1px solid var(--border); border-radius: 8px; padding: 0.65rem 0.7rem; min-width: 0; }
151
+ .conversation { min-width: 0; }
152
+
153
+ .story { margin-bottom: 0.85rem; }
154
+ .story-criteria { display: grid; gap: 0.55rem; }
155
+ .story-criteria > h3 { margin: 0; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; color: var(--muted); }
156
+ .story-section { display: grid; gap: 0.3rem; }
157
+ .story-section + .story-section { padding-block-start: 0.55rem; border-block-start: 1px solid var(--border); }
158
+ .story-section h4 { margin: 0; font-size: 0.84rem; color: var(--text); }
159
+ .story-section-description { margin: 0 0 0.4rem; color: var(--muted); font-size: 0.82rem; }
160
+ .story-list, .story-checks, .story-notes { margin: 0; padding-left: 1.1rem; display: flex; flex-direction: column; gap: 0.25rem; color: var(--text); }
161
+ .story-checks { list-style: none; padding-left: 0; }
162
+ .story-check { display: flex; gap: 0.4rem; }
163
+ .story-check-icon { width: 1rem; flex: none; font-weight: 700; }
164
+ .story-check-pass .story-check-icon { color: var(--pass); }
165
+ .story-check-fail .story-check-icon { color: var(--fail); }
166
+ .story-notes { color: var(--muted); }
167
+ .failures { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.55rem; }
168
+ .failures li { border-left: 3px solid var(--fail); padding-left: 0.6rem; }
169
+ .failure-label { margin: 0; font-weight: 600; font-size: 0.85rem; color: var(--fail); }
170
+ .failure-hint { margin: 0.1rem 0 0; font-size: 0.78rem; color: var(--muted); }
171
+ .failure-message { margin: 0.3rem 0 0; font-size: 0.82rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; word-break: break-word; background: #0b1017; border: 1px solid var(--border); border-radius: 6px; padding: 0.45rem 0.55rem; }
172
+ .failure-evidence { margin: 0.35rem 0 0; font-size: 0.75rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; word-break: break-word; color: var(--muted); background: #0b1017; border: 1px dashed var(--border); border-radius: 6px; padding: 0.4rem 0.5rem; }
173
+
174
+ .verdicts { display: flex; flex-direction: column; gap: 0.55rem; }
175
+ .verdict { border-left: 3px solid var(--border); padding-left: 0.6rem; }
176
+ .verdict-pass { border-left-color: var(--pass); }
177
+ .verdict-fail { border-left-color: var(--fail); }
178
+ .verdict-icon { display: inline-block; width: 1.1rem; font-weight: 700; }
179
+ .verdict-pass .verdict-icon { color: var(--pass); }
180
+ .verdict-fail .verdict-icon { color: var(--fail); }
181
+ .question { margin: 0; font-size: 0.85rem; font-weight: 600; }
182
+ .rationale { margin: 0.3rem 0 0; font-size: 0.82rem; color: var(--muted); }
183
+ .judge-evidence { margin: 0.35rem 0 0; padding-inline-start: 1.1rem; color: var(--muted); font-size: 0.78rem; }
184
+ .judge-exchange { margin-block-start: 0.5rem; border: 1px solid var(--border); border-radius: 7px; overflow: hidden; }
185
+ .judge-exchange > summary { cursor: pointer; padding: 0.4rem 0.55rem; color: var(--muted); font-size: 0.75rem; font-weight: 650; }
186
+ .judge-exchange[open] > summary { border-block-end: 1px solid var(--border); background: var(--panel); }
187
+ .judge-chat { display: grid; gap: 0.55rem; padding: 0.55rem; }
188
+ .judge-turn { display: grid; gap: 0.25rem; min-width: 0; }
189
+ .judge-turn > span { color: var(--muted); font-size: 0.66rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; }
190
+ .judge-turn pre { max-height: 22rem; margin: 0; padding: 0.5rem; overflow: auto; border: 1px solid var(--border); border-radius: 6px; background: #0b1017; color: var(--text); font: 0.72rem/1.45 ui-monospace, SFMono-Regular, Menlo, monospace; white-space: pre-wrap; overflow-wrap: anywhere; }
191
+ .judge-response pre { border-inline-start: 3px solid var(--pass); }
192
+
193
+ .chat {
194
+ display: flex;
195
+ flex-direction: column;
196
+ gap: 0.75rem;
197
+ max-width: 46rem;
198
+ word-spacing: normal;
199
+ letter-spacing: normal;
200
+ }
201
+ .chat-row { display: flex; }
202
+ .chat-row.side-left { justify-content: flex-start; }
203
+ .chat-row.side-right { justify-content: flex-end; }
204
+ .chat-row.side-center { justify-content: center; }
205
+ .bubble {
206
+ max-width: min(40rem, 92%);
207
+ border-radius: 10px;
208
+ padding: 0.7rem 0.9rem;
209
+ border: 1px solid var(--border);
210
+ word-spacing: normal;
211
+ }
212
+ .bubble-label {
213
+ font-size: 0.68rem;
214
+ font-weight: 700;
215
+ text-transform: uppercase;
216
+ letter-spacing: 0.04em;
217
+ color: var(--muted);
218
+ margin-bottom: 0.35rem;
219
+ }
220
+ .bubble-text {
221
+ white-space: pre-wrap;
222
+ overflow-wrap: break-word;
223
+ word-break: normal;
224
+ font-size: 0.95rem;
225
+ line-height: 1.5;
226
+ }
227
+ .bubble.role-user { background: var(--user-bubble); border-top-right-radius: 3px; }
228
+ .bubble.role-assistant { background: var(--assistant-bubble); border-top-left-radius: 3px; }
229
+ .bubble.role-context {
230
+ background: color-mix(in srgb, var(--skip) 14%, var(--panel-2));
231
+ max-width: min(44rem, 94%);
232
+ }
233
+ .bubble.role-system, .bubble.role-tool { background: var(--system-bubble); font-size: 0.88rem; max-width: min(42rem, 94%); }
234
+
235
+ .tool-card {
236
+ display: flex;
237
+ flex-wrap: wrap;
238
+ align-items: baseline;
239
+ gap: 0.3rem 0.55rem;
240
+ width: fit-content;
241
+ max-width: min(40rem, 100%);
242
+ border-radius: 7px;
243
+ padding: 0.38rem 0.5rem;
244
+ border: 1px solid color-mix(in srgb, var(--tool) 35%, var(--border));
245
+ background: var(--tool-bubble);
246
+ word-spacing: normal;
247
+ }
248
+ .tool-card-head {
249
+ display: flex;
250
+ align-items: center;
251
+ gap: 0.4rem;
252
+ font-size: 0.74rem;
253
+ font-weight: 700;
254
+ color: var(--tool);
255
+ }
256
+ .tool-icon { display: none; }
257
+ .tool-name { font-weight: 700; }
258
+ .tool-args {
259
+ margin-top: 0;
260
+ display: grid;
261
+ gap: 0.22rem;
262
+ padding-top: 0;
263
+ border-top: 0;
264
+ }
265
+ .tool-arg {
266
+ display: grid;
267
+ grid-template-columns: max-content minmax(0, 1fr);
268
+ gap: 0.3rem 0.45rem;
269
+ align-items: start;
270
+ font-size: 0.72rem;
271
+ }
272
+ .tool-arg-key { color: var(--muted); padding-top: 0.2rem; }
273
+ .tool-arg code {
274
+ display: block;
275
+ color: var(--text);
276
+ background: #0b1017;
277
+ border-radius: 6px;
278
+ padding: 0.18rem 0.35rem;
279
+ overflow-wrap: anywhere;
280
+ word-break: break-word;
281
+ white-space: pre-wrap;
282
+ line-height: 1.3;
283
+ }
284
+
285
+ .shell-commands { margin: 0; padding-left: 0; list-style: none; display: flex; flex-direction: column; gap: 0.3rem; }
286
+ .shell-commands li { font-size: 0.8rem; background: #0b1017; border: 1px solid var(--border); border-radius: 6px; padding: 0.3rem 0.5rem; }
287
+ code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85em; }
288
+ .trace-details { margin-top: 0.75rem; border: 1px solid var(--border); border-radius: 8px; overflow: hidden; }
289
+ .trace-details summary { cursor: pointer; display: flex; justify-content: space-between; gap: 0.75rem; padding: 0.55rem 0.7rem; font-size: 0.82rem; font-weight: 650; }
290
+ .trace-details summary span { color: var(--muted); font-weight: 400; font-variant-numeric: tabular-nums; }
291
+ .trace-details[open] summary { border-bottom: 1px solid var(--border); background: var(--panel-2); }
292
+ .trace-details > .chat, .trace-details > h4, .trace-details > .shell-commands, .trace-details > .empty { margin-inline: 0.7rem; }
293
+ .trace-details > .chat { margin-block: 0.7rem; }
294
+ .trace-details > .shell-commands { margin-bottom: 0.7rem; }
295
+
296
+ .compare-layout {
297
+ container-type: inline-size;
298
+ display: grid;
299
+ gap: 0.9rem;
300
+ }
301
+ .compare-tablist {
302
+ display: flex;
303
+ flex-wrap: wrap;
304
+ gap: 0.35rem;
305
+ }
306
+ .compare-tab-input {
307
+ position: absolute;
308
+ width: 1px;
309
+ height: 1px;
310
+ padding: 0;
311
+ margin: -1px;
312
+ overflow: hidden;
313
+ clip: rect(0, 0, 0, 0);
314
+ white-space: nowrap;
315
+ border: 0;
316
+ }
317
+ .compare-tab {
318
+ font: inherit;
319
+ border-radius: 8px;
320
+ border: 1px solid var(--border);
321
+ background: var(--panel-2);
322
+ color: var(--text);
323
+ padding: 0.35rem 0.65rem;
324
+ cursor: pointer;
325
+ }
326
+ .compare-tab-input:checked + .compare-tab,
327
+ .compare-tab[aria-selected="true"] {
328
+ background: color-mix(in srgb, var(--pass) 16%, var(--panel-2));
329
+ border-color: color-mix(in srgb, var(--pass) 40%, var(--border));
330
+ }
331
+ .compare-tabs .compare-arms,
332
+ .compare-tabs .compare-arms[data-arm-count] {
333
+ grid-template-columns: minmax(0, 1fr);
334
+ }
335
+ .compare-tabs .compare-arm { display: none; }
336
+ .compare-arms {
337
+ display: grid;
338
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
339
+ gap: 0.85rem;
340
+ align-items: stretch;
341
+ }
342
+ .compare-arms[data-arm-count="3"],
343
+ .compare-arms[data-arm-count="4"] {
344
+ grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
345
+ }
346
+ .compare-arm {
347
+ min-width: 0;
348
+ display: grid;
349
+ align-content: start;
350
+ gap: 0.65rem;
351
+ background: var(--panel-2);
352
+ border: 1px solid var(--border);
353
+ border-radius: 10px;
354
+ padding: 0.75rem 0.8rem 0.85rem;
355
+ border-block-start-width: 3px;
356
+ border-block-start-color: var(--arm-accent, var(--arm-a));
357
+ }
358
+ .compare-arm-a { border-block-start-color: var(--arm-a); }
359
+ .compare-arm-b { border-block-start-color: var(--arm-b); }
360
+ .compare-arm-header { display: grid; gap: 0.15rem; padding-bottom: 0.55rem; border-bottom: 1px solid var(--border); }
361
+ .compare-arm-kicker {
362
+ color: var(--muted);
363
+ font-size: 0.66rem;
364
+ font-weight: 700;
365
+ letter-spacing: 0.06em;
366
+ text-transform: uppercase;
367
+ }
368
+ .compare-arm .compare-arm-kicker { color: var(--arm-accent, var(--muted)); }
369
+ .compare-arm-a .compare-arm-kicker { color: var(--arm-a); }
370
+ .compare-arm-b .compare-arm-kicker { color: var(--arm-b); }
371
+ .compare-arm-header h3 { color: var(--text); font-size: 0.95rem; }
372
+ .compare-arm-description { color: var(--muted); font-size: 0.8rem; }
373
+ .compare-arm-metrics { color: var(--muted); font-size: 0.78rem; font-variant-numeric: tabular-nums; }
374
+ .compare-arm .bubble, .compare-arm .tool-card { max-width: 100%; }
375
+
376
+ .compare {
377
+ margin-top: 0;
378
+ background: var(--panel);
379
+ border: 1px solid var(--border);
380
+ border-radius: 10px;
381
+ padding: 0.85rem 0.9rem 1rem;
382
+ }
383
+ .compare-header { margin-bottom: 0.65rem; }
384
+ .compare-header h3, .compare-header h4 { margin-bottom: 0.2rem; }
385
+ .story-criteria > .comparison-metrics { margin-top: 0.85rem; padding: 0.8rem 0 0; background: transparent; border: 0; border-top: 1px solid var(--border); border-radius: 0; }
386
+ .compare-winners { margin: 0 0 0.75rem; }
387
+ .compare-winners h3 { margin-bottom: 0.35rem; }
388
+ .compare-winners ul {
389
+ margin: 0;
390
+ padding-left: 1.1rem;
391
+ display: grid;
392
+ gap: 0.25rem;
393
+ font-size: 0.85rem;
394
+ }
395
+ .compare-winner-pass { color: var(--pass); }
396
+ .compare-winner-fail { color: var(--fail); }
397
+ .compare-callouts {
398
+ margin: 0.5rem 0 0;
399
+ padding-left: 1.1rem;
400
+ display: grid;
401
+ gap: 0.25rem;
402
+ font-size: 0.85rem;
403
+ }
404
+ .compare-details { margin-top: 0.65rem; color: var(--muted); font-size: 0.78rem; }
405
+ .compare-table-wrap { overflow-x: auto; }
406
+ .compare-table {
407
+ width: 100%;
408
+ border-collapse: collapse;
409
+ font-size: 0.8rem;
410
+ font-variant-numeric: tabular-nums;
411
+ }
412
+ .compare-table th, .compare-table td {
413
+ border-bottom: 1px solid var(--border);
414
+ padding: 0.4rem 0.45rem;
415
+ text-align: left;
416
+ vertical-align: middle;
417
+ }
418
+ .compare-table th { color: var(--muted); font-weight: 600; font-size: 0.7rem; text-transform: uppercase; letter-spacing: 0.04em; }
419
+ .delta-up { color: var(--fail); }
420
+ .delta-down { color: var(--pass); }
421
+ .delta-flat { color: var(--muted); }
422
+ .compare-table td.is-better { color: var(--pass); font-weight: 650; background: color-mix(in srgb, var(--pass) 12%, transparent); }
423
+ .compare-table td.is-worse { color: var(--fail); font-weight: 650; background: color-mix(in srgb, var(--fail) 12%, transparent); }
424
+ .compare-table td.is-outcome-pass { color: var(--pass); font-weight: 650; }
425
+ .compare-table td.is-outcome-fail { color: var(--fail); font-weight: 650; background: color-mix(in srgb, var(--fail) 12%, transparent); }
426
+ .compare-table td.is-expected-failure { color: var(--muted); font-weight: 650; background: color-mix(in srgb, var(--muted) 9%, transparent); }
427
+ .is-better { color: var(--pass); font-weight: 650; }
428
+ .is-worse { color: var(--fail); font-weight: 650; }
429
+
430
+ @container (max-width: 44rem) {
431
+ .compare-arms { grid-template-columns: minmax(0, 1fr); }
432
+ }
433
+
434
+ @media (max-width: 720px) {
435
+ main { padding: 0.75rem; }
436
+ .suite-header { align-items: flex-start; flex-direction: column; gap: 0.2rem; }
437
+ .diagnostics { grid-template-columns: 1fr; }
438
+ .bubble, .tool-card { max-width: 92%; }
439
+ .compare-arms { grid-template-columns: minmax(0, 1fr); }
440
+ }
441
+ }
442
+ `;
443
+ }
444
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/viewer/styles.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwbP,CAAC;AACF,CAAC"}
@@ -4,5 +4,9 @@ export declare const MAX_WORKERS = 32;
4
4
  /** Parse `--workers` or `AGENT_TEST_WORKERS`. Range is 1-32. */
5
5
  export declare function parseWorkerCount(value: string, label?: string): number;
6
6
  /** Run items with a fixed number of workers. Extra items wait in the queue. */
7
- export declare function runWorkerPool<T>(items: readonly T[], workers: number, worker: (item: T) => Promise<void>, signal?: AbortSignal): Promise<void>;
7
+ export declare function runWorkerPool<T>(items: readonly T[], { workers, worker, signal, }: {
8
+ workers: number;
9
+ worker: (item: T) => Promise<void>;
10
+ signal?: AbortSignal;
11
+ }): Promise<void>;
8
12
  //# sourceMappingURL=worker-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,MAAM,CAM3E;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,EAClC,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf"}
1
+ {"version":3,"file":"worker-pool.d.ts","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,IAAI,CAAC;AACxC,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,gEAAgE;AAChE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,SAAc,GAAG,MAAM,CAM3E;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,CAAC,EACpC,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,EACC,OAAO,EACP,MAAM,EACN,MAAM,GACN,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GAC9E,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -10,7 +10,7 @@ export function parseWorkerCount(value, label = "--workers") {
10
10
  return parsed;
11
11
  }
12
12
  /** Run items with a fixed number of workers. Extra items wait in the queue. */
13
- export async function runWorkerPool(items, workers, worker, signal) {
13
+ export async function runWorkerPool(items, { workers, worker, signal, }) {
14
14
  const queue = [...items];
15
15
  const workerCount = Math.max(1, Math.min(workers, Math.max(items.length, 1)));
16
16
  await Promise.all(Array.from({ length: workerCount }, async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAK,GAAG,WAAW;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,KAAmB,EACnB,OAAe,EACf,MAAkC,EAClC,MAAoB;IAEpB,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC9C,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"worker-pool.js","sourceRoot":"","sources":["../src/worker-pool.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AACxC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAE9B,gEAAgE;AAChE,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,KAAK,GAAG,WAAW;IAClE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,WAAW,EAAE,CAAC;QACrE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,yBAAyB,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,aAAa,CAClC,KAAmB,EACnB,EACC,OAAO,EACP,MAAM,EACN,MAAM,GACyE;IAEhF,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACzB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,OAAO,CAAC,GAAG,CAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,KAAK,IAAI,EAAE;QAC9C,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACxB,OAAO;YACR,CAAC;YACD,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACF,CAAC,CAAC,CACF,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@post-print/agent-test",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "agent-test": "./dist/cli.js"
@@ -21,25 +21,25 @@
21
21
  "lint:viewer": "bunx biome check src/viewer --error-on-warnings",
22
22
  "lint:fix": "bunx biome check . --write",
23
23
  "test": "bun test src",
24
- "test:sandbox-safe": "bun test src --path-ignore-patterns '**/{scenario-seed,validate-seeds,cursor-login-check}.test.ts'",
24
+ "test:sandbox-safe": "bun test src",
25
25
  "test:coverage": "bun test src --coverage --coverage-reporter=text --coverage-reporter=lcov",
26
26
  "test:e2e": "playwright test",
27
27
  "clean": "rm -rf dist tsconfig.tsbuildinfo"
28
28
  },
29
29
  "dependencies": {
30
- "@post-print/agent-harness": "1.1.8",
31
- "chalk": "6",
30
+ "@playwright/test": "^1.63.0",
31
+ "@post-print/agent-harness": "2.0.0",
32
32
  "react": "^19.0.0",
33
- "react-dom": "^19.0.0"
33
+ "react-dom": "^19.0.0",
34
+ "zod": "^3.25.76"
34
35
  },
35
36
  "devDependencies": {
36
- "@playwright/test": "^1.63.0",
37
37
  "@types/node": "^26.1.1",
38
38
  "@types/react": "^19.0.0",
39
39
  "@types/react-dom": "^19.0.0",
40
40
  "typescript": "~7.0.2"
41
41
  },
42
- "description": "Direct-agent scenario runner and CLI for agent-spec suites",
42
+ "description": "Playwright-based coding-agent tests, comparisons, explicit judges, and viewer",
43
43
  "repository": {
44
44
  "type": "git",
45
45
  "url": "https://github.com/post-print/agent-spec.git",
package/dist/check.d.ts DELETED
@@ -1,38 +0,0 @@
1
- import { type AgentHost } from "@post-print/agent-harness";
2
- export interface CheckOptions {
3
- cwd: string;
4
- suitesDir: string;
5
- filter?: string;
6
- rubricsDir?: string;
7
- /** CLI host override. Wins over suite defaults when set. */
8
- host?: AgentHost;
9
- /** CLI host matrix. Wins over `host` when more than one name is listed. */
10
- hosts?: readonly AgentHost[];
11
- cliPath?: string;
12
- }
13
- export interface CheckReport {
14
- /** Package, suite, and seed checks passed. Host readiness is separate. */
15
- ok: boolean;
16
- packageOk: boolean;
17
- suiteOk: boolean;
18
- seedsOk: boolean;
19
- hostReady: boolean;
20
- hosts: AgentHost[];
21
- messages: string[];
22
- }
23
- /** Hosts a live run will launch after suite defaults and an optional CLI override. */
24
- export declare function collectSuiteHosts(options: {
25
- cwd: string;
26
- suitesDir: string;
27
- filter?: string;
28
- rubricsDir?: string;
29
- host?: AgentHost;
30
- hosts?: readonly AgentHost[];
31
- }): Promise<AgentHost[]>;
32
- /** Missing auth for every host this run will launch. Undefined when all hosts are ready. */
33
- export declare function missingHostsAuth(hosts: readonly AgentHost[]): string | undefined;
34
- /** Suite, seed, package, and host checks. Does not launch an agent. */
35
- export declare function runCheck(options: CheckOptions): Promise<CheckReport>;
36
- export declare function formatCheckReport(report: CheckReport): string;
37
- export declare function formatCheckSummary(report: CheckReport): string;
38
- //# sourceMappingURL=check.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,2BAA2B,CAAC;AAS7E,MAAM,WAAW,YAAY;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,2EAA2E;IAC3E,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,0EAA0E;IAC1E,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAoBD,sFAAsF;AACtF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;CAC7B,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAmDvB;AAED,4FAA4F;AAC5F,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,SAAS,EAAE,GAAG,MAAM,GAAG,SAAS,CAMhF;AAED,uEAAuE;AACvE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAsE1E;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE7D;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAO9D"}