@xoxoai/checkmate 0.6.7 → 0.7.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 (381) hide show
  1. package/README.md +54 -257
  2. package/dist/checkmate.js +13375 -0
  3. package/package.json +30 -94
  4. package/plugin/.claude-plugin/plugin.json +10 -0
  5. package/plugin/bin/checkmate.ts +3 -0
  6. package/plugin/contracts/finding.schema.json +78 -0
  7. package/plugin/contracts/gap.schema.json +56 -0
  8. package/plugin/contracts/plan-candidate.schema.json +103 -0
  9. package/plugin/contracts/plan-delta.schema.json +63 -0
  10. package/plugin/contracts/plan-patch.schema.json +116 -0
  11. package/plugin/contracts/plan-request.schema.json +108 -0
  12. package/plugin/contracts/plan.schema.json +313 -0
  13. package/plugin/contracts/profile.schema.json +154 -0
  14. package/plugin/contracts/response.schema.json +25 -0
  15. package/plugin/contracts/result.schema.json +410 -0
  16. package/plugin/dist/checkmate.js +13012 -0
  17. package/plugin/package.json +4 -0
  18. package/plugin/references/browser.md +35 -0
  19. package/plugin/references/http.md +30 -0
  20. package/plugin/references/workflow.md +122 -0
  21. package/plugin/skills/execute/SKILL.md +92 -0
  22. package/plugin/skills/plan/SKILL.md +94 -0
  23. package/plugin/skills/report/SKILL.md +28 -0
  24. package/plugin/skills/revise/SKILL.md +43 -0
  25. package/plugin/skills/setup/SKILL.md +82 -0
  26. package/plugin/skills/status/SKILL.md +20 -0
  27. package/plugin/skills/ui/SKILL.md +26 -0
  28. package/plugin/src/actor.ts +21 -0
  29. package/plugin/src/cli.ts +1133 -0
  30. package/plugin/src/contracts.ts +342 -0
  31. package/plugin/src/index.ts +52 -0
  32. package/plugin/src/plans.ts +1028 -0
  33. package/plugin/src/render.ts +544 -0
  34. package/plugin/src/runs.ts +868 -0
  35. package/plugin/src/store.ts +384 -0
  36. package/plugin/src/targets.ts +205 -0
  37. package/plugin/src/types.ts +319 -0
  38. package/plugin/src/ui/assets/client.js +501 -0
  39. package/plugin/src/ui/assets/favicon.svg +1 -0
  40. package/plugin/src/ui/assets/fonts/inter-OFL.txt +93 -0
  41. package/plugin/src/ui/assets/fonts/inter.woff2 +0 -0
  42. package/plugin/src/ui/assets/fonts/jetbrains-mono-OFL.txt +93 -0
  43. package/plugin/src/ui/assets/fonts/jetbrains-mono.woff2 +0 -0
  44. package/plugin/src/ui/assets/fonts/space-grotesk-OFL.txt +93 -0
  45. package/plugin/src/ui/assets/fonts/space-grotesk.woff2 +0 -0
  46. package/plugin/src/ui/assets/style.css +1926 -0
  47. package/plugin/src/ui/edit.ts +305 -0
  48. package/plugin/src/ui/forms.ts +209 -0
  49. package/plugin/src/ui/html.ts +130 -0
  50. package/plugin/src/ui/layout.ts +198 -0
  51. package/plugin/src/ui/lists.ts +645 -0
  52. package/plugin/src/ui/plan.ts +577 -0
  53. package/plugin/src/ui/run.ts +489 -0
  54. package/plugin/src/ui/server.ts +684 -0
  55. package/plugin/src/validators.d.ts +13 -0
  56. package/plugin/src/validators.js +1 -0
  57. package/plugin/src/views.ts +839 -0
  58. package/bin/checkmate.js +0 -13
  59. package/dist/ai/client.d.ts +0 -64
  60. package/dist/ai/client.d.ts.map +0 -1
  61. package/dist/ai/client.js +0 -313
  62. package/dist/ai/client.js.map +0 -1
  63. package/dist/ai/message-handler.d.ts +0 -9
  64. package/dist/ai/message-handler.d.ts.map +0 -1
  65. package/dist/ai/message-handler.js +0 -50
  66. package/dist/ai/message-handler.js.map +0 -1
  67. package/dist/ai/message-history.d.ts +0 -17
  68. package/dist/ai/message-history.d.ts.map +0 -1
  69. package/dist/ai/message-history.js +0 -45
  70. package/dist/ai/message-history.js.map +0 -1
  71. package/dist/ai/prompts.d.ts +0 -4
  72. package/dist/ai/prompts.d.ts.map +0 -1
  73. package/dist/ai/prompts.js +0 -24
  74. package/dist/ai/prompts.js.map +0 -1
  75. package/dist/ai/rate-limit-policy.d.ts +0 -9
  76. package/dist/ai/rate-limit-policy.d.ts.map +0 -1
  77. package/dist/ai/rate-limit-policy.js +0 -34
  78. package/dist/ai/rate-limit-policy.js.map +0 -1
  79. package/dist/ai/tool-response-handler.d.ts +0 -16
  80. package/dist/ai/tool-response-handler.d.ts.map +0 -1
  81. package/dist/ai/tool-response-handler.js +0 -85
  82. package/dist/ai/tool-response-handler.js.map +0 -1
  83. package/dist/ai/turn-processor.d.ts +0 -34
  84. package/dist/ai/turn-processor.d.ts.map +0 -1
  85. package/dist/ai/turn-processor.js +0 -107
  86. package/dist/ai/turn-processor.js.map +0 -1
  87. package/dist/api/allocate-run-identity.d.ts +0 -8
  88. package/dist/api/allocate-run-identity.d.ts.map +0 -1
  89. package/dist/api/allocate-run-identity.js +0 -10
  90. package/dist/api/allocate-run-identity.js.map +0 -1
  91. package/dist/api/execute-prepared-run.d.ts +0 -22
  92. package/dist/api/execute-prepared-run.d.ts.map +0 -1
  93. package/dist/api/execute-prepared-run.js +0 -184
  94. package/dist/api/execute-prepared-run.js.map +0 -1
  95. package/dist/api/index.d.ts +0 -25
  96. package/dist/api/index.d.ts.map +0 -1
  97. package/dist/api/index.js +0 -69
  98. package/dist/api/index.js.map +0 -1
  99. package/dist/api/prepare-run.d.ts +0 -44
  100. package/dist/api/prepare-run.d.ts.map +0 -1
  101. package/dist/api/prepare-run.js +0 -261
  102. package/dist/api/prepare-run.js.map +0 -1
  103. package/dist/cli/diagnostic-relay.d.ts +0 -6
  104. package/dist/cli/diagnostic-relay.d.ts.map +0 -1
  105. package/dist/cli/diagnostic-relay.js +0 -6
  106. package/dist/cli/diagnostic-relay.js.map +0 -1
  107. package/dist/cli/main.d.ts +0 -21
  108. package/dist/cli/main.d.ts.map +0 -1
  109. package/dist/cli/main.js +0 -166
  110. package/dist/cli/main.js.map +0 -1
  111. package/dist/cli/protocol.d.ts +0 -57
  112. package/dist/cli/protocol.d.ts.map +0 -1
  113. package/dist/cli/protocol.js +0 -116
  114. package/dist/cli/protocol.js.map +0 -1
  115. package/dist/cli/reconcile-result.d.ts +0 -13
  116. package/dist/cli/reconcile-result.d.ts.map +0 -1
  117. package/dist/cli/reconcile-result.js +0 -300
  118. package/dist/cli/reconcile-result.js.map +0 -1
  119. package/dist/cli/run-parent.d.ts +0 -37
  120. package/dist/cli/run-parent.d.ts.map +0 -1
  121. package/dist/cli/run-parent.js +0 -491
  122. package/dist/cli/run-parent.js.map +0 -1
  123. package/dist/cli/signals.d.ts +0 -36
  124. package/dist/cli/signals.d.ts.map +0 -1
  125. package/dist/cli/signals.js +0 -85
  126. package/dist/cli/signals.js.map +0 -1
  127. package/dist/cli/static-commands.d.ts +0 -11
  128. package/dist/cli/static-commands.d.ts.map +0 -1
  129. package/dist/cli/static-commands.js +0 -83
  130. package/dist/cli/static-commands.js.map +0 -1
  131. package/dist/cli/worker-stream-guard.d.ts +0 -20
  132. package/dist/cli/worker-stream-guard.d.ts.map +0 -1
  133. package/dist/cli/worker-stream-guard.js +0 -41
  134. package/dist/cli/worker-stream-guard.js.map +0 -1
  135. package/dist/cli/worker.d.ts +0 -3
  136. package/dist/cli/worker.d.ts.map +0 -1
  137. package/dist/cli/worker.js +0 -111
  138. package/dist/cli/worker.js.map +0 -1
  139. package/dist/config/ingestion.d.ts +0 -58
  140. package/dist/config/ingestion.d.ts.map +0 -1
  141. package/dist/config/ingestion.js +0 -283
  142. package/dist/config/ingestion.js.map +0 -1
  143. package/dist/config/manifest.d.ts +0 -20
  144. package/dist/config/manifest.d.ts.map +0 -1
  145. package/dist/config/manifest.js +0 -91
  146. package/dist/config/manifest.js.map +0 -1
  147. package/dist/config/model-egress.d.ts +0 -10
  148. package/dist/config/model-egress.d.ts.map +0 -1
  149. package/dist/config/model-egress.js +0 -62
  150. package/dist/config/model-egress.js.map +0 -1
  151. package/dist/config/package-resolution.d.ts +0 -4
  152. package/dist/config/package-resolution.d.ts.map +0 -1
  153. package/dist/config/package-resolution.js +0 -24
  154. package/dist/config/package-resolution.js.map +0 -1
  155. package/dist/config/policy.d.ts +0 -44
  156. package/dist/config/policy.d.ts.map +0 -1
  157. package/dist/config/policy.js +0 -141
  158. package/dist/config/policy.js.map +0 -1
  159. package/dist/config/record.d.ts +0 -4
  160. package/dist/config/record.d.ts.map +0 -1
  161. package/dist/config/record.js +0 -10
  162. package/dist/config/record.js.map +0 -1
  163. package/dist/config/secrets.d.ts +0 -11
  164. package/dist/config/secrets.d.ts.map +0 -1
  165. package/dist/config/secrets.js +0 -42
  166. package/dist/config/secrets.js.map +0 -1
  167. package/dist/contracts/diagnostics.d.ts +0 -4
  168. package/dist/contracts/diagnostics.d.ts.map +0 -1
  169. package/dist/contracts/diagnostics.js +0 -31
  170. package/dist/contracts/diagnostics.js.map +0 -1
  171. package/dist/contracts/serialize.d.ts +0 -2
  172. package/dist/contracts/serialize.d.ts.map +0 -1
  173. package/dist/contracts/serialize.js +0 -90
  174. package/dist/contracts/serialize.js.map +0 -1
  175. package/dist/contracts/types.d.ts +0 -316
  176. package/dist/contracts/types.d.ts.map +0 -1
  177. package/dist/contracts/types.js +0 -74
  178. package/dist/contracts/types.js.map +0 -1
  179. package/dist/contracts/validator.d.ts +0 -8
  180. package/dist/contracts/validator.d.ts.map +0 -1
  181. package/dist/contracts/validator.js +0 -71
  182. package/dist/contracts/validator.js.map +0 -1
  183. package/dist/driver.d.ts +0 -97
  184. package/dist/driver.d.ts.map +0 -1
  185. package/dist/driver.js +0 -24
  186. package/dist/driver.js.map +0 -1
  187. package/dist/drivers/descriptor.d.ts +0 -15
  188. package/dist/drivers/descriptor.d.ts.map +0 -1
  189. package/dist/drivers/descriptor.js +0 -122
  190. package/dist/drivers/descriptor.js.map +0 -1
  191. package/dist/drivers/loader.d.ts +0 -18
  192. package/dist/drivers/loader.d.ts.map +0 -1
  193. package/dist/drivers/loader.js +0 -97
  194. package/dist/drivers/loader.js.map +0 -1
  195. package/dist/drivers/web/checkmate-driver.json +0 -47
  196. package/dist/drivers/web/index.d.ts +0 -6
  197. package/dist/drivers/web/index.d.ts.map +0 -1
  198. package/dist/drivers/web/index.js +0 -27
  199. package/dist/drivers/web/index.js.map +0 -1
  200. package/dist/drivers/web/session.d.ts +0 -25
  201. package/dist/drivers/web/session.d.ts.map +0 -1
  202. package/dist/drivers/web/session.js +0 -132
  203. package/dist/drivers/web/session.js.map +0 -1
  204. package/dist/drivers/web/tools/network-request-recorder.d.ts +0 -46
  205. package/dist/drivers/web/tools/network-request-recorder.d.ts.map +0 -1
  206. package/dist/drivers/web/tools/network-request-recorder.js +0 -164
  207. package/dist/drivers/web/tools/network-request-recorder.js.map +0 -1
  208. package/dist/drivers/web/tools/screenshot-service.d.ts +0 -10
  209. package/dist/drivers/web/tools/screenshot-service.d.ts.map +0 -1
  210. package/dist/drivers/web/tools/screenshot-service.js +0 -23
  211. package/dist/drivers/web/tools/screenshot-service.js.map +0 -1
  212. package/dist/drivers/web/tools/snapshot-filter/index.d.ts +0 -4
  213. package/dist/drivers/web/tools/snapshot-filter/index.d.ts.map +0 -1
  214. package/dist/drivers/web/tools/snapshot-filter/index.js +0 -4
  215. package/dist/drivers/web/tools/snapshot-filter/index.js.map +0 -1
  216. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts +0 -15
  217. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.d.ts.map +0 -1
  218. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js +0 -99
  219. package/dist/drivers/web/tools/snapshot-filter/semantic-scorer.js.map +0 -1
  220. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts +0 -5
  221. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.d.ts.map +0 -1
  222. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js +0 -56
  223. package/dist/drivers/web/tools/snapshot-filter/snapshot-filter.js.map +0 -1
  224. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts +0 -3
  225. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.d.ts.map +0 -1
  226. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js +0 -85
  227. package/dist/drivers/web/tools/snapshot-filter/tree-reconstructor.js.map +0 -1
  228. package/dist/drivers/web/tools/snapshot-service.d.ts +0 -31
  229. package/dist/drivers/web/tools/snapshot-service.d.ts.map +0 -1
  230. package/dist/drivers/web/tools/snapshot-service.js +0 -96
  231. package/dist/drivers/web/tools/snapshot-service.js.map +0 -1
  232. package/dist/drivers/web/tools/tool.d.ts +0 -76
  233. package/dist/drivers/web/tools/tool.d.ts.map +0 -1
  234. package/dist/drivers/web/tools/tool.js +0 -562
  235. package/dist/drivers/web/tools/tool.js.map +0 -1
  236. package/dist/drivers/web/tools/transient-state-tracker.d.ts +0 -26
  237. package/dist/drivers/web/tools/transient-state-tracker.d.ts.map +0 -1
  238. package/dist/drivers/web/tools/transient-state-tracker.js +0 -301
  239. package/dist/drivers/web/tools/transient-state-tracker.js.map +0 -1
  240. package/dist/drivers/web/tools/types.d.ts +0 -11
  241. package/dist/drivers/web/tools/types.d.ts.map +0 -1
  242. package/dist/drivers/web/tools/types.js +0 -2
  243. package/dist/drivers/web/tools/types.js.map +0 -1
  244. package/dist/evidence/atomic-file.d.ts +0 -23
  245. package/dist/evidence/atomic-file.d.ts.map +0 -1
  246. package/dist/evidence/atomic-file.js +0 -104
  247. package/dist/evidence/atomic-file.js.map +0 -1
  248. package/dist/evidence/layout.d.ts +0 -30
  249. package/dist/evidence/layout.d.ts.map +0 -1
  250. package/dist/evidence/layout.js +0 -152
  251. package/dist/evidence/layout.js.map +0 -1
  252. package/dist/evidence/retention.d.ts +0 -5
  253. package/dist/evidence/retention.d.ts.map +0 -1
  254. package/dist/evidence/retention.js +0 -10
  255. package/dist/evidence/retention.js.map +0 -1
  256. package/dist/evidence/store.d.ts +0 -101
  257. package/dist/evidence/store.d.ts.map +0 -1
  258. package/dist/evidence/store.js +0 -375
  259. package/dist/evidence/store.js.map +0 -1
  260. package/dist/evidence/terminal-finalizer.d.ts +0 -19
  261. package/dist/evidence/terminal-finalizer.d.ts.map +0 -1
  262. package/dist/evidence/terminal-finalizer.js +0 -56
  263. package/dist/evidence/terminal-finalizer.js.map +0 -1
  264. package/dist/index.d.ts +0 -9
  265. package/dist/index.d.ts.map +0 -1
  266. package/dist/index.js +0 -12
  267. package/dist/index.js.map +0 -1
  268. package/dist/logging/invocation-logger.d.ts +0 -4
  269. package/dist/logging/invocation-logger.d.ts.map +0 -1
  270. package/dist/logging/invocation-logger.js +0 -25
  271. package/dist/logging/invocation-logger.js.map +0 -1
  272. package/dist/logging/level-logger.d.ts +0 -11
  273. package/dist/logging/level-logger.d.ts.map +0 -1
  274. package/dist/logging/level-logger.js +0 -82
  275. package/dist/logging/level-logger.js.map +0 -1
  276. package/dist/logging/types.d.ts +0 -8
  277. package/dist/logging/types.d.ts.map +0 -1
  278. package/dist/logging/types.js +0 -7
  279. package/dist/logging/types.js.map +0 -1
  280. package/dist/redaction/diagnostic-sanitizer.d.ts +0 -7
  281. package/dist/redaction/diagnostic-sanitizer.d.ts.map +0 -1
  282. package/dist/redaction/diagnostic-sanitizer.js +0 -42
  283. package/dist/redaction/diagnostic-sanitizer.js.map +0 -1
  284. package/dist/redaction/redactor.d.ts +0 -40
  285. package/dist/redaction/redactor.d.ts.map +0 -1
  286. package/dist/redaction/redactor.js +0 -176
  287. package/dist/redaction/redactor.js.map +0 -1
  288. package/dist/redaction/scrub.d.ts +0 -29
  289. package/dist/redaction/scrub.d.ts.map +0 -1
  290. package/dist/redaction/scrub.js +0 -54
  291. package/dist/redaction/scrub.js.map +0 -1
  292. package/dist/runtime/config.d.ts +0 -16
  293. package/dist/runtime/config.d.ts.map +0 -1
  294. package/dist/runtime/config.js +0 -2
  295. package/dist/runtime/config.js.map +0 -1
  296. package/dist/runtime/driver-boundary.d.ts +0 -16
  297. package/dist/runtime/driver-boundary.d.ts.map +0 -1
  298. package/dist/runtime/driver-boundary.js +0 -71
  299. package/dist/runtime/driver-boundary.js.map +0 -1
  300. package/dist/runtime/driver-session.d.ts +0 -9
  301. package/dist/runtime/driver-session.d.ts.map +0 -1
  302. package/dist/runtime/driver-session.js +0 -64
  303. package/dist/runtime/driver-session.js.map +0 -1
  304. package/dist/runtime/internal-step-evidence.d.ts +0 -30
  305. package/dist/runtime/internal-step-evidence.d.ts.map +0 -1
  306. package/dist/runtime/internal-step-evidence.js +0 -82
  307. package/dist/runtime/internal-step-evidence.js.map +0 -1
  308. package/dist/runtime/result-adapter.d.ts +0 -9
  309. package/dist/runtime/result-adapter.d.ts.map +0 -1
  310. package/dist/runtime/result-adapter.js +0 -77
  311. package/dist/runtime/result-adapter.js.map +0 -1
  312. package/dist/runtime/runner.d.ts +0 -43
  313. package/dist/runtime/runner.d.ts.map +0 -1
  314. package/dist/runtime/runner.js +0 -72
  315. package/dist/runtime/runner.js.map +0 -1
  316. package/dist/runtime/scenario-control.d.ts +0 -40
  317. package/dist/runtime/scenario-control.d.ts.map +0 -1
  318. package/dist/runtime/scenario-control.js +0 -94
  319. package/dist/runtime/scenario-control.js.map +0 -1
  320. package/dist/runtime/scenario-runner.d.ts +0 -41
  321. package/dist/runtime/scenario-runner.d.ts.map +0 -1
  322. package/dist/runtime/scenario-runner.js +0 -274
  323. package/dist/runtime/scenario-runner.js.map +0 -1
  324. package/dist/runtime/scenario-state.d.ts +0 -55
  325. package/dist/runtime/scenario-state.d.ts.map +0 -1
  326. package/dist/runtime/scenario-state.js +0 -128
  327. package/dist/runtime/scenario-state.js.map +0 -1
  328. package/dist/runtime/step-execution.d.ts +0 -27
  329. package/dist/runtime/step-execution.d.ts.map +0 -1
  330. package/dist/runtime/step-execution.js +0 -143
  331. package/dist/runtime/step-execution.js.map +0 -1
  332. package/dist/runtime/text.d.ts +0 -10
  333. package/dist/runtime/text.d.ts.map +0 -1
  334. package/dist/runtime/text.js +0 -25
  335. package/dist/runtime/text.js.map +0 -1
  336. package/dist/runtime/types.d.ts +0 -53
  337. package/dist/runtime/types.d.ts.map +0 -1
  338. package/dist/runtime/types.js +0 -2
  339. package/dist/runtime/types.js.map +0 -1
  340. package/dist/runtime/usage-tracker.d.ts +0 -37
  341. package/dist/runtime/usage-tracker.d.ts.map +0 -1
  342. package/dist/runtime/usage-tracker.js +0 -110
  343. package/dist/runtime/usage-tracker.js.map +0 -1
  344. package/dist/tools/define-agent-tool.d.ts +0 -20
  345. package/dist/tools/define-agent-tool.d.ts.map +0 -1
  346. package/dist/tools/define-agent-tool.js +0 -30
  347. package/dist/tools/define-agent-tool.js.map +0 -1
  348. package/dist/tools/dispatcher.d.ts +0 -19
  349. package/dist/tools/dispatcher.d.ts.map +0 -1
  350. package/dist/tools/dispatcher.js +0 -91
  351. package/dist/tools/dispatcher.js.map +0 -1
  352. package/dist/tools/loop-detector.d.ts +0 -27
  353. package/dist/tools/loop-detector.d.ts.map +0 -1
  354. package/dist/tools/loop-detector.js +0 -76
  355. package/dist/tools/loop-detector.js.map +0 -1
  356. package/dist/tools/registry.d.ts +0 -19
  357. package/dist/tools/registry.d.ts.map +0 -1
  358. package/dist/tools/registry.js +0 -54
  359. package/dist/tools/registry.js.map +0 -1
  360. package/dist/tools/step/result-tool.d.ts +0 -7
  361. package/dist/tools/step/result-tool.d.ts.map +0 -1
  362. package/dist/tools/step/result-tool.js +0 -34
  363. package/dist/tools/step/result-tool.js.map +0 -1
  364. package/dist/tools/tool-contract.d.ts +0 -3
  365. package/dist/tools/tool-contract.d.ts.map +0 -1
  366. package/dist/tools/tool-contract.js +0 -2
  367. package/dist/tools/tool-contract.js.map +0 -1
  368. package/dist/tools/types.d.ts +0 -210
  369. package/dist/tools/types.d.ts.map +0 -1
  370. package/dist/tools/types.js +0 -4
  371. package/dist/tools/types.js.map +0 -1
  372. package/docs/CLI.md +0 -59
  373. package/docs/CONFIGURATION.md +0 -105
  374. package/docs/DRIVERS.md +0 -79
  375. package/docs/EVIDENCE.md +0 -64
  376. package/schemas/checkmate-config.v1.json +0 -176
  377. package/schemas/describe-result.v1.json +0 -414
  378. package/schemas/driver-descriptor.v1.json +0 -66
  379. package/schemas/run-request.v1.json +0 -67
  380. package/schemas/run-result.v1.json +0 -333
  381. 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"}