@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
@@ -1,459 +0,0 @@
1
- import { buildCompareResult, describeCompareGate, describeCompareOutcome, } from "./compare-scenario.js";
2
- const PATH_ARG_KEYS = ["path", "file_path", "filePath", "target_file", "uri", "cwd"];
3
- const EXCERPT_CHARS = 80;
4
- export function quoteExcerpt(text) {
5
- const compact = text.trim().replace(/\s+/g, " ");
6
- if (!compact) {
7
- return '""';
8
- }
9
- if (compact.length <= EXCERPT_CHARS) {
10
- return `"${compact}"`;
11
- }
12
- return `"${compact.slice(0, EXCERPT_CHARS - 1)}…"`;
13
- }
14
- /** Short workspace path for chat cards and story lines. */
15
- export function displayToolPath(path) {
16
- const stripped = path.replace(/^file:\/\//, "").replace(/\/+$/, "");
17
- const workspace = stripped.match(/\/agent-harness-seal-[^/]+(?:\/(.*))?$/);
18
- if (workspace) {
19
- return workspace[1] ? workspace[1] : ".";
20
- }
21
- const sealed = stripped.match(/\/(?:\.agents|\.claude|\.codex|AGENTS\.md|CLAUDE\.md)(?:\/|$)/);
22
- if (sealed?.index !== undefined) {
23
- return stripped.slice(sealed.index + 1);
24
- }
25
- const parts = stripped.split("/").filter(Boolean);
26
- if (parts.length > 3) {
27
- return `…/${parts.slice(-3).join("/")}`;
28
- }
29
- return stripped;
30
- }
31
- export function pathFromArgs(args) {
32
- if (!args) {
33
- return undefined;
34
- }
35
- for (const key of PATH_ARG_KEYS) {
36
- const value = args[key];
37
- if (typeof value === "string" && value.trim()) {
38
- return displayToolPath(value);
39
- }
40
- }
41
- return undefined;
42
- }
43
- function countLabel(count, singular, plural) {
44
- return count === 1 ? `1 ${singular}` : `${count} ${plural}`;
45
- }
46
- function compareHeading(labels) {
47
- if (labels.length === 2 && labels[0] && labels[1]) {
48
- return `compare ${labels[0]} vs ${labels[1]}`;
49
- }
50
- if (labels.length <= 1) {
51
- return labels[0] ? `compare ${labels[0]}` : "compare arms";
52
- }
53
- const last = labels[labels.length - 1];
54
- return `compare ${labels.slice(0, -1).join(", ")}, and ${last}`;
55
- }
56
- function normalizeStoryCompare(compare) {
57
- if (compare.arms && compare.arms.length > 0) {
58
- return {
59
- arms: compare.arms,
60
- gates: compare.gates,
61
- aLabel: compare.aLabel ?? compare.arms[0]?.label ?? "control",
62
- bLabel: compare.bLabel ?? compare.arms[1]?.label ?? "experimental",
63
- aDescription: compare.aDescription ?? compare.arms[0]?.description,
64
- bDescription: compare.bDescription ?? compare.arms[1]?.description,
65
- aRubric: compare.aRubric ?? compare.arms[0]?.rubric,
66
- bRubric: compare.bRubric ?? compare.arms[1]?.rubric,
67
- };
68
- }
69
- const aLabel = compare.aLabel ?? "control";
70
- const bLabel = compare.bLabel ?? "experimental";
71
- const arms = [
72
- {
73
- id: "a",
74
- label: aLabel,
75
- description: compare.aDescription,
76
- rubric: compare.aRubric,
77
- trace: compare.aTrace,
78
- durationMs: compare.aDurationMs,
79
- },
80
- {
81
- id: "b",
82
- label: bLabel,
83
- description: compare.bDescription,
84
- rubric: compare.bRubric,
85
- trace: compare.bTrace,
86
- durationMs: compare.bDurationMs,
87
- },
88
- ];
89
- return {
90
- arms,
91
- gates: compare.gates,
92
- aLabel,
93
- bLabel,
94
- aDescription: compare.aDescription,
95
- bDescription: compare.bDescription,
96
- aRubric: compare.aRubric,
97
- bRubric: compare.bRubric,
98
- };
99
- }
100
- function rubricCheckSpecs(rubric) {
101
- if (!rubric) {
102
- return [];
103
- }
104
- const specs = [];
105
- for (const text of rubric.must ?? []) {
106
- specs.push({
107
- text: `reply includes ${quoteExcerpt(text)}`,
108
- matcher: "mustInclude",
109
- needle: text,
110
- });
111
- }
112
- for (const text of rubric.mustNot ?? []) {
113
- specs.push({
114
- text: `reply omits ${quoteExcerpt(text)}`,
115
- matcher: "mustNotInclude",
116
- needle: text,
117
- });
118
- }
119
- for (const command of rubric.mustRun ?? []) {
120
- specs.push({
121
- text: `run a command matching ${quoteExcerpt(command)}`,
122
- matcher: "toHaveRunCommand",
123
- needle: command,
124
- });
125
- }
126
- for (const command of rubric.mustRunSuccessfully ?? []) {
127
- specs.push({
128
- text: `run ${quoteExcerpt(command)} successfully`,
129
- matcher: "toHaveRunCommandSuccessfully",
130
- needle: command,
131
- });
132
- }
133
- if (rubric.allowedCommands !== undefined) {
134
- specs.push({
135
- text: "shell commands stay on the allowlist",
136
- matcher: "toHaveAllowedCommands",
137
- needle: "allowlist",
138
- });
139
- }
140
- for (const tool of rubric.mustCallTool ?? []) {
141
- specs.push({ text: `call ${tool}`, matcher: "toHaveCalledTool", needle: tool });
142
- }
143
- for (const tool of rubric.mustCallToolsInOrder ?? []) {
144
- specs.push({
145
- text: `call ${tool} in order`,
146
- matcher: "toHaveCalledToolsInOrder",
147
- needle: tool,
148
- });
149
- }
150
- for (const tool of rubric.mustNotCallTool ?? []) {
151
- specs.push({ text: `no ${tool} call`, matcher: "toHaveNotCalledTool", needle: tool });
152
- }
153
- for (const path of rubric.mustReadPath ?? []) {
154
- specs.push({ text: `read ${path}`, matcher: "toHaveReadPath", needle: path });
155
- }
156
- for (const path of rubric.mustNotReadPath ?? []) {
157
- specs.push({ text: `no read of ${path}`, matcher: "toHaveNotReadPath", needle: path });
158
- }
159
- for (const skill of rubric.mustInvokeSkill ?? []) {
160
- specs.push({
161
- text: `invoke skill ${skill}`,
162
- matcher: "toHaveInvokedSkill",
163
- needle: skill,
164
- });
165
- }
166
- for (const skill of rubric.mustNotInvokeSkill ?? []) {
167
- specs.push({
168
- text: `no ${skill} skill`,
169
- matcher: "toHaveNotInvokedSkill",
170
- needle: skill,
171
- });
172
- }
173
- if (rubric.routingBlock) {
174
- specs.push({
175
- text: "announce a routing block",
176
- matcher: "toIncludeRoutingBlock",
177
- needle: "Routing",
178
- });
179
- }
180
- if (rubric.tier) {
181
- specs.push({
182
- text: `announce tier ${rubric.tier}`,
183
- matcher: "toHaveTier",
184
- needle: rubric.tier,
185
- });
186
- }
187
- if (rubric.reviewDepth) {
188
- specs.push({
189
- text: `announce review depth ${rubric.reviewDepth}`,
190
- matcher: "toHaveReviewDepth",
191
- needle: rubric.reviewDepth,
192
- });
193
- }
194
- return specs;
195
- }
196
- function matcherMatches(actual, expected) {
197
- if (actual === expected) {
198
- return true;
199
- }
200
- if (expected === "toIncludeRoutingBlock") {
201
- return actual.includes("Routing") || actual.includes("routing");
202
- }
203
- if (expected === "toHaveTier") {
204
- return actual === "toHaveHandsOnTier" || actual === "toHaveHandsOnTierBeforeTools";
205
- }
206
- return false;
207
- }
208
- function specFailed(failures, spec, armLabel) {
209
- return failures.some((failure) => {
210
- if (armLabel && !failure.message.startsWith(`${armLabel}: `)) {
211
- return false;
212
- }
213
- if (!matcherMatches(failure.matcher, spec.matcher)) {
214
- return false;
215
- }
216
- const message = armLabel ? failure.message.slice(armLabel.length + 2) : failure.message;
217
- return message.includes(spec.needle);
218
- });
219
- }
220
- function scoreSpecs(specs, failures, armLabel) {
221
- return specs.map((spec) => ({
222
- text: spec.text,
223
- status: specFailed(failures, spec, armLabel) ? "fail" : "pass",
224
- }));
225
- }
226
- function judgeChecks(rubric, failures, judgeVerdicts, armCount) {
227
- if (!rubric?.judge || rubric.judge.length === 0) {
228
- return [];
229
- }
230
- if (judgeVerdicts && judgeVerdicts.length > 0) {
231
- return judgeVerdicts.map((verdict) => ({
232
- text: verdict.question.trim() || `judge ${verdict.id}`,
233
- status: verdict.pass ? "pass" : "fail",
234
- }));
235
- }
236
- const failed = failures.some((failure) => failure.matcher === "judge" || failure.matcher.startsWith("judge:"));
237
- const scope = armCount === undefined ? "" : ` on ${armCount === 2 ? "both arms" : "every arm"}`;
238
- return [
239
- {
240
- text: `judge answers ${countLabel(rubric.judge.length, "question", "questions")}${scope}`,
241
- status: failed ? "fail" : "pass",
242
- },
243
- ];
244
- }
245
- function buildCompareMetricSection(compare, failures, judge) {
246
- const result = buildCompareResult(compare.arms.map((arm) => ({
247
- id: arm.id,
248
- label: arm.label,
249
- prompt: "",
250
- trace: arm.trace,
251
- durationMs: arm.durationMs,
252
- passed: arm.passed,
253
- judgeVerdicts: arm.judgeVerdicts,
254
- })), compare.gates);
255
- const outcomes = describeCompareOutcome(result);
256
- const labels = new Map(compare.arms.map((arm) => [arm.id, arm.label]));
257
- const checks = (compare.gates ?? []).map((gate) => ({
258
- text: describeCompareGate(gate, (id) => labels.get(id) ?? id),
259
- status: failures.some((failure) => failure.matcher === `compareGate:${gate.metric}`)
260
- ? "fail"
261
- : "pass",
262
- }));
263
- checks.push(...judge);
264
- const notes = outcomes;
265
- if (checks.length === 0 && notes.length === 0) {
266
- return undefined;
267
- }
268
- return { title: "compare", checks, notes };
269
- }
270
- function buildStorySections(options) {
271
- const compare = options.compare ? normalizeStoryCompare(options.compare) : undefined;
272
- if (!compare) {
273
- const checks = [
274
- ...scoreSpecs(rubricCheckSpecs(options.rubric), options.failures),
275
- ...judgeChecks(options.rubric, options.failures, options.judgeVerdicts),
276
- ];
277
- return [
278
- {
279
- checks: checks.length > 0 ? checks : [{ text: "no rubric checks", status: "info" }],
280
- notes: describeTraceHappened(options.trace),
281
- },
282
- ];
283
- }
284
- const sharedSpecs = rubricCheckSpecs(options.rubric);
285
- const sections = compare.arms.map((arm) => {
286
- const armFailures = arm.failures;
287
- return {
288
- title: arm.label,
289
- description: arm.description,
290
- checks: scoreSpecs([...sharedSpecs, ...rubricCheckSpecs(arm.rubric)], armFailures ?? options.failures, armFailures ? undefined : arm.label),
291
- notes: describeTraceHappened(arm.trace),
292
- };
293
- });
294
- const compareSection = buildCompareMetricSection(compare, options.failures, judgeChecks(options.rubric, options.failures, options.judgeVerdicts, compare.arms.length));
295
- if (compareSection) {
296
- sections.push(compareSection);
297
- }
298
- return sections;
299
- }
300
- /** Rubric checks in one short line each. */
301
- export function describeRubricChecks(rubric, compare) {
302
- if (!rubric) {
303
- return ["no rubric recorded"];
304
- }
305
- const lines = rubricCheckSpecs(rubric).map((spec) => spec.text);
306
- if (compare) {
307
- const normalized = normalizeStoryCompare(compare);
308
- lines.push(compareHeading(normalized.arms.map((arm) => arm.label)));
309
- for (const arm of normalized.arms) {
310
- if (arm.description) {
311
- lines.push(`${arm.label}: ${arm.description}`);
312
- }
313
- }
314
- const labels = new Map(normalized.arms.map((arm) => [arm.id, arm.label]));
315
- for (const gate of normalized.gates ?? []) {
316
- lines.push(describeCompareGate(gate, (id) => labels.get(id) ?? id));
317
- }
318
- for (const arm of normalized.arms) {
319
- for (const spec of rubricCheckSpecs(arm.rubric)) {
320
- lines.push(`${arm.label}: ${spec.text}`);
321
- }
322
- }
323
- }
324
- if (rubric.judge && rubric.judge.length > 0) {
325
- lines.push(compare
326
- ? `judge answers ${countLabel(rubric.judge.length, "question", "questions")} on ${normalizeStoryCompare(compare).arms.length === 2 ? "both arms" : "every arm"}`
327
- : `judge answers ${countLabel(rubric.judge.length, "question", "questions")}`);
328
- }
329
- return lines.length > 0 ? lines : ["no rubric checks"];
330
- }
331
- /** What the agent said and which tools it used. */
332
- export function describeTraceHappened(trace) {
333
- if (!trace) {
334
- return ["no transcript"];
335
- }
336
- const lines = [];
337
- const assistant = [...trace.messages]
338
- .reverse()
339
- .find((message) => message.role === "assistant" && message.content.trim());
340
- if (assistant) {
341
- lines.push(`agent replied ${quoteExcerpt(assistant.content)}`);
342
- }
343
- if (trace.toolCalls.length === 0) {
344
- lines.push(assistant ? "no tools" : "no agent reply");
345
- return lines;
346
- }
347
- const shown = trace.toolCalls.slice(0, 6);
348
- for (const call of shown) {
349
- const path = pathFromArgs(call.args);
350
- lines.push(path ? `${call.name} ${path}` : call.name);
351
- }
352
- const extra = trace.toolCalls.length - shown.length;
353
- if (extra > 0) {
354
- lines.push(`${extra} more tool calls`);
355
- }
356
- return lines;
357
- }
358
- function shortenPathsInText(text) {
359
- return text.replace(/(?:file:\/\/)?\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)*/g, (path) => displayToolPath(path));
360
- }
361
- function describeFailure(failure) {
362
- const message = shortenPathsInText(failure.message);
363
- if (failure.category === "worktree_leak") {
364
- return `worktree leak — ${message}`;
365
- }
366
- if (failure.category === "agent_runtime") {
367
- return `agent run failed — ${message}`;
368
- }
369
- if (failure.category === "judge_infra" || failure.category === "judge_parse") {
370
- return `judge failed — ${message}`;
371
- }
372
- if (failure.category === "recording_error") {
373
- return `recording failed — ${message}`;
374
- }
375
- return message;
376
- }
377
- /** Pass or fail in plain language. */
378
- export function describeOutcome(options) {
379
- if (options.skipped) {
380
- return ["skipped"];
381
- }
382
- if (options.passed) {
383
- const lines = ["all checks passed"];
384
- for (const verdict of options.judgeVerdicts ?? []) {
385
- if (verdict.rationale.trim()) {
386
- lines.push(`judge: ${verdict.rationale.trim()}`);
387
- }
388
- }
389
- return lines;
390
- }
391
- if (options.failures.length === 0) {
392
- return ["failed"];
393
- }
394
- return options.failures.map(describeFailure);
395
- }
396
- function failureIsScored(failure, rubric, compare) {
397
- if (failure.category === "worktree_leak" ||
398
- failure.category === "agent_runtime" ||
399
- failure.category === "judge_infra" ||
400
- failure.category === "judge_parse" ||
401
- failure.category === "recording_error") {
402
- return false;
403
- }
404
- if (failure.matcher === "judge" || failure.matcher.startsWith("judge:")) {
405
- return true;
406
- }
407
- if (compare) {
408
- for (const arm of compare.arms) {
409
- const specs = [...rubricCheckSpecs(rubric), ...rubricCheckSpecs(arm.rubric)];
410
- if (specs.some((spec) => specFailed([failure], spec, arm.label))) {
411
- return true;
412
- }
413
- }
414
- if (failure.matcher.startsWith("compareGate:"))
415
- return true;
416
- return false;
417
- }
418
- return rubricCheckSpecs(rubric).some((spec) => specFailed([failure], spec));
419
- }
420
- function leftoverFailures(failures, rubric, compare) {
421
- return failures.filter((failure) => !failureIsScored(failure, rubric, compare));
422
- }
423
- const REDUNDANT_VERDICT = new Set(["all checks passed", "skipped"]);
424
- function storyVerdict(happened, outcome) {
425
- return outcome.filter((line) => !REDUNDANT_VERDICT.has(line) && !happened.includes(line));
426
- }
427
- export function buildScenarioStory(options) {
428
- const compare = options.compare ? normalizeStoryCompare(options.compare) : undefined;
429
- const leftover = leftoverFailures(options.failures, options.rubric, compare);
430
- const outcome = !options.passed && leftover.length === 0 && options.failures.length > 0
431
- ? []
432
- : describeOutcome({
433
- ...options,
434
- failures: leftover.length === options.failures.length ? options.failures : leftover,
435
- });
436
- const result = options.skipped
437
- ? ["scenario skipped"]
438
- : compare
439
- ? [
440
- ...compare.arms.flatMap((arm) => describeTraceHappened(arm.trace).map((line) => `${arm.label}: ${line}`)),
441
- ...describeCompareOutcome(buildCompareResult(compare.arms.map((arm) => ({
442
- id: arm.id,
443
- label: arm.label,
444
- prompt: "",
445
- trace: arm.trace,
446
- durationMs: arm.durationMs,
447
- passed: arm.passed,
448
- judgeVerdicts: arm.judgeVerdicts,
449
- })), compare.gates)),
450
- ]
451
- : describeTraceHappened(options.trace);
452
- return {
453
- criteria: describeRubricChecks(options.rubric, options.compare),
454
- result,
455
- verdict: storyVerdict(result, outcome),
456
- sections: options.skipped ? undefined : buildStorySections(options),
457
- };
458
- }
459
- //# sourceMappingURL=scenario-story.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario-story.js","sourceRoot":"","sources":["../src/scenario-story.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,kBAAkB,EAGlB,mBAAmB,EACnB,sBAAsB,GACtB,MAAM,uBAAuB,CAAC;AAiB/B,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,CAAU,CAAC;AAC9F,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB,MAAM,UAAU,YAAY,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;QACrC,OAAO,IAAI,OAAO,GAAG,CAAC;IACvB,CAAC;IACD,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC3E,IAAI,SAAS,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAC/F,IAAI,MAAM,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAyC;IACrE,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAC/C,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACF,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,MAAc;IAClE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,MAAM,EAAE,CAAC;AAC7D,CAAC;AAgBD,SAAS,cAAc,CAAC,MAAgB;IACvC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,WAAW,MAAM,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC;IAC5D,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,WAAW,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,qBAAqB,CAAC,OAA0B;IACxD,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,OAAO;YACN,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,SAAS;YAC7D,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,cAAc;YAClE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW;YAClE,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW;YAClE,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;YACnD,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM;SACnD,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;IAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,cAAc,CAAC;IAChD,MAAM,IAAI,GAAsB;QAC/B;YACC,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,OAAO,CAAC,YAAY;YACjC,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,UAAU,EAAE,OAAO,CAAC,WAAW;SAC/B;QACD;YACC,EAAE,EAAE,GAAG;YACP,KAAK,EAAE,MAAM;YACb,WAAW,EAAE,OAAO,CAAC,YAAY;YACjC,MAAM,EAAE,OAAO,CAAC,OAAO;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,UAAU,EAAE,OAAO,CAAC,WAAW;SAC/B;KACD,CAAC;IACF,OAAO;QACN,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM;QACN,MAAM;QACN,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAuB;IAChD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAsB,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,kBAAkB,YAAY,CAAC,IAAI,CAAC,EAAE;YAC5C,OAAO,EAAE,aAAa;YACtB,MAAM,EAAE,IAAI;SACZ,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,eAAe,YAAY,CAAC,IAAI,CAAC,EAAE;YACzC,OAAO,EAAE,gBAAgB;YACzB,MAAM,EAAE,IAAI;SACZ,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,0BAA0B,YAAY,CAAC,OAAO,CAAC,EAAE;YACvD,OAAO,EAAE,kBAAkB;YAC3B,MAAM,EAAE,OAAO;SACf,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,mBAAmB,IAAI,EAAE,EAAE,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO,YAAY,CAAC,OAAO,CAAC,eAAe;YACjD,OAAO,EAAE,8BAA8B;YACvC,MAAM,EAAE,OAAO;SACf,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,sCAAsC;YAC5C,OAAO,EAAE,uBAAuB;YAChC,MAAM,EAAE,WAAW;SACnB,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,oBAAoB,IAAI,EAAE,EAAE,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ,IAAI,WAAW;YAC7B,OAAO,EAAE,0BAA0B;YACnC,MAAM,EAAE,IAAI;SACZ,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,OAAO,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,IAAI,EAAE,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,gBAAgB,KAAK,EAAE;YAC7B,OAAO,EAAE,oBAAoB;YAC7B,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,kBAAkB,IAAI,EAAE,EAAE,CAAC;QACrD,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,MAAM,KAAK,QAAQ;YACzB,OAAO,EAAE,uBAAuB;YAChC,MAAM,EAAE,KAAK;SACb,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,0BAA0B;YAChC,OAAO,EAAE,uBAAuB;YAChC,MAAM,EAAE,SAAS;SACjB,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,EAAE;YACpC,OAAO,EAAE,YAAY;YACrB,MAAM,EAAE,MAAM,CAAC,IAAI;SACnB,CAAC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,yBAAyB,MAAM,CAAC,WAAW,EAAE;YACnD,OAAO,EAAE,mBAAmB;YAC5B,MAAM,EAAE,MAAM,CAAC,WAAW;SAC1B,CAAC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,QAAgB;IACvD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,QAAQ,KAAK,uBAAuB,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IACD,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC/B,OAAO,MAAM,KAAK,mBAAmB,IAAI,MAAM,KAAK,8BAA8B,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAClB,QAA4B,EAC5B,IAAqB,EACrB,QAAiB;IAEjB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QAChC,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,QAAQ,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,KAAK,CAAC;QACd,CAAC;QACD,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACpD,OAAO,KAAK,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxF,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAClB,KAAwB,EACxB,QAA4B,EAC5B,QAAiB;IAEjB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;KAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW,CACnB,MAAkC,EAClC,QAA4B,EAC5B,aAA+C,EAC/C,QAAiB;IAEjB,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjD,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS,OAAO,CAAC,EAAE,EAAE;YACtD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;SACtC,CAAC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAChF,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAChG,OAAO;QACN;YACC,IAAI,EAAE,iBAAiB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,KAAK,EAAE;YACzF,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;SAChC;KACD,CAAC;AACH,CAAC;AAED,SAAS,yBAAyB,CACjC,OAA2B,EAC3B,QAA4B,EAC5B,KAAmB;IAEnB,MAAM,MAAM,GAAG,kBAAkB,CAChC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,aAAa,EAAE,GAAG,CAAC,aAAa;KAChC,CAAC,CAAC,EACH,OAAO,CAAC,KAAK,CACb,CAAC;IACF,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,MAAM,MAAM,GAAiB,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;QAC7D,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,KAAK,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC;YACnF,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,MAAM;KACT,CAAC,CAAC,CAAC;IACJ,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,QAAQ,CAAC;IACvB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CAAC,OAM3B;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,MAAM,GAAG;YACd,GAAG,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC;YACjE,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,CAAC;SACvE,CAAC;QACF,OAAO;YACN;gBACC,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACnF,KAAK,EAAE,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC;aAC3C;SACD,CAAC;IACH,CAAC;IACD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,QAAQ,GAAmB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACzD,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC;QACjC,OAAO;YACN,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,MAAM,EAAE,UAAU,CACjB,CAAC,GAAG,WAAW,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EACjD,WAAW,IAAI,OAAO,CAAC,QAAQ,EAC/B,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CACnC;YACD,KAAK,EAAE,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC;SACvC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,yBAAyB,CAC/C,OAAO,EACP,OAAO,CAAC,QAAQ,EAChB,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CACzF,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,4CAA4C;AAC5C,MAAM,UAAU,oBAAoB,CACnC,MAAuB,EACvB,OAA2B;IAE3B,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,IAAI,OAAO,EAAE,CAAC;QACb,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAChD,CAAC;QACF,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1E,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;YAC3C,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YACnC,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;QACF,CAAC;IACF,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CACT,OAAO;YACN,CAAC,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,EAAE;YAChK,CAAC,CAAC,iBAAiB,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,CAC9E,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;AACxD,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,KAAkB;IACvD,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,eAAe,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;SACnC,OAAO,EAAE;SACT,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5E,IAAI,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACtD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IACpD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,kBAAkB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,wDAAwD,EAAE,CAAC,IAAI,EAAE,EAAE,CACtF,eAAe,CAAC,IAAI,CAAC,CACrB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAyB;IACjD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,mBAAmB,OAAO,EAAE,CAAC;IACrC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,eAAe,EAAE,CAAC;QAC1C,OAAO,sBAAsB,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,IAAI,OAAO,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC9E,OAAO,kBAAkB,OAAO,EAAE,CAAC;IACpC,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,KAAK,iBAAiB,EAAE,CAAC;QAC5C,OAAO,sBAAsB,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,eAAe,CAAC,OAK/B;IACA,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,SAAS,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACpC,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,aAAa,IAAI,EAAE,EAAE,CAAC;YACnD,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,CAAC;QACF,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,eAAe,CACvB,OAAyB,EACzB,MAAkC,EAClC,OAAuC;IAEvC,IACC,OAAO,CAAC,QAAQ,KAAK,eAAe;QACpC,OAAO,CAAC,QAAQ,KAAK,eAAe;QACpC,OAAO,CAAC,QAAQ,KAAK,aAAa;QAClC,OAAO,CAAC,QAAQ,KAAK,aAAa;QAClC,OAAO,CAAC,QAAQ,KAAK,iBAAiB,EACrC,CAAC;QACF,OAAO,KAAK,CAAC;IACd,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,OAAO,IAAI,CAAC;IACb,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC,EAAE,GAAG,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7E,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAClE,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CACxB,QAA4B,EAC5B,MAAkC,EAClC,OAAuC;IAEvC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,CAAC;AAEpE,SAAS,YAAY,CAAC,QAAkB,EAAE,OAAiB;IAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAQlC;IACA,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7E,MAAM,OAAO,GACZ,CAAC,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACtE,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,eAAe,CAAC;YAChB,GAAG,OAAO;YACV,QAAQ,EAAE,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ;SACnF,CAAC,CAAC;IACN,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO;QAC7B,CAAC,CAAC,CAAC,kBAAkB,CAAC;QACtB,CAAC,CAAC,OAAO;YACR,CAAC,CAAC;gBACA,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC/B,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC,CACvE;gBACD,GAAG,sBAAsB,CACxB,kBAAkB,CACjB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC1B,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,UAAU,EAAE,GAAG,CAAC,UAAU;oBAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,aAAa,EAAE,GAAG,CAAC,aAAa;iBAChC,CAAC,CAAC,EACH,OAAO,CAAC,KAAK,CACb,CACD;aACD;YACF,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,OAAO;QACN,QAAQ,EAAE,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC;QAC/D,MAAM;QACN,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;QACtC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC;KACnE,CAAC;AACH,CAAC"}
@@ -1,15 +0,0 @@
1
- import { type AgentUsage, type ScenarioUsageBreakdown } from "@post-print/agent-harness";
2
- import type { JudgeVerdictResult } from "./types.js";
3
- export declare function judgeUsageFromVerdicts(verdicts?: JudgeVerdictResult[]): AgentUsage | undefined;
4
- export declare function buildScenarioResultUsage(options: {
5
- agentUsage?: AgentUsage;
6
- judgeVerdicts?: JudgeVerdictResult[];
7
- judgeUsage?: AgentUsage;
8
- }): {
9
- usage?: ScenarioUsageBreakdown;
10
- agentUsage?: AgentUsage;
11
- judgeUsage?: AgentUsage;
12
- };
13
- /** Flat total tokens for summaries and terminal output. */
14
- export declare function totalTokensFromScenarioUsage(usage?: ScenarioUsageBreakdown, fallback?: AgentUsage): number | undefined;
15
- //# sourceMappingURL=scenario-usage.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario-usage.d.ts","sourceRoot":"","sources":["../src/scenario-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,UAAU,EAGf,KAAK,sBAAsB,EAE3B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,sBAAsB,CAAC,QAAQ,CAAC,EAAE,kBAAkB,EAAE,GAAG,UAAU,GAAG,SAAS,CAE9F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IACjD,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACrC,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB,GAAG;IACH,KAAK,CAAC,EAAE,sBAAsB,CAAC;IAC/B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB,CAQA;AAED,2DAA2D;AAC3D,wBAAgB,4BAA4B,CAC3C,KAAK,CAAC,EAAE,sBAAsB,EAC9B,QAAQ,CAAC,EAAE,UAAU,GACnB,MAAM,GAAG,SAAS,CAEpB"}
@@ -1,18 +0,0 @@
1
- import { buildScenarioUsageBreakdown, resolvedTotalTokens, sumUsageParts, } from "@post-print/agent-harness";
2
- export function judgeUsageFromVerdicts(verdicts) {
3
- return sumUsageParts((verdicts ?? []).map((v) => v.usage));
4
- }
5
- export function buildScenarioResultUsage(options) {
6
- const agentUsage = options.agentUsage;
7
- const judgeUsage = options.judgeUsage ?? judgeUsageFromVerdicts(options.judgeVerdicts);
8
- const usage = buildScenarioUsageBreakdown(agentUsage, judgeUsage);
9
- if (!usage) {
10
- return {};
11
- }
12
- return { usage, agentUsage, judgeUsage };
13
- }
14
- /** Flat total tokens for summaries and terminal output. */
15
- export function totalTokensFromScenarioUsage(usage, fallback) {
16
- return resolvedTotalTokens(usage?.total) ?? resolvedTotalTokens(fallback);
17
- }
18
- //# sourceMappingURL=scenario-usage.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"scenario-usage.js","sourceRoot":"","sources":["../src/scenario-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,2BAA2B,EAC3B,mBAAmB,EAEnB,aAAa,GACb,MAAM,2BAA2B,CAAC;AAInC,MAAM,UAAU,sBAAsB,CAAC,QAA+B;IACrE,OAAO,aAAa,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,OAIxC;IAKA,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,sBAAsB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,2BAA2B,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAC1C,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,4BAA4B,CAC3C,KAA8B,EAC9B,QAAqB;IAErB,OAAO,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAC3E,CAAC"}
@@ -1,16 +0,0 @@
1
- import type { AssertionFailure, RunSummary, ScenarioResult, SuiteRunReport, UsageStats } from "./types.js";
2
- export type { RunSummary, UsageStats } from "./types.js";
3
- export type FailOnMode = "all" | "behavior" | "infra-only";
4
- /** Nearest-rank percentile (p in 0–100) over a sorted ascending array. */
5
- export declare function percentileNearestRank(sortedAsc: number[], p: number): number | undefined;
6
- export declare function summarizeUsage(results: ScenarioResult[]): UsageStats | undefined;
7
- export declare function summarizeFailures(failures: AssertionFailure[]): RunSummary;
8
- export declare function summarizeReports(reports: SuiteRunReport[]): RunSummary;
9
- export declare function summarizeReportResults(results: ScenarioResult[]): RunSummary;
10
- /** Whether a failed scenario should fail the process under the given fail-on mode. */
11
- export declare function shouldFailScenario(failures: AssertionFailure[], mode: FailOnMode): boolean;
12
- /** Compact token count for CLI and HTML (`78.2k`). */
13
- export declare function formatTokenCount(value: number): string;
14
- export declare function formatUsageStats(usage: UsageStats): string;
15
- export declare function formatRunSummary(summary: RunSummary): string;
16
- //# sourceMappingURL=suite-summary.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"suite-summary.d.ts","sourceRoot":"","sources":["../src/suite-summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAEhB,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,MAAM,YAAY,CAAC;AAMpB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,UAAU,GAAG,YAAY,CAAC;AAiB3D,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAOxF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,GAAG,SAAS,CAiDhF;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,GAAG,UAAU,CAyB1E;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAiBtE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,UAAU,CAc5E;AAED,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAS1F;AAYD,sDAAsD;AACtD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AAwCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAkB1D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAc5D"}