@xoxoai/checkmate 0.6.6 → 0.7.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 (382) hide show
  1. package/dist/checkmate.js +13375 -0
  2. package/package.json +14 -100
  3. package/plugin/.claude-plugin/plugin.json +10 -0
  4. package/plugin/bin/checkmate.ts +3 -0
  5. package/plugin/contracts/finding.schema.json +78 -0
  6. package/plugin/contracts/gap.schema.json +56 -0
  7. package/plugin/contracts/plan-candidate.schema.json +103 -0
  8. package/plugin/contracts/plan-delta.schema.json +63 -0
  9. package/plugin/contracts/plan-patch.schema.json +116 -0
  10. package/plugin/contracts/plan-request.schema.json +108 -0
  11. package/plugin/contracts/plan.schema.json +313 -0
  12. package/plugin/contracts/profile.schema.json +154 -0
  13. package/plugin/contracts/response.schema.json +25 -0
  14. package/plugin/contracts/result.schema.json +410 -0
  15. package/plugin/dist/checkmate.js +13012 -0
  16. package/plugin/package.json +4 -0
  17. package/plugin/references/browser.md +35 -0
  18. package/plugin/references/http.md +30 -0
  19. package/plugin/references/workflow.md +122 -0
  20. package/plugin/skills/execute/SKILL.md +92 -0
  21. package/plugin/skills/plan/SKILL.md +94 -0
  22. package/plugin/skills/report/SKILL.md +28 -0
  23. package/plugin/skills/revise/SKILL.md +43 -0
  24. package/plugin/skills/setup/SKILL.md +82 -0
  25. package/plugin/skills/status/SKILL.md +20 -0
  26. package/plugin/skills/ui/SKILL.md +26 -0
  27. package/plugin/src/actor.ts +21 -0
  28. package/plugin/src/cli.ts +1133 -0
  29. package/plugin/src/contracts.ts +342 -0
  30. package/plugin/src/index.ts +52 -0
  31. package/plugin/src/plans.ts +1028 -0
  32. package/plugin/src/render.ts +544 -0
  33. package/plugin/src/runs.ts +868 -0
  34. package/plugin/src/store.ts +384 -0
  35. package/plugin/src/targets.ts +205 -0
  36. package/plugin/src/types.ts +319 -0
  37. package/plugin/src/ui/assets/client.js +501 -0
  38. package/plugin/src/ui/assets/favicon.svg +1 -0
  39. package/plugin/src/ui/assets/fonts/inter-OFL.txt +93 -0
  40. package/plugin/src/ui/assets/fonts/inter.woff2 +0 -0
  41. package/plugin/src/ui/assets/fonts/jetbrains-mono-OFL.txt +93 -0
  42. package/plugin/src/ui/assets/fonts/jetbrains-mono.woff2 +0 -0
  43. package/plugin/src/ui/assets/fonts/space-grotesk-OFL.txt +93 -0
  44. package/plugin/src/ui/assets/fonts/space-grotesk.woff2 +0 -0
  45. package/plugin/src/ui/assets/style.css +1926 -0
  46. package/plugin/src/ui/edit.ts +305 -0
  47. package/plugin/src/ui/forms.ts +209 -0
  48. package/plugin/src/ui/html.ts +130 -0
  49. package/plugin/src/ui/layout.ts +198 -0
  50. package/plugin/src/ui/lists.ts +645 -0
  51. package/plugin/src/ui/plan.ts +577 -0
  52. package/plugin/src/ui/run.ts +489 -0
  53. package/plugin/src/ui/server.ts +684 -0
  54. package/plugin/src/validators.d.ts +13 -0
  55. package/plugin/src/validators.js +1 -0
  56. package/plugin/src/views.ts +839 -0
  57. package/LICENSE +0 -21
  58. package/README.md +0 -294
  59. package/bin/checkmate.js +0 -13
  60. package/dist/ai/client.d.ts +0 -64
  61. package/dist/ai/client.d.ts.map +0 -1
  62. package/dist/ai/client.js +0 -313
  63. package/dist/ai/client.js.map +0 -1
  64. package/dist/ai/message-handler.d.ts +0 -9
  65. package/dist/ai/message-handler.d.ts.map +0 -1
  66. package/dist/ai/message-handler.js +0 -50
  67. package/dist/ai/message-handler.js.map +0 -1
  68. package/dist/ai/message-history.d.ts +0 -17
  69. package/dist/ai/message-history.d.ts.map +0 -1
  70. package/dist/ai/message-history.js +0 -45
  71. package/dist/ai/message-history.js.map +0 -1
  72. package/dist/ai/prompts.d.ts +0 -4
  73. package/dist/ai/prompts.d.ts.map +0 -1
  74. package/dist/ai/prompts.js +0 -24
  75. package/dist/ai/prompts.js.map +0 -1
  76. package/dist/ai/rate-limit-policy.d.ts +0 -9
  77. package/dist/ai/rate-limit-policy.d.ts.map +0 -1
  78. package/dist/ai/rate-limit-policy.js +0 -34
  79. package/dist/ai/rate-limit-policy.js.map +0 -1
  80. package/dist/ai/tool-response-handler.d.ts +0 -16
  81. package/dist/ai/tool-response-handler.d.ts.map +0 -1
  82. package/dist/ai/tool-response-handler.js +0 -85
  83. package/dist/ai/tool-response-handler.js.map +0 -1
  84. package/dist/ai/turn-processor.d.ts +0 -34
  85. package/dist/ai/turn-processor.d.ts.map +0 -1
  86. package/dist/ai/turn-processor.js +0 -107
  87. package/dist/ai/turn-processor.js.map +0 -1
  88. package/dist/api/allocate-run-identity.d.ts +0 -8
  89. package/dist/api/allocate-run-identity.d.ts.map +0 -1
  90. package/dist/api/allocate-run-identity.js +0 -10
  91. package/dist/api/allocate-run-identity.js.map +0 -1
  92. package/dist/api/execute-prepared-run.d.ts +0 -22
  93. package/dist/api/execute-prepared-run.d.ts.map +0 -1
  94. package/dist/api/execute-prepared-run.js +0 -184
  95. package/dist/api/execute-prepared-run.js.map +0 -1
  96. package/dist/api/index.d.ts +0 -25
  97. package/dist/api/index.d.ts.map +0 -1
  98. package/dist/api/index.js +0 -69
  99. package/dist/api/index.js.map +0 -1
  100. package/dist/api/prepare-run.d.ts +0 -44
  101. package/dist/api/prepare-run.d.ts.map +0 -1
  102. package/dist/api/prepare-run.js +0 -261
  103. package/dist/api/prepare-run.js.map +0 -1
  104. package/dist/cli/diagnostic-relay.d.ts +0 -6
  105. package/dist/cli/diagnostic-relay.d.ts.map +0 -1
  106. package/dist/cli/diagnostic-relay.js +0 -6
  107. package/dist/cli/diagnostic-relay.js.map +0 -1
  108. package/dist/cli/main.d.ts +0 -21
  109. package/dist/cli/main.d.ts.map +0 -1
  110. package/dist/cli/main.js +0 -166
  111. package/dist/cli/main.js.map +0 -1
  112. package/dist/cli/protocol.d.ts +0 -57
  113. package/dist/cli/protocol.d.ts.map +0 -1
  114. package/dist/cli/protocol.js +0 -116
  115. package/dist/cli/protocol.js.map +0 -1
  116. package/dist/cli/reconcile-result.d.ts +0 -13
  117. package/dist/cli/reconcile-result.d.ts.map +0 -1
  118. package/dist/cli/reconcile-result.js +0 -300
  119. package/dist/cli/reconcile-result.js.map +0 -1
  120. package/dist/cli/run-parent.d.ts +0 -37
  121. package/dist/cli/run-parent.d.ts.map +0 -1
  122. package/dist/cli/run-parent.js +0 -491
  123. package/dist/cli/run-parent.js.map +0 -1
  124. package/dist/cli/signals.d.ts +0 -36
  125. package/dist/cli/signals.d.ts.map +0 -1
  126. package/dist/cli/signals.js +0 -85
  127. package/dist/cli/signals.js.map +0 -1
  128. package/dist/cli/static-commands.d.ts +0 -11
  129. package/dist/cli/static-commands.d.ts.map +0 -1
  130. package/dist/cli/static-commands.js +0 -83
  131. package/dist/cli/static-commands.js.map +0 -1
  132. package/dist/cli/worker-stream-guard.d.ts +0 -20
  133. package/dist/cli/worker-stream-guard.d.ts.map +0 -1
  134. package/dist/cli/worker-stream-guard.js +0 -41
  135. package/dist/cli/worker-stream-guard.js.map +0 -1
  136. package/dist/cli/worker.d.ts +0 -3
  137. package/dist/cli/worker.d.ts.map +0 -1
  138. package/dist/cli/worker.js +0 -111
  139. package/dist/cli/worker.js.map +0 -1
  140. package/dist/config/ingestion.d.ts +0 -58
  141. package/dist/config/ingestion.d.ts.map +0 -1
  142. package/dist/config/ingestion.js +0 -283
  143. package/dist/config/ingestion.js.map +0 -1
  144. package/dist/config/manifest.d.ts +0 -20
  145. package/dist/config/manifest.d.ts.map +0 -1
  146. package/dist/config/manifest.js +0 -91
  147. package/dist/config/manifest.js.map +0 -1
  148. package/dist/config/model-egress.d.ts +0 -10
  149. package/dist/config/model-egress.d.ts.map +0 -1
  150. package/dist/config/model-egress.js +0 -62
  151. package/dist/config/model-egress.js.map +0 -1
  152. package/dist/config/package-resolution.d.ts +0 -4
  153. package/dist/config/package-resolution.d.ts.map +0 -1
  154. package/dist/config/package-resolution.js +0 -24
  155. package/dist/config/package-resolution.js.map +0 -1
  156. package/dist/config/policy.d.ts +0 -44
  157. package/dist/config/policy.d.ts.map +0 -1
  158. package/dist/config/policy.js +0 -141
  159. package/dist/config/policy.js.map +0 -1
  160. package/dist/config/record.d.ts +0 -4
  161. package/dist/config/record.d.ts.map +0 -1
  162. package/dist/config/record.js +0 -10
  163. package/dist/config/record.js.map +0 -1
  164. package/dist/config/secrets.d.ts +0 -11
  165. package/dist/config/secrets.d.ts.map +0 -1
  166. package/dist/config/secrets.js +0 -42
  167. package/dist/config/secrets.js.map +0 -1
  168. package/dist/contracts/diagnostics.d.ts +0 -4
  169. package/dist/contracts/diagnostics.d.ts.map +0 -1
  170. package/dist/contracts/diagnostics.js +0 -31
  171. package/dist/contracts/diagnostics.js.map +0 -1
  172. package/dist/contracts/serialize.d.ts +0 -2
  173. package/dist/contracts/serialize.d.ts.map +0 -1
  174. package/dist/contracts/serialize.js +0 -90
  175. package/dist/contracts/serialize.js.map +0 -1
  176. package/dist/contracts/types.d.ts +0 -316
  177. package/dist/contracts/types.d.ts.map +0 -1
  178. package/dist/contracts/types.js +0 -74
  179. package/dist/contracts/types.js.map +0 -1
  180. package/dist/contracts/validator.d.ts +0 -8
  181. package/dist/contracts/validator.d.ts.map +0 -1
  182. package/dist/contracts/validator.js +0 -71
  183. package/dist/contracts/validator.js.map +0 -1
  184. package/dist/driver.d.ts +0 -97
  185. package/dist/driver.d.ts.map +0 -1
  186. package/dist/driver.js +0 -24
  187. package/dist/driver.js.map +0 -1
  188. package/dist/drivers/descriptor.d.ts +0 -15
  189. package/dist/drivers/descriptor.d.ts.map +0 -1
  190. package/dist/drivers/descriptor.js +0 -122
  191. package/dist/drivers/descriptor.js.map +0 -1
  192. package/dist/drivers/loader.d.ts +0 -18
  193. package/dist/drivers/loader.d.ts.map +0 -1
  194. package/dist/drivers/loader.js +0 -97
  195. package/dist/drivers/loader.js.map +0 -1
  196. package/dist/drivers/web/checkmate-driver.json +0 -47
  197. package/dist/drivers/web/index.d.ts +0 -6
  198. package/dist/drivers/web/index.d.ts.map +0 -1
  199. package/dist/drivers/web/index.js +0 -27
  200. package/dist/drivers/web/index.js.map +0 -1
  201. package/dist/drivers/web/session.d.ts +0 -25
  202. package/dist/drivers/web/session.d.ts.map +0 -1
  203. package/dist/drivers/web/session.js +0 -132
  204. package/dist/drivers/web/session.js.map +0 -1
  205. package/dist/drivers/web/tools/network-request-recorder.d.ts +0 -46
  206. package/dist/drivers/web/tools/network-request-recorder.d.ts.map +0 -1
  207. package/dist/drivers/web/tools/network-request-recorder.js +0 -164
  208. package/dist/drivers/web/tools/network-request-recorder.js.map +0 -1
  209. package/dist/drivers/web/tools/screenshot-service.d.ts +0 -10
  210. package/dist/drivers/web/tools/screenshot-service.d.ts.map +0 -1
  211. package/dist/drivers/web/tools/screenshot-service.js +0 -23
  212. package/dist/drivers/web/tools/screenshot-service.js.map +0 -1
  213. package/dist/drivers/web/tools/snapshot-filter/index.d.ts +0 -4
  214. package/dist/drivers/web/tools/snapshot-filter/index.d.ts.map +0 -1
  215. package/dist/drivers/web/tools/snapshot-filter/index.js +0 -4
  216. package/dist/drivers/web/tools/snapshot-filter/index.js.map +0 -1
  217. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts +0 -15
  218. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts.map +0 -1
  219. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js +0 -99
  220. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js.map +0 -1
  221. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts +0 -5
  222. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts.map +0 -1
  223. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js +0 -56
  224. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js.map +0 -1
  225. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts +0 -3
  226. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts.map +0 -1
  227. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js +0 -85
  228. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js.map +0 -1
  229. package/dist/drivers/web/tools/snapshot-service.d.ts +0 -31
  230. package/dist/drivers/web/tools/snapshot-service.d.ts.map +0 -1
  231. package/dist/drivers/web/tools/snapshot-service.js +0 -96
  232. package/dist/drivers/web/tools/snapshot-service.js.map +0 -1
  233. package/dist/drivers/web/tools/tool.d.ts +0 -76
  234. package/dist/drivers/web/tools/tool.d.ts.map +0 -1
  235. package/dist/drivers/web/tools/tool.js +0 -562
  236. package/dist/drivers/web/tools/tool.js.map +0 -1
  237. package/dist/drivers/web/tools/transient-state-tracker.d.ts +0 -26
  238. package/dist/drivers/web/tools/transient-state-tracker.d.ts.map +0 -1
  239. package/dist/drivers/web/tools/transient-state-tracker.js +0 -301
  240. package/dist/drivers/web/tools/transient-state-tracker.js.map +0 -1
  241. package/dist/drivers/web/tools/types.d.ts +0 -11
  242. package/dist/drivers/web/tools/types.d.ts.map +0 -1
  243. package/dist/drivers/web/tools/types.js +0 -2
  244. package/dist/drivers/web/tools/types.js.map +0 -1
  245. package/dist/evidence/atomic-file.d.ts +0 -23
  246. package/dist/evidence/atomic-file.d.ts.map +0 -1
  247. package/dist/evidence/atomic-file.js +0 -104
  248. package/dist/evidence/atomic-file.js.map +0 -1
  249. package/dist/evidence/layout.d.ts +0 -30
  250. package/dist/evidence/layout.d.ts.map +0 -1
  251. package/dist/evidence/layout.js +0 -152
  252. package/dist/evidence/layout.js.map +0 -1
  253. package/dist/evidence/retention.d.ts +0 -5
  254. package/dist/evidence/retention.d.ts.map +0 -1
  255. package/dist/evidence/retention.js +0 -10
  256. package/dist/evidence/retention.js.map +0 -1
  257. package/dist/evidence/store.d.ts +0 -101
  258. package/dist/evidence/store.d.ts.map +0 -1
  259. package/dist/evidence/store.js +0 -375
  260. package/dist/evidence/store.js.map +0 -1
  261. package/dist/evidence/terminal-finalizer.d.ts +0 -19
  262. package/dist/evidence/terminal-finalizer.d.ts.map +0 -1
  263. package/dist/evidence/terminal-finalizer.js +0 -56
  264. package/dist/evidence/terminal-finalizer.js.map +0 -1
  265. package/dist/index.d.ts +0 -9
  266. package/dist/index.d.ts.map +0 -1
  267. package/dist/index.js +0 -12
  268. package/dist/index.js.map +0 -1
  269. package/dist/logging/invocation-logger.d.ts +0 -4
  270. package/dist/logging/invocation-logger.d.ts.map +0 -1
  271. package/dist/logging/invocation-logger.js +0 -25
  272. package/dist/logging/invocation-logger.js.map +0 -1
  273. package/dist/logging/level-logger.d.ts +0 -11
  274. package/dist/logging/level-logger.d.ts.map +0 -1
  275. package/dist/logging/level-logger.js +0 -82
  276. package/dist/logging/level-logger.js.map +0 -1
  277. package/dist/logging/types.d.ts +0 -8
  278. package/dist/logging/types.d.ts.map +0 -1
  279. package/dist/logging/types.js +0 -7
  280. package/dist/logging/types.js.map +0 -1
  281. package/dist/redaction/diagnostic-sanitizer.d.ts +0 -7
  282. package/dist/redaction/diagnostic-sanitizer.d.ts.map +0 -1
  283. package/dist/redaction/diagnostic-sanitizer.js +0 -42
  284. package/dist/redaction/diagnostic-sanitizer.js.map +0 -1
  285. package/dist/redaction/redactor.d.ts +0 -40
  286. package/dist/redaction/redactor.d.ts.map +0 -1
  287. package/dist/redaction/redactor.js +0 -176
  288. package/dist/redaction/redactor.js.map +0 -1
  289. package/dist/redaction/scrub.d.ts +0 -29
  290. package/dist/redaction/scrub.d.ts.map +0 -1
  291. package/dist/redaction/scrub.js +0 -54
  292. package/dist/redaction/scrub.js.map +0 -1
  293. package/dist/runtime/config.d.ts +0 -16
  294. package/dist/runtime/config.d.ts.map +0 -1
  295. package/dist/runtime/config.js +0 -2
  296. package/dist/runtime/config.js.map +0 -1
  297. package/dist/runtime/driver-boundary.d.ts +0 -16
  298. package/dist/runtime/driver-boundary.d.ts.map +0 -1
  299. package/dist/runtime/driver-boundary.js +0 -71
  300. package/dist/runtime/driver-boundary.js.map +0 -1
  301. package/dist/runtime/driver-session.d.ts +0 -9
  302. package/dist/runtime/driver-session.d.ts.map +0 -1
  303. package/dist/runtime/driver-session.js +0 -64
  304. package/dist/runtime/driver-session.js.map +0 -1
  305. package/dist/runtime/internal-step-evidence.d.ts +0 -30
  306. package/dist/runtime/internal-step-evidence.d.ts.map +0 -1
  307. package/dist/runtime/internal-step-evidence.js +0 -82
  308. package/dist/runtime/internal-step-evidence.js.map +0 -1
  309. package/dist/runtime/result-adapter.d.ts +0 -9
  310. package/dist/runtime/result-adapter.d.ts.map +0 -1
  311. package/dist/runtime/result-adapter.js +0 -77
  312. package/dist/runtime/result-adapter.js.map +0 -1
  313. package/dist/runtime/runner.d.ts +0 -43
  314. package/dist/runtime/runner.d.ts.map +0 -1
  315. package/dist/runtime/runner.js +0 -72
  316. package/dist/runtime/runner.js.map +0 -1
  317. package/dist/runtime/scenario-control.d.ts +0 -40
  318. package/dist/runtime/scenario-control.d.ts.map +0 -1
  319. package/dist/runtime/scenario-control.js +0 -94
  320. package/dist/runtime/scenario-control.js.map +0 -1
  321. package/dist/runtime/scenario-runner.d.ts +0 -41
  322. package/dist/runtime/scenario-runner.d.ts.map +0 -1
  323. package/dist/runtime/scenario-runner.js +0 -274
  324. package/dist/runtime/scenario-runner.js.map +0 -1
  325. package/dist/runtime/scenario-state.d.ts +0 -55
  326. package/dist/runtime/scenario-state.d.ts.map +0 -1
  327. package/dist/runtime/scenario-state.js +0 -128
  328. package/dist/runtime/scenario-state.js.map +0 -1
  329. package/dist/runtime/step-execution.d.ts +0 -27
  330. package/dist/runtime/step-execution.d.ts.map +0 -1
  331. package/dist/runtime/step-execution.js +0 -143
  332. package/dist/runtime/step-execution.js.map +0 -1
  333. package/dist/runtime/text.d.ts +0 -10
  334. package/dist/runtime/text.d.ts.map +0 -1
  335. package/dist/runtime/text.js +0 -25
  336. package/dist/runtime/text.js.map +0 -1
  337. package/dist/runtime/types.d.ts +0 -53
  338. package/dist/runtime/types.d.ts.map +0 -1
  339. package/dist/runtime/types.js +0 -2
  340. package/dist/runtime/types.js.map +0 -1
  341. package/dist/runtime/usage-tracker.d.ts +0 -37
  342. package/dist/runtime/usage-tracker.d.ts.map +0 -1
  343. package/dist/runtime/usage-tracker.js +0 -110
  344. package/dist/runtime/usage-tracker.js.map +0 -1
  345. package/dist/tools/define-agent-tool.d.ts +0 -20
  346. package/dist/tools/define-agent-tool.d.ts.map +0 -1
  347. package/dist/tools/define-agent-tool.js +0 -30
  348. package/dist/tools/define-agent-tool.js.map +0 -1
  349. package/dist/tools/dispatcher.d.ts +0 -19
  350. package/dist/tools/dispatcher.d.ts.map +0 -1
  351. package/dist/tools/dispatcher.js +0 -91
  352. package/dist/tools/dispatcher.js.map +0 -1
  353. package/dist/tools/loop-detector.d.ts +0 -27
  354. package/dist/tools/loop-detector.d.ts.map +0 -1
  355. package/dist/tools/loop-detector.js +0 -76
  356. package/dist/tools/loop-detector.js.map +0 -1
  357. package/dist/tools/registry.d.ts +0 -19
  358. package/dist/tools/registry.d.ts.map +0 -1
  359. package/dist/tools/registry.js +0 -54
  360. package/dist/tools/registry.js.map +0 -1
  361. package/dist/tools/step/result-tool.d.ts +0 -7
  362. package/dist/tools/step/result-tool.d.ts.map +0 -1
  363. package/dist/tools/step/result-tool.js +0 -34
  364. package/dist/tools/step/result-tool.js.map +0 -1
  365. package/dist/tools/tool-contract.d.ts +0 -3
  366. package/dist/tools/tool-contract.d.ts.map +0 -1
  367. package/dist/tools/tool-contract.js +0 -2
  368. package/dist/tools/tool-contract.js.map +0 -1
  369. package/dist/tools/types.d.ts +0 -210
  370. package/dist/tools/types.d.ts.map +0 -1
  371. package/dist/tools/types.js +0 -4
  372. package/dist/tools/types.js.map +0 -1
  373. package/docs/CLI.md +0 -59
  374. package/docs/CONFIGURATION.md +0 -105
  375. package/docs/DRIVERS.md +0 -79
  376. package/docs/EVIDENCE.md +0 -64
  377. package/schemas/checkmate-config.v1.json +0 -176
  378. package/schemas/describe-result.v1.json +0 -414
  379. package/schemas/driver-descriptor.v1.json +0 -66
  380. package/schemas/run-request.v1.json +0 -67
  381. package/schemas/run-result.v1.json +0 -333
  382. package/schemas/validation-result.v1.json +0 -86
