niceeval 0.18.0 → 0.19.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 (679) hide show
  1. package/INDEX.md +4 -2
  2. package/dist/adapter-usage.cjs.map +1 -1
  3. package/dist/adapter-usage.d.cts +1 -1
  4. package/dist/adapter-usage.d.mts +1 -1
  5. package/dist/adapter-usage.d.ts +1 -1
  6. package/dist/adapter.cjs +8 -7
  7. package/dist/adapter.cjs.map +1 -1
  8. package/dist/adapter.d.cts +21 -21
  9. package/dist/adapter.d.mts +21 -21
  10. package/dist/adapter.d.ts +21 -21
  11. package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
  12. package/dist/agents/agent-effects.cjs.map +1 -0
  13. package/dist/agents/agent-effects.d.cts +23 -0
  14. package/dist/agents/agent-effects.d.mts +23 -0
  15. package/dist/agents/agent-effects.d.ts +23 -0
  16. package/dist/agents/agent-effects.js +16 -0
  17. package/dist/agents/agent-effects.js.map +1 -0
  18. package/dist/agents/ai-sdk.cjs +1 -1
  19. package/dist/agents/ai-sdk.cjs.map +1 -1
  20. package/dist/agents/bub.cjs +31 -18
  21. package/dist/agents/bub.cjs.map +1 -1
  22. package/dist/agents/bub.d.cts +9 -12
  23. package/dist/agents/bub.d.mts +9 -12
  24. package/dist/agents/bub.d.ts +9 -12
  25. package/dist/agents/claude-code-native.cjs +2 -2
  26. package/dist/agents/claude-code-native.cjs.map +1 -1
  27. package/dist/agents/claude-code.cjs +17 -11
  28. package/dist/agents/claude-code.cjs.map +1 -1
  29. package/dist/agents/claude-code.d.cts +11 -11
  30. package/dist/agents/claude-code.d.mts +11 -11
  31. package/dist/agents/claude-code.d.ts +11 -11
  32. package/dist/agents/codex-app-server.cjs +2 -2
  33. package/dist/agents/codex-app-server.cjs.map +1 -1
  34. package/dist/agents/codex.cjs +18 -12
  35. package/dist/agents/codex.cjs.map +1 -1
  36. package/dist/agents/codex.d.cts +12 -12
  37. package/dist/agents/codex.d.mts +12 -12
  38. package/dist/agents/codex.d.ts +12 -12
  39. package/dist/agents/deepseek-harness.cjs +2 -2
  40. package/dist/agents/deepseek-harness.cjs.map +1 -1
  41. package/dist/agents/hermes.cjs +3 -3
  42. package/dist/agents/hermes.cjs.map +1 -1
  43. package/dist/agents/index.cjs +3 -3
  44. package/dist/agents/index.cjs.map +1 -1
  45. package/dist/agents/index.d.cts +3 -3
  46. package/dist/agents/index.d.mts +3 -3
  47. package/dist/agents/index.d.ts +3 -3
  48. package/dist/agents/index.js +2 -2
  49. package/dist/agents/index.mjs +2 -2
  50. package/dist/agents/mcp.cjs.map +1 -1
  51. package/dist/agents/mcp.d.cts +2 -2
  52. package/dist/agents/mcp.d.mts +2 -2
  53. package/dist/agents/mcp.d.ts +2 -2
  54. package/dist/agents/omp.cjs +2 -2
  55. package/dist/agents/omp.cjs.map +1 -1
  56. package/dist/agents/openai-compat.cjs +2 -2
  57. package/dist/agents/openai-compat.cjs.map +1 -1
  58. package/dist/agents/openclaw.cjs +3 -3
  59. package/dist/agents/openclaw.cjs.map +1 -1
  60. package/dist/agents/opencode.cjs +16 -4
  61. package/dist/agents/opencode.cjs.map +1 -1
  62. package/dist/agents/plugin-extensions.cjs +71 -0
  63. package/dist/agents/plugin-extensions.cjs.map +1 -0
  64. package/dist/agents/plugin-extensions.d.cts +26 -0
  65. package/dist/agents/plugin-extensions.d.mts +26 -0
  66. package/dist/agents/plugin-extensions.d.ts +26 -0
  67. package/dist/agents/plugin-extensions.js +8 -0
  68. package/dist/agents/plugin-extensions.js.map +1 -0
  69. package/dist/agents/post-setup.cjs +14 -3
  70. package/dist/agents/post-setup.cjs.map +1 -1
  71. package/dist/agents/post-setup.d.cts +4 -2
  72. package/dist/agents/post-setup.d.mts +4 -2
  73. package/dist/agents/post-setup.d.ts +4 -2
  74. package/dist/agents/post-setup.js +8 -6
  75. package/dist/agents/sdk-streams.cjs +3 -3
  76. package/dist/agents/sdk-streams.cjs.map +1 -1
  77. package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
  78. package/dist/agents/session-key.cjs.map +1 -0
  79. package/dist/agents/session-key.d.cts +12 -0
  80. package/dist/agents/session-key.d.mts +12 -0
  81. package/dist/agents/session-key.d.ts +12 -0
  82. package/dist/agents/session-key.js +6 -0
  83. package/dist/agents/session-key.js.map +1 -0
  84. package/dist/agents/shared.cjs +2 -2
  85. package/dist/agents/shared.cjs.map +1 -1
  86. package/dist/agents/shared.d.cts +4 -4
  87. package/dist/agents/shared.d.mts +4 -4
  88. package/dist/agents/shared.d.ts +4 -4
  89. package/dist/agents/skills.cjs.map +1 -1
  90. package/dist/agents/skills.d.cts +3 -3
  91. package/dist/agents/skills.d.mts +3 -3
  92. package/dist/agents/skills.d.ts +3 -3
  93. package/dist/agents/types.cjs.map +1 -1
  94. package/dist/agents/types.d.cts +55 -54
  95. package/dist/agents/types.d.mts +55 -54
  96. package/dist/agents/types.d.ts +55 -54
  97. package/dist/agents/ui-message-stream.cjs +4 -4
  98. package/dist/agents/ui-message-stream.cjs.map +1 -1
  99. package/dist/agents/unrecognized-events.cjs +32 -0
  100. package/dist/agents/unrecognized-events.cjs.map +1 -0
  101. package/dist/agents/unrecognized-events.d.cts +8 -0
  102. package/dist/agents/unrecognized-events.d.mts +8 -0
  103. package/dist/agents/unrecognized-events.d.ts +8 -0
  104. package/dist/agents/unrecognized-events.js +6 -0
  105. package/dist/agents/unrecognized-events.js.map +1 -0
  106. package/dist/assertions/api.cjs.map +1 -1
  107. package/dist/assertions/api.d.cts +3 -0
  108. package/dist/assertions/api.d.mts +3 -0
  109. package/dist/assertions/api.d.ts +3 -0
  110. package/dist/assertions/collection.cjs +1 -1
  111. package/dist/assertions/collection.cjs.map +1 -1
  112. package/dist/assertions/judge.cjs +1 -1
  113. package/dist/assertions/judge.cjs.map +1 -1
  114. package/dist/assertions/match.cjs +52 -21
  115. package/dist/assertions/match.cjs.map +1 -1
  116. package/dist/assertions/match.d.cts +16 -5
  117. package/dist/assertions/match.d.mts +16 -5
  118. package/dist/assertions/match.d.ts +16 -5
  119. package/dist/assertions/match.js +96 -94
  120. package/dist/assertions/measurements.cjs +22 -6
  121. package/dist/assertions/measurements.cjs.map +1 -1
  122. package/dist/assertions/measurements.d.cts +8 -1
  123. package/dist/assertions/measurements.d.mts +8 -1
  124. package/dist/assertions/measurements.d.ts +8 -1
  125. package/dist/assertions/numeric.cjs +2 -0
  126. package/dist/assertions/numeric.cjs.map +1 -1
  127. package/dist/assertions/numeric.d.cts +1 -1
  128. package/dist/assertions/numeric.d.mts +1 -1
  129. package/dist/assertions/numeric.d.ts +1 -1
  130. package/dist/assertions/quantity.cjs +42 -0
  131. package/dist/assertions/quantity.cjs.map +1 -0
  132. package/dist/assertions/quantity.d.cts +18 -0
  133. package/dist/assertions/quantity.d.mts +18 -0
  134. package/dist/assertions/quantity.d.ts +18 -0
  135. package/dist/assertions/quantity.js +22 -0
  136. package/dist/assertions/quantity.js.map +1 -0
  137. package/dist/assertions/record/attachment.cjs +2 -0
  138. package/dist/assertions/record/attachment.cjs.map +1 -1
  139. package/dist/assertions/record/codec.cjs +5 -1
  140. package/dist/assertions/record/codec.cjs.map +1 -1
  141. package/dist/assertions/record/model.cjs.map +1 -1
  142. package/dist/assertions/record/model.d.cts +3 -1
  143. package/dist/assertions/record/model.d.mts +3 -1
  144. package/dist/assertions/record/model.d.ts +3 -1
  145. package/dist/assertions/runtime.cjs +11 -6
  146. package/dist/assertions/runtime.cjs.map +1 -1
  147. package/dist/cli/program.cjs +3 -0
  148. package/dist/cli/program.cjs.map +1 -1
  149. package/dist/context/assert-first.cjs +6 -4
  150. package/dist/context/assert-first.cjs.map +1 -1
  151. package/dist/context/assert-first.d.cts +9 -3
  152. package/dist/context/assert-first.d.mts +9 -3
  153. package/dist/context/assert-first.d.ts +9 -3
  154. package/dist/context/notes.cjs +47 -0
  155. package/dist/context/notes.cjs.map +1 -0
  156. package/dist/context/notes.d.cts +10 -0
  157. package/dist/context/notes.d.mts +10 -0
  158. package/dist/context/notes.d.ts +10 -0
  159. package/dist/context/notes.js +6 -0
  160. package/dist/context/notes.js.map +1 -0
  161. package/dist/context/send-failures.cjs +1 -7
  162. package/dist/context/send-failures.cjs.map +1 -1
  163. package/dist/context/send-failures.d.cts +2 -3
  164. package/dist/context/send-failures.d.mts +2 -3
  165. package/dist/context/send-failures.d.ts +2 -3
  166. package/dist/context/send-retry.cjs +0 -1
  167. package/dist/context/send-retry.cjs.map +1 -1
  168. package/dist/context/send-retry.d.cts +1 -2
  169. package/dist/context/send-retry.d.mts +1 -2
  170. package/dist/context/send-retry.d.ts +1 -2
  171. package/dist/context/session.cjs +10 -17
  172. package/dist/context/session.cjs.map +1 -1
  173. package/dist/context/session.d.cts +4 -10
  174. package/dist/context/session.d.mts +4 -10
  175. package/dist/context/session.d.ts +4 -10
  176. package/dist/define.cjs +88 -65
  177. package/dist/define.cjs.map +1 -1
  178. package/dist/define.d.cts +3 -3
  179. package/dist/define.d.mts +3 -3
  180. package/dist/define.d.ts +3 -3
  181. package/dist/eval/cli/contribution.cjs +1 -1
  182. package/dist/eval/cli/contribution.cjs.map +1 -1
  183. package/dist/eval/host/index.cjs +1 -1
  184. package/dist/eval/host/index.cjs.map +1 -1
  185. package/dist/eval/record/evaluation.cjs +1 -1
  186. package/dist/eval/record/evaluation.cjs.map +1 -1
  187. package/dist/eval/record/membership-provenance.d.cts +3 -3
  188. package/dist/eval/record/membership-provenance.d.mts +3 -3
  189. package/dist/eval/record/membership-provenance.d.ts +3 -3
  190. package/dist/eval/record/score.cjs +2 -2
  191. package/dist/eval/record/score.cjs.map +1 -1
  192. package/dist/eval/record/sealed-assertion.cjs +1 -1
  193. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  194. package/dist/eval/record/verdict.cjs +2 -2
  195. package/dist/eval/record/verdict.cjs.map +1 -1
  196. package/dist/expect/index.cjs +10 -1
  197. package/dist/expect/index.cjs.map +1 -1
  198. package/dist/expect/index.d.cts +3 -1
  199. package/dist/expect/index.d.mts +3 -1
  200. package/dist/expect/index.d.ts +3 -1
  201. package/dist/expect/index.js +92 -76
  202. package/dist/expect/index.mjs +92 -76
  203. package/dist/experiment/host/cli/contribution.cjs +52 -39
  204. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  205. package/dist/experiment/host/cli/contribution.d.cts +18 -4
  206. package/dist/experiment/host/cli/contribution.d.mts +18 -4
  207. package/dist/experiment/host/cli/contribution.d.ts +18 -4
  208. package/dist/experiment/host/cli/contribution.js +2 -2
  209. package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
  210. package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
  211. package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
  212. package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
  213. package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
  214. package/dist/experiment/host/cli/output-protocol.cjs +1 -1
  215. package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
  216. package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
  217. package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
  218. package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
  219. package/dist/experiment/host/current.cjs +2 -2
  220. package/dist/experiment/host/current.cjs.map +1 -1
  221. package/dist/experiment/host/index.cjs +1 -1
  222. package/dist/experiment/host/index.cjs.map +1 -1
  223. package/dist/experiment/host/operations.cjs +21 -22
  224. package/dist/experiment/host/operations.cjs.map +1 -1
  225. package/dist/experiment/host/runtime.cjs +8 -9
  226. package/dist/experiment/host/runtime.cjs.map +1 -1
  227. package/dist/experiment/host/runtime.d.cts +3 -3
  228. package/dist/experiment/host/runtime.d.mts +3 -3
  229. package/dist/experiment/host/runtime.d.ts +3 -3
  230. package/dist/experiment/host/teardown.cjs +3 -3
  231. package/dist/experiment/host/teardown.cjs.map +1 -1
  232. package/dist/experiment/host/teardown.d.cts +3 -3
  233. package/dist/experiment/host/teardown.d.mts +3 -3
  234. package/dist/experiment/host/teardown.d.ts +3 -3
  235. package/dist/experiment/host/types.cjs.map +1 -1
  236. package/dist/experiment/host/types.d.cts +19 -19
  237. package/dist/experiment/host/types.d.mts +19 -19
  238. package/dist/experiment/host/types.d.ts +19 -19
  239. package/dist/index.cjs +3 -3
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +3 -3
  242. package/dist/index.d.mts +3 -3
  243. package/dist/index.d.ts +3 -3
  244. package/dist/index.js +2 -2
  245. package/dist/index.mjs +2 -2
  246. package/dist/inspection/assertions.cjs +1 -1
  247. package/dist/inspection/assertions.cjs.map +1 -1
  248. package/dist/inspection/cli/contribution.cjs +8 -7
  249. package/dist/inspection/cli/contribution.cjs.map +1 -1
  250. package/dist/inspection/facts.cjs +4 -4
  251. package/dist/inspection/facts.cjs.map +1 -1
  252. package/dist/inspection/index.cjs +1 -5
  253. package/dist/inspection/index.cjs.map +1 -1
  254. package/dist/inspection/index.d.cts +1 -2
  255. package/dist/inspection/index.d.mts +1 -2
  256. package/dist/inspection/index.d.ts +1 -2
  257. package/dist/inspection/index.js +20 -26
  258. package/dist/inspection/lifecycle.cjs +7 -0
  259. package/dist/inspection/lifecycle.cjs.map +1 -0
  260. package/dist/inspection/lifecycle.d.cts +4 -0
  261. package/dist/inspection/lifecycle.d.mts +4 -0
  262. package/dist/inspection/lifecycle.d.ts +4 -0
  263. package/dist/inspection/lifecycle.js +6 -0
  264. package/dist/inspection/lifecycle.js.map +1 -0
  265. package/dist/inspection/notes.cjs +40 -0
  266. package/dist/inspection/notes.cjs.map +1 -0
  267. package/dist/inspection/notes.d.cts +12 -0
  268. package/dist/inspection/notes.d.mts +12 -0
  269. package/dist/inspection/notes.d.ts +12 -0
  270. package/dist/inspection/notes.js +8 -0
  271. package/dist/inspection/notes.js.map +1 -0
  272. package/dist/inspection/overview.cjs +12 -15
  273. package/dist/inspection/overview.cjs.map +1 -1
  274. package/dist/inspection/overview.d.cts +8 -6
  275. package/dist/inspection/overview.d.mts +8 -6
  276. package/dist/inspection/overview.d.ts +8 -6
  277. package/dist/inspection/planned-attempt.cjs +45 -0
  278. package/dist/inspection/planned-attempt.cjs.map +1 -0
  279. package/dist/inspection/planned-attempt.d.cts +109 -0
  280. package/dist/inspection/planned-attempt.d.mts +109 -0
  281. package/dist/inspection/planned-attempt.d.ts +109 -0
  282. package/dist/inspection/planned-attempt.js +24 -0
  283. package/dist/inspection/planned-attempt.js.map +1 -0
  284. package/dist/inspection/project-result.cjs +5 -5
  285. package/dist/inspection/project-result.cjs.map +1 -1
  286. package/dist/inspection/project-result.d.cts +58 -57
  287. package/dist/inspection/project-result.d.mts +58 -57
  288. package/dist/inspection/project-result.d.ts +58 -57
  289. package/dist/inspection/project-result.js +4 -4
  290. package/dist/inspection/project.cjs +3 -3
  291. package/dist/inspection/project.cjs.map +1 -1
  292. package/dist/inspection/protocol-values.cjs +1 -1
  293. package/dist/inspection/protocol-values.cjs.map +1 -1
  294. package/dist/inspection/protocol-values.d.cts +1 -1
  295. package/dist/inspection/protocol-values.d.mts +1 -1
  296. package/dist/inspection/protocol-values.d.ts +1 -1
  297. package/dist/inspection/protocol.cjs +8 -8
  298. package/dist/inspection/protocol.cjs.map +1 -1
  299. package/dist/inspection/protocol.d.cts +237 -219
  300. package/dist/inspection/protocol.d.mts +237 -219
  301. package/dist/inspection/protocol.d.ts +237 -219
  302. package/dist/inspection/public.cjs +1 -5
  303. package/dist/inspection/public.cjs.map +1 -1
  304. package/dist/inspection/public.d.cts +1 -2
  305. package/dist/inspection/public.d.mts +1 -2
  306. package/dist/inspection/public.d.ts +1 -2
  307. package/dist/inspection/public.js +14 -20
  308. package/dist/inspection/public.mjs +166 -129
  309. package/dist/inspection/query.cjs +1 -1
  310. package/dist/inspection/query.cjs.map +1 -1
  311. package/dist/inspection/results.cjs +61 -52
  312. package/dist/inspection/results.cjs.map +1 -1
  313. package/dist/inspection/results.d.cts +157 -140
  314. package/dist/inspection/results.d.mts +157 -140
  315. package/dist/inspection/results.d.ts +157 -140
  316. package/dist/inspection/select.cjs +33 -28
  317. package/dist/inspection/select.cjs.map +1 -1
  318. package/dist/inspection/source.cjs +1 -1
  319. package/dist/inspection/source.cjs.map +1 -1
  320. package/dist/inspection/sources.cjs +2 -2
  321. package/dist/inspection/sources.cjs.map +1 -1
  322. package/dist/inspection/trace.cjs +9 -8
  323. package/dist/inspection/trace.cjs.map +1 -1
  324. package/dist/inspection/trace.d.cts +4 -4
  325. package/dist/inspection/trace.d.mts +4 -4
  326. package/dist/inspection/trace.d.ts +4 -4
  327. package/dist/loaders/index.cjs +7 -279
  328. package/dist/loaders/index.cjs.map +1 -1
  329. package/dist/loaders/index.d.cts +2 -95
  330. package/dist/loaders/index.d.mts +2 -95
  331. package/dist/loaders/index.d.ts +2 -95
  332. package/dist/loaders/index.js +10 -12
  333. package/dist/loaders/index.mjs +10 -12
  334. package/dist/loaders/runtime.cjs +283 -0
  335. package/dist/loaders/runtime.cjs.map +1 -0
  336. package/dist/loaders/runtime.d.cts +95 -0
  337. package/dist/loaders/runtime.d.mts +95 -0
  338. package/dist/loaders/runtime.d.ts +95 -0
  339. package/dist/loaders/runtime.js +16 -0
  340. package/dist/loaders/runtime.js.map +1 -0
  341. package/dist/migrations/judge-provider.md +6 -6
  342. package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
  343. package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
  344. package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
  345. package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
  346. package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
  347. package/dist/model-roles.js +14 -0
  348. package/dist/model-roles.js.map +1 -0
  349. package/dist/o11y/adapter-usage-projection.cjs +9 -8
  350. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  351. package/dist/o11y/adapter-usage-projection.d.cts +23 -15
  352. package/dist/o11y/adapter-usage-projection.d.mts +23 -15
  353. package/dist/o11y/adapter-usage-projection.d.ts +23 -15
  354. package/dist/o11y/cache-read.cjs +14 -14
  355. package/dist/o11y/cache-read.cjs.map +1 -1
  356. package/dist/o11y/cache-read.d.cts +5 -5
  357. package/dist/o11y/cache-read.d.mts +5 -5
  358. package/dist/o11y/cache-read.d.ts +5 -5
  359. package/dist/o11y/derive.cjs.map +1 -1
  360. package/dist/o11y/derive.d.cts +2 -2
  361. package/dist/o11y/derive.d.mts +2 -2
  362. package/dist/o11y/derive.d.ts +2 -2
  363. package/dist/o11y/eval-usage.cjs +9 -9
  364. package/dist/o11y/eval-usage.cjs.map +1 -1
  365. package/dist/o11y/eval-usage.d.cts +7 -7
  366. package/dist/o11y/eval-usage.d.mts +7 -7
  367. package/dist/o11y/eval-usage.d.ts +7 -7
  368. package/dist/o11y/parsers/bub.cjs +57 -81
  369. package/dist/o11y/parsers/bub.cjs.map +1 -1
  370. package/dist/o11y/parsers/index.cjs.map +1 -1
  371. package/dist/o11y/parsers/index.d.cts +2 -0
  372. package/dist/o11y/parsers/index.d.mts +2 -0
  373. package/dist/o11y/parsers/index.d.ts +2 -0
  374. package/dist/o11y/parsers/opencode.cjs +129 -217
  375. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  376. package/dist/o11y/parsers/opencode.d.cts +2 -5
  377. package/dist/o11y/parsers/opencode.d.mts +2 -5
  378. package/dist/o11y/parsers/opencode.d.ts +2 -5
  379. package/dist/o11y/types.cjs.map +1 -1
  380. package/dist/o11y/types.d.cts +1 -1
  381. package/dist/o11y/types.d.mts +1 -1
  382. package/dist/o11y/types.d.ts +1 -1
  383. package/dist/plugin/contracts.cjs +170 -120
  384. package/dist/plugin/contracts.cjs.map +1 -1
  385. package/dist/plugin/contracts.d.cts +102 -90
  386. package/dist/plugin/contracts.d.mts +102 -90
  387. package/dist/plugin/contracts.d.ts +102 -90
  388. package/dist/plugin/contracts.js +16 -12
  389. package/dist/plugin/index.cjs.map +1 -1
  390. package/dist/plugin/index.d.cts +1 -1
  391. package/dist/plugin/index.d.mts +1 -1
  392. package/dist/plugin/index.d.ts +1 -1
  393. package/dist/plugin/link.cjs +69 -64
  394. package/dist/plugin/link.cjs.map +1 -1
  395. package/dist/plugin/link.d.cts +5 -3
  396. package/dist/plugin/link.d.mts +5 -3
  397. package/dist/plugin/link.d.ts +5 -3
  398. package/dist/plugin/link.js +12 -8
  399. package/dist/record/codec/seal-manifest.d.cts +3 -3
  400. package/dist/record/codec/seal-manifest.d.mts +3 -3
  401. package/dist/record/codec/seal-manifest.d.ts +3 -3
  402. package/dist/record/family/attempt-note/definition.cjs +12 -0
  403. package/dist/record/family/attempt-note/definition.cjs.map +1 -0
  404. package/dist/record/family/attempt-note/definition.d.cts +6 -0
  405. package/dist/record/family/attempt-note/definition.d.mts +6 -0
  406. package/dist/record/family/attempt-note/definition.d.ts +6 -0
  407. package/dist/record/family/attempt-note/definition.js +6 -0
  408. package/dist/record/family/attempt-note/definition.js.map +1 -0
  409. package/dist/record/family/attempt-note/persistence.cjs +10 -0
  410. package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
  411. package/dist/record/family/attempt-note/persistence.d.cts +6 -0
  412. package/dist/record/family/attempt-note/persistence.d.mts +6 -0
  413. package/dist/record/family/attempt-note/persistence.d.ts +6 -0
  414. package/dist/record/family/attempt-note/persistence.js +6 -0
  415. package/dist/record/family/attempt-note/persistence.js.map +1 -0
  416. package/dist/record/family/attempt-note/schema.cjs +20 -0
  417. package/dist/record/family/attempt-note/schema.cjs.map +1 -0
  418. package/dist/record/family/attempt-note/schema.d.cts +21 -0
  419. package/dist/record/family/attempt-note/schema.d.mts +21 -0
  420. package/dist/record/family/attempt-note/schema.d.ts +21 -0
  421. package/dist/record/family/attempt-note/schema.js +10 -0
  422. package/dist/record/family/attempt-note/schema.js.map +1 -0
  423. package/dist/record/family/catalog.cjs +32 -29
  424. package/dist/record/family/catalog.cjs.map +1 -1
  425. package/dist/record/family/catalog.d.cts +7 -2
  426. package/dist/record/family/catalog.d.mts +7 -2
  427. package/dist/record/family/catalog.d.ts +7 -2
  428. package/dist/record/family/current.cjs +48 -45
  429. package/dist/record/family/current.cjs.map +1 -1
  430. package/dist/record/family/current.d.cts +15 -0
  431. package/dist/record/family/current.d.mts +15 -0
  432. package/dist/record/family/current.d.ts +15 -0
  433. package/dist/record/model/index.js +66 -64
  434. package/dist/record/model/run-context.cjs +9 -3
  435. package/dist/record/model/run-context.cjs.map +1 -1
  436. package/dist/record/model/run-context.d.cts +9 -2
  437. package/dist/record/model/run-context.d.mts +9 -2
  438. package/dist/record/model/run-context.d.ts +9 -2
  439. package/dist/record/model/run-context.js +8 -6
  440. package/dist/record/model/seal-manifest.d.cts +1 -1
  441. package/dist/record/model/seal-manifest.d.mts +1 -1
  442. package/dist/record/model/seal-manifest.d.ts +1 -1
  443. package/dist/run/cli/contribution.cjs +6 -32
  444. package/dist/run/cli/contribution.cjs.map +1 -1
  445. package/dist/run/host/runtime.cjs +1 -1
  446. package/dist/run/host/runtime.cjs.map +1 -1
  447. package/dist/run/storage/sqlite.cjs +7 -7
  448. package/dist/run/storage/sqlite.cjs.map +1 -1
  449. package/dist/runner/adapter-usage.cjs +5 -3
  450. package/dist/runner/adapter-usage.cjs.map +1 -1
  451. package/dist/runner/adapter-usage.d.cts +2 -2
  452. package/dist/runner/adapter-usage.d.mts +2 -2
  453. package/dist/runner/adapter-usage.d.ts +2 -2
  454. package/dist/runner/adoption.cjs +9 -12
  455. package/dist/runner/adoption.cjs.map +1 -1
  456. package/dist/runner/attempt-notes.cjs +8 -0
  457. package/dist/runner/attempt-notes.cjs.map +1 -0
  458. package/dist/runner/attempt-notes.d.cts +4 -0
  459. package/dist/runner/attempt-notes.d.mts +4 -0
  460. package/dist/runner/attempt-notes.d.ts +4 -0
  461. package/dist/runner/attempt-notes.js +8 -0
  462. package/dist/runner/attempt-notes.js.map +1 -0
  463. package/dist/runner/attempt.cjs +61 -73
  464. package/dist/runner/attempt.cjs.map +1 -1
  465. package/dist/runner/attempt.d.cts +3 -3
  466. package/dist/runner/attempt.d.mts +3 -3
  467. package/dist/runner/attempt.d.ts +3 -3
  468. package/dist/runner/command-plan.cjs +21 -26
  469. package/dist/runner/command-plan.cjs.map +1 -1
  470. package/dist/runner/command-plan.d.cts +4 -4
  471. package/dist/runner/command-plan.d.mts +4 -4
  472. package/dist/runner/command-plan.d.ts +4 -4
  473. package/dist/runner/command-plan.js +4 -4
  474. package/dist/runner/config-identity.cjs.map +1 -1
  475. package/dist/runner/config-identity.d.cts +2 -2
  476. package/dist/runner/config-identity.d.mts +2 -2
  477. package/dist/runner/config-identity.d.ts +2 -2
  478. package/dist/runner/discover.cjs +6 -6
  479. package/dist/runner/discover.cjs.map +1 -1
  480. package/dist/runner/eval-selection.cjs +2 -2
  481. package/dist/runner/eval-selection.cjs.map +1 -1
  482. package/dist/runner/eval-selection.d.cts +2 -2
  483. package/dist/runner/eval-selection.d.mts +2 -2
  484. package/dist/runner/eval-selection.d.ts +2 -2
  485. package/dist/runner/feedback/human.cjs +1 -1
  486. package/dist/runner/feedback/human.cjs.map +1 -1
  487. package/dist/runner/feedback/json.cjs +4 -2
  488. package/dist/runner/feedback/json.cjs.map +1 -1
  489. package/dist/runner/feedback/json.d.cts +1 -1
  490. package/dist/runner/feedback/json.d.mts +1 -1
  491. package/dist/runner/feedback/json.d.ts +1 -1
  492. package/dist/runner/feedback/sink.cjs +1 -1
  493. package/dist/runner/feedback/sink.cjs.map +1 -1
  494. package/dist/runner/feedback/sink.d.cts +1 -1
  495. package/dist/runner/feedback/sink.d.mts +1 -1
  496. package/dist/runner/feedback/sink.d.ts +1 -1
  497. package/dist/runner/fingerprint.cjs +1 -1
  498. package/dist/runner/fingerprint.cjs.map +1 -1
  499. package/dist/runner/project-target.cjs.map +1 -1
  500. package/dist/runner/project-target.d.cts +2 -2
  501. package/dist/runner/project-target.d.mts +2 -2
  502. package/dist/runner/project-target.d.ts +2 -2
  503. package/dist/runner/record/attachments.cjs +2 -2
  504. package/dist/runner/record/attachments.cjs.map +1 -1
  505. package/dist/runner/record/planning.cjs +8 -2
  506. package/dist/runner/record/planning.cjs.map +1 -1
  507. package/dist/runner/record.cjs +2 -0
  508. package/dist/runner/record.cjs.map +1 -1
  509. package/dist/runner/report.cjs +3 -3
  510. package/dist/runner/report.cjs.map +1 -1
  511. package/dist/runner/report.d.cts +1 -1
  512. package/dist/runner/report.d.mts +1 -1
  513. package/dist/runner/report.d.ts +1 -1
  514. package/dist/runner/reuse-plan.cjs +2 -2
  515. package/dist/runner/reuse-plan.cjs.map +1 -1
  516. package/dist/runner/run.cjs +10 -45
  517. package/dist/runner/run.cjs.map +1 -1
  518. package/dist/runner/sandbox-pool.cjs +1 -2
  519. package/dist/runner/sandbox-pool.cjs.map +1 -1
  520. package/dist/runner/setup-prefix-preparation.cjs +1 -1
  521. package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
  522. package/dist/runner/teardown-registry.cjs +2 -2
  523. package/dist/runner/teardown-registry.cjs.map +1 -1
  524. package/dist/runner/teardown-registry.d.cts +1 -1
  525. package/dist/runner/teardown-registry.d.mts +1 -1
  526. package/dist/runner/teardown-registry.d.ts +1 -1
  527. package/dist/runner/types.cjs +4 -4
  528. package/dist/runner/types.cjs.map +1 -1
  529. package/dist/runner/types.d.cts +64 -93
  530. package/dist/runner/types.d.mts +64 -93
  531. package/dist/runner/types.d.ts +64 -93
  532. package/dist/runner/types.js +2 -2
  533. package/dist/sandbox/action.cjs +1 -1
  534. package/dist/sandbox/action.cjs.map +1 -1
  535. package/dist/sandbox/cli/contribution.cjs +17 -14
  536. package/dist/sandbox/cli/contribution.cjs.map +1 -1
  537. package/dist/sandbox/cli/contribution.d.cts +1 -1
  538. package/dist/sandbox/cli/contribution.d.mts +1 -1
  539. package/dist/sandbox/cli/contribution.d.ts +1 -1
  540. package/dist/sandbox/commands.cjs +1 -1
  541. package/dist/sandbox/commands.cjs.map +1 -1
  542. package/dist/sandbox/commands.d.cts +1 -1
  543. package/dist/sandbox/commands.d.mts +1 -1
  544. package/dist/sandbox/commands.d.ts +1 -1
  545. package/dist/sandbox/compose.cjs +2 -2
  546. package/dist/sandbox/compose.cjs.map +1 -1
  547. package/dist/sandbox/docker-profile/registry.cjs +5 -9
  548. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  549. package/dist/sandbox/docker-profile/registry.d.cts +0 -3
  550. package/dist/sandbox/docker-profile/registry.d.mts +0 -3
  551. package/dist/sandbox/docker-profile/registry.d.ts +0 -3
  552. package/dist/sandbox/docker-profile/registry.js +6 -12
  553. package/dist/sandbox/docker-profile/runtime.cjs +1 -1
  554. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  555. package/dist/sandbox/docker-profile/schema.cjs +12 -16
  556. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  557. package/dist/sandbox/docker-profile/schema.d.cts +2 -6
  558. package/dist/sandbox/docker-profile/schema.d.mts +2 -6
  559. package/dist/sandbox/docker-profile/schema.d.ts +2 -6
  560. package/dist/sandbox/docker-profile/schema.js +24 -32
  561. package/dist/sandbox/incus.cjs +2 -2
  562. package/dist/sandbox/incus.cjs.map +1 -1
  563. package/dist/sandbox/index.cjs +4 -35
  564. package/dist/sandbox/index.cjs.map +1 -1
  565. package/dist/sandbox/index.d.cts +4 -8
  566. package/dist/sandbox/index.d.mts +4 -8
  567. package/dist/sandbox/index.d.ts +4 -8
  568. package/dist/sandbox/index.js +116 -172
  569. package/dist/sandbox/index.mjs +116 -172
  570. package/dist/sandbox/layer.cjs +3 -3
  571. package/dist/sandbox/layer.cjs.map +1 -1
  572. package/dist/sandbox/link.cjs +5 -0
  573. package/dist/sandbox/link.cjs.map +1 -1
  574. package/dist/sandbox/link.d.cts +3 -0
  575. package/dist/sandbox/link.d.mts +3 -0
  576. package/dist/sandbox/link.d.ts +3 -0
  577. package/dist/sandbox/runtime.cjs +9 -4
  578. package/dist/sandbox/runtime.cjs.map +1 -1
  579. package/dist/shared/failure-class.cjs +5 -5
  580. package/dist/shared/failure-class.cjs.map +1 -1
  581. package/dist/shared/failure-class.d.cts +4 -10
  582. package/dist/shared/failure-class.d.mts +4 -10
  583. package/dist/shared/failure-class.d.ts +4 -10
  584. package/dist/shared/types.cjs.map +1 -1
  585. package/dist/shared/types.d.cts +1 -1
  586. package/dist/shared/types.d.mts +1 -1
  587. package/dist/shared/types.d.ts +1 -1
  588. package/dist/show/contribution.cjs +17 -2
  589. package/dist/show/contribution.cjs.map +1 -1
  590. package/dist/show/contribution.d.cts +14 -0
  591. package/dist/show/contribution.d.mts +14 -0
  592. package/dist/show/contribution.d.ts +14 -0
  593. package/dist/show/model.cjs +8 -5
  594. package/dist/show/model.cjs.map +1 -1
  595. package/dist/show/model.d.cts +11 -8
  596. package/dist/show/model.d.mts +11 -8
  597. package/dist/show/model.d.ts +11 -8
  598. package/dist/show/render.cjs +34 -22
  599. package/dist/show/render.cjs.map +1 -1
  600. package/dist/sources/projector.cjs +1 -1
  601. package/dist/sources/projector.cjs.map +1 -1
  602. package/dist/types.cjs +1 -1
  603. package/dist/types.cjs.map +1 -1
  604. package/dist/types.d.cts +1 -1
  605. package/dist/types.d.mts +1 -1
  606. package/dist/types.d.ts +1 -1
  607. package/dist/types.js +2 -2
  608. package/dist/view/app-dist/.vite/manifest.json +2 -2
  609. package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
  610. package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
  611. package/dist/view/app-dist/index.html +1 -1
  612. package/dist/view/cli/contribution.cjs +1 -1
  613. package/dist/view/cli/contribution.cjs.map +1 -1
  614. package/dist/view/function-runtime.mjs +318 -121
  615. package/dist/view/http-protocol.d.cts +1 -1
  616. package/dist/view/http-protocol.d.mts +1 -1
  617. package/dist/view/http-protocol.d.ts +1 -1
  618. package/dist/view/inspection-host.cjs +2 -2
  619. package/dist/view/inspection-host.cjs.map +1 -1
  620. package/dist/view/inspection-host.d.cts +349 -331
  621. package/dist/view/inspection-host.d.mts +349 -331
  622. package/dist/view/inspection-host.d.ts +349 -331
  623. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
  624. package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
  625. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  626. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  627. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  628. package/docs-site/zh/explanation/adapter.mdx +6 -6
  629. package/docs-site/zh/explanation/assert.mdx +7 -7
  630. package/docs-site/zh/explanation/drive.mdx +4 -4
  631. package/docs-site/zh/explanation/hitl.mdx +2 -2
  632. package/docs-site/zh/explanation/judge.mdx +2 -2
  633. package/docs-site/zh/introduction.mdx +2 -2
  634. package/docs-site/zh/reference/builtin-agents.mdx +46 -49
  635. package/docs-site/zh/reference/cli.mdx +16 -14
  636. package/docs-site/zh/reference/define-agent.mdx +19 -19
  637. package/docs-site/zh/reference/define-config.mdx +7 -15
  638. package/docs-site/zh/reference/define-eval.mdx +20 -14
  639. package/docs-site/zh/reference/define-experiment.mdx +18 -39
  640. package/docs-site/zh/reference/events.mdx +1 -1
  641. package/docs-site/zh/reference/expect.mdx +21 -0
  642. package/docs-site/zh/reference/official-adapters.mdx +12 -5
  643. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  644. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
  645. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  646. package/docs-site/zh/tutorials/authoring.mdx +2 -2
  647. package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
  648. package/docs-site/zh/tutorials/concurrency.mdx +8 -8
  649. package/docs-site/zh/tutorials/configuration.mdx +5 -5
  650. package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
  651. package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
  652. package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
  653. package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
  654. package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
  655. package/docs-site/zh/tutorials/plugins.mdx +49 -143
  656. package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
  657. package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
  658. package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
  659. package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
  660. package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
  661. package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
  662. package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
  663. package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
  664. package/docs-site/zh/tutorials/write-send.mdx +13 -13
  665. package/package.json +1 -1
  666. package/dist/agents/effect-runtime.cjs.map +0 -1
  667. package/dist/agents/effect-runtime.d.cts +0 -29
  668. package/dist/agents/effect-runtime.d.mts +0 -29
  669. package/dist/agents/effect-runtime.d.ts +0 -29
  670. package/dist/agents/effect-runtime.js +0 -16
  671. package/dist/agents/effect-runtime.js.map +0 -1
  672. package/dist/agents/session-slot.cjs.map +0 -1
  673. package/dist/agents/session-slot.d.cts +0 -12
  674. package/dist/agents/session-slot.d.mts +0 -12
  675. package/dist/agents/session-slot.d.ts +0 -12
  676. package/dist/agents/session-slot.js +0 -6
  677. package/dist/agents/session-slot.js.map +0 -1
  678. package/dist/model-slots.js +0 -14
  679. package/dist/model-slots.js.map +0 -1
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.bytes = exports.count = exports.ratio = exports.usd = exports.tokens = exports.seconds = exports.ms = void 0;
4
+ exports.isQuantity = isQuantity;
5
+ exports.formatNumericUnit = formatNumericUnit;
6
+ const units = new Set(["ms", "seconds", "tokens", "usd", "ratio", "count", "bytes"]);
7
+ function isQuantity(value) {
8
+ if (value === null || typeof value !== "object")
9
+ return false;
10
+ const candidate = value;
11
+ return typeof candidate.unit === "string" && units.has(candidate.unit) &&
12
+ typeof candidate.value === "number" && Number.isFinite(candidate.value);
13
+ }
14
+ function quantity(value, unit) {
15
+ if (typeof value !== "number" || !Number.isFinite(value))
16
+ throw new RangeError(`${unit}() requires a finite number.`);
17
+ if (unit === "ratio" && (value < 0 || value > 1))
18
+ throw new RangeError("ratio() requires a value in [0, 1].");
19
+ return Object.freeze({ value, unit });
20
+ }
21
+ const ms = (value) => quantity(value, "ms");
22
+ exports.ms = ms;
23
+ const seconds = (value) => quantity(value, "seconds");
24
+ exports.seconds = seconds;
25
+ const tokens = (value) => quantity(value, "tokens");
26
+ exports.tokens = tokens;
27
+ const usd = (value) => quantity(value, "usd");
28
+ exports.usd = usd;
29
+ const ratio = (value) => quantity(value, "ratio");
30
+ exports.ratio = ratio;
31
+ const count = (value) => quantity(value, "count");
32
+ exports.count = count;
33
+ const bytes = (value) => quantity(value, "bytes");
34
+ exports.bytes = bytes;
35
+ function formatNumericUnit(value, unit) {
36
+ if (unit === "ratio")
37
+ return `${Number((value * 100).toPrecision(12))}%`;
38
+ if (unit === "usd")
39
+ return `$${value}`;
40
+ return unit === undefined ? String(value) : `${value} ${unit}`;
41
+ }
42
+ //# sourceMappingURL=quantity.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantity.js","sourceRoot":"","sources":["quantity.ts"],"names":[],"mappings":";;;AASA,gCASC;AAeD,8CAMC;AA/BD,MAAM,KAAK,GAAwB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1G,SAAgB,UAAU,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3C,OAAO,KAAK,CAAC;IACjB,MAAM,SAAS,GAAG,KAGjB,CAAC;IACF,OAAO,OAAO,SAAS,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;QAClE,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAChF,CAAC;AACD,SAAS,QAAQ,CAAiB,KAAa,EAAE,IAAO;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QACpD,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,8BAA8B,CAAC,CAAC;IAChE,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;QAC5C,MAAM,IAAI,UAAU,CAAC,qCAAqC,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAgB,CAAC;AACzD,CAAC;AACM,MAAM,EAAE,GAAG,CAAC,KAAa,EAAkB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAA9D,QAAA,EAAE,MAA4D;AACpE,MAAM,OAAO,GAAG,CAAC,KAAa,EAAuB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;AAA7E,QAAA,OAAO,WAAsE;AACnF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAsB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAA1E,QAAA,MAAM,UAAoE;AAChF,MAAM,GAAG,GAAG,CAAC,KAAa,EAAmB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAAjE,QAAA,GAAG,OAA8D;AACvE,MAAM,KAAK,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAAvE,QAAA,KAAK,SAAkE;AAC7E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAAvE,QAAA,KAAK,SAAkE;AAC7E,MAAM,KAAK,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAAvE,QAAA,KAAK,SAAkE;AACpF,SAAgB,iBAAiB,CAAC,KAAa,EAAE,IAAa;IAC1D,IAAI,IAAI,KAAK,OAAO;QAChB,OAAO,GAAG,MAAM,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC;IACvD,IAAI,IAAI,KAAK,KAAK;QACd,OAAO,IAAI,KAAK,EAAE,CAAC;IACvB,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;AACnE,CAAC","sourcesContent":["/** A runtime-visible unit, with no implicit conversion or arithmetic. */\nexport type Unit = \"ms\" | \"seconds\" | \"tokens\" | \"usd\" | \"ratio\" | \"count\" | \"bytes\";\ndeclare const quantityBrand: unique symbol;\nexport type Quantity<U extends Unit = Unit> = {\n readonly value: number;\n readonly unit: U;\n readonly [quantityBrand]: U;\n};\nconst units: ReadonlySet<string> = new Set([\"ms\", \"seconds\", \"tokens\", \"usd\", \"ratio\", \"count\", \"bytes\"]);\nexport function isQuantity(value: unknown): value is Quantity {\n if (value === null || typeof value !== \"object\")\n return false;\n const candidate = value as {\n value?: unknown;\n unit?: unknown;\n };\n return typeof candidate.unit === \"string\" && units.has(candidate.unit) &&\n typeof candidate.value === \"number\" && Number.isFinite(candidate.value);\n}\nfunction quantity<U extends Unit>(value: number, unit: U): Quantity<U> {\n if (typeof value !== \"number\" || !Number.isFinite(value))\n throw new RangeError(`${unit}() requires a finite number.`);\n if (unit === \"ratio\" && (value < 0 || value > 1))\n throw new RangeError(\"ratio() requires a value in [0, 1].\");\n return Object.freeze({ value, unit }) as Quantity<U>;\n}\nexport const ms = (value: number): Quantity<\"ms\"> => quantity(value, \"ms\");\nexport const seconds = (value: number): Quantity<\"seconds\"> => quantity(value, \"seconds\");\nexport const tokens = (value: number): Quantity<\"tokens\"> => quantity(value, \"tokens\");\nexport const usd = (value: number): Quantity<\"usd\"> => quantity(value, \"usd\");\nexport const ratio = (value: number): Quantity<\"ratio\"> => quantity(value, \"ratio\");\nexport const count = (value: number): Quantity<\"count\"> => quantity(value, \"count\");\nexport const bytes = (value: number): Quantity<\"bytes\"> => quantity(value, \"bytes\");\nexport function formatNumericUnit(value: number, unit?: string): string {\n if (unit === \"ratio\")\n return `${Number((value * 100).toPrecision(12))}%`;\n if (unit === \"usd\")\n return `$${value}`;\n return unit === undefined ? String(value) : `${value} ${unit}`;\n}\n"]}
@@ -0,0 +1,18 @@
1
+ /** A runtime-visible unit, with no implicit conversion or arithmetic. */
2
+ export type Unit = "ms" | "seconds" | "tokens" | "usd" | "ratio" | "count" | "bytes";
3
+ declare const quantityBrand: unique symbol;
4
+ export type Quantity<U extends Unit = Unit> = {
5
+ readonly value: number;
6
+ readonly unit: U;
7
+ readonly [quantityBrand]: U;
8
+ };
9
+ export declare function isQuantity(value: unknown): value is Quantity;
10
+ export declare const ms: (value: number) => Quantity<"ms">;
11
+ export declare const seconds: (value: number) => Quantity<"seconds">;
12
+ export declare const tokens: (value: number) => Quantity<"tokens">;
13
+ export declare const usd: (value: number) => Quantity<"usd">;
14
+ export declare const ratio: (value: number) => Quantity<"ratio">;
15
+ export declare const count: (value: number) => Quantity<"count">;
16
+ export declare const bytes: (value: number) => Quantity<"bytes">;
17
+ export declare function formatNumericUnit(value: number, unit?: string): string;
18
+ export {};
@@ -0,0 +1,18 @@
1
+ /** A runtime-visible unit, with no implicit conversion or arithmetic. */
2
+ export type Unit = "ms" | "seconds" | "tokens" | "usd" | "ratio" | "count" | "bytes";
3
+ declare const quantityBrand: unique symbol;
4
+ export type Quantity<U extends Unit = Unit> = {
5
+ readonly value: number;
6
+ readonly unit: U;
7
+ readonly [quantityBrand]: U;
8
+ };
9
+ export declare function isQuantity(value: unknown): value is Quantity;
10
+ export declare const ms: (value: number) => Quantity<"ms">;
11
+ export declare const seconds: (value: number) => Quantity<"seconds">;
12
+ export declare const tokens: (value: number) => Quantity<"tokens">;
13
+ export declare const usd: (value: number) => Quantity<"usd">;
14
+ export declare const ratio: (value: number) => Quantity<"ratio">;
15
+ export declare const count: (value: number) => Quantity<"count">;
16
+ export declare const bytes: (value: number) => Quantity<"bytes">;
17
+ export declare function formatNumericUnit(value: number, unit?: string): string;
18
+ export {};
@@ -0,0 +1,18 @@
1
+ /** A runtime-visible unit, with no implicit conversion or arithmetic. */
2
+ export type Unit = "ms" | "seconds" | "tokens" | "usd" | "ratio" | "count" | "bytes";
3
+ declare const quantityBrand: unique symbol;
4
+ export type Quantity<U extends Unit = Unit> = {
5
+ readonly value: number;
6
+ readonly unit: U;
7
+ readonly [quantityBrand]: U;
8
+ };
9
+ export declare function isQuantity(value: unknown): value is Quantity;
10
+ export declare const ms: (value: number) => Quantity<"ms">;
11
+ export declare const seconds: (value: number) => Quantity<"seconds">;
12
+ export declare const tokens: (value: number) => Quantity<"tokens">;
13
+ export declare const usd: (value: number) => Quantity<"usd">;
14
+ export declare const ratio: (value: number) => Quantity<"ratio">;
15
+ export declare const count: (value: number) => Quantity<"count">;
16
+ export declare const bytes: (value: number) => Quantity<"bytes">;
17
+ export declare function formatNumericUnit(value: number, unit?: string): string;
18
+ export {};
@@ -0,0 +1,22 @@
1
+ import { createRequire as __niceevalCreateRequire } from "node:module";
2
+ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
+ const __niceevalCanonical = __niceevalRequire("./quantity.cjs");
4
+ const __niceevalExport0 = __niceevalCanonical["bytes"];
5
+ export { __niceevalExport0 as bytes };
6
+ const __niceevalExport1 = __niceevalCanonical["count"];
7
+ export { __niceevalExport1 as count };
8
+ const __niceevalExport2 = __niceevalCanonical["formatNumericUnit"];
9
+ export { __niceevalExport2 as formatNumericUnit };
10
+ const __niceevalExport3 = __niceevalCanonical["isQuantity"];
11
+ export { __niceevalExport3 as isQuantity };
12
+ const __niceevalExport4 = __niceevalCanonical["ms"];
13
+ export { __niceevalExport4 as ms };
14
+ const __niceevalExport5 = __niceevalCanonical["ratio"];
15
+ export { __niceevalExport5 as ratio };
16
+ const __niceevalExport6 = __niceevalCanonical["seconds"];
17
+ export { __niceevalExport6 as seconds };
18
+ const __niceevalExport7 = __niceevalCanonical["tokens"];
19
+ export { __niceevalExport7 as tokens };
20
+ const __niceevalExport8 = __niceevalCanonical["usd"];
21
+ export { __niceevalExport8 as usd };
22
+ //# sourceMappingURL=quantity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantity.js","sources":[],"names":[],"mappings":""}
@@ -149,6 +149,8 @@ function encodeCriterion(criterion) {
149
149
  data: Object.freeze({
150
150
  comparator: criterion.numeric.comparator,
151
151
  threshold: criterion.numeric.threshold,
152
+ ...(criterion.numeric.upperThreshold === undefined ? {} : { upperThreshold: criterion.numeric.upperThreshold }),
153
+ ...(criterion.numeric.unit === undefined ? {} : { unit: criterion.numeric.unit }),
152
154
  subject: criterion.numeric.subject,
153
155
  }),
154
156
  });
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.js","sourceRoot":"","sources":["attachment.ts"],"names":[],"mappings":";;AAoWA,sDA6DC;AAED,gEA+CC;AAoJD,gFAkDC;AAMD,8DAOC;AArqBD,mCAAgD;AAChD,mDAAsD;AACtD,wDAA4D;AAI5D,gFAA0F;AAC1F,6EAAoF;AAGpF,yCAA0P;AAC1P,+CAAuL;AASvL,MAAM,kCAAkC,GAAgD,eAAM,CAAC,MAAM,CAAC;IAClG,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,gCAAgC,CAAC;CACzD,CAAC,CAAC;AACH,MAAM,mCAAmC,GAAG,eAAM,CAAC,KAAK,CAAC;IACrD,eAAM,CAAC,MAAM,CAAC;QACV,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,aAAa,CAAC;QACnC,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,cAAc,CAAC;KACzC,CAAC;IACF,eAAM,CAAC,MAAM,CAAC;QACV,IAAI,EAAE,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAC/B,OAAO,EAAE,eAAM,CAAC,MAAM,CAAC,kCAAkC,CAAC;QAC1D,QAAQ,EAAE,eAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACtD,UAAU,EAAE,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC;QACxG,OAAO,EAAE,eAAM,CAAC,MAAM,CAAC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,eAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;KACpI,CAAC;CACL,CAAC,CAAC;AACH,MAAM,yBAAyB,GAAG,IAAA,wCAA6B,EAAC,mCAAmC,CAAC,CAAC;AA0BrG,SAAS,mBAAmB,CAAC,KAA6B;IACtD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzG,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,OAAO,GAAgD,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AACD,SAAS,oBAAoB,CAAC,KAA8B;IACxD,MAAM,OAAO,GAAgD,EAAE,CAAC;IAChE,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAClC,CAAC;AACD,2EAA2E;AAC3E,2EAA2E;AAC3E,0EAA0E;AAC1E,+BAA+B;AAC/B,MAAM,4BAA4B,GAAG,CAAC,CAAC;AACvC,SAAS,gBAAgB,CAAC,KAAc,EAAE,KAAK,GAAG,CAAC,EAAE,kBAAkB,GAAG,4BAA4B;IAClG,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ;QACzE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,IAAI,KAAK,IAAI,kBAAkB,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,MAAe;YACrB,IAAI,EAAE,qEAAqE;SAC9E,CAAC,CAAC;IACP,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,MAAe;YACrB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC;SACnG,CAAC,CAAC;IACP,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,QAAiB;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC/E,KAAK;gBACL,KAAK,EAAE,gBAAgB,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,kBAAkB,CAAC;aACjE,CAAC,CAAC,CAAC;SACP,CAAC,CAAC;IACP,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,aAAsB,EAAE,MAAM,EAAE,oBAA6B,EAAE,CAAC,CAAC;AAClG,CAAC;AACD,SAAS,kBAAkB,CAAC,IAAiD,EAAE,kBAAkB,GAAG,4BAA4B;IAC5H,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACjD,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,GAAG,CAAC,GAAG,CAAC,UAAU,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,kBAAkB,CAAC,EAAE,CAAC;KACjF,CAAC,CAAC,CAAC,CAAC;AACT,CAAC;AACD,SAAS,qBAAqB,CAAC,QAAqC;IAChE,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;QACxC,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,mBAA4B;YAClC,cAAc,EAAE,QAAQ,CAAC,cAAc;YACvC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI;gBACzB,OAAO,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;aACpD,CAAC;YACF,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;SAC1D,CAAC,CAAC;IACP,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,KAA6C,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/H,MAAM,MAAM,GAEG,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;QAC9C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,KAAK,EAAE,SAAkB;YACzB,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;SACjD,CAAC;QACF,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,KAAK,YAAY;YACpC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,KAAK,EAAE,YAAqB;gBAC5B,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC;oBAC3B,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC;oBAClF,qBAAqB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,qBAAqB,CAAC;oBAClF,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,iBAAiB;oBACpE,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,aAAa;oBAC5D,eAAe,EAAE,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,CAAC,CAAC;iBAC1F,CAAC;aACL,CAAC;YACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM;aACjC,CAAC,CAAC;IACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,kBAA2B;QACjC,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;YACtE,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC;SAC1C,CAAC,CAAC,CAAC;QACJ,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,QAAQ,CAAC,OAAO;YACnB,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;SACvG,CAAC;QACF,MAAM;QACN,YAAY,EAAE,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;KAC1D,CAAC,CAAC;AACP,CAAC;AACD,SAAS,eAAe,CAAC,SAA6B;IAClD,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,aAAa;YACd,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;gBACzB,OAAO,MAAM,CAAC,MAAM,CAAC;oBACjB,IAAI,EAAE,SAAkB;oBACxB,EAAE,EAAE,uBAAgC;oBACpC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;wBAChB,UAAU,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU;wBACxC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;wBACtC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;qBACrC,CAAC;iBACL,CAAC,CAAC;YACP,CAAC;YACD,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,gBAAyB;gBAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;aAClF,CAAC,CAAC;QACP,KAAK,cAAc;YACf,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,iBAA0B;gBAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;aAClF,CAAC,CAAC;QACP,KAAK,YAAY;YACb,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,eAAwB;gBAC5B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;oBAChB,KAAK,EAAE,SAAS,CAAC,KAAK;oBACtB,UAAU,EAAE,SAAS,CAAC,UAAU;oBAChC,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,GAAG,CAAC,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,CAAC;oBAC1E,GAAG,CAAC,SAAS,CAAC,UAAU,KAAK,SAAS;wBAClC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC;4BACE,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ;gCAC9C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAiB,EAAE,CAAC;gCAC5C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;yBAC9F,CAAC;iBACT,CAAC;aACL,CAAC,CAAC;QACP,KAAK,mBAAmB;YACpB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,sBAA+B;gBACnC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;aACxE,CAAC,CAAC;QACP,KAAK,2BAA2B;YAC5B,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,oBAA6B;gBACjC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;aACxE,CAAC,CAAC;QACP,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACpB,QAAQ,SAAS,CAAC,SAAS,EAAE,CAAC;gBAC1B,KAAK,eAAe;oBAChB,OAAO,MAAM,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,SAAkB;wBACxB,EAAE,EAAE,mBAA4B;wBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;qBAC3G,CAAC,CAAC;gBACP,KAAK,YAAY;oBACb,OAAO,MAAM,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,SAAkB;wBACxB,EAAE,EAAE,mBAA4B;wBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,YAAqB,EAAE,CAAC;qBAC5D,CAAC,CAAC;gBACP,KAAK,cAAc;oBACf,OAAO,MAAM,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,SAAkB;wBACxB,EAAE,EAAE,mBAA4B;wBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;4BAChB,SAAS,EAAE,cAAuB;4BAClC,IAAI,EAAE,SAAS,CAAC,IAAI;4BACpB,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;4BACvE,GAAG,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;4BACvE,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC;yBACvE,CAAC;qBACL,CAAC,CAAC;gBACP,KAAK,cAAc;oBACf,OAAO,MAAM,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,SAAkB;wBACxB,EAAE,EAAE,mBAA4B;wBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,cAAuB,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC;qBACpF,CAAC,CAAC;gBACP,KAAK,aAAa;oBACd,OAAO,MAAM,CAAC,MAAM,CAAC;wBACjB,IAAI,EAAE,SAAkB;wBACxB,EAAE,EAAE,mBAA4B;wBAChC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;4BAChB,SAAS,EAAE,aAAsB;4BACjC,OAAO,EAAE,SAAS,CAAC,OAAO;4BAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;4BACtB,OAAO,EAAE,SAAS,CAAC,OAAO;yBAC7B,CAAC;qBACL,CAAC,CAAC;YACX,CAAC;QACL,CAAC;QACD,KAAK,cAAc;YACf,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,EAAE,EAAE,iBAA0B;gBAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC;aACpD,CAAC,CAAC;QACP,KAAK,aAAa;YACd,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAS,CAAC,IAAI;gBACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;gBAC5B,IAAI,EAAE,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC;aAC5C,CAAC,CAAC;IACX,CAAC;AACL,CAAC;AACD,SAAS,cAAc,CAAC,QAA2B;IAC/C,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,aAAa,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,IAAA,yBAAc,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;YACjD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAkB,EAAE,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,QAAiB;gBACtG,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,UAAU,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,IAAA,wCAAsB,EAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YACxG,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,IAAI,EAAE,SAAkB;gBACxB,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC7B,QAAQ,EAAE,MAAe;gBACzB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,IAAI;aAChB,CAAC,CAAC;QACP,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACvB,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClD,IAAI,EAAE,cAAc;gBACpB,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC5B,CAAC,CAAC,CAAC;YACJ,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,iEAAiE;gBACjE,wDAAwD;gBACxD,IAAI,EAAE,SAAkB;gBACxB,MAAM,EAAE,eAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAC7B,QAAQ,EAAE,MAAe;gBACzB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,OAAO,EAAE,QAAQ,CAAC,OAAO;aAC5B,CAAC,CAAC;QACP,CAAC;IACL,CAAC;AACL,CAAC;AACD,SAAS,cAAc,CAAC,QAA2B;IAC/C,QAAQ,QAAQ,CAAC,KAAK,EAAE,CAAC;QACrB,KAAK,UAAU;YACX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,CAAC,CAAC;QACzD,KAAK,SAAS;YACV,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACjF,KAAK,aAAa;YACd,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACrF,KAAK,gBAAgB;YACjB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,gBAAyB,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5F,CAAC;AACL,CAAC;AACD,SAAS,iBAAiB,CAAC,WAA2C;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAuB,EAAE;QACrE,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,UAAU;gBACX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3F,KAAK,SAAS;gBACV,OAAO,MAAM,CAAC,MAAM,CAAC;oBACjB,IAAI,EAAE,SAAkB;oBACxB,QAAQ,EAAE,UAAU,CAAC,QAAQ;oBAC7B,GAAG,CAAC,UAAU,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC;iBACxF,CAAC,CAAC;YACP,KAAK,WAAW;gBACZ,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAoB,EAAE,YAAY,EAAE,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;YAChG,KAAK,kBAAkB;gBACnB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,kBAA2B,EAAE,CAAC,CAAC;YAChE,KAAK,kBAAkB;gBACnB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,UAAU,EAAE,CAAC,CAAC;QAChD,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AACD,SAAgB,qBAAqB,CAAC,MAAuB;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,KAAK,SAAS;QAC9C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;IACtG,QAAQ,MAAM,CAAC,KAAK,EAAE,CAAC;QACnB,KAAK,SAAS;YACV,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,SAAkB;gBACzB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;oBAClC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACvG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAqB,EAAE,CAAC;gBACrD,GAAG,UAAU;gBACb,GAAG,OAAO;aACb,CAAC,CAAC;QACP,KAAK,YAAY;YACb,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,YAAqB;gBAC5B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,QAAQ;oBAClC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAiB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACvG,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAqB,EAAE,CAAC;gBACrD,GAAG,UAAU;gBACb,GAAG,OAAO;aACb,CAAC,CAAC;QACP,KAAK,aAAa;YACd,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,aAAsB;gBAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa;oBACvC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5G,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAqB,EAAE,CAAC;gBACrD,GAAG,UAAU;gBACb,GAAG,OAAO;aACb,CAAC,CAAC;QACP,KAAK,SAAS;YACV,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,SAAkB;gBACzB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa;oBACvC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5G,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAqB,EAAE,CAAC;gBACrD,GAAG,UAAU;gBACb,GAAG,OAAO;aACb,CAAC,CAAC;QACP,KAAK,gBAAgB;YACjB,OAAO,MAAM,CAAC,MAAM,CAAC;gBACjB,KAAK,EAAE,gBAAyB;gBAChC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,aAAa;oBACvC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC5G,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,YAAqB,EAAE,CAAC;gBACrD,GAAG,UAAU;gBACb,GAAG,OAAO;aACb,CAAC,CAAC;IACX,CAAC;AACL,CAAC;AACD,yDAAyD;AACzD,SAAgB,0BAA0B,CAAC,KAA2B;IAClE,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACtE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SACzD,CAAC;QACF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC3E,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAC3D,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxC,WAAW,EAAE,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC;SACpD,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,eAAe,KAAK,SAAS;YAC3C,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,IAAI,EAAE,UAAmB;gBACzB,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC1C,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;aACvE,CAAC;YACF,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;gBACZ,IAAI,EAAE,iBAA0B;gBAChC,QAAQ,EAAE,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAC1C,QAAQ,EAAE,qBAAqB,CAAC,KAAK,CAAC,eAAe,CAAC;aACzD,CAAC;QACN,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,MAAM,EAAE,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YACjD,IAAI,EAAE,MAAM,CAAC,IAAI;SACpB,CAAC;QACF,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5F,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;SAC3F,CAAC;QACF,YAAY,EAAE,MAAM,CAAC,KAAK;QAC1B,oBAAoB,EAAE,KAAK,CAAC,eAAe,KAAK,SAAS;YACrD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,aAAsB,EAAE,MAAM,EAAE,cAAuB,EAAE,CAAC;YACnF,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7B,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;wBAC3D,IAAI,EAAE,aAAsB;wBAC5B,MAAM,EAAE,cAAuB;qBAClC,CAAC,EAAE,CAAC;gBACT,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;KACtG,CAAC,CAAC;AACP,CAAC;AAwBD,SAAS,sBAAsB;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,CAAC;AACrE,CAAC;AACD,SAAS,mBAAmB,CAAO,QAAsC;IACrE,OAAO,QAAQ,CAAC,IAAI,KAAK,aAAa;QAClC,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;YACZ,IAAI,EAAE,SAAkB;YACxB,OAAO,EAAE,sBAAsB,EAAE;YACjC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;YAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;SAC5B,CAAC,CAAC;AACX,CAAC;AACD,SAAS,gBAAgB,CAAO,KAA2C;IACvE,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,MAAM,EAAE,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;YACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAC1E,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ;YAClC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW;SAC3C,CAAC;QACF,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;KACnD,CAAC,CAAC;AACP,CAAC;AAKD,SAAS,mBAAmB,CAAO,KAA2C;IAC1E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM;QAC9B,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;KACzD,CAAC,CAAC;AACP,CAAC;AACD,SAAS,mBAAmB,CAAO,QAA+D,EAAE,MAAoC,EAAE,KAAqC;IAC3K,IAAI,QAAQ,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;KAC5B,CAAC,CAAC;AACP,CAAC;AACD,SAAS,cAAc,CAAU,SAAoE;IACjG,IAAI,SAAS,CAAC,KAAK,KAAK,aAAa;QACjC,OAAO,SAAS,CAAC;IACrB,IAAI,CAAC,IAAA,8BAAmB,EAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,eAAM,CAAC,MAAM,CAAC,kCAAuB,CAAC,EAAE,sCAA2B,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACjI,IAAI,eAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AAClF,CAAC;AACD,SAAS,mBAAmB,CAAO,OAA0D,EAAE,aAAsE,EAAE,WAAgD,EAAE,KAAqC;IAC1P,MAAM,OAAO,GAA2D,EAAE,CAAC;IAC3E,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;QACpD,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAChE,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC;YAC3C,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;gBACrB,MAAM,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;gBAC5E,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,EAAE;oBAC9E,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;oBACxD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;wBAC/B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;oBACzE,CAAC;oBACD,OAAO,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC;gBACH,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ;gBACnC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW;aAC5C,CAAC;YACF,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;SACpD,CAAC,CAAC,CAAC;IACR,CAAC;IACD,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAuB,EAAE;QACxD,MAAM,MAAM,GAA0B,MAAM,CAAC,MAAM,CAAC;YAChD,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,uCAAuB,EAAE,MAAM,CAAC;YAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;KACpC,CAAC,CAAC;AACP,CAAC;AACD,yFAAyF;AACzF,SAAgB,kCAAkC,CAAO,MAExD;IACG,MAAM,eAAe,GAA4D,IAAA,6CAA+B,EAAC;QAC7G,cAAc,EAAE,yBAAyB,CAAC,QAAQ;QAClD,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC5B,CAAC,CAAC;IACH,MAAM,OAAO,GAA6C,EAAE,CAAC;IAC7D,IAAI,MAA6F,CAAC;IAClG,MAAM,QAAQ,GAAuC;QACjD,MAAM,CAAC,KAAK;YACR,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,IAAI,eAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7C,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,YAA2C,EAAE;YAC9C,IAAI,MAAM,KAAK,SAAS;gBACpB,OAAO,MAAM,CAAC;YAClB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAChE,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;oBAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;wBACjB,YAAY,EAAE,IAAI,CAAC,YAAY;wBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;qBACtB,CAAC;iBACL,CAAC;gBACF,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;aAChB,CAAC,CAAC,CAAC;YACJ,MAAM,iBAAiB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YAC/F,MAAM,uBAAuB,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;gBACpE,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,mBAAmB;aACnC,CAAC,CAAC,CAAC,UAAU,GAAG,iBAAiB,CAAC;YACnC,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,CAAC;gBAClC,YAAY,EAAE,uCAA4B,GAAG,uBAAuB;aACvE,CAAC,CAAC;YACH,IAAI,eAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,GAAG,eAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,eAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/G,OAAO,MAAM,CAAC;QAClB,CAAC;KACJ,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAKD,8EAA8E;AAC9E,SAAgB,yBAAyB,CAAC,QAAqC;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC;QACjB,UAAU,EAAE,0CAA0B;QACtC,OAAO,CAAC,KAA2B;YAC/B,OAAO,IAAA,oCAAyB,EAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,CAAC;KACJ,CAAC,CAAC;AACP,CAAC","sourcesContent":["import { Result, Schema, Stream } from \"effect\";\nimport { readJudgeImage } from \"../../judge/image.ts\";\nimport { fullAssertionContentOf } from \"../full-content.ts\";\nimport type { RecordBytesContentHandle } from \"../../record/attachment/content.ts\";\nimport type { AttachedRecordContent, RecordAttachmentSessionBuilder, } from \"../../record/writer/current-attachment.ts\";\nimport type { AssertionSourceAnchor, AssertionSourceSite, AssertionsAttachment, } from \"../../record/family/assertions/definition.ts\";\nimport { assertionsRecordAttachment } from \"../../record/family/assertions/definition.ts\";\nimport { sourcesRecordAttachment } from \"../../record/family/sources/definition.ts\";\nimport type { Sha256Digest, SourceItemId, } from \"../../record/model/identifiers.ts\";\nimport type { AssertionCoverage, AssertionCriterion, AssertionLimitation, AssertionMaterial, AssertionResult, AssertionSnapshotObject, AssertionSnapshotValue, MatcherQueryArtifact as RuntimeMatcherQueryArtifact, MatcherOrderPathNode as RuntimeMatcherOrderPathNode, SealedAssertionEntry, } from \"../api.ts\";\nimport { AssertionEntryIdSchema, AssertionsExactParseOptions, BoundedJsonObjectSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, isBoundedJsonObject, projectAssertionsDocument, type ThirdPartyCriterionRegistry, } from \"./codec.ts\";\nimport { createAssertionsDocumentBuilder, type AssertionEntryInput, type AssertionsDocumentBuilder, type AssertionsEntryIdSource, type AssertionsProducerError, } from \"./producer.ts\";\nimport type { AssertionEntryId, AssertionFactValue, MatcherQueryArtifact as RecordMatcherQueryArtifact, AssertionEntry, AssertionEntryOuter, AssertionMaterial as RecordAssertionMaterial, AssertionsProjection, BoundedJsonObject, BoundedJsonValue, SealedAssertionResult, WritableCriterionEnvelope, } from \"./model.ts\";\n/**\n * Producer preflight uses a data-only placeholder. The session callback later\n * replaces it with a sealed content handle minted for this Attachment.\n */\ninterface AssertionsProvisionalContent {\n readonly kind: \"assertions-provisional-content\";\n}\nconst AssertionsProvisionalContentSchema: Schema.Schema<AssertionsProvisionalContent> = Schema.Struct({\n kind: Schema.Literal(\"assertions-provisional-content\"),\n});\nconst AssertionsProvisionalMaterialSchema = Schema.Union([\n Schema.Struct({\n kind: Schema.Literal(\"unavailable\"),\n reason: Schema.Literal(\"not-recorded\"),\n }),\n Schema.Struct({\n kind: Schema.Literal(\"content\"),\n content: Schema.toType(AssertionsProvisionalContentSchema),\n encoding: Schema.Literals([\"json\", \"utf-8\", \"binary\"]),\n byteLength: Schema.Finite.check(Schema.makeFilter((value) => Number.isSafeInteger(value) && value >= 0)),\n preview: Schema.NullOr(Schema.String.check(Schema.makeFilter((value) => new TextEncoder().encode(value).byteLength <= 8 * 1024))),\n }),\n]);\nconst assertionsProducerSchemas = createAssertionsRecordSchemas(AssertionsProvisionalMaterialSchema);\nexport type AssertionMaterialInput<E, R> = {\n readonly kind: \"unavailable\";\n readonly reason: \"not-recorded\";\n} | {\n readonly kind: \"content\";\n readonly source: Stream.Stream<Uint8Array, E, R>;\n readonly encoding: \"json\" | \"utf-8\" | \"binary\";\n readonly byteLength: number;\n readonly preview: string | null;\n};\nexport interface AssertionsAttachmentEntryInput<E, R> {\n readonly display: AssertionEntryInput<AssertionsProvisionalContent>[\"display\"];\n readonly criterion: AssertionEntryInput<AssertionsProvisionalContent>[\"criterion\"];\n readonly materials: {\n readonly source: AssertionMaterialInput<E, R>;\n readonly evidence: readonly AssertionMaterialInput<E, R>[];\n readonly coverage: AssertionEntryInput<AssertionsProvisionalContent>[\"materials\"][\"coverage\"];\n readonly limitations: AssertionEntryInput<AssertionsProvisionalContent>[\"materials\"][\"limitations\"];\n };\n readonly evaluation: AssertionEntryInput<AssertionsProvisionalContent>[\"evaluation\"];\n readonly decision: AssertionEntryInput<AssertionsProvisionalContent>[\"decision\"];\n readonly policy: AssertionEntryInput<AssertionsProvisionalContent>[\"policy\"];\n readonly contribution: AssertionEntryInput<AssertionsProvisionalContent>[\"contribution\"];\n readonly explanationRetention: AssertionEntryInput<AssertionsProvisionalContent>[\"explanationRetention\"];\n}\nfunction encodeSnapshotValue(value: AssertionSnapshotValue): BoundedJsonValue {\n if (value === null || typeof value === \"boolean\" || typeof value === \"number\" || typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n return Object.freeze(value.map(encodeSnapshotValue));\n }\n const encoded: globalThis.Record<string, BoundedJsonValue> = {};\n for (const [key, nested] of Object.entries(value)) {\n encoded[key] = encodeSnapshotValue(nested);\n }\n return Object.freeze(encoded);\n}\nfunction encodeSnapshotObject(value: AssertionSnapshotObject): BoundedJsonObject {\n const encoded: globalThis.Record<string, BoundedJsonValue> = {};\n for (const [key, nested] of Object.entries(value)) {\n encoded[key] = encodeSnapshotValue(nested);\n }\n return Object.freeze(encoded);\n}\n// AssertionFactValue adds an object/array envelope at every source nesting\n// level. Keep arbitrary matcher snapshots below the fixed Attachment depth\n// limit instead of letting an otherwise bounded diagnostic invalidate the\n// whole Assertions attachment.\nconst MAX_EXPLANATION_SOURCE_DEPTH = 6;\nfunction explanationValue(value: unknown, depth = 0, maximumSourceDepth = MAX_EXPLANATION_SOURCE_DEPTH): AssertionFactValue {\n if (value === null || typeof value === \"boolean\" || typeof value === \"string\" ||\n (typeof value === \"number\" && Number.isFinite(value))) {\n return Object.freeze({ kind: \"value\" as const, value });\n }\n if (depth >= maximumSourceDepth) {\n return Object.freeze({\n kind: \"text\" as const,\n text: \"Nested matcher detail was omitted at the retained fact depth limit.\",\n });\n }\n if (Array.isArray(value)) {\n return Object.freeze({\n kind: \"list\" as const,\n items: Object.freeze(value.map((item) => explanationValue(item, depth + 1, maximumSourceDepth))),\n });\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.freeze({\n kind: \"fields\" as const,\n fields: Object.freeze(Object.entries(value).map(([label, nested]) => Object.freeze({\n label,\n value: explanationValue(nested, depth + 1, maximumSourceDepth),\n }))),\n });\n }\n return Object.freeze({ kind: \"unavailable\" as const, reason: \"source-unavailable\" as const });\n}\nfunction encodeRetainedRows(rows: RuntimeMatcherQueryArtifact[\"retainedRows\"], maximumSourceDepth = MAX_EXPLANATION_SOURCE_DEPTH): RecordMatcherQueryArtifact[\"retainedRows\"] {\n return Object.freeze(rows.map((row) => Object.freeze({\n locator: row.locator,\n result: row.result,\n ...(row.difference === undefined\n ? {}\n : { difference: explanationValue(row.difference, 0, maximumSourceDepth) }),\n })));\n}\nfunction encodeMatcherArtifact(artifact: RuntimeMatcherQueryArtifact): RecordMatcherQueryArtifact {\n if (artifact.kind === \"collection-filter\") {\n return Object.freeze({\n kind: \"collection-filter\" as const,\n sourceSnapshot: artifact.sourceSnapshot,\n query: Object.freeze({\n step: artifact.query.step,\n summary: explanationValue(artifact.query.summary),\n }),\n receipt: artifact.receipt,\n retainedRows: encodeRetainedRows(artifact.retainedRows),\n });\n }\n const path = (nodes: readonly RuntimeMatcherOrderPathNode[]) => Object.freeze(nodes.map((node) => Object.freeze({ ...node })));\n const result: Extract<RecordMatcherQueryArtifact, {\n readonly kind: \"ordered-sequence\";\n }>[\"result\"] = artifact.result.state === \"matched\"\n ? Object.freeze({\n state: \"matched\" as const,\n witnessPath: path(artifact.result.witnessPath),\n })\n : artifact.result.state === \"mismatched\"\n ? Object.freeze({\n state: \"mismatched\" as const,\n failureFrontier: Object.freeze({\n longestDefinitePrefix: path(artifact.result.failureFrontier.longestDefinitePrefix),\n longestPossiblePrefix: path(artifact.result.failureFrontier.longestPossiblePrefix),\n firstBlockingStep: artifact.result.failureFrontier.firstBlockingStep,\n suffixChecked: artifact.result.failureFrontier.suffixChecked,\n representatives: encodeRetainedRows(artifact.result.failureFrontier.representatives, 5),\n }),\n })\n : Object.freeze({\n state: \"unavailable\" as const,\n reason: artifact.result.reason,\n });\n return Object.freeze({\n kind: \"ordered-sequence\" as const,\n sourceSnapshot: artifact.sourceSnapshot,\n querySteps: Object.freeze(artifact.querySteps.map((step) => Object.freeze({\n step: step.step,\n summary: explanationValue(step.summary),\n }))),\n receipt: Object.freeze({\n ...artifact.receipt,\n stepReceipts: Object.freeze(artifact.receipt.stepReceipts.map((step) => Object.freeze({ ...step }))),\n }),\n result,\n retainedRows: encodeRetainedRows(artifact.retainedRows),\n });\n}\nfunction encodeCriterion(criterion: AssertionCriterion): WritableCriterionEnvelope {\n switch (criterion.kind) {\n case \"value-match\":\n if (\"numeric\" in criterion) {\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"numeric-comparison/v1\" as const,\n data: Object.freeze({\n comparator: criterion.numeric.comparator,\n threshold: criterion.numeric.threshold,\n subject: criterion.numeric.subject,\n }),\n });\n }\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"value-match/v1\" as const,\n data: Object.freeze({ subject: criterion.subject, matcher: criterion.matcher }),\n });\n case \"scope-status\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"scope-status/v1\" as const,\n data: Object.freeze({ scope: criterion.scope, assertion: criterion.assertion }),\n });\n case \"occurrence\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"occurrence/v2\" as const,\n data: Object.freeze({\n scope: criterion.scope,\n occurrence: criterion.occurrence,\n assertion: criterion.assertion,\n ...(criterion.matcher === undefined ? {} : { matcher: criterion.matcher }),\n ...(criterion.quantifier === undefined\n ? {}\n : {\n quantifier: criterion.quantifier.kind === \"absent\"\n ? Object.freeze({ kind: \"absent\" as const })\n : Object.freeze({ kind: criterion.quantifier.kind, count: criterion.quantifier.count }),\n }),\n }),\n });\n case \"judge-measurement\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"judge-measurement/v2\" as const,\n data: Object.freeze({ name: criterion.name, scale: criterion.scale }),\n });\n case \"managed-score-measurement\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"llm-measurement/v1\" as const,\n data: Object.freeze({ name: criterion.name, scale: criterion.scale }),\n });\n case \"sandbox-result\": {\n switch (criterion.operation) {\n case \"changed-paths\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"changed-paths\" as const, paths: Object.freeze([...criterion.paths]) }),\n });\n case \"no-changes\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"no-changes\" as const }),\n });\n case \"file-changed\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({\n operation: \"file-changed\" as const,\n path: criterion.path,\n ...(criterion.status === undefined ? {} : { status: criterion.status }),\n ...(criterion.before === undefined ? {} : { before: criterion.before }),\n ...(criterion.after === undefined ? {} : { after: criterion.after }),\n }),\n });\n case \"file-deleted\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"file-deleted\" as const, path: criterion.path }),\n });\n case \"not-in-diff\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({\n operation: \"not-in-diff\" as const,\n pattern: criterion.pattern,\n flags: criterion.flags,\n content: criterion.content,\n }),\n });\n }\n }\n case \"direct-score\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"direct-score/v1\" as const,\n data: Object.freeze({ source: criterion.source }),\n });\n case \"third-party\":\n return Object.freeze({\n name: criterion.name,\n schemaId: criterion.schemaId,\n data: encodeSnapshotValue(criterion.data),\n });\n }\n}\nfunction encodeMaterial(material: AssertionMaterial): AssertionMaterialInput<never, never> {\n switch (material.kind) {\n case \"judge-image\": {\n const body = readJudgeImage(material.image).body;\n return Object.freeze({ kind: \"content\" as const, source: Stream.succeed(body), encoding: \"binary\" as const,\n byteLength: body.byteLength, preview: null });\n }\n case \"snapshot\": {\n const content = fullAssertionContentOf(material) ?? JSON.stringify(encodeSnapshotValue(material.value));\n const bytes = new TextEncoder().encode(content);\n return Object.freeze({\n kind: \"content\" as const,\n source: Stream.succeed(bytes),\n encoding: \"json\" as const,\n byteLength: bytes.byteLength,\n preview: null,\n });\n }\n case \"record-attachment\": {\n const bytes = new TextEncoder().encode(JSON.stringify({\n kind: \"file-changes\",\n preview: material.preview,\n }));\n return Object.freeze({\n // Keep only the already-safe display fact. The source Attachment\n // capability never crosses into the Assertions closure.\n kind: \"content\" as const,\n source: Stream.succeed(bytes),\n encoding: \"json\" as const,\n byteLength: bytes.byteLength,\n preview: material.preview,\n });\n }\n }\n}\nfunction encodeCoverage(coverage: AssertionCoverage): AssertionCoverage {\n switch (coverage.state) {\n case \"complete\":\n return Object.freeze({ state: \"complete\" as const });\n case \"partial\":\n return Object.freeze({ state: \"partial\" as const, reason: coverage.reason });\n case \"unavailable\":\n return Object.freeze({ state: \"unavailable\" as const, reason: coverage.reason });\n case \"not-applicable\":\n return Object.freeze({ state: \"not-applicable\" as const, reason: coverage.reason });\n }\n}\nfunction encodeLimitations(limitations: readonly AssertionLimitation[]): readonly AssertionLimitation[] {\n return Object.freeze(limitations.map((limitation): AssertionLimitation => {\n switch (limitation.kind) {\n case \"redacted\":\n return Object.freeze({ kind: \"redacted\" as const, fieldCount: limitation.fieldCount });\n case \"sampled\":\n return Object.freeze({\n kind: \"sampled\" as const,\n captured: limitation.captured,\n ...(limitation.knownTotal === undefined ? {} : { knownTotal: limitation.knownTotal }),\n });\n case \"truncated\":\n return Object.freeze({ kind: \"truncated\" as const, omittedBytes: limitation.omittedBytes });\n case \"provider-limited\":\n return Object.freeze({ kind: \"provider-limited\" as const });\n case \"capacity-limited\":\n return Object.freeze({ ...limitation });\n }\n }));\n}\nexport function encodeAssertionResult(result: AssertionResult): SealedAssertionResult {\n const diagnostic = result.diagnostic === undefined\n ? {}\n : { diagnostic: encodeSnapshotObject(result.diagnostic) };\n const receipt = result.receipt === undefined ? {} : { receipt: Object.freeze({ ...result.receipt }) };\n switch (result.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n gate: result.gate,\n score: result.score.state === \"earned\"\n ? Object.freeze({ state: \"earned\" as const, points: result.score.points, earned: result.score.earned })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"earned\"\n ? Object.freeze({ state: \"earned\" as const, points: result.score.points, earned: result.score.earned })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"errored\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n }\n}\n/** Private Runtime → durable Assertions codec bridge. */\nexport function encodeSealedAssertionEntry(entry: SealedAssertionEntry): AssertionsAttachmentEntryInput<never, never> {\n const criterion = encodeCriterion(entry.criterion);\n const subject = encodeMaterial(entry.subject);\n const result = encodeAssertionResult(entry.result);\n return Object.freeze({\n display: Object.freeze({\n ...(entry.display.key === undefined ? {} : { key: entry.display.key }),\n ...(entry.display.label === undefined ? {} : { label: entry.display.label }),\n groupPath: Object.freeze([...entry.display.groupPath]),\n }),\n criterion: Object.freeze({ state: \"available\" as const, value: criterion }),\n materials: Object.freeze({\n source: subject,\n evidence: Object.freeze(entry.evidence.map(encodeMaterial)),\n coverage: encodeCoverage(entry.coverage),\n limitations: encodeLimitations(entry.limitations),\n }),\n evaluation: entry.matcherArtifact === undefined\n ? Object.freeze({\n kind: \"ordinary\" as const,\n observed: explanationValue(entry.observed),\n ...(result.receipt === undefined ? {} : { receipt: result.receipt }),\n })\n : Object.freeze({\n kind: \"matcher-current\" as const,\n observed: explanationValue(entry.observed),\n artifact: encodeMatcherArtifact(entry.matcherArtifact),\n }),\n decision: Object.freeze({\n result: result.state,\n reason: \"reason\" in result ? result.reason : null,\n gate: result.gate,\n }),\n policy: Object.freeze({\n requirement: Object.freeze({ state: \"available\" as const, value: entry.policy.requirement }),\n condition: Object.freeze({ state: \"available\" as const, value: entry.policy.condition }),\n }),\n contribution: result.score,\n explanationRetention: entry.matcherArtifact !== undefined\n ? Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const })\n : result.diagnostic === undefined\n ? Object.freeze({ state: \"retained\" as const, value: Object.freeze({\n kind: \"unavailable\" as const,\n reason: \"not-declared\" as const,\n }) })\n : Object.freeze({ state: \"retained\" as const, value: explanationValue(result.diagnostic) }),\n });\n}\nexport interface AssertionSourceSiteInput {\n readonly entryId: AssertionEntryId;\n readonly sourceOrder: number;\n readonly role: AssertionSourceSite[\"role\"];\n readonly sourceItemId: SourceItemId;\n readonly sha256: Sha256Digest;\n readonly start: AssertionSourceSite[\"start\"];\n readonly end: AssertionSourceSite[\"end\"];\n}\nexport interface AssertionsAttachmentSealInput {\n /** Semantic joins to origin-Run Sources, embedded in this fixed family. */\n readonly sourceSites?: readonly AssertionSourceSiteInput[];\n}\ntype AssertionsAttachedContent<E, R> = AttachedRecordContent<RecordBytesContentHandle, E, R>;\nexport interface AssertionsAttachmentDraft<E, R> {\n readonly entries: readonly AssertionEntryOuter<AssertionsAttachedContent<E, R>>[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}\nexport type AssertionsAttachmentCapture<E, R> = (build: RecordAttachmentSessionBuilder) => AssertionsAttachmentDraft<E, R>;\nexport interface AssertionsAttachmentProducer<E, R> {\n readonly append: (entry: AssertionsAttachmentEntryInput<E, R>) => Result.Result<AssertionEntryId, AssertionsProducerError>;\n readonly seal: (input?: AssertionsAttachmentSealInput) => Result.Result<AssertionsAttachmentCapture<E, R>, AssertionsProducerError>;\n}\nfunction makeProvisionalContent(): AssertionsProvisionalContent {\n return Object.freeze({ kind: \"assertions-provisional-content\" });\n}\nfunction provisionalMaterial<E, R>(material: AssertionMaterialInput<E, R>): RecordAssertionMaterial<AssertionsProvisionalContent> {\n return material.kind === \"unavailable\"\n ? material\n : Object.freeze({\n kind: \"content\" as const,\n content: makeProvisionalContent(),\n encoding: material.encoding,\n byteLength: material.byteLength,\n preview: material.preview,\n });\n}\nfunction provisionalEntry<E, R>(entry: AssertionsAttachmentEntryInput<E, R>): AssertionEntryInput<AssertionsProvisionalContent> {\n return Object.freeze({\n display: entry.display,\n criterion: entry.criterion,\n materials: Object.freeze({\n source: provisionalMaterial(entry.materials.source),\n evidence: Object.freeze(entry.materials.evidence.map(provisionalMaterial)),\n coverage: entry.materials.coverage,\n limitations: entry.materials.limitations,\n }),\n evaluation: entry.evaluation,\n decision: entry.decision,\n policy: entry.policy,\n contribution: entry.contribution,\n explanationRetention: entry.explanationRetention,\n });\n}\ninterface AssertionsAttachmentEntrySources<E, R> {\n readonly source: AssertionMaterialInput<E, R>;\n readonly evidence: readonly AssertionMaterialInput<E, R>[];\n}\nfunction captureEntrySources<E, R>(entry: AssertionsAttachmentEntryInput<E, R>): AssertionsAttachmentEntrySources<E, R> {\n return Object.freeze({\n source: entry.materials.source,\n evidence: Object.freeze([...entry.materials.evidence]),\n });\n}\nfunction materializeMaterial<E, R>(material: RecordAssertionMaterial<AssertionsProvisionalContent>, source: AssertionMaterialInput<E, R>, build: RecordAttachmentSessionBuilder): RecordAssertionMaterial<AssertionsAttachedContent<E, R>> {\n if (material.kind === \"unavailable\") {\n if (source.kind !== \"unavailable\") {\n throw new Error(\"Assertions producer changed a sealed material kind\");\n }\n return material;\n }\n if (source.kind !== \"content\") {\n throw new Error(\"Assertions producer changed a sealed material kind\");\n }\n return Object.freeze({\n kind: \"content\",\n content: build.content.stream(source.source),\n encoding: material.encoding,\n byteLength: material.byteLength,\n preview: material.preview,\n });\n}\nfunction outerCriterion<Content>(criterion: AssertionEntry<AssertionsProvisionalContent>[\"criterion\"]): AssertionEntryOuter<Content>[\"criterion\"] {\n if (criterion.state === \"unavailable\")\n return criterion;\n if (!isBoundedJsonObject(criterion.value)) {\n throw new Error(\"An Assertions writer criterion must be bounded JSON\");\n }\n const decoded = Schema.decodeUnknownResult(Schema.toType(BoundedJsonObjectSchema), AssertionsExactParseOptions)(criterion.value);\n if (Result.isFailure(decoded)) {\n throw new Error(\"An Assertions writer criterion must be bounded JSON\");\n }\n return Object.freeze({ state: \"available\" as const, value: decoded.success });\n}\nfunction materializeDocument<E, R>(sources: readonly AssertionsAttachmentEntrySources<E, R>[], sealedEntries: readonly AssertionEntry<AssertionsProvisionalContent>[], sourceSites: readonly AssertionSourceSiteInput[], build: RecordAttachmentSessionBuilder): AssertionsAttachmentDraft<E, R> {\n const entries: AssertionEntryOuter<AssertionsAttachedContent<E, R>>[] = [];\n for (const [index, sealed] of sealedEntries.entries()) {\n const captured = sources[index];\n if (captured === undefined) {\n throw new Error(\"Assertions producer lost a sealed entry source\");\n }\n if (captured.evidence.length !== sealed.materials.evidence.length) {\n throw new Error(\"Assertions producer changed sealed evidence cardinality\");\n }\n entries.push(Object.freeze({\n entryId: sealed.entryId,\n display: sealed.display,\n criterion: outerCriterion(sealed.criterion),\n materials: Object.freeze({\n source: materializeMaterial(sealed.materials.source, captured.source, build),\n evidence: Object.freeze(sealed.materials.evidence.map((material, evidenceIndex) => {\n const evidenceSource = captured.evidence[evidenceIndex];\n if (evidenceSource === undefined) {\n throw new Error(\"Assertions producer lost a sealed evidence source\");\n }\n return materializeMaterial(material, evidenceSource, build);\n })),\n coverage: sealed.materials.coverage,\n limitations: sealed.materials.limitations,\n }),\n evaluation: sealed.evaluation,\n decision: sealed.decision,\n policy: sealed.policy,\n contribution: sealed.contribution,\n explanationRetention: sealed.explanationRetention,\n }));\n }\n const sites = sourceSites.map((site): AssertionSourceSite => {\n const anchor: AssertionSourceAnchor = Object.freeze({\n sourceItemId: site.sourceItemId,\n sha256: site.sha256,\n });\n return Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: build.reference.to(sourcesRecordAttachment, anchor),\n start: site.start,\n end: site.end,\n });\n });\n return Object.freeze({\n entries: Object.freeze(entries),\n sourceSites: Object.freeze(sites),\n });\n}\n/** Collects facts, then returns the exact session callback that mints closure tokens. */\nexport function createAssertionsAttachmentProducer<E, R>(config: {\n readonly entryIds: AssertionsEntryIdSource;\n}): AssertionsAttachmentProducer<E, R> {\n const documentBuilder: AssertionsDocumentBuilder<AssertionsProvisionalContent> = createAssertionsDocumentBuilder({\n documentSchema: assertionsProducerSchemas.document,\n entryIds: config.entryIds,\n });\n const sources: AssertionsAttachmentEntrySources<E, R>[] = [];\n let sealed: Result.Result<AssertionsAttachmentCapture<E, R>, AssertionsProducerError> | undefined;\n const producer: AssertionsAttachmentProducer<E, R> = {\n append(entry) {\n const appended = documentBuilder.append(provisionalEntry(entry));\n if (Result.isSuccess(appended))\n sources.push(captureEntrySources(entry));\n return appended;\n },\n seal(sealInput: AssertionsAttachmentSealInput = {}) {\n if (sealed !== undefined)\n return sealed;\n const sourceSites = Object.freeze([...(sealInput.sourceSites ?? [])]);\n const sourceSiteWireShape = sourceSites.map((site) => Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: Object.freeze({\n value: Object.freeze({\n sourceItemId: site.sourceItemId,\n sha256: site.sha256,\n }),\n }),\n start: site.start,\n end: site.end,\n }));\n const emptyEntriesBytes = new TextEncoder().encode(JSON.stringify({ entries: [] })).byteLength;\n const sourceSitesFramingBytes = new TextEncoder().encode(JSON.stringify({\n entries: [],\n sourceSites: sourceSiteWireShape,\n })).byteLength - emptyEntriesBytes;\n const document = documentBuilder.seal({\n maximumBytes: MAX_ASSERTION_DOCUMENT_BYTES - sourceSitesFramingBytes,\n });\n if (Result.isFailure(document)) {\n sealed = Result.fail(document.failure);\n return sealed;\n }\n sealed = Result.succeed((build) => materializeDocument(sources, document.success.entries, sourceSites, build));\n return sealed;\n },\n };\n return Object.freeze(producer);\n}\nexport interface AssertionsProjectorDefinition {\n readonly definition: typeof assertionsRecordAttachment;\n readonly project: (value: AssertionsAttachment) => AssertionsProjection<RecordBytesContentHandle>;\n}\n/** Typed, synchronous projection over one already-validated logical value. */\nexport function defineAssertionsProjector(registry: ThirdPartyCriterionRegistry): AssertionsProjectorDefinition {\n return Object.freeze({\n definition: assertionsRecordAttachment,\n project(value: AssertionsAttachment) {\n return projectAssertionsDocument(value, registry);\n },\n });\n}\n"]}
1
+ {"version":3,"file":"attachment.js","sourceRoot":"","sources":["attachment.ts"],"names":[],"mappings":"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","sourcesContent":["import { Result, Schema, Stream } from \"effect\";\nimport { readJudgeImage } from \"../../judge/image.ts\";\nimport { fullAssertionContentOf } from \"../full-content.ts\";\nimport type { RecordBytesContentHandle } from \"../../record/attachment/content.ts\";\nimport type { AttachedRecordContent, RecordAttachmentSessionBuilder, } from \"../../record/writer/current-attachment.ts\";\nimport type { AssertionSourceAnchor, AssertionSourceSite, AssertionsAttachment, } from \"../../record/family/assertions/definition.ts\";\nimport { assertionsRecordAttachment } from \"../../record/family/assertions/definition.ts\";\nimport { sourcesRecordAttachment } from \"../../record/family/sources/definition.ts\";\nimport type { Sha256Digest, SourceItemId, } from \"../../record/model/identifiers.ts\";\nimport type { AssertionCoverage, AssertionCriterion, AssertionLimitation, AssertionMaterial, AssertionResult, AssertionSnapshotObject, AssertionSnapshotValue, MatcherQueryArtifact as RuntimeMatcherQueryArtifact, MatcherOrderPathNode as RuntimeMatcherOrderPathNode, SealedAssertionEntry, } from \"../api.ts\";\nimport { AssertionEntryIdSchema, AssertionsExactParseOptions, BoundedJsonObjectSchema, MAX_ASSERTION_DOCUMENT_BYTES, createAssertionsRecordSchemas, isBoundedJsonObject, projectAssertionsDocument, type ThirdPartyCriterionRegistry, } from \"./codec.ts\";\nimport { createAssertionsDocumentBuilder, type AssertionEntryInput, type AssertionsDocumentBuilder, type AssertionsEntryIdSource, type AssertionsProducerError, } from \"./producer.ts\";\nimport type { AssertionEntryId, AssertionFactValue, MatcherQueryArtifact as RecordMatcherQueryArtifact, AssertionEntry, AssertionEntryOuter, AssertionMaterial as RecordAssertionMaterial, AssertionsProjection, BoundedJsonObject, BoundedJsonValue, SealedAssertionResult, WritableCriterionEnvelope, } from \"./model.ts\";\n/**\n * Producer preflight uses a data-only placeholder. The session callback later\n * replaces it with a sealed content handle minted for this Attachment.\n */\ninterface AssertionsProvisionalContent {\n readonly kind: \"assertions-provisional-content\";\n}\nconst AssertionsProvisionalContentSchema: Schema.Schema<AssertionsProvisionalContent> = Schema.Struct({\n kind: Schema.Literal(\"assertions-provisional-content\"),\n});\nconst AssertionsProvisionalMaterialSchema = Schema.Union([\n Schema.Struct({\n kind: Schema.Literal(\"unavailable\"),\n reason: Schema.Literal(\"not-recorded\"),\n }),\n Schema.Struct({\n kind: Schema.Literal(\"content\"),\n content: Schema.toType(AssertionsProvisionalContentSchema),\n encoding: Schema.Literals([\"json\", \"utf-8\", \"binary\"]),\n byteLength: Schema.Finite.check(Schema.makeFilter((value) => Number.isSafeInteger(value) && value >= 0)),\n preview: Schema.NullOr(Schema.String.check(Schema.makeFilter((value) => new TextEncoder().encode(value).byteLength <= 8 * 1024))),\n }),\n]);\nconst assertionsProducerSchemas = createAssertionsRecordSchemas(AssertionsProvisionalMaterialSchema);\nexport type AssertionMaterialInput<E, R> = {\n readonly kind: \"unavailable\";\n readonly reason: \"not-recorded\";\n} | {\n readonly kind: \"content\";\n readonly source: Stream.Stream<Uint8Array, E, R>;\n readonly encoding: \"json\" | \"utf-8\" | \"binary\";\n readonly byteLength: number;\n readonly preview: string | null;\n};\nexport interface AssertionsAttachmentEntryInput<E, R> {\n readonly display: AssertionEntryInput<AssertionsProvisionalContent>[\"display\"];\n readonly criterion: AssertionEntryInput<AssertionsProvisionalContent>[\"criterion\"];\n readonly materials: {\n readonly source: AssertionMaterialInput<E, R>;\n readonly evidence: readonly AssertionMaterialInput<E, R>[];\n readonly coverage: AssertionEntryInput<AssertionsProvisionalContent>[\"materials\"][\"coverage\"];\n readonly limitations: AssertionEntryInput<AssertionsProvisionalContent>[\"materials\"][\"limitations\"];\n };\n readonly evaluation: AssertionEntryInput<AssertionsProvisionalContent>[\"evaluation\"];\n readonly decision: AssertionEntryInput<AssertionsProvisionalContent>[\"decision\"];\n readonly policy: AssertionEntryInput<AssertionsProvisionalContent>[\"policy\"];\n readonly contribution: AssertionEntryInput<AssertionsProvisionalContent>[\"contribution\"];\n readonly explanationRetention: AssertionEntryInput<AssertionsProvisionalContent>[\"explanationRetention\"];\n}\nfunction encodeSnapshotValue(value: AssertionSnapshotValue): BoundedJsonValue {\n if (value === null || typeof value === \"boolean\" || typeof value === \"number\" || typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value)) {\n return Object.freeze(value.map(encodeSnapshotValue));\n }\n const encoded: globalThis.Record<string, BoundedJsonValue> = {};\n for (const [key, nested] of Object.entries(value)) {\n encoded[key] = encodeSnapshotValue(nested);\n }\n return Object.freeze(encoded);\n}\nfunction encodeSnapshotObject(value: AssertionSnapshotObject): BoundedJsonObject {\n const encoded: globalThis.Record<string, BoundedJsonValue> = {};\n for (const [key, nested] of Object.entries(value)) {\n encoded[key] = encodeSnapshotValue(nested);\n }\n return Object.freeze(encoded);\n}\n// AssertionFactValue adds an object/array envelope at every source nesting\n// level. Keep arbitrary matcher snapshots below the fixed Attachment depth\n// limit instead of letting an otherwise bounded diagnostic invalidate the\n// whole Assertions attachment.\nconst MAX_EXPLANATION_SOURCE_DEPTH = 6;\nfunction explanationValue(value: unknown, depth = 0, maximumSourceDepth = MAX_EXPLANATION_SOURCE_DEPTH): AssertionFactValue {\n if (value === null || typeof value === \"boolean\" || typeof value === \"string\" ||\n (typeof value === \"number\" && Number.isFinite(value))) {\n return Object.freeze({ kind: \"value\" as const, value });\n }\n if (depth >= maximumSourceDepth) {\n return Object.freeze({\n kind: \"text\" as const,\n text: \"Nested matcher detail was omitted at the retained fact depth limit.\",\n });\n }\n if (Array.isArray(value)) {\n return Object.freeze({\n kind: \"list\" as const,\n items: Object.freeze(value.map((item) => explanationValue(item, depth + 1, maximumSourceDepth))),\n });\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.freeze({\n kind: \"fields\" as const,\n fields: Object.freeze(Object.entries(value).map(([label, nested]) => Object.freeze({\n label,\n value: explanationValue(nested, depth + 1, maximumSourceDepth),\n }))),\n });\n }\n return Object.freeze({ kind: \"unavailable\" as const, reason: \"source-unavailable\" as const });\n}\nfunction encodeRetainedRows(rows: RuntimeMatcherQueryArtifact[\"retainedRows\"], maximumSourceDepth = MAX_EXPLANATION_SOURCE_DEPTH): RecordMatcherQueryArtifact[\"retainedRows\"] {\n return Object.freeze(rows.map((row) => Object.freeze({\n locator: row.locator,\n result: row.result,\n ...(row.difference === undefined\n ? {}\n : { difference: explanationValue(row.difference, 0, maximumSourceDepth) }),\n })));\n}\nfunction encodeMatcherArtifact(artifact: RuntimeMatcherQueryArtifact): RecordMatcherQueryArtifact {\n if (artifact.kind === \"collection-filter\") {\n return Object.freeze({\n kind: \"collection-filter\" as const,\n sourceSnapshot: artifact.sourceSnapshot,\n query: Object.freeze({\n step: artifact.query.step,\n summary: explanationValue(artifact.query.summary),\n }),\n receipt: artifact.receipt,\n retainedRows: encodeRetainedRows(artifact.retainedRows),\n });\n }\n const path = (nodes: readonly RuntimeMatcherOrderPathNode[]) => Object.freeze(nodes.map((node) => Object.freeze({ ...node })));\n const result: Extract<RecordMatcherQueryArtifact, {\n readonly kind: \"ordered-sequence\";\n }>[\"result\"] = artifact.result.state === \"matched\"\n ? Object.freeze({\n state: \"matched\" as const,\n witnessPath: path(artifact.result.witnessPath),\n })\n : artifact.result.state === \"mismatched\"\n ? Object.freeze({\n state: \"mismatched\" as const,\n failureFrontier: Object.freeze({\n longestDefinitePrefix: path(artifact.result.failureFrontier.longestDefinitePrefix),\n longestPossiblePrefix: path(artifact.result.failureFrontier.longestPossiblePrefix),\n firstBlockingStep: artifact.result.failureFrontier.firstBlockingStep,\n suffixChecked: artifact.result.failureFrontier.suffixChecked,\n representatives: encodeRetainedRows(artifact.result.failureFrontier.representatives, 5),\n }),\n })\n : Object.freeze({\n state: \"unavailable\" as const,\n reason: artifact.result.reason,\n });\n return Object.freeze({\n kind: \"ordered-sequence\" as const,\n sourceSnapshot: artifact.sourceSnapshot,\n querySteps: Object.freeze(artifact.querySteps.map((step) => Object.freeze({\n step: step.step,\n summary: explanationValue(step.summary),\n }))),\n receipt: Object.freeze({\n ...artifact.receipt,\n stepReceipts: Object.freeze(artifact.receipt.stepReceipts.map((step) => Object.freeze({ ...step }))),\n }),\n result,\n retainedRows: encodeRetainedRows(artifact.retainedRows),\n });\n}\nfunction encodeCriterion(criterion: AssertionCriterion): WritableCriterionEnvelope {\n switch (criterion.kind) {\n case \"value-match\":\n if (\"numeric\" in criterion) {\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"numeric-comparison/v1\" as const,\n data: Object.freeze({\n comparator: criterion.numeric.comparator,\n threshold: criterion.numeric.threshold,\n ...(criterion.numeric.upperThreshold === undefined ? {} : { upperThreshold: criterion.numeric.upperThreshold }),\n ...(criterion.numeric.unit === undefined ? {} : { unit: criterion.numeric.unit }),\n subject: criterion.numeric.subject,\n }),\n });\n }\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"value-match/v1\" as const,\n data: Object.freeze({ subject: criterion.subject, matcher: criterion.matcher }),\n });\n case \"scope-status\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"scope-status/v1\" as const,\n data: Object.freeze({ scope: criterion.scope, assertion: criterion.assertion }),\n });\n case \"occurrence\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"occurrence/v2\" as const,\n data: Object.freeze({\n scope: criterion.scope,\n occurrence: criterion.occurrence,\n assertion: criterion.assertion,\n ...(criterion.matcher === undefined ? {} : { matcher: criterion.matcher }),\n ...(criterion.quantifier === undefined\n ? {}\n : {\n quantifier: criterion.quantifier.kind === \"absent\"\n ? Object.freeze({ kind: \"absent\" as const })\n : Object.freeze({ kind: criterion.quantifier.kind, count: criterion.quantifier.count }),\n }),\n }),\n });\n case \"judge-measurement\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"judge-measurement/v2\" as const,\n data: Object.freeze({ name: criterion.name, scale: criterion.scale }),\n });\n case \"managed-score-measurement\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"llm-measurement/v1\" as const,\n data: Object.freeze({ name: criterion.name, scale: criterion.scale }),\n });\n case \"sandbox-result\": {\n switch (criterion.operation) {\n case \"changed-paths\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"changed-paths\" as const, paths: Object.freeze([...criterion.paths]) }),\n });\n case \"no-changes\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"no-changes\" as const }),\n });\n case \"file-changed\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({\n operation: \"file-changed\" as const,\n path: criterion.path,\n ...(criterion.status === undefined ? {} : { status: criterion.status }),\n ...(criterion.before === undefined ? {} : { before: criterion.before }),\n ...(criterion.after === undefined ? {} : { after: criterion.after }),\n }),\n });\n case \"file-deleted\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({ operation: \"file-deleted\" as const, path: criterion.path }),\n });\n case \"not-in-diff\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"sandbox-result/v1\" as const,\n data: Object.freeze({\n operation: \"not-in-diff\" as const,\n pattern: criterion.pattern,\n flags: criterion.flags,\n content: criterion.content,\n }),\n });\n }\n }\n case \"direct-score\":\n return Object.freeze({\n kind: \"builtin\" as const,\n id: \"direct-score/v1\" as const,\n data: Object.freeze({ source: criterion.source }),\n });\n case \"third-party\":\n return Object.freeze({\n name: criterion.name,\n schemaId: criterion.schemaId,\n data: encodeSnapshotValue(criterion.data),\n });\n }\n}\nfunction encodeMaterial(material: AssertionMaterial): AssertionMaterialInput<never, never> {\n switch (material.kind) {\n case \"judge-image\": {\n const body = readJudgeImage(material.image).body;\n return Object.freeze({ kind: \"content\" as const, source: Stream.succeed(body), encoding: \"binary\" as const,\n byteLength: body.byteLength, preview: null });\n }\n case \"snapshot\": {\n const content = fullAssertionContentOf(material) ?? JSON.stringify(encodeSnapshotValue(material.value));\n const bytes = new TextEncoder().encode(content);\n return Object.freeze({\n kind: \"content\" as const,\n source: Stream.succeed(bytes),\n encoding: \"json\" as const,\n byteLength: bytes.byteLength,\n preview: null,\n });\n }\n case \"record-attachment\": {\n const bytes = new TextEncoder().encode(JSON.stringify({\n kind: \"file-changes\",\n preview: material.preview,\n }));\n return Object.freeze({\n // Keep only the already-safe display fact. The source Attachment\n // capability never crosses into the Assertions closure.\n kind: \"content\" as const,\n source: Stream.succeed(bytes),\n encoding: \"json\" as const,\n byteLength: bytes.byteLength,\n preview: material.preview,\n });\n }\n }\n}\nfunction encodeCoverage(coverage: AssertionCoverage): AssertionCoverage {\n switch (coverage.state) {\n case \"complete\":\n return Object.freeze({ state: \"complete\" as const });\n case \"partial\":\n return Object.freeze({ state: \"partial\" as const, reason: coverage.reason });\n case \"unavailable\":\n return Object.freeze({ state: \"unavailable\" as const, reason: coverage.reason });\n case \"not-applicable\":\n return Object.freeze({ state: \"not-applicable\" as const, reason: coverage.reason });\n }\n}\nfunction encodeLimitations(limitations: readonly AssertionLimitation[]): readonly AssertionLimitation[] {\n return Object.freeze(limitations.map((limitation): AssertionLimitation => {\n switch (limitation.kind) {\n case \"redacted\":\n return Object.freeze({ kind: \"redacted\" as const, fieldCount: limitation.fieldCount });\n case \"sampled\":\n return Object.freeze({\n kind: \"sampled\" as const,\n captured: limitation.captured,\n ...(limitation.knownTotal === undefined ? {} : { knownTotal: limitation.knownTotal }),\n });\n case \"truncated\":\n return Object.freeze({ kind: \"truncated\" as const, omittedBytes: limitation.omittedBytes });\n case \"provider-limited\":\n return Object.freeze({ kind: \"provider-limited\" as const });\n case \"capacity-limited\":\n return Object.freeze({ ...limitation });\n }\n }));\n}\nexport function encodeAssertionResult(result: AssertionResult): SealedAssertionResult {\n const diagnostic = result.diagnostic === undefined\n ? {}\n : { diagnostic: encodeSnapshotObject(result.diagnostic) };\n const receipt = result.receipt === undefined ? {} : { receipt: Object.freeze({ ...result.receipt }) };\n switch (result.state) {\n case \"matched\":\n return Object.freeze({\n state: \"matched\" as const,\n gate: result.gate,\n score: result.score.state === \"earned\"\n ? Object.freeze({ state: \"earned\" as const, points: result.score.points, earned: result.score.earned })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"mismatched\":\n return Object.freeze({\n state: \"mismatched\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"earned\"\n ? Object.freeze({ state: \"earned\" as const, points: result.score.points, earned: result.score.earned })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"unavailable\":\n return Object.freeze({\n state: \"unavailable\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"errored\":\n return Object.freeze({\n state: \"errored\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n case \"not-applicable\":\n return Object.freeze({\n state: \"not-applicable\" as const,\n reason: result.reason,\n gate: result.gate,\n score: result.score.state === \"unavailable\"\n ? Object.freeze({ state: \"unavailable\" as const, points: result.score.points, reason: result.score.reason })\n : Object.freeze({ state: \"not-scored\" as const }),\n ...diagnostic,\n ...receipt,\n });\n }\n}\n/** Private Runtime → durable Assertions codec bridge. */\nexport function encodeSealedAssertionEntry(entry: SealedAssertionEntry): AssertionsAttachmentEntryInput<never, never> {\n const criterion = encodeCriterion(entry.criterion);\n const subject = encodeMaterial(entry.subject);\n const result = encodeAssertionResult(entry.result);\n return Object.freeze({\n display: Object.freeze({\n ...(entry.display.key === undefined ? {} : { key: entry.display.key }),\n ...(entry.display.label === undefined ? {} : { label: entry.display.label }),\n groupPath: Object.freeze([...entry.display.groupPath]),\n }),\n criterion: Object.freeze({ state: \"available\" as const, value: criterion }),\n materials: Object.freeze({\n source: subject,\n evidence: Object.freeze(entry.evidence.map(encodeMaterial)),\n coverage: encodeCoverage(entry.coverage),\n limitations: encodeLimitations(entry.limitations),\n }),\n evaluation: entry.matcherArtifact === undefined\n ? Object.freeze({\n kind: \"ordinary\" as const,\n observed: explanationValue(entry.observed),\n ...(result.receipt === undefined ? {} : { receipt: result.receipt }),\n })\n : Object.freeze({\n kind: \"matcher-current\" as const,\n observed: explanationValue(entry.observed),\n artifact: encodeMatcherArtifact(entry.matcherArtifact),\n }),\n decision: Object.freeze({\n result: result.state,\n reason: \"reason\" in result ? result.reason : null,\n gate: result.gate,\n }),\n policy: Object.freeze({\n requirement: Object.freeze({ state: \"available\" as const, value: entry.policy.requirement }),\n condition: Object.freeze({ state: \"available\" as const, value: entry.policy.condition }),\n }),\n contribution: result.score,\n explanationRetention: entry.matcherArtifact !== undefined\n ? Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const })\n : result.diagnostic === undefined\n ? Object.freeze({ state: \"retained\" as const, value: Object.freeze({\n kind: \"unavailable\" as const,\n reason: \"not-declared\" as const,\n }) })\n : Object.freeze({ state: \"retained\" as const, value: explanationValue(result.diagnostic) }),\n });\n}\nexport interface AssertionSourceSiteInput {\n readonly entryId: AssertionEntryId;\n readonly sourceOrder: number;\n readonly role: AssertionSourceSite[\"role\"];\n readonly sourceItemId: SourceItemId;\n readonly sha256: Sha256Digest;\n readonly start: AssertionSourceSite[\"start\"];\n readonly end: AssertionSourceSite[\"end\"];\n}\nexport interface AssertionsAttachmentSealInput {\n /** Semantic joins to origin-Run Sources, embedded in this fixed family. */\n readonly sourceSites?: readonly AssertionSourceSiteInput[];\n}\ntype AssertionsAttachedContent<E, R> = AttachedRecordContent<RecordBytesContentHandle, E, R>;\nexport interface AssertionsAttachmentDraft<E, R> {\n readonly entries: readonly AssertionEntryOuter<AssertionsAttachedContent<E, R>>[];\n readonly sourceSites: readonly AssertionSourceSite[];\n}\nexport type AssertionsAttachmentCapture<E, R> = (build: RecordAttachmentSessionBuilder) => AssertionsAttachmentDraft<E, R>;\nexport interface AssertionsAttachmentProducer<E, R> {\n readonly append: (entry: AssertionsAttachmentEntryInput<E, R>) => Result.Result<AssertionEntryId, AssertionsProducerError>;\n readonly seal: (input?: AssertionsAttachmentSealInput) => Result.Result<AssertionsAttachmentCapture<E, R>, AssertionsProducerError>;\n}\nfunction makeProvisionalContent(): AssertionsProvisionalContent {\n return Object.freeze({ kind: \"assertions-provisional-content\" });\n}\nfunction provisionalMaterial<E, R>(material: AssertionMaterialInput<E, R>): RecordAssertionMaterial<AssertionsProvisionalContent> {\n return material.kind === \"unavailable\"\n ? material\n : Object.freeze({\n kind: \"content\" as const,\n content: makeProvisionalContent(),\n encoding: material.encoding,\n byteLength: material.byteLength,\n preview: material.preview,\n });\n}\nfunction provisionalEntry<E, R>(entry: AssertionsAttachmentEntryInput<E, R>): AssertionEntryInput<AssertionsProvisionalContent> {\n return Object.freeze({\n display: entry.display,\n criterion: entry.criterion,\n materials: Object.freeze({\n source: provisionalMaterial(entry.materials.source),\n evidence: Object.freeze(entry.materials.evidence.map(provisionalMaterial)),\n coverage: entry.materials.coverage,\n limitations: entry.materials.limitations,\n }),\n evaluation: entry.evaluation,\n decision: entry.decision,\n policy: entry.policy,\n contribution: entry.contribution,\n explanationRetention: entry.explanationRetention,\n });\n}\ninterface AssertionsAttachmentEntrySources<E, R> {\n readonly source: AssertionMaterialInput<E, R>;\n readonly evidence: readonly AssertionMaterialInput<E, R>[];\n}\nfunction captureEntrySources<E, R>(entry: AssertionsAttachmentEntryInput<E, R>): AssertionsAttachmentEntrySources<E, R> {\n return Object.freeze({\n source: entry.materials.source,\n evidence: Object.freeze([...entry.materials.evidence]),\n });\n}\nfunction materializeMaterial<E, R>(material: RecordAssertionMaterial<AssertionsProvisionalContent>, source: AssertionMaterialInput<E, R>, build: RecordAttachmentSessionBuilder): RecordAssertionMaterial<AssertionsAttachedContent<E, R>> {\n if (material.kind === \"unavailable\") {\n if (source.kind !== \"unavailable\") {\n throw new Error(\"Assertions producer changed a sealed material kind\");\n }\n return material;\n }\n if (source.kind !== \"content\") {\n throw new Error(\"Assertions producer changed a sealed material kind\");\n }\n return Object.freeze({\n kind: \"content\",\n content: build.content.stream(source.source),\n encoding: material.encoding,\n byteLength: material.byteLength,\n preview: material.preview,\n });\n}\nfunction outerCriterion<Content>(criterion: AssertionEntry<AssertionsProvisionalContent>[\"criterion\"]): AssertionEntryOuter<Content>[\"criterion\"] {\n if (criterion.state === \"unavailable\")\n return criterion;\n if (!isBoundedJsonObject(criterion.value)) {\n throw new Error(\"An Assertions writer criterion must be bounded JSON\");\n }\n const decoded = Schema.decodeUnknownResult(Schema.toType(BoundedJsonObjectSchema), AssertionsExactParseOptions)(criterion.value);\n if (Result.isFailure(decoded)) {\n throw new Error(\"An Assertions writer criterion must be bounded JSON\");\n }\n return Object.freeze({ state: \"available\" as const, value: decoded.success });\n}\nfunction materializeDocument<E, R>(sources: readonly AssertionsAttachmentEntrySources<E, R>[], sealedEntries: readonly AssertionEntry<AssertionsProvisionalContent>[], sourceSites: readonly AssertionSourceSiteInput[], build: RecordAttachmentSessionBuilder): AssertionsAttachmentDraft<E, R> {\n const entries: AssertionEntryOuter<AssertionsAttachedContent<E, R>>[] = [];\n for (const [index, sealed] of sealedEntries.entries()) {\n const captured = sources[index];\n if (captured === undefined) {\n throw new Error(\"Assertions producer lost a sealed entry source\");\n }\n if (captured.evidence.length !== sealed.materials.evidence.length) {\n throw new Error(\"Assertions producer changed sealed evidence cardinality\");\n }\n entries.push(Object.freeze({\n entryId: sealed.entryId,\n display: sealed.display,\n criterion: outerCriterion(sealed.criterion),\n materials: Object.freeze({\n source: materializeMaterial(sealed.materials.source, captured.source, build),\n evidence: Object.freeze(sealed.materials.evidence.map((material, evidenceIndex) => {\n const evidenceSource = captured.evidence[evidenceIndex];\n if (evidenceSource === undefined) {\n throw new Error(\"Assertions producer lost a sealed evidence source\");\n }\n return materializeMaterial(material, evidenceSource, build);\n })),\n coverage: sealed.materials.coverage,\n limitations: sealed.materials.limitations,\n }),\n evaluation: sealed.evaluation,\n decision: sealed.decision,\n policy: sealed.policy,\n contribution: sealed.contribution,\n explanationRetention: sealed.explanationRetention,\n }));\n }\n const sites = sourceSites.map((site): AssertionSourceSite => {\n const anchor: AssertionSourceAnchor = Object.freeze({\n sourceItemId: site.sourceItemId,\n sha256: site.sha256,\n });\n return Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: build.reference.to(sourcesRecordAttachment, anchor),\n start: site.start,\n end: site.end,\n });\n });\n return Object.freeze({\n entries: Object.freeze(entries),\n sourceSites: Object.freeze(sites),\n });\n}\n/** Collects facts, then returns the exact session callback that mints closure tokens. */\nexport function createAssertionsAttachmentProducer<E, R>(config: {\n readonly entryIds: AssertionsEntryIdSource;\n}): AssertionsAttachmentProducer<E, R> {\n const documentBuilder: AssertionsDocumentBuilder<AssertionsProvisionalContent> = createAssertionsDocumentBuilder({\n documentSchema: assertionsProducerSchemas.document,\n entryIds: config.entryIds,\n });\n const sources: AssertionsAttachmentEntrySources<E, R>[] = [];\n let sealed: Result.Result<AssertionsAttachmentCapture<E, R>, AssertionsProducerError> | undefined;\n const producer: AssertionsAttachmentProducer<E, R> = {\n append(entry) {\n const appended = documentBuilder.append(provisionalEntry(entry));\n if (Result.isSuccess(appended))\n sources.push(captureEntrySources(entry));\n return appended;\n },\n seal(sealInput: AssertionsAttachmentSealInput = {}) {\n if (sealed !== undefined)\n return sealed;\n const sourceSites = Object.freeze([...(sealInput.sourceSites ?? [])]);\n const sourceSiteWireShape = sourceSites.map((site) => Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: Object.freeze({\n value: Object.freeze({\n sourceItemId: site.sourceItemId,\n sha256: site.sha256,\n }),\n }),\n start: site.start,\n end: site.end,\n }));\n const emptyEntriesBytes = new TextEncoder().encode(JSON.stringify({ entries: [] })).byteLength;\n const sourceSitesFramingBytes = new TextEncoder().encode(JSON.stringify({\n entries: [],\n sourceSites: sourceSiteWireShape,\n })).byteLength - emptyEntriesBytes;\n const document = documentBuilder.seal({\n maximumBytes: MAX_ASSERTION_DOCUMENT_BYTES - sourceSitesFramingBytes,\n });\n if (Result.isFailure(document)) {\n sealed = Result.fail(document.failure);\n return sealed;\n }\n sealed = Result.succeed((build) => materializeDocument(sources, document.success.entries, sourceSites, build));\n return sealed;\n },\n };\n return Object.freeze(producer);\n}\nexport interface AssertionsProjectorDefinition {\n readonly definition: typeof assertionsRecordAttachment;\n readonly project: (value: AssertionsAttachment) => AssertionsProjection<RecordBytesContentHandle>;\n}\n/** Typed, synchronous projection over one already-validated logical value. */\nexport function defineAssertionsProjector(registry: ThirdPartyCriterionRegistry): AssertionsProjectorDefinition {\n return Object.freeze({\n definition: assertionsRecordAttachment,\n project(value: AssertionsAttachment) {\n return projectAssertionsDocument(value, registry);\n },\n });\n}\n"]}
@@ -310,6 +310,8 @@ const NumericComparisonCriterionSchema = effect_1.Schema.Struct({
310
310
  data: effect_1.Schema.Struct({
311
311
  comparator: effect_1.Schema.Literals(match_ts_1.NUMERIC_COMPARATORS),
312
312
  threshold: effect_1.Schema.Finite,
313
+ upperThreshold: effect_1.Schema.optional(effect_1.Schema.Finite),
314
+ unit: effect_1.Schema.optional(effect_1.Schema.Literals(["ms", "seconds", "tokens", "usd", "ratio", "count", "bytes"])),
313
315
  subject: effect_1.Schema.Union([
314
316
  effect_1.Schema.Struct({ kind: effect_1.Schema.Literal("explicit-value") }),
315
317
  effect_1.Schema.Struct({
@@ -330,7 +332,9 @@ const NumericComparisonCriterionSchema = effect_1.Schema.Struct({
330
332
  scope: effect_1.Schema.Literals(["turn", "session", "attempt"]),
331
333
  }),
332
334
  ]),
333
- }),
335
+ }).check(effect_1.Schema.makeFilter((data) => data.comparator === "between"
336
+ ? data.upperThreshold !== undefined && data.upperThreshold >= data.threshold
337
+ : data.upperThreshold === undefined, { message: "Only between comparisons have an ordered upper threshold." })),
334
338
  });
335
339
  const ScopeStatusCriterionSchema = effect_1.Schema.Struct({
336
340
  kind: effect_1.Schema.Literal("builtin"),