@@ -1,116 +0,0 @@
1
- import { createHash } from 'node:crypto';
2
- import { Buffer } from 'node:buffer';
3
- import { serializeJson } from '../contracts/serialize.js';
4
- export const MAX_IPC_FRAME_BYTES = 1024 * 1024;
5
- export class IpcProtocolError extends Error {
6
- code;
7
- constructor(code, message) {
8
- super(message);
9
- this.code = code;
10
- this.name = 'IpcProtocolError';
11
- }
12
- }
13
- export function ipcFrameBytes(message) {
14
- return Buffer.byteLength(serializeJson(message), 'utf8');
15
- }
16
- export function assertIpcFrameSize(message) {
17
- if (ipcFrameBytes(message) > MAX_IPC_FRAME_BYTES) {
18
- throw new IpcProtocolError('ipc-frame-too-large', `IPC frame exceeds ${MAX_IPC_FRAME_BYTES} bytes`);
19
- }
20
- }
21
- export function sendIpcFrame(send, message) {
22
- assertIpcFrameSize(message);
23
- return send(message);
24
- }
25
- export function terminalDigest(bytes) {
26
- return {
27
- byteLength: Buffer.byteLength(bytes, 'utf8'),
28
- sha256: createHash('sha256').update(bytes, 'utf8').digest('hex'),
29
- };
30
- }
31
- export function digestMatches(bytes, digest) {
32
- const actual = terminalDigest(bytes);
33
- return actual.byteLength === digest.byteLength && actual.sha256 === digest.sha256;
34
- }
35
- export function parseParentMessage(message) {
36
- assertIpcFrameSize(message);
37
- if (!isRecord(message))
38
- throw invalidFrame();
39
- if (message.type === 'abort' && (message.signal === 'SIGINT' || message.signal === 'SIGTERM')) {
40
- return message;
41
- }
42
- if (message.type === 'start' && isRunIdentity(message.identity) && isRecord(message.prepared)) {
43
- return message;
44
- }
45
- throw invalidFrame();
46
- }
47
- export function parseWorkerMessage(message) {
48
- assertIpcFrameSize(message);
49
- if (!isRecord(message) || !isRunId(message.runId) || typeof message.type !== 'string')
50
- throw invalidFrame();
51
- if (message.type === 'cleanup-started')
52
- return message;
53
- if ((message.type === 'diagnostic' || message.type === 'fatal') && isDiagnostic(message.diagnostic)) {
54
- return message;
55
- }
56
- if (message.type === 'terminal-file' && message.committed === true && isDigest(message.digest)) {
57
- return message;
58
- }
59
- if (message.type === 'terminal-inline' && typeof message.resultJson === 'string') {
60
- if (message.committed === false)
61
- return message;
62
- if (message.committed === true && isDigest(message.digest))
63
- return message;
64
- }
65
- throw invalidFrame();
66
- }
67
- export function diagnosticFrame(runId, diagnostic) {
68
- const frame = { type: 'diagnostic', runId, diagnostic };
69
- try {
70
- assertIpcFrameSize(frame);
71
- return frame;
72
- }
73
- catch {
74
- return {
75
- type: 'diagnostic',
76
- runId,
77
- diagnostic: {
78
- code: 'diagnostic.frame-too-large',
79
- path: '',
80
- message: 'A worker diagnostic was omitted because its IPC frame exceeded the limit',
81
- },
82
- };
83
- }
84
- }
85
- function isRunIdentity(value) {
86
- return (isRecord(value) &&
87
- isRunId(value.runId) &&
88
- typeof value.startedAt === 'string' &&
89
- typeof value.runDirectory === 'string' &&
90
- typeof value.relativeRunDirectory === 'string');
91
- }
92
- function isDigest(value) {
93
- return (isRecord(value) &&
94
- Number.isSafeInteger(value.byteLength) &&
95
- value.byteLength >= 0 &&
96
- typeof value.sha256 === 'string' &&
97
- /^[0-9a-f]{64}$/.test(value.sha256));
98
- }
99
- function isDiagnostic(value) {
100
- return (isRecord(value) &&
101
- typeof value.code === 'string' &&
102
- value.code.length > 0 &&
103
- typeof value.path === 'string' &&
104
- typeof value.message === 'string' &&
105
- value.message.length > 0);
106
- }
107
- function isRunId(value) {
108
- return typeof value === 'string' && /^[0-9a-f]{16}$/.test(value);
109
- }
110
- function isRecord(value) {
111
- return value !== null && typeof value === 'object' && !Array.isArray(value);
112
- }
113
- function invalidFrame() {
114
- return new IpcProtocolError('ipc-invalid-frame', 'IPC frame does not match the Checkmate worker protocol');
115
- }
116
- //# sourceMappingURL=protocol.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/cli/protocol.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- import type { PreparedRun } from '../api/prepare-run.js';
2
- import type { ExecutionResultV1 } from '../contracts/types.js';
3
- import { type RunIdentity } from '../evidence/layout.js';
4
- export type ReconciledExecutionResult = Readonly<{
5
- result: ExecutionResultV1;
6
- bytes: string;
7
- }>;
8
- export declare class ResultReconciliationError extends Error {
9
- constructor(message: string);
10
- }
11
- export declare function reconcileExecutionResult(bytes: string, identity: RunIdentity, prepared: PreparedRun): Promise<ReconciledExecutionResult>;
12
- export declare function readAllocatedResult(identity: RunIdentity): Promise<string>;
13
- //# sourceMappingURL=reconcile-result.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-result.d.ts","sourceRoot":"","sources":["../../src/cli/reconcile-result.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,KAAK,EAGX,iBAAiB,EAIjB,MAAM,uBAAuB,CAAA;AAE9B,OAAO,EAMN,KAAK,WAAW,EAChB,MAAM,uBAAuB,CAAA;AA8B9B,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,iBAAiB,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAE9F,qBAAa,yBAA0B,SAAQ,KAAK;gBACvC,OAAO,EAAE,MAAM;CAI3B;AAED,wBAAsB,wBAAwB,CAC7C,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,WAAW,EACrB,QAAQ,EAAE,WAAW,GACnB,OAAO,CAAC,yBAAyB,CAAC,CAQpC;AAED,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAKhF"}
@@ -1,300 +0,0 @@
1
- import { readFile, stat } from 'node:fs/promises';
2
- import { basename, dirname, relative, resolve, sep } from 'node:path';
3
- import { serializeJson } from '../contracts/serialize.js';
4
- import { validateRunResult } from '../contracts/validator.js';
5
- import { driverEvidenceDirectory, evidenceExtension, harnessEvidencePath, safeSlug, toInvocationRelative, } from '../evidence/layout.js';
6
- const CATEGORY_BY_STEP_REASON = {
7
- 'met-expectation': 'app',
8
- 'failed-expectation': 'app',
9
- 'loop-detected': 'model',
10
- 'turn-cap-exceeded': 'model',
11
- 'step-timeout': 'model',
12
- 'scenario-timeout': 'infra',
13
- 'tool-error': 'infra',
14
- 'provider-error': 'infra',
15
- 'token-budget-exceeded': 'infra',
16
- interrupted: 'infra',
17
- 'internal-error': 'infra',
18
- };
19
- const STARTUP_REASONS = new Set(['driver-load-failed', 'driver-start-failed', 'evidence-write-failed']);
20
- const FLEXIBLE_LIFECYCLE_REASONS = new Set(['interrupted', 'scenario-timeout', 'internal-error']);
21
- const OVERRIDE_REASONS = new Set(['driver-teardown-failed', 'result-write-failed']);
22
- const NOT_ATTEMPTED_REASONS = new Set([
23
- 'driver-start-failed',
24
- 'evidence-write-failed',
25
- 'result-write-failed',
26
- 'interrupted',
27
- 'scenario-timeout',
28
- ]);
29
- export class ResultReconciliationError extends Error {
30
- constructor(message) {
31
- super(message);
32
- this.name = 'ResultReconciliationError';
33
- }
34
- }
35
- export async function reconcileExecutionResult(bytes, identity, prepared) {
36
- const result = parseExecutionResult(bytes);
37
- if (serializeJson(result) !== bytes)
38
- fail('result bytes are not deterministic Checkmate JSON');
39
- assertPlanIdentity(result, identity, prepared);
40
- assertSteps(result, prepared);
41
- assertUsage(result);
42
- await assertEvidence(result, identity, prepared);
43
- return { result, bytes };
44
- }
45
- export async function readAllocatedResult(identity) {
46
- const path = resolve(identity.runDirectory, 'result.json');
47
- const information = await stat(path);
48
- if (!information.isFile())
49
- fail('allocated result path is not a regular file');
50
- return readFile(path, 'utf8');
51
- }
52
- function parseExecutionResult(bytes) {
53
- let input;
54
- try {
55
- input = JSON.parse(bytes);
56
- }
57
- catch {
58
- return fail('result bytes are not valid JSON');
59
- }
60
- const validation = validateRunResult(input);
61
- if (validation.ok === false) {
62
- return fail(`result does not satisfy RunResultV1: ${validation.diagnostics[0]?.message ?? 'invalid result'}`);
63
- }
64
- if (!('runId' in validation.value) || 'source' in validation.value) {
65
- return fail('worker result must use the execution result arm');
66
- }
67
- return validation.value;
68
- }
69
- function assertPlanIdentity(result, identity, prepared) {
70
- if (result.runId !== identity.runId)
71
- fail('result runId does not match the allocated run');
72
- if (result.startedAt !== identity.startedAt)
73
- fail('result startedAt does not match the allocated run');
74
- if (result.scenarioId !== prepared.request.scenario.id)
75
- fail('result scenarioId does not match the request');
76
- if (result.driver.id !== prepared.driver.id ||
77
- result.driver.contractVersion !== prepared.driver.descriptor.driverContractVersion) {
78
- fail('result driver does not match the prepared driver');
79
- }
80
- if (result.policy.id !== prepared.policy.id)
81
- fail('result policy does not match the prepared policy');
82
- if (serializeJson(result.policy.effectiveLimits) !== serializeJson(prepared.effectiveLimits)) {
83
- fail('result effective limits do not match the prepared limits');
84
- }
85
- if (result.targetMutation === 'not-attempted' && !NOT_ATTEMPTED_REASONS.has(result.reason)) {
86
- fail('worker result has an inconsistent target mutation state');
87
- }
88
- if (result.reason === 'evidence-write-failed' && result.targetMutation !== 'not-attempted') {
89
- fail('invocation evidence failure cannot claim target mutation');
90
- }
91
- }
92
- function assertSteps(result, prepared) {
93
- const declared = prepared.request.scenario.steps;
94
- if (result.steps.length !== declared.length)
95
- fail('result must contain every declared step exactly once');
96
- let failedStep;
97
- let notStarted = false;
98
- let executedSteps = 0;
99
- for (const [index, step] of result.steps.entries()) {
100
- if (step.id !== declared[index].id)
101
- fail('result step order does not match the request');
102
- if (step.status === 'not-run') {
103
- if (!failedStep) {
104
- if (step.reason !== 'scenario-not-started')
105
- fail('not-run step has no valid blocker');
106
- notStarted = true;
107
- }
108
- else if (step.reason !== 'prior-step-failed' || step.blockedBy !== failedStep.id) {
109
- fail('not-run step does not identify the first failed step');
110
- }
111
- continue;
112
- }
113
- if (notStarted || failedStep)
114
- fail('executed steps must form one contiguous prefix');
115
- executedSteps++;
116
- assertStep(step, prepared);
117
- if (step.status === 'failed')
118
- failedStep = step;
119
- }
120
- if (executedSteps > 0 && result.targetMutation !== 'possibly-mutated') {
121
- fail('an executed step requires possible target mutation');
122
- }
123
- if (result.status === 'passed') {
124
- if (result.category !== 'passed' || result.reason !== 'scenario-complete')
125
- fail('passed result route is inconsistent');
126
- if (failedStep || notStarted || result.steps.some((step) => step.status !== 'passed')) {
127
- fail('passed result must contain only passed steps');
128
- }
129
- return;
130
- }
131
- if (result.reason === 'interrupted') {
132
- if (result.status !== 'interrupted' || result.category !== 'infra')
133
- fail('interrupted result route is inconsistent');
134
- assertLifecycleShape(result.reason, failedStep, executedSteps, notStarted);
135
- return;
136
- }
137
- if (result.status !== 'failed' || result.category === 'passed' || result.reason === 'scenario-complete') {
138
- fail('failed result route is inconsistent');
139
- }
140
- if (STARTUP_REASONS.has(result.reason)) {
141
- if (result.category !== 'infra' || executedSteps !== 0 || failedStep || !notStarted) {
142
- fail('startup lifecycle result has executed semantic state');
143
- }
144
- return;
145
- }
146
- if (OVERRIDE_REASONS.has(result.reason)) {
147
- if (result.category !== 'infra')
148
- fail('lifecycle override must use the infrastructure category');
149
- return;
150
- }
151
- if (FLEXIBLE_LIFECYCLE_REASONS.has(result.reason)) {
152
- if (result.category !== 'infra')
153
- fail('lifecycle result must use the infrastructure category');
154
- assertLifecycleShape(result.reason, failedStep, executedSteps, notStarted);
155
- return;
156
- }
157
- if (!failedStep || failedStep.reason !== result.reason || failedStep.category !== result.category) {
158
- fail('top-level result route does not match the failed step');
159
- }
160
- }
161
- function assertLifecycleShape(reason, failedStep, executedSteps, notStarted) {
162
- if (failedStep && failedStep.reason !== reason && reason !== 'interrupted') {
163
- fail('lifecycle result conflicts with the failed step');
164
- }
165
- if (!failedStep && !notStarted && executedSteps === 0)
166
- fail('lifecycle result has no terminal step state');
167
- }
168
- function assertStep(step, prepared) {
169
- if (step.category !== CATEGORY_BY_STEP_REASON[step.reason])
170
- fail(`step '${step.id}' has an invalid category/reason pair`);
171
- if (step.status === 'passed' && step.reason !== 'met-expectation')
172
- fail(`passed step '${step.id}' has a failure reason`);
173
- if (step.status === 'failed' && step.reason === 'met-expectation')
174
- fail(`failed step '${step.id}' met its expectation`);
175
- if (step.turns > prepared.effectiveLimits.turnsPerStep)
176
- fail(`step '${step.id}' exceeds the prepared turn limit`);
177
- assertUsageShape(step.usage, `step '${step.id}'`);
178
- for (const call of step.toolCalls) {
179
- if (call.turn > step.turns)
180
- fail(`step '${step.id}' contains a tool call after its final turn`);
181
- if (call.driverId !== prepared.driver.id && call.driverId !== 'harness') {
182
- fail(`step '${step.id}' contains a tool call from another driver`);
183
- }
184
- if (call.driverId === 'harness' && !['pass_test_step', 'fail_test_step'].includes(call.name)) {
185
- fail(`step '${step.id}' contains an unknown harness tool`);
186
- }
187
- if (call.driverId === prepared.driver.id &&
188
- !prepared.driver.descriptor.tools.some((tool) => tool.name === call.name)) {
189
- fail(`step '${step.id}' contains an undeclared driver tool`);
190
- }
191
- }
192
- }
193
- function assertUsage(result) {
194
- assertUsageShape(result.usage, 'scenario');
195
- const total = { promptTokens: 0, cachedPromptTokens: 0, completionTokens: 0, totalTokens: 0 };
196
- for (const step of result.steps) {
197
- if (step.status === 'not-run')
198
- continue;
199
- total.promptTokens += step.usage.promptTokens;
200
- total.cachedPromptTokens += step.usage.cachedPromptTokens;
201
- total.completionTokens += step.usage.completionTokens;
202
- total.totalTokens += step.usage.totalTokens;
203
- }
204
- for (const key of Object.keys(total)) {
205
- if (result.usage[key] !== total[key])
206
- fail('scenario usage does not equal executed step usage');
207
- }
208
- if (result.usage.state === 'unavailable' && result.usage.totalTokens !== 0) {
209
- fail('unavailable scenario usage must be empty');
210
- }
211
- }
212
- function assertUsageShape(usage, owner) {
213
- if (usage.totalTokens !== usage.promptTokens + usage.completionTokens) {
214
- fail(`${owner} token total is inconsistent`);
215
- }
216
- if (usage.cachedPromptTokens > usage.promptTokens)
217
- fail(`${owner} cached tokens exceed prompt tokens`);
218
- }
219
- async function assertEvidence(result, identity, prepared) {
220
- const declaredSteps = new Set(prepared.request.scenario.steps.map((step) => step.id));
221
- const seen = new Set();
222
- for (const reference of result.evidence.references) {
223
- assertEvidenceDeclaration(reference, identity, prepared, declaredSteps);
224
- if (seen.has(reference.path))
225
- fail('result contains a duplicate evidence path');
226
- seen.add(reference.path);
227
- const absolute = resolve(prepared.invocationRoot, reference.path);
228
- assertInside(identity.runDirectory, absolute);
229
- if (reference.path !== toInvocationRelative(prepared.invocationRoot, absolute) ||
230
- reference.path.includes('\\')) {
231
- fail('evidence path is not invocation-root-relative to the allocated run');
232
- }
233
- let information;
234
- try {
235
- information = await stat(absolute);
236
- }
237
- catch {
238
- fail('evidence reference does not point at a committed artifact');
239
- }
240
- if (!information.isFile())
241
- fail('evidence reference does not point at a regular file');
242
- }
243
- }
244
- function assertEvidenceDeclaration(reference, identity, prepared, declaredSteps) {
245
- if (reference.stepId !== undefined && !declaredSteps.has(reference.stepId)) {
246
- fail('evidence reference names an unknown step');
247
- }
248
- if (reference.producer === 'harness') {
249
- if (!reference.stepId)
250
- fail('harness evidence must name its producing step');
251
- const valid = (reference.kind === 'transcript' && reference.mediaType === 'text/markdown') ||
252
- (reference.kind === 'turn-snapshot' && reference.mediaType === 'application/yaml');
253
- if (!valid)
254
- fail('harness evidence reference has an undeclared kind or media type');
255
- const ordinal = prepared.request.scenario.steps.findIndex((step) => step.id === reference.stepId) + 1;
256
- const absolute = resolve(prepared.invocationRoot, reference.path);
257
- if (reference.kind === 'transcript') {
258
- if (absolute !== harnessEvidencePath(identity, ordinal, reference.stepId, 'transcript')) {
259
- fail('harness transcript does not use its canonical evidence path');
260
- }
261
- }
262
- else {
263
- const match = /^(\d{3,})\.yml$/.exec(basename(absolute));
264
- const turn = match ? Number(match[1]) : 0;
265
- if (!turn || absolute !== harnessEvidencePath(identity, ordinal, reference.stepId, 'turn-snapshot', turn)) {
266
- fail('harness turn snapshot does not use its canonical evidence path');
267
- }
268
- }
269
- return;
270
- }
271
- if (reference.producer !== prepared.driver.id)
272
- fail('evidence producer does not match the selected driver');
273
- const declaration = prepared.driver.descriptor.evidenceKinds.find((entry) => entry.kind === reference.kind);
274
- if (!declaration || declaration.mediaType !== reference.mediaType) {
275
- fail('driver evidence reference has an undeclared kind or media type');
276
- }
277
- const ordinal = reference.stepId
278
- ? prepared.request.scenario.steps.findIndex((step) => step.id === reference.stepId) + 1
279
- : undefined;
280
- const expectedDirectory = driverEvidenceDirectory(identity, prepared.driver.id, ordinal, reference.stepId);
281
- const filename = basename(resolve(prepared.invocationRoot, reference.path));
282
- const match = /^(\d{3,})-(.+)\.([^.]+)$/.exec(filename);
283
- if (dirname(resolve(prepared.invocationRoot, reference.path)) !== expectedDirectory ||
284
- !match ||
285
- Number(match[1]) < 1 ||
286
- match[1] !== String(Number(match[1])).padStart(3, '0') ||
287
- match[2] !== safeSlug(reference.kind) ||
288
- match[3] !== evidenceExtension(reference.mediaType)) {
289
- fail('driver evidence does not use its canonical attributed path');
290
- }
291
- }
292
- function assertInside(root, candidate) {
293
- const child = relative(resolve(root), resolve(candidate));
294
- if (!child || child === '..' || child.startsWith(`..${sep}`))
295
- fail('artifact path escapes the allocated run');
296
- }
297
- function fail(message) {
298
- throw new ResultReconciliationError(message);
299
- }
300
- //# sourceMappingURL=reconcile-result.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-result.js","sourceRoot":"","sources":["../../src/cli/reconcile-result.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- import { type ChildProcess } from 'node:child_process';
2
- import { allocateRunIdentity } from '../api/allocate-run-identity.js';
3
- import { prepareRunSource, type PreparationOptions } from '../api/prepare-run.js';
4
- import { type JsonInputSource } from '../config/ingestion.js';
5
- import { type DiagnosticWriter } from './diagnostic-relay.js';
6
- import { readAllocatedResult, reconcileExecutionResult } from './reconcile-result.js';
7
- import { type ParentSignal } from './signals.js';
8
- export type RunParentInput = Readonly<{
9
- source: JsonInputSource;
10
- cwd: string;
11
- configPath?: string;
12
- stdout: {
13
- write(value: string): unknown;
14
- };
15
- stderr: DiagnosticWriter;
16
- }>;
17
- export type SignalSource = Readonly<{
18
- on(signal: ParentSignal, listener: () => void): unknown;
19
- off(signal: ParentSignal, listener: () => void): unknown;
20
- }>;
21
- export type RunParentDependencies = Readonly<{
22
- prepare?: typeof prepareRunSource;
23
- allocate?: typeof allocateRunIdentity;
24
- forkWorker?: () => ChildProcess;
25
- preparation?: Omit<PreparationOptions, 'cwd' | 'configPath'>;
26
- now?: () => number;
27
- wallNow?: () => Date;
28
- setTimer?: typeof setTimeout;
29
- clearTimer?: typeof clearTimeout;
30
- signals?: SignalSource;
31
- workerExitGraceMs?: number;
32
- workerKillGraceMs?: number;
33
- reconcile?: typeof reconcileExecutionResult;
34
- readResult?: typeof readAllocatedResult;
35
- }>;
36
- export declare function runFromParent(input: RunParentInput, dependencies?: RunParentDependencies): Promise<number>;
37
- //# sourceMappingURL=run-parent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-parent.d.ts","sourceRoot":"","sources":["../../src/cli/run-parent.ts"],"names":[],"mappings":"AACA,OAAO,EAAQ,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAoB,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AACnG,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAW/E,OAAO,EAAmB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAU9E,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AACrF,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAGlE,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACrC,MAAM,EAAE,eAAe,CAAA;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE;QAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IACzC,MAAM,EAAE,gBAAgB,CAAA;CACxB,CAAC,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IACnC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAA;IACvD,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAA;CACxD,CAAC,CAAA;AAEF,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,gBAAgB,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,mBAAmB,CAAA;IACrC,UAAU,CAAC,EAAE,MAAM,YAAY,CAAA;IAC/B,WAAW,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,GAAG,YAAY,CAAC,CAAA;IAC5D,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,UAAU,CAAA;IAC5B,UAAU,CAAC,EAAE,OAAO,YAAY,CAAA;IAChC,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,OAAO,wBAAwB,CAAA;IAC3C,UAAU,CAAC,EAAE,OAAO,mBAAmB,CAAA;CACvC,CAAC,CAAA;AAKF,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,YAAY,GAAE,qBAA0B,GAAG,OAAO,CAAC,MAAM,CAAC,CAoGpH"}