niceeval 0.12.2-canary.31 → 0.13.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 (2039) hide show
  1. package/INDEX.md +10 -10
  2. package/README.md +2 -0
  3. package/README.zh.md +2 -0
  4. package/bin/niceeval.js +15 -0
  5. package/dist/agents/claude-code.cjs +9 -1
  6. package/dist/agents/claude-code.cjs.map +1 -1
  7. package/dist/agents/post-setup.cjs +0 -2
  8. package/dist/agents/post-setup.cjs.map +1 -1
  9. package/dist/agents/provisioner.cjs +2 -13
  10. package/dist/agents/provisioner.cjs.map +1 -1
  11. package/dist/agents/provisioner.d.cts +0 -5
  12. package/dist/agents/provisioner.d.mts +0 -5
  13. package/dist/agents/provisioner.d.ts +0 -5
  14. package/dist/agents/provisioner.js +22 -26
  15. package/dist/agents/sdk-streams.cjs +2 -1
  16. package/dist/agents/sdk-streams.cjs.map +1 -1
  17. package/dist/agents/types.cjs.map +1 -1
  18. package/dist/agents/types.d.cts +2 -10
  19. package/dist/agents/types.d.mts +2 -10
  20. package/dist/agents/types.d.ts +2 -10
  21. package/dist/analysis/api.cjs +689 -0
  22. package/dist/analysis/api.cjs.map +1 -0
  23. package/dist/analysis/api.d.cts +126 -0
  24. package/dist/analysis/api.d.mts +126 -0
  25. package/dist/analysis/api.d.ts +126 -0
  26. package/dist/analysis/api.js +24 -0
  27. package/dist/analysis/api.js.map +1 -0
  28. package/dist/analysis/bindings.cjs +617 -0
  29. package/dist/analysis/bindings.cjs.map +1 -0
  30. package/dist/analysis/bindings.d.cts +8313 -0
  31. package/dist/analysis/bindings.d.mts +8313 -0
  32. package/dist/analysis/bindings.d.ts +8313 -0
  33. package/dist/analysis/bindings.js +22 -0
  34. package/dist/analysis/bindings.js.map +1 -0
  35. package/dist/analysis/contracts.cjs +39 -0
  36. package/dist/analysis/contracts.cjs.map +1 -0
  37. package/dist/analysis/contracts.d.cts +293 -0
  38. package/dist/analysis/contracts.d.mts +293 -0
  39. package/dist/analysis/contracts.d.ts +293 -0
  40. package/dist/analysis/contracts.js +12 -0
  41. package/dist/analysis/contracts.js.map +1 -0
  42. package/dist/analysis/cost-decimal.cjs +177 -0
  43. package/dist/analysis/cost-decimal.cjs.map +1 -0
  44. package/dist/analysis/cost-decimal.d.cts +51 -0
  45. package/dist/analysis/cost-decimal.d.mts +51 -0
  46. package/dist/analysis/cost-decimal.d.ts +51 -0
  47. package/dist/analysis/cost-decimal.js +28 -0
  48. package/dist/analysis/cost-decimal.js.map +1 -0
  49. package/dist/analysis/cost-projection.cjs +430 -0
  50. package/dist/analysis/cost-projection.cjs.map +1 -0
  51. package/dist/analysis/cost-projection.d.cts +37 -0
  52. package/dist/analysis/cost-projection.d.mts +37 -0
  53. package/dist/analysis/cost-projection.d.ts +37 -0
  54. package/dist/analysis/cost-projection.js +10 -0
  55. package/dist/analysis/cost-projection.js.map +1 -0
  56. package/dist/analysis/cost.cjs +814 -0
  57. package/dist/analysis/cost.cjs.map +1 -0
  58. package/dist/analysis/cost.d.cts +310 -0
  59. package/dist/analysis/cost.d.mts +310 -0
  60. package/dist/analysis/cost.d.ts +310 -0
  61. package/dist/analysis/cost.js +26 -0
  62. package/dist/analysis/cost.js.map +1 -0
  63. package/dist/analysis/definitions.cjs +346 -0
  64. package/dist/analysis/definitions.cjs.map +1 -0
  65. package/dist/analysis/definitions.d.cts +230 -0
  66. package/dist/analysis/definitions.d.mts +230 -0
  67. package/dist/analysis/definitions.d.ts +230 -0
  68. package/dist/analysis/definitions.js +70 -0
  69. package/dist/analysis/definitions.js.map +1 -0
  70. package/dist/analysis/domain-view.cjs +3 -0
  71. package/dist/analysis/domain-view.cjs.map +1 -0
  72. package/dist/analysis/domain-view.d.cts +367 -0
  73. package/dist/analysis/domain-view.d.mts +367 -0
  74. package/dist/analysis/domain-view.d.ts +367 -0
  75. package/dist/analysis/domain-view.js +4 -0
  76. package/dist/analysis/domain-view.js.map +1 -0
  77. package/dist/analysis/file-changes.cjs +225 -0
  78. package/dist/analysis/file-changes.cjs.map +1 -0
  79. package/dist/analysis/file-changes.d.cts +30 -0
  80. package/dist/analysis/file-changes.d.mts +30 -0
  81. package/dist/analysis/file-changes.d.ts +30 -0
  82. package/dist/analysis/file-changes.js +6 -0
  83. package/dist/analysis/file-changes.js.map +1 -0
  84. package/dist/analysis/host.cjs +8 -0
  85. package/dist/analysis/host.cjs.map +1 -0
  86. package/dist/analysis/host.d.cts +19 -0
  87. package/dist/analysis/host.d.mts +19 -0
  88. package/dist/analysis/host.d.ts +19 -0
  89. package/dist/analysis/host.js +6 -0
  90. package/dist/analysis/host.js.map +1 -0
  91. package/dist/analysis/host.mjs +6 -0
  92. package/dist/analysis/host.mjs.map +1 -0
  93. package/dist/analysis/index.cjs +45 -8
  94. package/dist/analysis/index.cjs.map +1 -1
  95. package/dist/analysis/index.d.cts +10 -2
  96. package/dist/analysis/index.d.mts +10 -2
  97. package/dist/analysis/index.d.ts +10 -2
  98. package/dist/analysis/index.js +70 -6
  99. package/dist/analysis/index.mjs +70 -6
  100. package/dist/assertions/api.cjs.map +1 -1
  101. package/dist/assertions/api.d.cts +1 -1
  102. package/dist/assertions/api.d.mts +1 -1
  103. package/dist/assertions/api.d.ts +1 -1
  104. package/dist/assertions/diff.cjs +2 -2
  105. package/dist/assertions/diff.cjs.map +1 -1
  106. package/dist/assertions/diff.d.cts +2 -2
  107. package/dist/assertions/diff.d.mts +2 -2
  108. package/dist/assertions/diff.d.ts +2 -2
  109. package/dist/assertions/judge.cjs +11 -10
  110. package/dist/assertions/judge.cjs.map +1 -1
  111. package/dist/assertions/record/attachment.cjs +64 -81
  112. package/dist/assertions/record/attachment.cjs.map +1 -1
  113. package/dist/assertions/record/attachment.d.cts +88 -143
  114. package/dist/assertions/record/attachment.d.mts +88 -143
  115. package/dist/assertions/record/attachment.d.ts +88 -143
  116. package/dist/assertions/record/attachment.js +12 -16
  117. package/dist/assertions/record/codec.cjs +178 -100
  118. package/dist/assertions/record/codec.cjs.map +1 -1
  119. package/dist/assertions/record/codec.d.cts +75 -56
  120. package/dist/assertions/record/codec.d.mts +75 -56
  121. package/dist/assertions/record/codec.d.ts +75 -56
  122. package/dist/assertions/record/codec.js +36 -32
  123. package/dist/assertions/record/diff.cjs +545 -134
  124. package/dist/assertions/record/diff.cjs.map +1 -1
  125. package/dist/assertions/record/diff.d.cts +73 -25
  126. package/dist/assertions/record/diff.d.mts +73 -25
  127. package/dist/assertions/record/diff.d.ts +73 -25
  128. package/dist/assertions/record/diff.js +12 -14
  129. package/dist/assertions/record/index.js +70 -72
  130. package/dist/assertions/record/model.cjs.map +1 -1
  131. package/dist/assertions/record/model.d.cts +62 -70
  132. package/dist/assertions/record/model.d.mts +62 -70
  133. package/dist/assertions/record/model.d.ts +62 -70
  134. package/dist/assertions/record/producer.cjs +5 -2
  135. package/dist/assertions/record/producer.cjs.map +1 -1
  136. package/dist/assertions/record/producer.d.cts +18 -18
  137. package/dist/assertions/record/producer.d.mts +18 -18
  138. package/dist/assertions/record/producer.d.ts +18 -18
  139. package/dist/assertions/record/producer.js +2 -2
  140. package/dist/assertions/runtime.cjs +14 -9
  141. package/dist/assertions/runtime.cjs.map +1 -1
  142. package/dist/assertions/workspace-diff.cjs +18 -4
  143. package/dist/assertions/workspace-diff.cjs.map +1 -1
  144. package/dist/assertions/workspace-diff.d.cts +3 -1
  145. package/dist/assertions/workspace-diff.d.mts +3 -1
  146. package/dist/assertions/workspace-diff.d.ts +3 -1
  147. package/dist/assertions/workspace-diff.js +14 -12
  148. package/dist/attempt-locator-resolution.cjs +33 -38
  149. package/dist/attempt-locator-resolution.cjs.map +1 -1
  150. package/dist/attempt-locator-resolution.d.cts +15 -8
  151. package/dist/attempt-locator-resolution.d.mts +15 -8
  152. package/dist/attempt-locator-resolution.d.ts +15 -8
  153. package/dist/cli/record.cjs +16 -89
  154. package/dist/cli/record.cjs.map +1 -1
  155. package/dist/cli/record.d.cts +2 -9
  156. package/dist/cli/record.d.mts +2 -9
  157. package/dist/cli/record.d.ts +2 -9
  158. package/dist/cli/record.js +2 -6
  159. package/dist/cli.cjs +609 -245
  160. package/dist/cli.cjs.map +1 -1
  161. package/dist/cli.d.cts +6 -5
  162. package/dist/cli.d.mts +6 -5
  163. package/dist/cli.d.ts +6 -5
  164. package/dist/context/assert-first.cjs +13 -4
  165. package/dist/context/assert-first.cjs.map +1 -1
  166. package/dist/context/assert-first.d.cts +3 -4
  167. package/dist/context/assert-first.d.mts +3 -4
  168. package/dist/context/assert-first.d.ts +3 -4
  169. package/dist/context/send-retry.cjs +18 -21
  170. package/dist/context/send-retry.cjs.map +1 -1
  171. package/dist/context/send-retry.d.cts +0 -3
  172. package/dist/context/send-retry.d.mts +0 -3
  173. package/dist/context/send-retry.d.ts +0 -3
  174. package/dist/context/session.cjs +46 -42
  175. package/dist/context/session.cjs.map +1 -1
  176. package/dist/context/session.d.cts +4 -6
  177. package/dist/context/session.d.mts +4 -6
  178. package/dist/context/session.d.ts +4 -6
  179. package/dist/coordination/host/index.cjs +10 -0
  180. package/dist/coordination/host/index.cjs.map +1 -0
  181. package/dist/coordination/host/index.d.cts +6 -0
  182. package/dist/coordination/host/index.d.mts +6 -0
  183. package/dist/coordination/host/index.d.ts +6 -0
  184. package/dist/coordination/host/index.js +6 -0
  185. package/dist/coordination/host/index.mjs +6 -0
  186. package/dist/coordination/host/runtime.cjs +57 -0
  187. package/dist/coordination/host/runtime.cjs.map +1 -0
  188. package/dist/coordination/host/runtime.d.cts +13 -0
  189. package/dist/coordination/host/runtime.d.mts +13 -0
  190. package/dist/coordination/host/runtime.d.ts +13 -0
  191. package/dist/coordination/host/runtime.js +8 -0
  192. package/dist/coordination/host/types.cjs.map +1 -0
  193. package/dist/coordination/host/types.d.cts +37 -0
  194. package/dist/coordination/host/types.d.mts +37 -0
  195. package/dist/coordination/host/types.d.ts +37 -0
  196. package/dist/coordination/identity.cjs +48 -0
  197. package/dist/coordination/identity.cjs.map +1 -0
  198. package/dist/coordination/identity.d.cts +14 -0
  199. package/dist/coordination/identity.d.mts +14 -0
  200. package/dist/coordination/identity.d.ts +14 -0
  201. package/dist/coordination/identity.js +6 -0
  202. package/dist/coordination/index.cjs +23 -0
  203. package/dist/coordination/index.cjs.map +1 -0
  204. package/dist/coordination/index.d.cts +6 -0
  205. package/dist/coordination/index.d.mts +6 -0
  206. package/dist/coordination/index.d.ts +6 -0
  207. package/dist/coordination/index.js +16 -0
  208. package/dist/coordination/platform/index.cjs +18 -0
  209. package/dist/coordination/platform/index.cjs.map +1 -0
  210. package/dist/coordination/platform/index.d.cts +1 -0
  211. package/dist/coordination/platform/index.d.mts +1 -0
  212. package/dist/coordination/platform/index.d.ts +1 -0
  213. package/dist/coordination/platform/index.js +6 -0
  214. package/dist/coordination/platform/node.cjs +251 -0
  215. package/dist/coordination/platform/node.cjs.map +1 -0
  216. package/dist/coordination/platform/node.d.cts +3 -0
  217. package/dist/coordination/platform/node.d.mts +3 -0
  218. package/dist/coordination/platform/node.d.ts +3 -0
  219. package/dist/coordination/platform/node.js +6 -0
  220. package/dist/coordination/platform/node.js.map +1 -0
  221. package/dist/coordination/record-leases.cjs +22 -0
  222. package/dist/coordination/record-leases.cjs.map +1 -0
  223. package/dist/coordination/record-leases.d.cts +39 -0
  224. package/dist/coordination/record-leases.d.mts +39 -0
  225. package/dist/coordination/record-leases.d.ts +39 -0
  226. package/dist/coordination/record-leases.js +10 -0
  227. package/dist/coordination/record-leases.js.map +1 -0
  228. package/dist/eval/experiment-id.cjs +1 -5
  229. package/dist/eval/experiment-id.cjs.map +1 -1
  230. package/dist/eval/experiment-id.d.cts +0 -2
  231. package/dist/eval/experiment-id.d.mts +0 -2
  232. package/dist/eval/experiment-id.d.ts +0 -2
  233. package/dist/eval/experiment-id.js +0 -4
  234. package/dist/eval/record/attachment.cjs +7 -47
  235. package/dist/eval/record/attachment.cjs.map +1 -1
  236. package/dist/eval/record/attachment.d.cts +8 -24
  237. package/dist/eval/record/attachment.d.mts +8 -24
  238. package/dist/eval/record/attachment.d.ts +8 -24
  239. package/dist/eval/record/attachment.js +4 -10
  240. package/dist/eval/record/coherence.cjs +6 -6
  241. package/dist/eval/record/coherence.cjs.map +1 -1
  242. package/dist/eval/record/coherence.d.cts +16 -16
  243. package/dist/eval/record/coherence.d.mts +16 -16
  244. package/dist/eval/record/coherence.d.ts +16 -16
  245. package/dist/eval/record/coherence.js +2 -2
  246. package/dist/eval/record/eligibility.cjs +53 -135
  247. package/dist/eval/record/eligibility.cjs.map +1 -1
  248. package/dist/eval/record/eligibility.d.cts +38 -140
  249. package/dist/eval/record/eligibility.d.mts +38 -140
  250. package/dist/eval/record/eligibility.d.ts +38 -140
  251. package/dist/eval/record/eligibility.js +16 -38
  252. package/dist/eval/record/evaluation-plan.cjs +18 -23
  253. package/dist/eval/record/evaluation-plan.cjs.map +1 -1
  254. package/dist/eval/record/evaluation-plan.d.cts +6 -9
  255. package/dist/eval/record/evaluation-plan.d.mts +6 -9
  256. package/dist/eval/record/evaluation-plan.d.ts +6 -9
  257. package/dist/eval/record/evaluation-plan.js +2 -2
  258. package/dist/eval/record/evaluation-record.cjs +161 -454
  259. package/dist/eval/record/evaluation-record.cjs.map +1 -1
  260. package/dist/eval/record/evaluation-record.d.cts +67 -128
  261. package/dist/eval/record/evaluation-record.d.mts +67 -128
  262. package/dist/eval/record/evaluation-record.d.ts +67 -128
  263. package/dist/eval/record/evaluation-record.js +16 -16
  264. package/dist/eval/record/evaluation.cjs +59 -174
  265. package/dist/eval/record/evaluation.cjs.map +1 -1
  266. package/dist/eval/record/evaluation.d.cts +43 -119
  267. package/dist/eval/record/evaluation.d.mts +43 -119
  268. package/dist/eval/record/evaluation.d.ts +43 -119
  269. package/dist/eval/record/evaluation.js +20 -32
  270. package/dist/eval/record/index.js +144 -238
  271. package/dist/eval/record/membership-provenance.cjs +58 -191
  272. package/dist/eval/record/membership-provenance.cjs.map +1 -1
  273. package/dist/eval/record/membership-provenance.d.cts +83 -659
  274. package/dist/eval/record/membership-provenance.d.mts +83 -659
  275. package/dist/eval/record/membership-provenance.d.ts +83 -659
  276. package/dist/eval/record/membership-provenance.js +34 -54
  277. package/dist/eval/record/score.cjs +58 -170
  278. package/dist/eval/record/score.cjs.map +1 -1
  279. package/dist/eval/record/score.d.cts +36 -104
  280. package/dist/eval/record/score.d.mts +36 -104
  281. package/dist/eval/record/score.d.ts +36 -104
  282. package/dist/eval/record/score.js +22 -40
  283. package/dist/eval/record/sealed-assertion.cjs +10 -10
  284. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  285. package/dist/eval/record/sealed-assertion.d.cts +12 -12
  286. package/dist/eval/record/sealed-assertion.d.mts +12 -12
  287. package/dist/eval/record/sealed-assertion.d.ts +12 -12
  288. package/dist/eval/record/sealed-assertion.js +10 -10
  289. package/dist/eval/record/verdict.cjs +42 -64
  290. package/dist/eval/record/verdict.cjs.map +1 -1
  291. package/dist/eval/record/verdict.d.cts +35 -48
  292. package/dist/eval/record/verdict.d.mts +35 -48
  293. package/dist/eval/record/verdict.d.ts +35 -48
  294. package/dist/eval/record/verdict.js +16 -32
  295. package/dist/experiment/host/index.cjs +210 -0
  296. package/dist/experiment/host/index.cjs.map +1 -0
  297. package/dist/experiment/host/index.d.cts +125 -0
  298. package/dist/experiment/host/index.d.mts +125 -0
  299. package/dist/experiment/host/index.d.ts +125 -0
  300. package/dist/experiment/host/index.js +6 -0
  301. package/dist/experiment/host/index.mjs +6 -0
  302. package/dist/experiment/host/index.mjs.map +1 -0
  303. package/dist/fresh-import.cjs +33 -119
  304. package/dist/fresh-import.cjs.map +1 -1
  305. package/dist/i18n/en.cjs +10 -5
  306. package/dist/i18n/en.cjs.map +1 -1
  307. package/dist/i18n/en.d.cts +9 -4
  308. package/dist/i18n/en.d.mts +9 -4
  309. package/dist/i18n/en.d.ts +9 -4
  310. package/dist/index.cjs +1 -4
  311. package/dist/index.cjs.map +1 -1
  312. package/dist/index.d.cts +0 -2
  313. package/dist/index.d.mts +0 -2
  314. package/dist/index.d.ts +0 -2
  315. package/dist/index.js +18 -20
  316. package/dist/index.mjs +18 -20
  317. package/dist/o11y/cost.cjs +16 -6
  318. package/dist/o11y/cost.cjs.map +1 -1
  319. package/dist/o11y/parsers/bub.cjs +16 -4
  320. package/dist/o11y/parsers/bub.cjs.map +1 -1
  321. package/dist/o11y/parsers/hermes.cjs +19 -6
  322. package/dist/o11y/parsers/hermes.cjs.map +1 -1
  323. package/dist/o11y/parsers/openclaw.cjs +5 -10
  324. package/dist/o11y/parsers/openclaw.cjs.map +1 -1
  325. package/dist/o11y/parsers/opencode.cjs +6 -11
  326. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  327. package/dist/o11y/prices.json +1335 -557
  328. package/dist/o11y/record/capture.cjs +38 -38
  329. package/dist/o11y/record/capture.cjs.map +1 -1
  330. package/dist/o11y/record/capture.d.cts +25 -25
  331. package/dist/o11y/record/capture.d.mts +25 -25
  332. package/dist/o11y/record/capture.d.ts +25 -25
  333. package/dist/o11y/record/capture.js +26 -26
  334. package/dist/o11y/record/codec.cjs +139 -140
  335. package/dist/o11y/record/codec.cjs.map +1 -1
  336. package/dist/o11y/record/codec.d.cts +262 -266
  337. package/dist/o11y/record/codec.d.mts +262 -266
  338. package/dist/o11y/record/codec.d.ts +262 -266
  339. package/dist/o11y/record/codec.js +58 -60
  340. package/dist/o11y/record/errors.cjs +20 -20
  341. package/dist/o11y/record/errors.cjs.map +1 -1
  342. package/dist/o11y/record/errors.d.cts +18 -18
  343. package/dist/o11y/record/errors.d.mts +18 -18
  344. package/dist/o11y/record/errors.d.ts +18 -18
  345. package/dist/o11y/record/errors.js +20 -20
  346. package/dist/o11y/record/families.cjs +269 -264
  347. package/dist/o11y/record/families.cjs.map +1 -1
  348. package/dist/o11y/record/families.d.cts +1589 -1573
  349. package/dist/o11y/record/families.d.mts +1589 -1573
  350. package/dist/o11y/record/families.d.ts +1589 -1573
  351. package/dist/o11y/record/families.js +64 -64
  352. package/dist/o11y/record/family-projectors.cjs +31 -58
  353. package/dist/o11y/record/family-projectors.cjs.map +1 -1
  354. package/dist/o11y/record/family-projectors.d.cts +2933 -34
  355. package/dist/o11y/record/family-projectors.d.mts +2933 -34
  356. package/dist/o11y/record/family-projectors.d.ts +2933 -34
  357. package/dist/o11y/record/family-projectors.js +10 -4
  358. package/dist/o11y/record/family-writers.cjs +207 -336
  359. package/dist/o11y/record/family-writers.cjs.map +1 -1
  360. package/dist/o11y/record/family-writers.d.cts +637 -5260
  361. package/dist/o11y/record/family-writers.d.mts +637 -5260
  362. package/dist/o11y/record/family-writers.d.ts +637 -5260
  363. package/dist/o11y/record/family-writers.js +14 -56
  364. package/dist/o11y/record/index.js +446 -484
  365. package/dist/o11y/record/limits.cjs +45 -45
  366. package/dist/o11y/record/limits.cjs.map +1 -1
  367. package/dist/o11y/record/limits.d.cts +32 -32
  368. package/dist/o11y/record/limits.d.mts +32 -32
  369. package/dist/o11y/record/limits.d.ts +32 -32
  370. package/dist/o11y/record/limits.js +64 -64
  371. package/dist/o11y/record/model.cjs +271 -277
  372. package/dist/o11y/record/model.cjs.map +1 -1
  373. package/dist/o11y/record/model.d.cts +160 -186
  374. package/dist/o11y/record/model.d.mts +160 -186
  375. package/dist/o11y/record/model.d.ts +160 -186
  376. package/dist/o11y/record/model.js +154 -154
  377. package/dist/o11y/record/runner-producer.cjs +649 -520
  378. package/dist/o11y/record/runner-producer.cjs.map +1 -1
  379. package/dist/o11y/record/runner-producer.d.cts +39 -25
  380. package/dist/o11y/record/runner-producer.d.mts +39 -25
  381. package/dist/o11y/record/runner-producer.d.ts +39 -25
  382. package/dist/o11y/record/runner-producer.js +26 -22
  383. package/dist/o11y/record/validation.cjs +75 -75
  384. package/dist/o11y/record/validation.cjs.map +1 -1
  385. package/dist/o11y/record/validation.d.cts +35 -35
  386. package/dist/o11y/record/validation.d.mts +35 -35
  387. package/dist/o11y/record/validation.d.ts +35 -35
  388. package/dist/o11y/record/validation.js +24 -24
  389. package/dist/o11y/types.cjs.map +1 -1
  390. package/dist/o11y/types.d.cts +7 -5
  391. package/dist/o11y/types.d.mts +7 -5
  392. package/dist/o11y/types.d.ts +7 -5
  393. package/dist/plugin/contracts.cjs.map +1 -1
  394. package/dist/plugin/contracts.d.cts +0 -3
  395. package/dist/plugin/contracts.d.mts +0 -3
  396. package/dist/plugin/contracts.d.ts +0 -3
  397. package/dist/plugins/record/attachment.cjs +0 -59
  398. package/dist/plugins/record/attachment.cjs.map +1 -1
  399. package/dist/plugins/record/attachment.d.cts +6 -14
  400. package/dist/plugins/record/attachment.d.mts +6 -14
  401. package/dist/plugins/record/attachment.d.ts +6 -14
  402. package/dist/plugins/record/attachment.js +0 -16
  403. package/dist/plugins/record/capability.cjs +0 -255
  404. package/dist/plugins/record/capability.cjs.map +1 -1
  405. package/dist/plugins/record/capability.d.cts +1 -93
  406. package/dist/plugins/record/capability.d.mts +1 -93
  407. package/dist/plugins/record/capability.d.ts +1 -93
  408. package/dist/plugins/record/capability.js +0 -22
  409. package/dist/plugins/record/codec.cjs +0 -241
  410. package/dist/plugins/record/codec.cjs.map +1 -1
  411. package/dist/plugins/record/codec.d.cts +2 -28
  412. package/dist/plugins/record/codec.d.mts +2 -28
  413. package/dist/plugins/record/codec.d.ts +2 -28
  414. package/dist/plugins/record/codec.js +0 -44
  415. package/dist/plugins/record/index.cjs +0 -51
  416. package/dist/plugins/record/index.cjs.map +1 -1
  417. package/dist/plugins/record/index.d.cts +5 -9
  418. package/dist/plugins/record/index.d.mts +5 -9
  419. package/dist/plugins/record/index.d.ts +5 -9
  420. package/dist/plugins/record/index.js +0 -90
  421. package/dist/plugins/record/migration.cjs +0 -30
  422. package/dist/plugins/record/migration.cjs.map +1 -1
  423. package/dist/plugins/record/migration.d.cts +3 -20
  424. package/dist/plugins/record/migration.d.mts +3 -20
  425. package/dist/plugins/record/migration.d.ts +3 -20
  426. package/dist/plugins/record/migration.js +0 -2
  427. package/dist/plugins/record/model.cjs.map +1 -1
  428. package/dist/plugins/record/model.d.cts +2 -93
  429. package/dist/plugins/record/model.d.mts +2 -93
  430. package/dist/plugins/record/model.d.ts +2 -93
  431. package/dist/plugins/record/provenance.cjs +0 -316
  432. package/dist/plugins/record/provenance.cjs.map +1 -1
  433. package/dist/plugins/record/provenance.d.cts +1 -78
  434. package/dist/plugins/record/provenance.d.mts +1 -78
  435. package/dist/plugins/record/provenance.d.ts +1 -78
  436. package/dist/plugins/record/provenance.js +0 -20
  437. package/dist/record/attachment/blob-policy.cjs +3 -0
  438. package/dist/record/attachment/blob-policy.cjs.map +1 -0
  439. package/dist/record/attachment/blob-policy.d.cts +18 -0
  440. package/dist/record/attachment/blob-policy.d.mts +18 -0
  441. package/dist/record/attachment/blob-policy.d.ts +18 -0
  442. package/dist/record/attachment/blob-policy.js +4 -0
  443. package/dist/record/attachment/blob-policy.js.map +1 -0
  444. package/dist/record/attachment/blob-ref.cjs +42 -0
  445. package/dist/record/attachment/blob-ref.cjs.map +1 -0
  446. package/dist/record/attachment/blob-ref.d.cts +22 -0
  447. package/dist/record/attachment/blob-ref.d.mts +22 -0
  448. package/dist/record/attachment/blob-ref.d.ts +22 -0
  449. package/dist/record/attachment/blob-ref.js +14 -0
  450. package/dist/record/attachment/blob-ref.js.map +1 -0
  451. package/dist/record/attachment/errors.cjs +6 -34
  452. package/dist/record/attachment/errors.cjs.map +1 -1
  453. package/dist/record/attachment/errors.d.cts +2 -24
  454. package/dist/record/attachment/errors.d.mts +2 -24
  455. package/dist/record/attachment/errors.d.ts +2 -24
  456. package/dist/record/attachment/errors.js +4 -10
  457. package/dist/record/attachment/index.cjs +2 -8
  458. package/dist/record/attachment/index.cjs.map +1 -1
  459. package/dist/record/attachment/index.d.cts +3 -3
  460. package/dist/record/attachment/index.d.mts +3 -3
  461. package/dist/record/attachment/index.d.ts +3 -3
  462. package/dist/record/attachment/index.js +6 -18
  463. package/dist/record/attachment/internal.cjs +5 -14
  464. package/dist/record/attachment/internal.cjs.map +1 -1
  465. package/dist/record/attachment/internal.d.cts +3 -2
  466. package/dist/record/attachment/internal.d.mts +3 -2
  467. package/dist/record/attachment/internal.d.ts +3 -2
  468. package/dist/record/attachment/internal.js +12 -30
  469. package/dist/record/attachment/runtime.cjs +155 -745
  470. package/dist/record/attachment/runtime.cjs.map +1 -1
  471. package/dist/record/attachment/runtime.d.cts +25 -68
  472. package/dist/record/attachment/runtime.d.mts +25 -68
  473. package/dist/record/attachment/runtime.d.ts +25 -68
  474. package/dist/record/attachment/runtime.js +16 -48
  475. package/dist/record/attachment/types.cjs +3 -26
  476. package/dist/record/attachment/types.cjs.map +1 -1
  477. package/dist/record/attachment/types.d.cts +33 -132
  478. package/dist/record/attachment/types.d.mts +33 -132
  479. package/dist/record/attachment/types.d.ts +33 -132
  480. package/dist/record/attachment/types.js +10 -22
  481. package/dist/record/codec/core.cjs +102 -85
  482. package/dist/record/codec/core.cjs.map +1 -1
  483. package/dist/record/codec/core.d.cts +205 -55
  484. package/dist/record/codec/core.d.mts +205 -55
  485. package/dist/record/codec/core.d.ts +205 -55
  486. package/dist/record/codec/core.js +50 -42
  487. package/dist/record/codec/identifiers.cjs +24 -2
  488. package/dist/record/codec/identifiers.cjs.map +1 -1
  489. package/dist/record/codec/identifiers.d.cts +11 -2
  490. package/dist/record/codec/identifiers.d.mts +11 -2
  491. package/dist/record/codec/identifiers.d.ts +11 -2
  492. package/dist/record/codec/identifiers.js +36 -18
  493. package/dist/record/codec/index.js +86 -60
  494. package/dist/record/definition/attachment.cjs +108 -0
  495. package/dist/record/definition/attachment.cjs.map +1 -0
  496. package/dist/record/definition/attachment.d.cts +77 -0
  497. package/dist/record/definition/attachment.d.mts +77 -0
  498. package/dist/record/definition/attachment.d.ts +77 -0
  499. package/dist/record/definition/attachment.js +8 -0
  500. package/dist/record/definition/attachment.js.map +1 -0
  501. package/dist/record/definition/canonical.cjs +271 -0
  502. package/dist/record/definition/canonical.cjs.map +1 -0
  503. package/dist/record/definition/canonical.d.cts +38 -0
  504. package/dist/record/definition/canonical.d.mts +38 -0
  505. package/dist/record/definition/canonical.d.ts +38 -0
  506. package/dist/record/definition/canonical.js +10 -0
  507. package/dist/record/definition/canonical.js.map +1 -0
  508. package/dist/record/definition/core.cjs +13 -0
  509. package/dist/record/definition/core.cjs.map +1 -0
  510. package/dist/record/definition/core.d.cts +10 -0
  511. package/dist/record/definition/core.d.mts +10 -0
  512. package/dist/record/definition/core.d.ts +10 -0
  513. package/dist/record/definition/core.js +6 -0
  514. package/dist/record/definition/core.js.map +1 -0
  515. package/dist/record/definition/index.cjs +21 -0
  516. package/dist/record/definition/index.cjs.map +1 -0
  517. package/dist/record/definition/index.d.cts +4 -0
  518. package/dist/record/definition/index.d.mts +4 -0
  519. package/dist/record/definition/index.d.ts +4 -0
  520. package/dist/record/definition/index.js +16 -0
  521. package/dist/record/definition/index.js.map +1 -0
  522. package/dist/record/definition/schema-codec.cjs +347 -0
  523. package/dist/record/definition/schema-codec.cjs.map +1 -0
  524. package/dist/record/definition/schema-codec.d.cts +48 -0
  525. package/dist/record/definition/schema-codec.d.mts +48 -0
  526. package/dist/record/definition/schema-codec.d.ts +48 -0
  527. package/dist/record/definition/schema-codec.js +8 -0
  528. package/dist/record/definition/schema-codec.js.map +1 -0
  529. package/dist/record/errors/record-errors.cjs +2 -2
  530. package/dist/record/errors/record-errors.cjs.map +1 -1
  531. package/dist/record/errors/record-errors.d.cts +2 -2
  532. package/dist/record/errors/record-errors.d.mts +2 -2
  533. package/dist/record/errors/record-errors.d.ts +2 -2
  534. package/dist/record/family/artifacts.cjs +83 -0
  535. package/dist/record/family/artifacts.cjs.map +1 -0
  536. package/dist/record/family/artifacts.d.cts +225 -0
  537. package/dist/record/family/artifacts.d.mts +225 -0
  538. package/dist/record/family/artifacts.d.ts +225 -0
  539. package/dist/record/family/artifacts.js +14 -0
  540. package/dist/record/family/artifacts.js.map +1 -0
  541. package/dist/record/family/assertions.cjs +172 -0
  542. package/dist/record/family/assertions.cjs.map +1 -0
  543. package/dist/record/family/assertions.d.cts +292 -0
  544. package/dist/record/family/assertions.d.mts +292 -0
  545. package/dist/record/family/assertions.d.ts +292 -0
  546. package/dist/record/family/assertions.js +20 -0
  547. package/dist/record/family/assertions.js.map +1 -0
  548. package/dist/record/family/catalog.cjs +91 -0
  549. package/dist/record/family/catalog.cjs.map +1 -0
  550. package/dist/record/family/catalog.d.cts +3653 -0
  551. package/dist/record/family/catalog.d.mts +3653 -0
  552. package/dist/record/family/catalog.d.ts +3653 -0
  553. package/dist/record/family/catalog.js +34 -0
  554. package/dist/record/family/catalog.js.map +1 -0
  555. package/dist/record/family/common.cjs +80 -0
  556. package/dist/record/family/common.cjs.map +1 -0
  557. package/dist/record/family/common.d.cts +44 -0
  558. package/dist/record/family/common.d.mts +44 -0
  559. package/dist/record/family/common.d.ts +44 -0
  560. package/dist/record/family/common.js +28 -0
  561. package/dist/record/family/common.js.map +1 -0
  562. package/dist/record/family/file-changes.cjs +278 -0
  563. package/dist/record/family/file-changes.cjs.map +1 -0
  564. package/dist/record/family/file-changes.d.cts +643 -0
  565. package/dist/record/family/file-changes.d.mts +643 -0
  566. package/dist/record/family/file-changes.d.ts +643 -0
  567. package/dist/record/family/file-changes.js +32 -0
  568. package/dist/record/family/file-changes.js.map +1 -0
  569. package/dist/record/family/index.cjs +24 -0
  570. package/dist/record/family/index.cjs.map +1 -0
  571. package/dist/record/family/index.d.cts +7 -0
  572. package/dist/record/family/index.d.mts +7 -0
  573. package/dist/record/family/index.d.ts +7 -0
  574. package/dist/record/family/index.js +148 -0
  575. package/dist/record/family/index.js.map +1 -0
  576. package/dist/record/family/observability.cjs +511 -0
  577. package/dist/record/family/observability.cjs.map +1 -0
  578. package/dist/record/family/observability.d.cts +2879 -0
  579. package/dist/record/family/observability.d.mts +2879 -0
  580. package/dist/record/family/observability.d.ts +2879 -0
  581. package/dist/record/family/observability.js +30 -0
  582. package/dist/record/family/observability.js.map +1 -0
  583. package/dist/record/family/source-navigation.cjs +215 -0
  584. package/dist/record/family/source-navigation.cjs.map +1 -0
  585. package/dist/record/family/source-navigation.d.cts +330 -0
  586. package/dist/record/family/source-navigation.d.mts +330 -0
  587. package/dist/record/family/source-navigation.d.ts +330 -0
  588. package/dist/record/family/source-navigation.js +24 -0
  589. package/dist/record/family/source-navigation.js.map +1 -0
  590. package/dist/record/family/sources.cjs +82 -0
  591. package/dist/record/family/sources.cjs.map +1 -0
  592. package/dist/record/family/sources.d.cts +81 -0
  593. package/dist/record/family/sources.d.mts +81 -0
  594. package/dist/record/family/sources.d.ts +81 -0
  595. package/dist/record/family/sources.js +14 -0
  596. package/dist/record/family/sources.js.map +1 -0
  597. package/dist/record/host/index.cjs +11 -0
  598. package/dist/record/host/index.cjs.map +1 -0
  599. package/dist/record/host/index.d.cts +7 -0
  600. package/dist/record/host/index.d.mts +7 -0
  601. package/dist/record/host/index.d.ts +7 -0
  602. package/dist/record/host/index.js +6 -0
  603. package/dist/record/host/index.js.map +1 -0
  604. package/dist/record/host/index.mjs +6 -0
  605. package/dist/record/host/index.mjs.map +1 -0
  606. package/dist/record/host/runtime.cjs +1696 -0
  607. package/dist/record/host/runtime.cjs.map +1 -0
  608. package/dist/record/host/runtime.d.cts +2 -0
  609. package/dist/record/host/runtime.d.mts +2 -0
  610. package/dist/record/host/runtime.d.ts +2 -0
  611. package/dist/record/host/runtime.js +6 -0
  612. package/dist/record/host/types.cjs +9 -0
  613. package/dist/record/host/types.cjs.map +1 -0
  614. package/dist/record/host/types.d.cts +259 -0
  615. package/dist/record/host/types.d.mts +259 -0
  616. package/dist/record/host/types.d.ts +259 -0
  617. package/dist/record/host/types.js +14 -0
  618. package/dist/record/host/types.js.map +1 -0
  619. package/dist/record/index.cjs +19 -52
  620. package/dist/record/index.cjs.map +1 -1
  621. package/dist/record/index.d.cts +14 -11
  622. package/dist/record/index.d.mts +14 -11
  623. package/dist/record/index.d.ts +14 -11
  624. package/dist/record/index.js +16 -310
  625. package/dist/record/index.mjs +20 -0
  626. package/dist/record/index.mjs.map +1 -0
  627. package/dist/record/maintenance/runtime.cjs +9 -11
  628. package/dist/record/maintenance/runtime.cjs.map +1 -1
  629. package/dist/record/maintenance/runtime.d.cts +4 -5
  630. package/dist/record/maintenance/runtime.d.mts +4 -5
  631. package/dist/record/maintenance/runtime.d.ts +4 -5
  632. package/dist/record/maintenance/types.cjs.map +1 -1
  633. package/dist/record/maintenance/types.d.cts +7 -8
  634. package/dist/record/maintenance/types.d.mts +7 -8
  635. package/dist/record/maintenance/types.d.ts +7 -8
  636. package/dist/record/migration/index.cjs +2 -25
  637. package/dist/record/migration/index.cjs.map +1 -1
  638. package/dist/record/migration/index.d.cts +11 -8
  639. package/dist/record/migration/index.d.mts +11 -8
  640. package/dist/record/migration/index.d.ts +11 -8
  641. package/dist/record/migration/index.js +2 -44
  642. package/dist/record/model/core.cjs +1 -4
  643. package/dist/record/model/core.cjs.map +1 -1
  644. package/dist/record/model/core.d.cts +59 -39
  645. package/dist/record/model/core.d.mts +59 -39
  646. package/dist/record/model/core.d.ts +59 -39
  647. package/dist/record/model/definition.cjs +147 -0
  648. package/dist/record/model/definition.cjs.map +1 -0
  649. package/dist/record/model/definition.d.cts +463 -0
  650. package/dist/record/model/definition.d.mts +463 -0
  651. package/dist/record/model/definition.d.ts +463 -0
  652. package/dist/record/model/definition.js +40 -0
  653. package/dist/record/model/definition.js.map +1 -0
  654. package/dist/record/model/identifiers.cjs +52 -10
  655. package/dist/record/model/identifiers.cjs.map +1 -1
  656. package/dist/record/model/identifiers.d.cts +44 -3
  657. package/dist/record/model/identifiers.d.mts +44 -3
  658. package/dist/record/model/identifiers.d.ts +44 -3
  659. package/dist/record/model/identifiers.js +62 -36
  660. package/dist/record/model/index.cjs +1 -0
  661. package/dist/record/model/index.cjs.map +1 -1
  662. package/dist/record/model/index.d.cts +1 -0
  663. package/dist/record/model/index.d.mts +1 -0
  664. package/dist/record/model/index.d.ts +1 -0
  665. package/dist/record/model/index.js +86 -48
  666. package/dist/record/model/read-state.cjs.map +1 -1
  667. package/dist/record/model/read-state.d.cts +6 -9
  668. package/dist/record/model/read-state.d.mts +6 -9
  669. package/dist/record/model/read-state.d.ts +6 -9
  670. package/dist/record/model/run-context.cjs +80 -0
  671. package/dist/record/model/run-context.cjs.map +1 -0
  672. package/dist/record/model/run-context.d.cts +30 -0
  673. package/dist/record/model/run-context.d.mts +30 -0
  674. package/dist/record/model/run-context.d.ts +30 -0
  675. package/dist/record/model/run-context.js +14 -0
  676. package/dist/record/model/run-context.js.map +1 -0
  677. package/dist/record/model/validation.cjs +155 -54
  678. package/dist/record/model/validation.cjs.map +1 -1
  679. package/dist/record/model/validation.d.cts +16 -11
  680. package/dist/record/model/validation.d.mts +16 -11
  681. package/dist/record/model/validation.d.ts +16 -11
  682. package/dist/record/model/validation.js +10 -8
  683. package/dist/record/platform/errors.cjs +2 -8
  684. package/dist/record/platform/errors.cjs.map +1 -1
  685. package/dist/record/platform/errors.d.cts +3 -13
  686. package/dist/record/platform/errors.d.mts +3 -13
  687. package/dist/record/platform/errors.d.ts +3 -13
  688. package/dist/record/platform/errors.js +0 -2
  689. package/dist/record/platform/index.js +38 -48
  690. package/dist/record/platform/node.cjs +3 -142
  691. package/dist/record/platform/node.cjs.map +1 -1
  692. package/dist/record/platform/node.d.cts +2 -4
  693. package/dist/record/platform/node.d.mts +2 -4
  694. package/dist/record/platform/node.d.ts +2 -4
  695. package/dist/record/platform/node.js +0 -4
  696. package/dist/record/platform/root.cjs +0 -11
  697. package/dist/record/platform/root.cjs.map +1 -1
  698. package/dist/record/platform/root.d.cts +0 -2
  699. package/dist/record/platform/root.d.mts +0 -2
  700. package/dist/record/platform/root.d.ts +0 -2
  701. package/dist/record/platform/services.cjs +1 -7
  702. package/dist/record/platform/services.cjs.map +1 -1
  703. package/dist/record/platform/services.d.cts +2 -29
  704. package/dist/record/platform/services.d.mts +2 -29
  705. package/dist/record/platform/services.d.ts +2 -29
  706. package/dist/record/platform/services.js +2 -6
  707. package/dist/record/reader/errors.cjs.map +1 -1
  708. package/dist/record/reader/errors.d.cts +3 -2
  709. package/dist/record/reader/errors.d.mts +3 -2
  710. package/dist/record/reader/errors.d.ts +3 -2
  711. package/dist/record/reader/format.cjs +26 -40
  712. package/dist/record/reader/format.cjs.map +1 -1
  713. package/dist/record/reader/format.d.cts +6 -7
  714. package/dist/record/reader/format.d.mts +6 -7
  715. package/dist/record/reader/format.d.ts +6 -7
  716. package/dist/record/reader/index.js +22 -30
  717. package/dist/record/reader/runtime.cjs +112 -636
  718. package/dist/record/reader/runtime.cjs.map +1 -1
  719. package/dist/record/reader/runtime.d.cts +43 -12
  720. package/dist/record/reader/runtime.d.mts +43 -12
  721. package/dist/record/reader/runtime.d.ts +43 -12
  722. package/dist/record/reader/runtime.js +6 -10
  723. package/dist/record/reader/types.cjs +3 -6
  724. package/dist/record/reader/types.cjs.map +1 -1
  725. package/dist/record/reader/types.d.cts +3 -42
  726. package/dist/record/reader/types.d.mts +3 -42
  727. package/dist/record/reader/types.d.ts +3 -42
  728. package/dist/record/reader/types.js +0 -4
  729. package/dist/record/writer/errors.cjs +7 -0
  730. package/dist/record/writer/errors.cjs.map +1 -1
  731. package/dist/record/writer/errors.d.cts +5 -0
  732. package/dist/record/writer/errors.d.mts +5 -0
  733. package/dist/record/writer/errors.d.ts +5 -0
  734. package/dist/record/writer/errors.js +6 -4
  735. package/dist/record/writer/index.cjs +0 -1
  736. package/dist/record/writer/index.cjs.map +1 -1
  737. package/dist/record/writer/index.d.cts +0 -1
  738. package/dist/record/writer/index.d.mts +0 -1
  739. package/dist/record/writer/index.d.ts +0 -1
  740. package/dist/record/writer/index.js +10 -10
  741. package/dist/record/writer/types.cjs.map +1 -1
  742. package/dist/record/writer/types.d.cts +12 -17
  743. package/dist/record/writer/types.d.mts +12 -17
  744. package/dist/record/writer/types.d.ts +12 -17
  745. package/dist/report/assets/colors.cjs +70 -0
  746. package/dist/report/assets/colors.cjs.map +1 -0
  747. package/dist/report/assets/colors.d.cts +22 -0
  748. package/dist/report/assets/colors.d.mts +22 -0
  749. package/dist/report/assets/colors.d.ts +22 -0
  750. package/dist/report/assets/colors.js +18 -0
  751. package/dist/report/assets/colors.js.map +1 -0
  752. package/dist/report/assets/enhance.js +466 -0
  753. package/dist/report/assets/series-encoding.cjs +116 -0
  754. package/dist/report/assets/series-encoding.cjs.map +1 -0
  755. package/dist/report/assets/series-encoding.d.cts +36 -0
  756. package/dist/report/assets/series-encoding.d.mts +36 -0
  757. package/dist/report/assets/series-encoding.d.ts +36 -0
  758. package/dist/report/assets/series-encoding.js +22 -0
  759. package/dist/report/assets/series-encoding.js.map +1 -0
  760. package/dist/report/assets/styles.css +2678 -0
  761. package/dist/report/built-in/analysis-values.cjs +28 -0
  762. package/dist/report/built-in/analysis-values.cjs.map +1 -0
  763. package/dist/report/built-in/analysis-values.d.cts +41 -0
  764. package/dist/report/built-in/analysis-values.d.mts +41 -0
  765. package/dist/report/built-in/analysis-values.d.ts +41 -0
  766. package/dist/report/built-in/analysis-values.js +10 -0
  767. package/dist/report/built-in/analysis-values.js.map +1 -0
  768. package/dist/report/built-in/attempt-overview.cjs +62 -384
  769. package/dist/report/built-in/attempt-overview.cjs.map +1 -1
  770. package/dist/report/built-in/attempt-overview.d.cts +4 -8
  771. package/dist/report/built-in/attempt-overview.d.mts +4 -8
  772. package/dist/report/built-in/attempt-overview.d.ts +4 -8
  773. package/dist/report/built-in/execution.cjs +40 -747
  774. package/dist/report/built-in/execution.cjs.map +1 -1
  775. package/dist/report/built-in/execution.d.cts +10 -19
  776. package/dist/report/built-in/execution.d.mts +10 -19
  777. package/dist/report/built-in/execution.d.ts +10 -19
  778. package/dist/report/built-in/index.cjs +15 -28
  779. package/dist/report/built-in/index.cjs.map +1 -1
  780. package/dist/report/built-in/index.d.cts +4 -6
  781. package/dist/report/built-in/index.d.mts +4 -6
  782. package/dist/report/built-in/index.d.ts +4 -6
  783. package/dist/report/built-in/index.js +22 -31
  784. package/dist/report/built-in/index.mjs +22 -31
  785. package/dist/report/built-in/machine.cjs +41 -0
  786. package/dist/report/built-in/machine.cjs.map +1 -0
  787. package/dist/report/built-in/machine.d.cts +29 -0
  788. package/dist/report/built-in/machine.d.mts +29 -0
  789. package/dist/report/built-in/machine.d.ts +29 -0
  790. package/dist/report/built-in/machine.js +8 -0
  791. package/dist/report/built-in/machine.js.map +1 -0
  792. package/dist/report/built-in/overview.cjs +38 -200
  793. package/dist/report/built-in/overview.cjs.map +1 -1
  794. package/dist/report/built-in/overview.d.cts +5 -5
  795. package/dist/report/built-in/overview.d.mts +5 -5
  796. package/dist/report/built-in/overview.d.ts +5 -5
  797. package/dist/report/built-in/overview.js +0 -2
  798. package/dist/report/built-in/result-components.cjs +325 -0
  799. package/dist/report/built-in/result-components.cjs.map +1 -0
  800. package/dist/report/built-in/result-components.d.cts +94 -0
  801. package/dist/report/built-in/result-components.d.mts +94 -0
  802. package/dist/report/built-in/result-components.d.ts +94 -0
  803. package/dist/report/built-in/result-components.js +24 -0
  804. package/dist/report/built-in/result-components.js.map +1 -0
  805. package/dist/report/built-in/run-membership-overview.cjs +48 -184
  806. package/dist/report/built-in/run-membership-overview.cjs.map +1 -1
  807. package/dist/report/built-in/run-membership-overview.d.cts +5 -5
  808. package/dist/report/built-in/run-membership-overview.d.mts +5 -5
  809. package/dist/report/built-in/run-membership-overview.d.ts +5 -5
  810. package/dist/report/built-in/sandbox-history.cjs +31 -372
  811. package/dist/report/built-in/sandbox-history.cjs.map +1 -1
  812. package/dist/report/built-in/sandbox-history.d.cts +5 -8
  813. package/dist/report/built-in/sandbox-history.d.mts +5 -8
  814. package/dist/report/built-in/sandbox-history.d.ts +5 -8
  815. package/dist/report/built-in/source.cjs +40 -150
  816. package/dist/report/built-in/source.cjs.map +1 -1
  817. package/dist/report/built-in/source.d.cts +10 -11
  818. package/dist/report/built-in/source.d.mts +10 -11
  819. package/dist/report/built-in/source.d.ts +10 -11
  820. package/dist/report/built-in/source.js +1 -0
  821. package/dist/report/built-in/standard.cjs +135 -0
  822. package/dist/report/built-in/standard.cjs.map +1 -0
  823. package/dist/report/built-in/standard.d.cts +91 -0
  824. package/dist/report/built-in/standard.d.mts +91 -0
  825. package/dist/report/built-in/standard.d.ts +91 -0
  826. package/dist/report/built-in/standard.js +17 -0
  827. package/dist/report/built-in/standard.js.map +1 -0
  828. package/dist/report/components/attempt-detail/compute.cjs +763 -0
  829. package/dist/report/components/attempt-detail/compute.cjs.map +1 -0
  830. package/dist/report/components/attempt-detail/compute.d.cts +370 -0
  831. package/dist/report/components/attempt-detail/compute.d.mts +370 -0
  832. package/dist/report/components/attempt-detail/compute.d.ts +370 -0
  833. package/dist/report/components/attempt-detail/compute.js +46 -0
  834. package/dist/report/components/attempt-detail/compute.js.map +1 -0
  835. package/dist/report/components/attempt-detail/content.cjs +411 -0
  836. package/dist/report/components/attempt-detail/content.cjs.map +1 -0
  837. package/dist/report/components/attempt-detail/content.d.cts +34 -0
  838. package/dist/report/components/attempt-detail/content.d.mts +34 -0
  839. package/dist/report/components/attempt-detail/content.d.ts +34 -0
  840. package/dist/report/components/attempt-detail/content.js +30 -0
  841. package/dist/report/components/attempt-detail/content.js.map +1 -0
  842. package/dist/report/components/attempt-detail/index.cjs +314 -0
  843. package/dist/report/components/attempt-detail/index.cjs.map +1 -0
  844. package/dist/report/components/attempt-detail/index.d.cts +27 -0
  845. package/dist/report/components/attempt-detail/index.d.mts +27 -0
  846. package/dist/report/components/attempt-detail/index.d.ts +27 -0
  847. package/dist/report/components/attempt-detail/index.js +34 -0
  848. package/dist/report/components/attempt-detail/index.js.map +1 -0
  849. package/dist/report/components/attempt-detail/validate.cjs +497 -0
  850. package/dist/report/components/attempt-detail/validate.cjs.map +1 -0
  851. package/dist/report/components/attempt-detail/validate.d.cts +14 -0
  852. package/dist/report/components/attempt-detail/validate.d.mts +14 -0
  853. package/dist/report/components/attempt-detail/validate.d.ts +14 -0
  854. package/dist/report/components/attempt-detail/validate.js +30 -0
  855. package/dist/report/components/attempt-detail/validate.js.map +1 -0
  856. package/dist/report/components/entity-lists/compute.cjs +426 -0
  857. package/dist/report/components/entity-lists/compute.cjs.map +1 -0
  858. package/dist/report/components/entity-lists/compute.d.cts +107 -0
  859. package/dist/report/components/entity-lists/compute.d.mts +107 -0
  860. package/dist/report/components/entity-lists/compute.d.ts +107 -0
  861. package/dist/report/components/entity-lists/compute.js +12 -0
  862. package/dist/report/components/entity-lists/compute.js.map +1 -0
  863. package/dist/report/components/entity-lists/content.cjs +275 -0
  864. package/dist/report/components/entity-lists/content.cjs.map +1 -0
  865. package/dist/report/components/entity-lists/content.d.cts +4 -0
  866. package/dist/report/components/entity-lists/content.d.mts +4 -0
  867. package/dist/report/components/entity-lists/content.d.ts +4 -0
  868. package/dist/report/components/entity-lists/content.js +8 -0
  869. package/dist/report/components/entity-lists/content.js.map +1 -0
  870. package/dist/report/components/entity-lists/index.cjs +48 -0
  871. package/dist/report/components/entity-lists/index.cjs.map +1 -0
  872. package/dist/report/components/entity-lists/index.d.cts +39 -0
  873. package/dist/report/components/entity-lists/index.d.mts +39 -0
  874. package/dist/report/components/entity-lists/index.d.ts +39 -0
  875. package/dist/report/components/entity-lists/index.js +22 -0
  876. package/dist/report/components/entity-lists/index.js.map +1 -0
  877. package/dist/report/components/experiment-detail/compute.cjs +228 -0
  878. package/dist/report/components/experiment-detail/compute.cjs.map +1 -0
  879. package/dist/report/components/experiment-detail/compute.d.cts +72 -0
  880. package/dist/report/components/experiment-detail/compute.d.mts +72 -0
  881. package/dist/report/components/experiment-detail/compute.d.ts +72 -0
  882. package/dist/report/components/experiment-detail/compute.js +6 -0
  883. package/dist/report/components/experiment-detail/compute.js.map +1 -0
  884. package/dist/report/components/experiment-detail/index.cjs +84 -0
  885. package/dist/report/components/experiment-detail/index.cjs.map +1 -0
  886. package/dist/report/components/experiment-detail/index.d.cts +13 -0
  887. package/dist/report/components/experiment-detail/index.d.mts +13 -0
  888. package/dist/report/components/experiment-detail/index.d.ts +13 -0
  889. package/dist/report/components/experiment-detail/index.js +6 -0
  890. package/dist/report/components/experiment-detail/index.js.map +1 -0
  891. package/dist/report/components/site-components/HeroCard.cjs +38 -0
  892. package/dist/report/components/site-components/HeroCard.cjs.map +1 -0
  893. package/dist/report/components/site-components/HeroCard.d.cts +14 -0
  894. package/dist/report/components/site-components/HeroCard.d.mts +14 -0
  895. package/dist/report/components/site-components/HeroCard.d.ts +14 -0
  896. package/dist/report/components/site-components/HeroCard.js +6 -0
  897. package/dist/report/components/site-components/HeroCard.js.map +1 -0
  898. package/dist/report/components/site-components/PoweredBy.cjs +12 -0
  899. package/dist/report/components/site-components/PoweredBy.cjs.map +1 -0
  900. package/dist/report/components/site-components/PoweredBy.d.cts +5 -0
  901. package/dist/report/components/site-components/PoweredBy.d.mts +5 -0
  902. package/dist/report/components/site-components/PoweredBy.d.ts +5 -0
  903. package/dist/report/components/site-components/PoweredBy.js +8 -0
  904. package/dist/report/components/site-components/PoweredBy.js.map +1 -0
  905. package/dist/report/components/site-components/compute.cjs +130 -0
  906. package/dist/report/components/site-components/compute.cjs.map +1 -0
  907. package/dist/report/components/site-components/compute.d.cts +36 -0
  908. package/dist/report/components/site-components/compute.d.mts +36 -0
  909. package/dist/report/components/site-components/compute.d.ts +36 -0
  910. package/dist/report/components/site-components/compute.js +16 -0
  911. package/dist/report/components/site-components/compute.js.map +1 -0
  912. package/dist/report/components/site-components/content.cjs +9 -0
  913. package/dist/report/components/site-components/content.cjs.map +1 -0
  914. package/dist/report/components/site-components/content.d.cts +118 -0
  915. package/dist/report/components/site-components/content.d.mts +118 -0
  916. package/dist/report/components/site-components/content.d.ts +118 -0
  917. package/dist/report/components/site-components/content.js +12 -0
  918. package/dist/report/components/site-components/content.js.map +1 -0
  919. package/dist/report/components/site-components/faces.cjs +33 -0
  920. package/dist/report/components/site-components/faces.cjs.map +1 -0
  921. package/dist/report/components/site-components/faces.d.cts +9 -0
  922. package/dist/report/components/site-components/faces.d.mts +9 -0
  923. package/dist/report/components/site-components/faces.d.ts +9 -0
  924. package/dist/report/components/site-components/faces.js +6 -0
  925. package/dist/report/components/site-components/faces.js.map +1 -0
  926. package/dist/report/components/site-components/hero-types.cjs +3 -0
  927. package/dist/report/components/site-components/hero-types.cjs.map +1 -0
  928. package/dist/report/components/site-components/hero-types.d.cts +17 -0
  929. package/dist/report/components/site-components/hero-types.d.mts +17 -0
  930. package/dist/report/components/site-components/hero-types.d.ts +17 -0
  931. package/dist/report/components/site-components/hero-types.js +4 -0
  932. package/dist/report/components/site-components/hero-types.js.map +1 -0
  933. package/dist/report/components/site-components/index.cjs +90 -0
  934. package/dist/report/components/site-components/index.cjs.map +1 -0
  935. package/dist/report/components/site-components/index.d.cts +58 -0
  936. package/dist/report/components/site-components/index.d.mts +58 -0
  937. package/dist/report/components/site-components/index.d.ts +58 -0
  938. package/dist/report/components/site-components/index.js +26 -0
  939. package/dist/report/components/site-components/index.js.map +1 -0
  940. package/dist/report/components/site-components/projections.cjs +86 -0
  941. package/dist/report/components/site-components/projections.cjs.map +1 -0
  942. package/dist/report/components/site-components/projections.d.cts +11 -0
  943. package/dist/report/components/site-components/projections.d.mts +11 -0
  944. package/dist/report/components/site-components/projections.d.ts +11 -0
  945. package/dist/report/components/site-components/projections.js +12 -0
  946. package/dist/report/components/site-components/projections.js.map +1 -0
  947. package/dist/report/components/site-components/scope-warnings.cjs +89 -0
  948. package/dist/report/components/site-components/scope-warnings.cjs.map +1 -0
  949. package/dist/report/components/site-components/scope-warnings.d.cts +34 -0
  950. package/dist/report/components/site-components/scope-warnings.d.mts +34 -0
  951. package/dist/report/components/site-components/scope-warnings.d.ts +34 -0
  952. package/dist/report/components/site-components/scope-warnings.js +8 -0
  953. package/dist/report/components/site-components/scope-warnings.js.map +1 -0
  954. package/dist/report/components/site-components/snapshot-diagnostics.cjs +43 -0
  955. package/dist/report/components/site-components/snapshot-diagnostics.cjs.map +1 -0
  956. package/dist/report/components/site-components/snapshot-diagnostics.d.cts +15 -0
  957. package/dist/report/components/site-components/snapshot-diagnostics.d.mts +15 -0
  958. package/dist/report/components/site-components/snapshot-diagnostics.d.ts +15 -0
  959. package/dist/report/components/site-components/snapshot-diagnostics.js +8 -0
  960. package/dist/report/components/site-components/snapshot-diagnostics.js.map +1 -0
  961. package/dist/report/components/site-components/validators.cjs +140 -0
  962. package/dist/report/components/site-components/validators.cjs.map +1 -0
  963. package/dist/report/components/site-components/validators.d.cts +9 -0
  964. package/dist/report/components/site-components/validators.d.mts +9 -0
  965. package/dist/report/components/site-components/validators.d.ts +9 -0
  966. package/dist/report/components/site-components/validators.js +16 -0
  967. package/dist/report/components/site-components/validators.js.map +1 -0
  968. package/dist/report/components/summaries/compute.cjs +224 -0
  969. package/dist/report/components/summaries/compute.cjs.map +1 -0
  970. package/dist/report/components/summaries/compute.d.cts +78 -0
  971. package/dist/report/components/summaries/compute.d.mts +78 -0
  972. package/dist/report/components/summaries/compute.d.ts +78 -0
  973. package/dist/report/components/summaries/compute.js +10 -0
  974. package/dist/report/components/summaries/compute.js.map +1 -0
  975. package/dist/report/components/summaries/index.cjs +68 -0
  976. package/dist/report/components/summaries/index.cjs.map +1 -0
  977. package/dist/report/components/summaries/index.d.cts +42 -0
  978. package/dist/report/components/summaries/index.d.mts +42 -0
  979. package/dist/report/components/summaries/index.d.ts +42 -0
  980. package/dist/report/components/summaries/index.js +12 -0
  981. package/dist/report/components/summaries/index.js.map +1 -0
  982. package/dist/report/components/summaries/stability-overview.cjs +27 -0
  983. package/dist/report/components/summaries/stability-overview.cjs.map +1 -0
  984. package/dist/report/components/summaries/stability-overview.d.cts +19 -0
  985. package/dist/report/components/summaries/stability-overview.d.mts +19 -0
  986. package/dist/report/components/summaries/stability-overview.d.ts +19 -0
  987. package/dist/report/components/summaries/stability-overview.js +6 -0
  988. package/dist/report/components/summaries/stability-overview.js.map +1 -0
  989. package/dist/report/definition/cell.cjs +90 -0
  990. package/dist/report/definition/cell.cjs.map +1 -0
  991. package/dist/report/definition/cell.d.cts +99 -0
  992. package/dist/report/definition/cell.d.mts +99 -0
  993. package/dist/report/definition/cell.d.ts +99 -0
  994. package/dist/report/definition/cell.js +8 -0
  995. package/dist/report/definition/cell.js.map +1 -0
  996. package/dist/report/definition/grid-layout.cjs +151 -0
  997. package/dist/report/definition/grid-layout.cjs.map +1 -0
  998. package/dist/report/definition/grid-layout.d.cts +77 -0
  999. package/dist/report/definition/grid-layout.d.mts +77 -0
  1000. package/dist/report/definition/grid-layout.d.ts +77 -0
  1001. package/dist/report/definition/grid-layout.js +20 -0
  1002. package/dist/report/definition/grid-layout.js.map +1 -0
  1003. package/dist/report/definition/primitives/callouts-logic.cjs +113 -0
  1004. package/dist/report/definition/primitives/callouts-logic.cjs.map +1 -0
  1005. package/dist/report/definition/primitives/callouts-logic.d.cts +26 -0
  1006. package/dist/report/definition/primitives/callouts-logic.d.mts +26 -0
  1007. package/dist/report/definition/primitives/callouts-logic.d.ts +26 -0
  1008. package/dist/report/definition/primitives/callouts-logic.js +20 -0
  1009. package/dist/report/definition/primitives/callouts-logic.js.map +1 -0
  1010. package/dist/report/definition/primitives/callouts.cjs +105 -0
  1011. package/dist/report/definition/primitives/callouts.cjs.map +1 -0
  1012. package/dist/report/definition/primitives/callouts.d.cts +9 -0
  1013. package/dist/report/definition/primitives/callouts.d.mts +9 -0
  1014. package/dist/report/definition/primitives/callouts.d.ts +9 -0
  1015. package/dist/report/definition/primitives/callouts.js +6 -0
  1016. package/dist/report/definition/primitives/callouts.js.map +1 -0
  1017. package/dist/report/definition/primitives/chart-map.cjs +138 -0
  1018. package/dist/report/definition/primitives/chart-map.cjs.map +1 -0
  1019. package/dist/report/definition/primitives/chart-map.d.cts +77 -0
  1020. package/dist/report/definition/primitives/chart-map.d.mts +77 -0
  1021. package/dist/report/definition/primitives/chart-map.d.ts +77 -0
  1022. package/dist/report/definition/primitives/chart-map.js +12 -0
  1023. package/dist/report/definition/primitives/chart-map.js.map +1 -0
  1024. package/dist/report/definition/primitives/chart.cjs +651 -0
  1025. package/dist/report/definition/primitives/chart.cjs.map +1 -0
  1026. package/dist/report/definition/primitives/chart.d.cts +43 -0
  1027. package/dist/report/definition/primitives/chart.d.mts +43 -0
  1028. package/dist/report/definition/primitives/chart.d.ts +43 -0
  1029. package/dist/report/definition/primitives/chart.js +8 -0
  1030. package/dist/report/definition/primitives/chart.js.map +1 -0
  1031. package/dist/report/definition/primitives/conversation.cjs +255 -0
  1032. package/dist/report/definition/primitives/conversation.cjs.map +1 -0
  1033. package/dist/report/definition/primitives/conversation.d.cts +71 -0
  1034. package/dist/report/definition/primitives/conversation.d.mts +71 -0
  1035. package/dist/report/definition/primitives/conversation.d.ts +71 -0
  1036. package/dist/report/definition/primitives/conversation.js +16 -0
  1037. package/dist/report/definition/primitives/conversation.js.map +1 -0
  1038. package/dist/report/definition/primitives/copy-block.cjs +55 -0
  1039. package/dist/report/definition/primitives/copy-block.cjs.map +1 -0
  1040. package/dist/report/definition/primitives/copy-block.d.cts +19 -0
  1041. package/dist/report/definition/primitives/copy-block.d.mts +19 -0
  1042. package/dist/report/definition/primitives/copy-block.d.ts +19 -0
  1043. package/dist/report/definition/primitives/copy-block.js +6 -0
  1044. package/dist/report/definition/primitives/copy-block.js.map +1 -0
  1045. package/dist/report/definition/primitives/diff-lines.cjs +163 -0
  1046. package/dist/report/definition/primitives/diff-lines.cjs.map +1 -0
  1047. package/dist/report/definition/primitives/diff-lines.d.cts +68 -0
  1048. package/dist/report/definition/primitives/diff-lines.d.mts +68 -0
  1049. package/dist/report/definition/primitives/diff-lines.d.ts +68 -0
  1050. package/dist/report/definition/primitives/diff-lines.js +28 -0
  1051. package/dist/report/definition/primitives/diff-lines.js.map +1 -0
  1052. package/dist/report/definition/primitives/diff-view.cjs +155 -0
  1053. package/dist/report/definition/primitives/diff-view.cjs.map +1 -0
  1054. package/dist/report/definition/primitives/diff-view.d.cts +14 -0
  1055. package/dist/report/definition/primitives/diff-view.d.mts +14 -0
  1056. package/dist/report/definition/primitives/diff-view.d.ts +14 -0
  1057. package/dist/report/definition/primitives/diff-view.js +8 -0
  1058. package/dist/report/definition/primitives/diff-view.js.map +1 -0
  1059. package/dist/report/definition/primitives/downloads.cjs +89 -0
  1060. package/dist/report/definition/primitives/downloads.cjs.map +1 -0
  1061. package/dist/report/definition/primitives/downloads.d.cts +28 -0
  1062. package/dist/report/definition/primitives/downloads.d.mts +28 -0
  1063. package/dist/report/definition/primitives/downloads.d.ts +28 -0
  1064. package/dist/report/definition/primitives/downloads.js +8 -0
  1065. package/dist/report/definition/primitives/downloads.js.map +1 -0
  1066. package/dist/report/definition/primitives/markdown.cjs +290 -0
  1067. package/dist/report/definition/primitives/markdown.cjs.map +1 -0
  1068. package/dist/report/definition/primitives/markdown.d.cts +29 -0
  1069. package/dist/report/definition/primitives/markdown.d.mts +29 -0
  1070. package/dist/report/definition/primitives/markdown.d.ts +29 -0
  1071. package/dist/report/definition/primitives/markdown.js +16 -0
  1072. package/dist/report/definition/primitives/markdown.js.map +1 -0
  1073. package/dist/report/definition/primitives/marks.cjs +96 -0
  1074. package/dist/report/definition/primitives/marks.cjs.map +1 -0
  1075. package/dist/report/definition/primitives/marks.d.cts +125 -0
  1076. package/dist/report/definition/primitives/marks.d.mts +125 -0
  1077. package/dist/report/definition/primitives/marks.d.ts +125 -0
  1078. package/dist/report/definition/primitives/marks.js +14 -0
  1079. package/dist/report/definition/primitives/marks.js.map +1 -0
  1080. package/dist/report/definition/primitives/points-dataset.cjs +147 -0
  1081. package/dist/report/definition/primitives/points-dataset.cjs.map +1 -0
  1082. package/dist/report/definition/primitives/points-dataset.d.cts +17 -0
  1083. package/dist/report/definition/primitives/points-dataset.d.mts +17 -0
  1084. package/dist/report/definition/primitives/points-dataset.d.ts +17 -0
  1085. package/dist/report/definition/primitives/points-dataset.js +6 -0
  1086. package/dist/report/definition/primitives/points-dataset.js.map +1 -0
  1087. package/dist/report/definition/primitives/shared.cjs +131 -0
  1088. package/dist/report/definition/primitives/shared.cjs.map +1 -0
  1089. package/dist/report/definition/primitives/shared.d.cts +67 -0
  1090. package/dist/report/definition/primitives/shared.d.mts +67 -0
  1091. package/dist/report/definition/primitives/shared.d.ts +67 -0
  1092. package/dist/report/definition/primitives/shared.js +34 -0
  1093. package/dist/report/definition/primitives/shared.js.map +1 -0
  1094. package/dist/report/definition/primitives/source-view.cjs +204 -0
  1095. package/dist/report/definition/primitives/source-view.cjs.map +1 -0
  1096. package/dist/report/definition/primitives/source-view.d.cts +47 -0
  1097. package/dist/report/definition/primitives/source-view.d.mts +47 -0
  1098. package/dist/report/definition/primitives/source-view.d.ts +47 -0
  1099. package/dist/report/definition/primitives/source-view.js +8 -0
  1100. package/dist/report/definition/primitives/source-view.js.map +1 -0
  1101. package/dist/report/definition/primitives/text-panel-state.cjs +38 -0
  1102. package/dist/report/definition/primitives/text-panel-state.cjs.map +1 -0
  1103. package/dist/report/definition/primitives/text-panel-state.d.cts +9 -0
  1104. package/dist/report/definition/primitives/text-panel-state.d.mts +9 -0
  1105. package/dist/report/definition/primitives/text-panel-state.d.ts +9 -0
  1106. package/dist/report/definition/primitives/text-panel-state.js +12 -0
  1107. package/dist/report/definition/primitives/text-panel-state.js.map +1 -0
  1108. package/dist/report/definition/primitives/tool-evidence.cjs +95 -0
  1109. package/dist/report/definition/primitives/tool-evidence.cjs.map +1 -0
  1110. package/dist/report/definition/primitives/tool-evidence.d.cts +11 -0
  1111. package/dist/report/definition/primitives/tool-evidence.d.mts +11 -0
  1112. package/dist/report/definition/primitives/tool-evidence.d.ts +11 -0
  1113. package/dist/report/definition/primitives/tool-evidence.js +6 -0
  1114. package/dist/report/definition/primitives/tool-evidence.js.map +1 -0
  1115. package/dist/report/definition/primitives/turn-trace.cjs +205 -0
  1116. package/dist/report/definition/primitives/turn-trace.cjs.map +1 -0
  1117. package/dist/report/definition/primitives/turn-trace.d.cts +8 -0
  1118. package/dist/report/definition/primitives/turn-trace.d.mts +8 -0
  1119. package/dist/report/definition/primitives/turn-trace.d.ts +8 -0
  1120. package/dist/report/definition/primitives/turn-trace.js +6 -0
  1121. package/dist/report/definition/primitives/turn-trace.js.map +1 -0
  1122. package/dist/report/definition/primitives/waterfall.cjs +206 -0
  1123. package/dist/report/definition/primitives/waterfall.cjs.map +1 -0
  1124. package/dist/report/definition/primitives/waterfall.d.cts +34 -0
  1125. package/dist/report/definition/primitives/waterfall.d.mts +34 -0
  1126. package/dist/report/definition/primitives/waterfall.d.ts +34 -0
  1127. package/dist/report/definition/primitives/waterfall.js +8 -0
  1128. package/dist/report/definition/primitives/waterfall.js.map +1 -0
  1129. package/dist/report/definition/primitives.cjs +826 -0
  1130. package/dist/report/definition/primitives.cjs.map +1 -0
  1131. package/dist/report/definition/primitives.d.cts +194 -0
  1132. package/dist/report/definition/primitives.d.mts +194 -0
  1133. package/dist/report/definition/primitives.d.ts +194 -0
  1134. package/dist/report/definition/primitives.js +84 -0
  1135. package/dist/report/definition/primitives.js.map +1 -0
  1136. package/dist/report/definition/report.cjs +778 -0
  1137. package/dist/report/definition/report.cjs.map +1 -0
  1138. package/dist/report/definition/report.d.cts +203 -0
  1139. package/dist/report/definition/report.d.mts +203 -0
  1140. package/dist/report/definition/report.d.ts +203 -0
  1141. package/dist/report/definition/report.js +16 -0
  1142. package/dist/report/definition/report.js.map +1 -0
  1143. package/dist/report/definition/table-text.cjs +184 -0
  1144. package/dist/report/definition/table-text.cjs.map +1 -0
  1145. package/dist/report/definition/table-text.d.cts +14 -0
  1146. package/dist/report/definition/table-text.d.mts +14 -0
  1147. package/dist/report/definition/table-text.d.ts +14 -0
  1148. package/dist/report/definition/table-text.js +6 -0
  1149. package/dist/report/definition/table-text.js.map +1 -0
  1150. package/dist/report/definition/tree.cjs +685 -0
  1151. package/dist/report/definition/tree.cjs.map +1 -0
  1152. package/dist/report/definition/tree.d.cts +165 -0
  1153. package/dist/report/definition/tree.d.mts +165 -0
  1154. package/dist/report/definition/tree.d.ts +165 -0
  1155. package/dist/report/definition/tree.js +44 -0
  1156. package/dist/report/definition/tree.js.map +1 -0
  1157. package/dist/report/execution/machine.cjs +587 -0
  1158. package/dist/report/execution/machine.cjs.map +1 -0
  1159. package/dist/report/execution/machine.d.cts +291 -0
  1160. package/dist/report/execution/machine.d.mts +291 -0
  1161. package/dist/report/execution/machine.d.ts +291 -0
  1162. package/dist/report/execution/machine.js +36 -0
  1163. package/dist/report/execution/machine.js.map +1 -0
  1164. package/dist/report/execution/model.cjs +91 -463
  1165. package/dist/report/execution/model.cjs.map +1 -1
  1166. package/dist/report/execution/model.d.cts +57 -39
  1167. package/dist/report/execution/model.d.mts +57 -39
  1168. package/dist/report/execution/model.d.ts +57 -39
  1169. package/dist/report/execution/model.js +36 -12
  1170. package/dist/report/execution/paths.cjs +182 -0
  1171. package/dist/report/execution/paths.cjs.map +1 -0
  1172. package/dist/report/execution/paths.d.cts +27 -0
  1173. package/dist/report/execution/paths.d.mts +27 -0
  1174. package/dist/report/execution/paths.d.ts +27 -0
  1175. package/dist/report/execution/paths.js +20 -0
  1176. package/dist/report/execution/paths.js.map +1 -0
  1177. package/dist/report/extension/assets.cjs +143 -0
  1178. package/dist/report/extension/assets.cjs.map +1 -0
  1179. package/dist/report/extension/assets.d.cts +17 -0
  1180. package/dist/report/extension/assets.d.mts +17 -0
  1181. package/dist/report/extension/assets.d.ts +17 -0
  1182. package/dist/report/extension/assets.js +10 -0
  1183. package/dist/report/extension/assets.js.map +1 -0
  1184. package/dist/report/extension/define.cjs +119 -0
  1185. package/dist/report/extension/define.cjs.map +1 -0
  1186. package/dist/report/extension/define.d.cts +11 -0
  1187. package/dist/report/extension/define.d.mts +11 -0
  1188. package/dist/report/extension/define.d.ts +11 -0
  1189. package/dist/report/extension/define.js +6 -0
  1190. package/dist/report/extension/define.js.map +1 -0
  1191. package/dist/report/extension/index.cjs +10 -0
  1192. package/dist/report/extension/index.cjs.map +1 -0
  1193. package/dist/report/extension/index.d.cts +6 -0
  1194. package/dist/report/extension/index.d.mts +6 -0
  1195. package/dist/report/extension/index.d.ts +6 -0
  1196. package/dist/report/extension/index.js +10 -0
  1197. package/dist/report/extension/index.js.map +1 -0
  1198. package/dist/report/extension/index.mjs +10 -0
  1199. package/dist/report/extension/index.mjs.map +1 -0
  1200. package/dist/report/extension/meta.cjs +59 -0
  1201. package/dist/report/extension/meta.cjs.map +1 -0
  1202. package/dist/report/extension/meta.d.cts +13 -0
  1203. package/dist/report/extension/meta.d.mts +13 -0
  1204. package/dist/report/extension/meta.d.ts +13 -0
  1205. package/dist/report/extension/meta.js +12 -0
  1206. package/dist/report/extension/meta.js.map +1 -0
  1207. package/dist/report/extension/types.cjs +3 -0
  1208. package/dist/report/extension/types.cjs.map +1 -0
  1209. package/dist/report/extension/types.d.cts +44 -0
  1210. package/dist/report/extension/types.d.mts +44 -0
  1211. package/dist/report/extension/types.d.ts +44 -0
  1212. package/dist/report/extension/types.js +4 -0
  1213. package/dist/report/extension/types.js.map +1 -0
  1214. package/dist/report/host/execute.cjs +457 -1238
  1215. package/dist/report/host/execute.cjs.map +1 -1
  1216. package/dist/report/host/execute.d.cts +66 -19
  1217. package/dist/report/host/execute.d.mts +66 -19
  1218. package/dist/report/host/execute.d.ts +66 -19
  1219. package/dist/report/host/execute.js +10 -2
  1220. package/dist/report/host/from-record.cjs +441 -27
  1221. package/dist/report/host/from-record.cjs.map +1 -1
  1222. package/dist/report/host/from-record.d.cts +62 -30
  1223. package/dist/report/host/from-record.d.mts +62 -30
  1224. package/dist/report/host/from-record.d.ts +62 -30
  1225. package/dist/report/host/from-record.js +8 -4
  1226. package/dist/report/host/index.cjs +31 -18
  1227. package/dist/report/host/index.cjs.map +1 -1
  1228. package/dist/report/host/index.d.cts +20 -11
  1229. package/dist/report/host/index.d.mts +20 -11
  1230. package/dist/report/host/index.d.ts +20 -11
  1231. package/dist/report/host/index.js +2 -20
  1232. package/dist/report/host/index.mjs +6 -0
  1233. package/dist/report/host/index.mjs.map +1 -0
  1234. package/dist/report/host/machine.cjs +102 -0
  1235. package/dist/report/host/machine.cjs.map +1 -0
  1236. package/dist/report/host/machine.d.cts +7 -0
  1237. package/dist/report/host/machine.d.mts +7 -0
  1238. package/dist/report/host/machine.d.ts +7 -0
  1239. package/dist/report/host/machine.js +6 -0
  1240. package/dist/report/host/machine.js.map +1 -0
  1241. package/dist/report/host/node/loader.cjs +40 -19
  1242. package/dist/report/host/node/loader.cjs.map +1 -1
  1243. package/dist/report/host/node/loader.d.cts +8 -7
  1244. package/dist/report/host/node/loader.d.mts +8 -7
  1245. package/dist/report/host/node/loader.d.ts +8 -7
  1246. package/dist/report/host/node.cjs +1 -1
  1247. package/dist/report/host/node.cjs.map +1 -1
  1248. package/dist/report/host/node.d.cts +3 -3
  1249. package/dist/report/host/node.d.mts +3 -3
  1250. package/dist/report/host/node.d.ts +3 -3
  1251. package/dist/report/host/progress.cjs +41 -0
  1252. package/dist/report/host/progress.cjs.map +1 -0
  1253. package/dist/report/host/progress.d.cts +22 -0
  1254. package/dist/report/host/progress.d.mts +22 -0
  1255. package/dist/report/host/progress.d.ts +22 -0
  1256. package/dist/report/host/progress.js +8 -0
  1257. package/dist/report/host/progress.js.map +1 -0
  1258. package/dist/report/host/show-target.cjs +214 -0
  1259. package/dist/report/host/show-target.cjs.map +1 -0
  1260. package/dist/report/host/show-target.d.cts +107 -0
  1261. package/dist/report/host/show-target.d.mts +107 -0
  1262. package/dist/report/host/show-target.d.ts +107 -0
  1263. package/dist/report/host/show-target.js +8 -0
  1264. package/dist/report/host/show-target.js.map +1 -0
  1265. package/dist/report/host/site-assets.cjs +11 -0
  1266. package/dist/report/host/site-assets.cjs.map +1 -0
  1267. package/dist/report/host/site-assets.d.cts +7 -0
  1268. package/dist/report/host/site-assets.d.mts +7 -0
  1269. package/dist/report/host/site-assets.d.ts +7 -0
  1270. package/dist/report/host/site-assets.js +8 -0
  1271. package/dist/report/host/site-assets.js.map +1 -0
  1272. package/dist/report/host/site-runtime.cjs +91 -0
  1273. package/dist/report/host/site-runtime.cjs.map +1 -0
  1274. package/dist/report/host/site-runtime.d.cts +9 -0
  1275. package/dist/report/host/site-runtime.d.mts +9 -0
  1276. package/dist/report/host/site-runtime.d.ts +9 -0
  1277. package/dist/report/host/site-runtime.js +10 -0
  1278. package/dist/report/host/site-runtime.js.map +1 -0
  1279. package/dist/report/host/static.cjs +694 -99
  1280. package/dist/report/host/static.cjs.map +1 -1
  1281. package/dist/report/host/static.d.cts +36 -19
  1282. package/dist/report/host/static.d.mts +36 -19
  1283. package/dist/report/host/static.d.ts +36 -19
  1284. package/dist/report/host/static.js +14 -4
  1285. package/dist/report/host/target-route.cjs +58 -0
  1286. package/dist/report/host/target-route.cjs.map +1 -0
  1287. package/dist/report/host/target-route.d.cts +15 -0
  1288. package/dist/report/host/target-route.d.mts +15 -0
  1289. package/dist/report/host/target-route.d.ts +15 -0
  1290. package/dist/report/host/target-route.js +8 -0
  1291. package/dist/report/host/target-route.js.map +1 -0
  1292. package/dist/report/host/view-session.cjs +68 -51
  1293. package/dist/report/host/view-session.cjs.map +1 -1
  1294. package/dist/report/host/view-session.d.cts +38 -44
  1295. package/dist/report/host/view-session.d.mts +38 -44
  1296. package/dist/report/host/view-session.d.ts +38 -44
  1297. package/dist/report/index.cjs +111 -52
  1298. package/dist/report/index.cjs.map +1 -1
  1299. package/dist/report/index.d.cts +39 -11
  1300. package/dist/report/index.d.mts +39 -11
  1301. package/dist/report/index.d.ts +39 -11
  1302. package/dist/report/index.js +188 -116
  1303. package/dist/report/index.mjs +188 -116
  1304. package/dist/report/library/details.cjs +166 -0
  1305. package/dist/report/library/details.cjs.map +1 -0
  1306. package/dist/report/library/details.d.cts +29 -0
  1307. package/dist/report/library/details.d.mts +29 -0
  1308. package/dist/report/library/details.d.ts +29 -0
  1309. package/dist/report/library/details.js +18 -0
  1310. package/dist/report/library/details.js.map +1 -0
  1311. package/dist/report/model/aggregate.cjs +243 -0
  1312. package/dist/report/model/aggregate.cjs.map +1 -0
  1313. package/dist/report/model/aggregate.d.cts +88 -0
  1314. package/dist/report/model/aggregate.d.mts +88 -0
  1315. package/dist/report/model/aggregate.d.ts +88 -0
  1316. package/dist/report/model/aggregate.js +26 -0
  1317. package/dist/report/model/aggregate.js.map +1 -0
  1318. package/dist/report/model/chart/math.cjs +206 -0
  1319. package/dist/report/model/chart/math.cjs.map +1 -0
  1320. package/dist/report/model/chart/math.d.cts +73 -0
  1321. package/dist/report/model/chart/math.d.mts +73 -0
  1322. package/dist/report/model/chart/math.d.ts +73 -0
  1323. package/dist/report/model/chart/math.js +14 -0
  1324. package/dist/report/model/chart/math.js.map +1 -0
  1325. package/dist/report/model/chart/plot.cjs +94 -0
  1326. package/dist/report/model/chart/plot.cjs.map +1 -0
  1327. package/dist/report/model/chart/plot.d.cts +52 -0
  1328. package/dist/report/model/chart/plot.d.mts +52 -0
  1329. package/dist/report/model/chart/plot.d.ts +52 -0
  1330. package/dist/report/model/chart/plot.js +8 -0
  1331. package/dist/report/model/chart/plot.js.map +1 -0
  1332. package/dist/report/model/conversions.cjs +100 -0
  1333. package/dist/report/model/conversions.cjs.map +1 -0
  1334. package/dist/report/model/conversions.d.cts +40 -0
  1335. package/dist/report/model/conversions.d.mts +40 -0
  1336. package/dist/report/model/conversions.d.ts +40 -0
  1337. package/dist/report/model/conversions.js +24 -0
  1338. package/dist/report/model/conversions.js.map +1 -0
  1339. package/dist/report/model/dataset.cjs +255 -0
  1340. package/dist/report/model/dataset.cjs.map +1 -0
  1341. package/dist/report/model/dataset.d.cts +33 -0
  1342. package/dist/report/model/dataset.d.mts +33 -0
  1343. package/dist/report/model/dataset.d.ts +33 -0
  1344. package/dist/report/model/dataset.js +22 -0
  1345. package/dist/report/model/dataset.js.map +1 -0
  1346. package/dist/report/model/format.cjs +377 -0
  1347. package/dist/report/model/format.cjs.map +1 -0
  1348. package/dist/report/model/format.d.cts +98 -0
  1349. package/dist/report/model/format.d.mts +98 -0
  1350. package/dist/report/model/format.d.ts +98 -0
  1351. package/dist/report/model/format.js +38 -0
  1352. package/dist/report/model/format.js.map +1 -0
  1353. package/dist/report/model/locale.cjs +437 -0
  1354. package/dist/report/model/locale.cjs.map +1 -0
  1355. package/dist/report/model/locale.d.cts +220 -0
  1356. package/dist/report/model/locale.d.mts +220 -0
  1357. package/dist/report/model/locale.d.ts +220 -0
  1358. package/dist/report/model/locale.js +20 -0
  1359. package/dist/report/model/locale.js.map +1 -0
  1360. package/dist/report/model/metrics.cjs +254 -0
  1361. package/dist/report/model/metrics.cjs.map +1 -0
  1362. package/dist/report/model/metrics.d.cts +73 -0
  1363. package/dist/report/model/metrics.d.mts +73 -0
  1364. package/dist/report/model/metrics.d.ts +73 -0
  1365. package/dist/report/model/metrics.js +26 -0
  1366. package/dist/report/model/metrics.js.map +1 -0
  1367. package/dist/report/model/pricing.cjs +126 -0
  1368. package/dist/report/model/pricing.cjs.map +1 -0
  1369. package/dist/report/model/pricing.d.cts +37 -0
  1370. package/dist/report/model/pricing.d.mts +37 -0
  1371. package/dist/report/model/pricing.d.ts +37 -0
  1372. package/dist/report/model/pricing.js +16 -0
  1373. package/dist/report/model/pricing.js.map +1 -0
  1374. package/dist/report/model/text-layout.cjs +8 -0
  1375. package/dist/report/model/text-layout.cjs.map +1 -1
  1376. package/dist/report/model/text-layout.d.cts +7 -0
  1377. package/dist/report/model/text-layout.d.mts +7 -0
  1378. package/dist/report/model/text-layout.d.ts +7 -0
  1379. package/dist/report/model/text-layout.js +30 -18
  1380. package/dist/report/model/types.cjs +3 -0
  1381. package/dist/report/model/types.cjs.map +1 -0
  1382. package/dist/report/model/types.d.cts +64 -0
  1383. package/dist/report/model/types.d.mts +64 -0
  1384. package/dist/report/model/types.d.ts +64 -0
  1385. package/dist/report/model/types.js +4 -0
  1386. package/dist/report/model/types.js.map +1 -0
  1387. package/dist/report/presentation.cjs +219 -0
  1388. package/dist/report/presentation.cjs.map +1 -0
  1389. package/dist/report/presentation.d.cts +114 -0
  1390. package/dist/report/presentation.d.mts +114 -0
  1391. package/dist/report/presentation.d.ts +114 -0
  1392. package/dist/report/presentation.js +18 -0
  1393. package/dist/report/react/enhance.js +466 -0
  1394. package/dist/report/react/index.cjs +40 -0
  1395. package/dist/report/react/index.cjs.map +1 -0
  1396. package/dist/report/react/index.d.cts +9 -0
  1397. package/dist/report/react/index.d.mts +9 -0
  1398. package/dist/report/react/index.d.ts +9 -0
  1399. package/dist/report/react/index.js +64 -0
  1400. package/dist/report/react/index.js.map +1 -0
  1401. package/dist/report/react/index.mjs +64 -0
  1402. package/dist/report/react/index.mjs.map +1 -0
  1403. package/dist/report/react/styles.css +2678 -0
  1404. package/dist/report/runtime/resolved-page.cjs +317 -0
  1405. package/dist/report/runtime/resolved-page.cjs.map +1 -0
  1406. package/dist/report/runtime/resolved-page.d.cts +133 -0
  1407. package/dist/report/runtime/resolved-page.d.mts +133 -0
  1408. package/dist/report/runtime/resolved-page.d.ts +133 -0
  1409. package/dist/report/runtime/resolved-page.js +14 -0
  1410. package/dist/report/runtime/resolved-page.js.map +1 -0
  1411. package/dist/report/runtime/text.cjs +32 -0
  1412. package/dist/report/runtime/text.cjs.map +1 -0
  1413. package/dist/report/runtime/text.d.cts +24 -0
  1414. package/dist/report/runtime/text.d.mts +24 -0
  1415. package/dist/report/runtime/text.d.ts +24 -0
  1416. package/dist/report/runtime/text.js +8 -0
  1417. package/dist/report/runtime/text.js.map +1 -0
  1418. package/dist/report/runtime/web.cjs +31 -0
  1419. package/dist/report/runtime/web.cjs.map +1 -0
  1420. package/dist/report/runtime/web.d.cts +21 -0
  1421. package/dist/report/runtime/web.d.mts +21 -0
  1422. package/dist/report/runtime/web.d.ts +21 -0
  1423. package/dist/report/runtime/web.js +8 -0
  1424. package/dist/report/runtime/web.js.map +1 -0
  1425. package/dist/report/theme.cjs +141 -0
  1426. package/dist/report/theme.cjs.map +1 -0
  1427. package/dist/report/theme.d.cts +57 -0
  1428. package/dist/report/theme.d.mts +57 -0
  1429. package/dist/report/theme.d.ts +57 -0
  1430. package/dist/report/theme.js +20 -0
  1431. package/dist/runner/accept.cjs +74 -87
  1432. package/dist/runner/accept.cjs.map +1 -1
  1433. package/dist/runner/accept.d.cts +14 -17
  1434. package/dist/runner/accept.d.mts +14 -17
  1435. package/dist/runner/accept.d.ts +14 -17
  1436. package/dist/runner/accept.js +4 -8
  1437. package/dist/runner/adoption.cjs +346 -408
  1438. package/dist/runner/adoption.cjs.map +1 -1
  1439. package/dist/runner/adoption.d.cts +132 -116
  1440. package/dist/runner/adoption.d.mts +132 -116
  1441. package/dist/runner/adoption.d.ts +132 -116
  1442. package/dist/runner/adoption.js +42 -46
  1443. package/dist/runner/attempt.cjs +175 -74
  1444. package/dist/runner/attempt.cjs.map +1 -1
  1445. package/dist/runner/attempt.d.cts +1 -1
  1446. package/dist/runner/attempt.d.mts +1 -1
  1447. package/dist/runner/attempt.d.ts +1 -1
  1448. package/dist/runner/cleanup-timeout.cjs +12 -6
  1449. package/dist/runner/cleanup-timeout.cjs.map +1 -1
  1450. package/dist/runner/cleanup-timeout.d.cts +5 -5
  1451. package/dist/runner/cleanup-timeout.d.mts +5 -5
  1452. package/dist/runner/cleanup-timeout.d.ts +5 -5
  1453. package/dist/runner/execution-identity.cjs +25 -0
  1454. package/dist/runner/execution-identity.cjs.map +1 -0
  1455. package/dist/runner/execution-identity.d.cts +39 -0
  1456. package/dist/runner/execution-identity.d.mts +39 -0
  1457. package/dist/runner/execution-identity.d.ts +39 -0
  1458. package/dist/runner/execution-identity.js +8 -0
  1459. package/dist/runner/execution-identity.js.map +1 -0
  1460. package/dist/runner/feedback/failure.cjs +0 -2
  1461. package/dist/runner/feedback/failure.cjs.map +1 -1
  1462. package/dist/runner/feedback/human.cjs +47 -20
  1463. package/dist/runner/feedback/human.cjs.map +1 -1
  1464. package/dist/runner/feedback/index.cjs.map +1 -1
  1465. package/dist/runner/feedback/index.d.cts +1 -1
  1466. package/dist/runner/feedback/index.d.mts +1 -1
  1467. package/dist/runner/feedback/index.d.ts +1 -1
  1468. package/dist/runner/feedback/json.cjs +29 -7
  1469. package/dist/runner/feedback/json.cjs.map +1 -1
  1470. package/dist/runner/feedback/json.d.cts +14 -1
  1471. package/dist/runner/feedback/json.d.mts +14 -1
  1472. package/dist/runner/feedback/json.d.ts +14 -1
  1473. package/dist/runner/feedback/reducer.cjs +3 -1
  1474. package/dist/runner/feedback/reducer.cjs.map +1 -1
  1475. package/dist/runner/feedback/sink.cjs +1 -1
  1476. package/dist/runner/feedback/sink.cjs.map +1 -1
  1477. package/dist/runner/feedback/sink.d.cts +6 -6
  1478. package/dist/runner/feedback/sink.d.mts +6 -6
  1479. package/dist/runner/feedback/sink.d.ts +6 -6
  1480. package/dist/runner/fingerprint.cjs +8 -2
  1481. package/dist/runner/fingerprint.cjs.map +1 -1
  1482. package/dist/runner/fingerprint.d.cts +9 -0
  1483. package/dist/runner/fingerprint.d.mts +9 -0
  1484. package/dist/runner/fingerprint.d.ts +9 -0
  1485. package/dist/runner/fingerprint.js +4 -2
  1486. package/dist/runner/gate-lease.cjs +24 -12
  1487. package/dist/runner/gate-lease.cjs.map +1 -1
  1488. package/dist/runner/ledger.cjs +27 -5
  1489. package/dist/runner/ledger.cjs.map +1 -1
  1490. package/dist/runner/lock.cjs +24 -11
  1491. package/dist/runner/lock.cjs.map +1 -1
  1492. package/dist/runner/project-current.cjs +63 -0
  1493. package/dist/runner/project-current.cjs.map +1 -1
  1494. package/dist/runner/project-current.d.cts +2 -0
  1495. package/dist/runner/project-current.d.mts +2 -0
  1496. package/dist/runner/project-current.d.ts +2 -0
  1497. package/dist/runner/record.cjs +659 -667
  1498. package/dist/runner/record.cjs.map +1 -1
  1499. package/dist/runner/record.d.cts +54 -81
  1500. package/dist/runner/record.d.mts +54 -81
  1501. package/dist/runner/record.d.ts +54 -81
  1502. package/dist/runner/rename-experiment.cjs +95 -54
  1503. package/dist/runner/rename-experiment.cjs.map +1 -1
  1504. package/dist/runner/rename-experiment.d.cts +19 -21
  1505. package/dist/runner/rename-experiment.d.mts +19 -21
  1506. package/dist/runner/rename-experiment.d.ts +19 -21
  1507. package/dist/runner/rename-experiment.js +2 -4
  1508. package/dist/runner/report.cjs +7 -2
  1509. package/dist/runner/report.cjs.map +1 -1
  1510. package/dist/runner/reporters/braintrust.cjs +4 -16
  1511. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  1512. package/dist/runner/reporters/braintrust.d.cts +22 -5
  1513. package/dist/runner/reporters/braintrust.d.mts +22 -5
  1514. package/dist/runner/reporters/braintrust.d.ts +22 -5
  1515. package/dist/runner/reuse-plan.cjs +256 -435
  1516. package/dist/runner/reuse-plan.cjs.map +1 -1
  1517. package/dist/runner/reuse-plan.d.cts +43 -63
  1518. package/dist/runner/reuse-plan.d.mts +43 -63
  1519. package/dist/runner/reuse-plan.d.ts +43 -63
  1520. package/dist/runner/reuse-plan.js +6 -8
  1521. package/dist/runner/reuse-readback.cjs +157 -170
  1522. package/dist/runner/reuse-readback.cjs.map +1 -1
  1523. package/dist/runner/reuse-readback.d.cts +46 -62
  1524. package/dist/runner/reuse-readback.d.mts +46 -62
  1525. package/dist/runner/reuse-readback.d.ts +46 -62
  1526. package/dist/runner/reuse-readback.js +0 -2
  1527. package/dist/runner/run.cjs +110 -135
  1528. package/dist/runner/run.cjs.map +1 -1
  1529. package/dist/runner/run.d.cts +1 -1
  1530. package/dist/runner/run.d.mts +1 -1
  1531. package/dist/runner/run.d.ts +1 -1
  1532. package/dist/runner/sandbox-pool.cjs +55 -43
  1533. package/dist/runner/sandbox-pool.cjs.map +1 -1
  1534. package/dist/runner/sandbox-record-producer.cjs +21 -6
  1535. package/dist/runner/sandbox-record-producer.cjs.map +1 -1
  1536. package/dist/runner/sandbox-record-producer.d.cts +6 -4
  1537. package/dist/runner/sandbox-record-producer.d.mts +6 -4
  1538. package/dist/runner/sandbox-record-producer.d.ts +6 -4
  1539. package/dist/runner/sandbox-record-producer.js +4 -0
  1540. package/dist/runner/source-producer.cjs +208 -268
  1541. package/dist/runner/source-producer.cjs.map +1 -1
  1542. package/dist/runner/source-producer.d.cts +32 -17
  1543. package/dist/runner/source-producer.d.mts +32 -17
  1544. package/dist/runner/source-producer.d.ts +32 -17
  1545. package/dist/runner/source-producer.js +6 -4
  1546. package/dist/runner/timing.cjs +13 -9
  1547. package/dist/runner/timing.cjs.map +1 -1
  1548. package/dist/runner/types.cjs +3 -2
  1549. package/dist/runner/types.cjs.map +1 -1
  1550. package/dist/runner/types.d.cts +34 -52
  1551. package/dist/runner/types.d.mts +34 -52
  1552. package/dist/runner/types.d.ts +34 -52
  1553. package/dist/runner/types.js +30 -28
  1554. package/dist/sample/analysis.cjs +925 -919
  1555. package/dist/sample/analysis.cjs.map +1 -1
  1556. package/dist/sample/analysis.d.cts +32 -144
  1557. package/dist/sample/analysis.d.mts +32 -144
  1558. package/dist/sample/analysis.d.ts +32 -144
  1559. package/dist/sample/analysis.js +14 -26
  1560. package/dist/sample/capability.cjs +761 -0
  1561. package/dist/sample/capability.cjs.map +1 -0
  1562. package/dist/sample/capability.d.cts +189 -0
  1563. package/dist/sample/capability.d.mts +189 -0
  1564. package/dist/sample/capability.d.ts +189 -0
  1565. package/dist/sample/capability.js +36 -0
  1566. package/dist/sample/capability.js.map +1 -0
  1567. package/dist/sample/index.cjs +9 -13
  1568. package/dist/sample/index.cjs.map +1 -1
  1569. package/dist/sample/index.d.cts +2 -2
  1570. package/dist/sample/index.d.mts +2 -2
  1571. package/dist/sample/index.d.ts +2 -2
  1572. package/dist/sample/index.js +10 -24
  1573. package/dist/sandbox/build-coordinator.cjs +146 -147
  1574. package/dist/sandbox/build-coordinator.cjs.map +1 -1
  1575. package/dist/sandbox/case-types.cjs.map +1 -1
  1576. package/dist/sandbox/case-types.d.cts +6 -0
  1577. package/dist/sandbox/case-types.d.mts +6 -0
  1578. package/dist/sandbox/case-types.d.ts +6 -0
  1579. package/dist/sandbox/commands.cjs.map +1 -1
  1580. package/dist/sandbox/commands.d.cts +0 -2
  1581. package/dist/sandbox/commands.d.mts +0 -2
  1582. package/dist/sandbox/commands.d.ts +0 -2
  1583. package/dist/sandbox/compose.cjs +212 -153
  1584. package/dist/sandbox/compose.cjs.map +1 -1
  1585. package/dist/sandbox/compose.d.cts +11 -2
  1586. package/dist/sandbox/compose.d.mts +11 -2
  1587. package/dist/sandbox/compose.d.ts +11 -2
  1588. package/dist/sandbox/compose.js +32 -30
  1589. package/dist/sandbox/docker.cjs +59 -38
  1590. package/dist/sandbox/docker.cjs.map +1 -1
  1591. package/dist/sandbox/docker.d.cts +2 -1
  1592. package/dist/sandbox/docker.d.mts +2 -1
  1593. package/dist/sandbox/docker.d.ts +2 -1
  1594. package/dist/sandbox/e2b.cjs +30 -18
  1595. package/dist/sandbox/e2b.cjs.map +1 -1
  1596. package/dist/sandbox/index.cjs +2 -2
  1597. package/dist/sandbox/index.cjs.map +1 -1
  1598. package/dist/sandbox/index.d.cts +2 -2
  1599. package/dist/sandbox/index.d.mts +2 -2
  1600. package/dist/sandbox/index.d.ts +2 -2
  1601. package/dist/sandbox/index.js +52 -52
  1602. package/dist/sandbox/index.mjs +52 -52
  1603. package/dist/sandbox/io-retry.cjs +18 -14
  1604. package/dist/sandbox/io-retry.cjs.map +1 -1
  1605. package/dist/sandbox/io-retry.d.cts +7 -4
  1606. package/dist/sandbox/io-retry.d.mts +7 -4
  1607. package/dist/sandbox/io-retry.d.ts +7 -4
  1608. package/dist/sandbox/keep.cjs +79 -52
  1609. package/dist/sandbox/keep.cjs.map +1 -1
  1610. package/dist/sandbox/layer.cjs.map +1 -1
  1611. package/dist/sandbox/layer.d.cts +3 -3
  1612. package/dist/sandbox/layer.d.mts +3 -3
  1613. package/dist/sandbox/layer.d.ts +3 -3
  1614. package/dist/sandbox/paths.cjs +96 -12
  1615. package/dist/sandbox/paths.cjs.map +1 -1
  1616. package/dist/sandbox/paths.d.cts +16 -0
  1617. package/dist/sandbox/paths.d.mts +16 -0
  1618. package/dist/sandbox/paths.d.ts +16 -0
  1619. package/dist/sandbox/paths.js +10 -8
  1620. package/dist/sandbox/prepare-commands.cjs +0 -5
  1621. package/dist/sandbox/prepare-commands.cjs.map +1 -1
  1622. package/dist/sandbox/prepare-commands.d.cts +1 -1
  1623. package/dist/sandbox/prepare-commands.d.mts +1 -1
  1624. package/dist/sandbox/prepare-commands.d.ts +1 -1
  1625. package/dist/sandbox/record/attachment.cjs +16 -53
  1626. package/dist/sandbox/record/attachment.cjs.map +1 -1
  1627. package/dist/sandbox/record/attachment.d.cts +11 -15
  1628. package/dist/sandbox/record/attachment.d.mts +11 -15
  1629. package/dist/sandbox/record/attachment.d.ts +11 -15
  1630. package/dist/sandbox/record/attachment.js +2 -6
  1631. package/dist/sandbox/record/codec.cjs +17 -17
  1632. package/dist/sandbox/record/codec.cjs.map +1 -1
  1633. package/dist/sandbox/record/codec.d.cts +12 -12
  1634. package/dist/sandbox/record/codec.d.mts +12 -12
  1635. package/dist/sandbox/record/codec.d.ts +12 -12
  1636. package/dist/sandbox/record/codec.js +4 -4
  1637. package/dist/sandbox/record/model.cjs +7 -7
  1638. package/dist/sandbox/record/model.cjs.map +1 -1
  1639. package/dist/sandbox/record/model.d.cts +13 -13
  1640. package/dist/sandbox/record/model.d.mts +13 -13
  1641. package/dist/sandbox/record/model.d.ts +13 -13
  1642. package/dist/sandbox/record/model.js +6 -6
  1643. package/dist/sandbox/record/projector.cjs +16 -25
  1644. package/dist/sandbox/record/projector.cjs.map +1 -1
  1645. package/dist/sandbox/record/projector.d.cts +4 -18
  1646. package/dist/sandbox/record/projector.d.mts +4 -18
  1647. package/dist/sandbox/record/projector.d.ts +4 -18
  1648. package/dist/sandbox/record/projector.js +2 -2
  1649. package/dist/sandbox/registry.cjs +19 -9
  1650. package/dist/sandbox/registry.cjs.map +1 -1
  1651. package/dist/sandbox/request-executor.cjs +63 -0
  1652. package/dist/sandbox/request-executor.cjs.map +1 -0
  1653. package/dist/sandbox/request-executor.d.cts +16 -0
  1654. package/dist/sandbox/request-executor.d.mts +16 -0
  1655. package/dist/sandbox/request-executor.d.ts +16 -0
  1656. package/dist/sandbox/request-executor.js +8 -0
  1657. package/dist/sandbox/request-executor.js.map +1 -0
  1658. package/dist/sandbox/retry.cjs +42 -38
  1659. package/dist/sandbox/retry.cjs.map +1 -1
  1660. package/dist/sandbox/retry.d.cts +6 -6
  1661. package/dist/sandbox/retry.d.mts +6 -6
  1662. package/dist/sandbox/retry.d.ts +6 -6
  1663. package/dist/sandbox/runtime.cjs +47 -56
  1664. package/dist/sandbox/runtime.cjs.map +1 -1
  1665. package/dist/sandbox/runtime.d.cts +1 -1
  1666. package/dist/sandbox/runtime.d.mts +1 -1
  1667. package/dist/sandbox/runtime.d.ts +1 -1
  1668. package/dist/sandbox/transfer-errors.cjs +37 -5
  1669. package/dist/sandbox/transfer-errors.cjs.map +1 -1
  1670. package/dist/sandbox/transfer-errors.d.cts +14 -0
  1671. package/dist/sandbox/transfer-errors.d.mts +14 -0
  1672. package/dist/sandbox/transfer-errors.d.ts +14 -0
  1673. package/dist/sandbox/transfer-errors.js +12 -8
  1674. package/dist/sandbox/types.cjs.map +1 -1
  1675. package/dist/sandbox/types.d.cts +0 -7
  1676. package/dist/sandbox/types.d.mts +0 -7
  1677. package/dist/sandbox/types.d.ts +0 -7
  1678. package/dist/sandbox/vercel.cjs +10 -14
  1679. package/dist/sandbox/vercel.cjs.map +1 -1
  1680. package/dist/sources/attachment.cjs +103 -248
  1681. package/dist/sources/attachment.cjs.map +1 -1
  1682. package/dist/sources/attachment.d.cts +47 -319
  1683. package/dist/sources/attachment.d.mts +47 -319
  1684. package/dist/sources/attachment.d.ts +47 -319
  1685. package/dist/sources/attachment.js +8 -18
  1686. package/dist/sources/codec.cjs +56 -56
  1687. package/dist/sources/codec.cjs.map +1 -1
  1688. package/dist/sources/codec.d.cts +63 -63
  1689. package/dist/sources/codec.d.mts +63 -63
  1690. package/dist/sources/codec.d.ts +63 -63
  1691. package/dist/sources/codec.js +44 -44
  1692. package/dist/sources/index.cjs +0 -2
  1693. package/dist/sources/index.cjs.map +1 -1
  1694. package/dist/sources/index.d.cts +0 -2
  1695. package/dist/sources/index.d.mts +0 -2
  1696. package/dist/sources/index.d.ts +0 -2
  1697. package/dist/sources/index.js +72 -86
  1698. package/dist/sources/model.cjs +2 -2
  1699. package/dist/sources/model.cjs.map +1 -1
  1700. package/dist/sources/model.d.cts +41 -41
  1701. package/dist/sources/model.d.mts +41 -41
  1702. package/dist/sources/model.d.ts +41 -41
  1703. package/dist/sources/model.js +2 -2
  1704. package/dist/sources/projector.cjs +39 -268
  1705. package/dist/sources/projector.cjs.map +1 -1
  1706. package/dist/sources/projector.d.cts +40 -8
  1707. package/dist/sources/projector.d.mts +40 -8
  1708. package/dist/sources/projector.d.ts +40 -8
  1709. package/dist/sources/projector.js +4 -6
  1710. package/dist/types.js +30 -28
  1711. package/dist/view/data.cjs.map +1 -1
  1712. package/dist/view/data.d.cts +5 -4
  1713. package/dist/view/data.d.mts +5 -4
  1714. package/dist/view/data.d.ts +5 -4
  1715. package/dist/view/index.cjs +3 -4
  1716. package/dist/view/index.cjs.map +1 -1
  1717. package/dist/view/index.d.cts +2 -2
  1718. package/dist/view/index.d.mts +2 -2
  1719. package/dist/view/index.d.ts +2 -2
  1720. package/dist/view/index.js +2 -4
  1721. package/dist/view/report-view-cache.cjs +200 -0
  1722. package/dist/view/report-view-cache.cjs.map +1 -0
  1723. package/dist/view/report-view-cache.d.cts +67 -0
  1724. package/dist/view/report-view-cache.d.mts +67 -0
  1725. package/dist/view/report-view-cache.d.ts +67 -0
  1726. package/dist/view/report-view-cache.js +8 -0
  1727. package/dist/view/report-view-cache.js.map +1 -0
  1728. package/dist/view/server.cjs +99 -102
  1729. package/dist/view/server.cjs.map +1 -1
  1730. package/dist/view/server.d.cts +0 -6
  1731. package/dist/view/server.d.mts +0 -6
  1732. package/dist/view/server.d.ts +0 -6
  1733. package/dist/view/shared/types.cjs.map +1 -1
  1734. package/dist/view/site.cjs +19 -27
  1735. package/dist/view/site.cjs.map +1 -1
  1736. package/dist/view/site.d.cts +10 -12
  1737. package/dist/view/site.d.mts +10 -12
  1738. package/dist/view/site.d.ts +10 -12
  1739. package/dist/view/site.js +2 -4
  1740. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +8 -8
  1741. package/docs-site/zh/examples/integrations/claude-sdk.mdx +8 -8
  1742. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  1743. package/docs-site/zh/examples/integrations/langgraph.mdx +6 -6
  1744. package/docs-site/zh/examples/integrations/pi-sdk.mdx +9 -9
  1745. package/docs-site/zh/explanation/adapter.mdx +3 -1
  1746. package/docs-site/zh/explanation/assert.mdx +6 -6
  1747. package/docs-site/zh/explanation/drive.mdx +1 -1
  1748. package/docs-site/zh/explanation/evals.mdx +6 -3
  1749. package/docs-site/zh/explanation/hitl.mdx +4 -2
  1750. package/docs-site/zh/explanation/judge.mdx +6 -6
  1751. package/docs-site/zh/explanation/overview.mdx +28 -29
  1752. package/docs-site/zh/explanation/record.mdx +26 -36
  1753. package/docs-site/zh/explanation/runner.mdx +7 -8
  1754. package/docs-site/zh/index.mdx +1 -1
  1755. package/docs-site/zh/introduction.mdx +1 -1
  1756. package/docs-site/zh/reference/cli.mdx +16 -19
  1757. package/docs-site/zh/reference/define-agent.mdx +0 -8
  1758. package/docs-site/zh/reference/define-config.mdx +6 -2
  1759. package/docs-site/zh/reference/define-eval.mdx +7 -5
  1760. package/docs-site/zh/reference/events.mdx +6 -3
  1761. package/docs-site/zh/reference/report-components.mdx +92 -88
  1762. package/docs-site/zh/reference/results-data.mdx +39 -49
  1763. package/docs-site/zh/troubleshooting/debug-sandbox.mdx +1 -1
  1764. package/docs-site/zh/troubleshooting/debugging.mdx +27 -28
  1765. package/docs-site/zh/tutorials/agent-feedback-loop.mdx +4 -4
  1766. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  1767. package/docs-site/zh/tutorials/authoring.mdx +6 -3
  1768. package/docs-site/zh/tutorials/connect-your-agent.mdx +2 -2
  1769. package/docs-site/zh/tutorials/custom-reports.mdx +148 -76
  1770. package/docs-site/zh/tutorials/deploy-report-site.mdx +14 -17
  1771. package/docs-site/zh/tutorials/evaluation-kinds.mdx +3 -3
  1772. package/docs-site/zh/tutorials/fixtures.mdx +5 -5
  1773. package/docs-site/zh/tutorials/handle-execution-failures.mdx +1 -1
  1774. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +1 -1
  1775. package/docs-site/zh/tutorials/publish-report.mdx +28 -28
  1776. package/docs-site/zh/tutorials/quickstart.mdx +2 -2
  1777. package/docs-site/zh/tutorials/reporters.mdx +4 -4
  1778. package/docs-site/zh/tutorials/rerun-and-cache.mdx +5 -5
  1779. package/docs-site/zh/tutorials/sandbox-agent.mdx +2 -2
  1780. package/docs-site/zh/tutorials/sandbox-providers.mdx +3 -3
  1781. package/docs-site/zh/tutorials/theming.mdx +47 -19
  1782. package/docs-site/zh/tutorials/viewing-results.mdx +43 -80
  1783. package/docs-site/zh/tutorials/write-experiment.mdx +16 -11
  1784. package/docs-site/zh/tutorials/write-send.mdx +11 -3
  1785. package/package.json +83 -11
  1786. package/dist/assertions/record/diff-model.cjs +0 -120
  1787. package/dist/assertions/record/diff-model.cjs.map +0 -1
  1788. package/dist/assertions/record/diff-model.d.cts +0 -47
  1789. package/dist/assertions/record/diff-model.d.mts +0 -47
  1790. package/dist/assertions/record/diff-model.d.ts +0 -47
  1791. package/dist/assertions/record/diff-model.js +0 -12
  1792. package/dist/assertions/record/diff-model.js.map +0 -1
  1793. package/dist/projection/attachment-result.cjs +0 -50
  1794. package/dist/projection/attachment-result.cjs.map +0 -1
  1795. package/dist/projection/attachment-result.d.cts +0 -38
  1796. package/dist/projection/attachment-result.d.mts +0 -38
  1797. package/dist/projection/attachment-result.d.ts +0 -38
  1798. package/dist/projection/attachment-result.js +0 -6
  1799. package/dist/projection/attachment-result.js.map +0 -1
  1800. package/dist/projection/attempt-selection.cjs +0 -87
  1801. package/dist/projection/attempt-selection.cjs.map +0 -1
  1802. package/dist/projection/attempt-selection.d.cts +0 -40
  1803. package/dist/projection/attempt-selection.d.mts +0 -40
  1804. package/dist/projection/attempt-selection.d.ts +0 -40
  1805. package/dist/projection/attempt-selection.js +0 -8
  1806. package/dist/projection/attempt-selection.js.map +0 -1
  1807. package/dist/projection/coverage.cjs +0 -106
  1808. package/dist/projection/coverage.cjs.map +0 -1
  1809. package/dist/projection/coverage.d.cts +0 -43
  1810. package/dist/projection/coverage.d.mts +0 -43
  1811. package/dist/projection/coverage.d.ts +0 -43
  1812. package/dist/projection/coverage.js +0 -6
  1813. package/dist/projection/coverage.js.map +0 -1
  1814. package/dist/projection/index.cjs +0 -36
  1815. package/dist/projection/index.cjs.map +0 -1
  1816. package/dist/projection/index.d.cts +0 -25
  1817. package/dist/projection/index.d.mts +0 -25
  1818. package/dist/projection/index.d.ts +0 -25
  1819. package/dist/projection/index.js +0 -46
  1820. package/dist/projection/index.mjs +0 -46
  1821. package/dist/projection/model.cjs +0 -3
  1822. package/dist/projection/model.cjs.map +0 -1
  1823. package/dist/projection/model.d.cts +0 -49
  1824. package/dist/projection/model.d.mts +0 -49
  1825. package/dist/projection/model.d.ts +0 -49
  1826. package/dist/projection/model.js +0 -4
  1827. package/dist/projection/model.js.map +0 -1
  1828. package/dist/projection/projector.cjs +0 -111
  1829. package/dist/projection/projector.cjs.map +0 -1
  1830. package/dist/projection/projector.d.cts +0 -51
  1831. package/dist/projection/projector.d.mts +0 -51
  1832. package/dist/projection/projector.d.ts +0 -51
  1833. package/dist/projection/projector.js +0 -16
  1834. package/dist/projection/projector.js.map +0 -1
  1835. package/dist/projection/runtime.cjs +0 -246
  1836. package/dist/projection/runtime.cjs.map +0 -1
  1837. package/dist/projection/runtime.d.cts +0 -14
  1838. package/dist/projection/runtime.d.mts +0 -14
  1839. package/dist/projection/runtime.d.ts +0 -14
  1840. package/dist/projection/runtime.js +0 -6
  1841. package/dist/record/migration/errors.cjs +0 -68
  1842. package/dist/record/migration/errors.cjs.map +0 -1
  1843. package/dist/record/migration/errors.d.cts +0 -73
  1844. package/dist/record/migration/errors.d.mts +0 -73
  1845. package/dist/record/migration/errors.d.ts +0 -73
  1846. package/dist/record/migration/errors.js +0 -22
  1847. package/dist/record/migration/errors.js.map +0 -1
  1848. package/dist/record/migration/identity.cjs +0 -27
  1849. package/dist/record/migration/identity.cjs.map +0 -1
  1850. package/dist/record/migration/identity.d.cts +0 -5
  1851. package/dist/record/migration/identity.d.mts +0 -5
  1852. package/dist/record/migration/identity.d.ts +0 -5
  1853. package/dist/record/migration/identity.js +0 -8
  1854. package/dist/record/migration/internal.cjs +0 -3
  1855. package/dist/record/migration/internal.cjs.map +0 -1
  1856. package/dist/record/migration/internal.d.cts +0 -111
  1857. package/dist/record/migration/internal.d.mts +0 -111
  1858. package/dist/record/migration/internal.d.ts +0 -111
  1859. package/dist/record/migration/internal.js +0 -4
  1860. package/dist/record/migration/internal.js.map +0 -1
  1861. package/dist/record/migration/orchestrate.cjs +0 -368
  1862. package/dist/record/migration/orchestrate.cjs.map +0 -1
  1863. package/dist/record/migration/orchestrate.d.cts +0 -113
  1864. package/dist/record/migration/orchestrate.d.mts +0 -113
  1865. package/dist/record/migration/orchestrate.d.ts +0 -113
  1866. package/dist/record/migration/orchestrate.js +0 -16
  1867. package/dist/record/migration/orchestrate.js.map +0 -1
  1868. package/dist/record/migration/plan.cjs +0 -63
  1869. package/dist/record/migration/plan.cjs.map +0 -1
  1870. package/dist/record/migration/plan.d.cts +0 -32
  1871. package/dist/record/migration/plan.d.mts +0 -32
  1872. package/dist/record/migration/plan.d.ts +0 -32
  1873. package/dist/record/migration/plan.js +0 -10
  1874. package/dist/record/migration/plan.js.map +0 -1
  1875. package/dist/record/migration/registry.cjs +0 -150
  1876. package/dist/record/migration/registry.cjs.map +0 -1
  1877. package/dist/record/migration/registry.d.cts +0 -61
  1878. package/dist/record/migration/registry.d.mts +0 -61
  1879. package/dist/record/migration/registry.d.ts +0 -61
  1880. package/dist/record/migration/registry.js +0 -14
  1881. package/dist/record/migration/registry.js.map +0 -1
  1882. package/dist/record/migration/storage.cjs +0 -382
  1883. package/dist/record/migration/storage.cjs.map +0 -1
  1884. package/dist/record/migration/storage.d.cts +0 -18
  1885. package/dist/record/migration/storage.d.mts +0 -18
  1886. package/dist/record/migration/storage.d.ts +0 -18
  1887. package/dist/record/migration/storage.js +0 -6
  1888. package/dist/record/migration/storage.js.map +0 -1
  1889. package/dist/record/migration/types.cjs.map +0 -1
  1890. package/dist/record/migration/types.d.cts +0 -16
  1891. package/dist/record/migration/types.d.mts +0 -16
  1892. package/dist/record/migration/types.d.ts +0 -16
  1893. package/dist/record/reader/internal.cjs +0 -17
  1894. package/dist/record/reader/internal.cjs.map +0 -1
  1895. package/dist/record/reader/internal.d.cts +0 -26
  1896. package/dist/record/reader/internal.d.mts +0 -26
  1897. package/dist/record/reader/internal.d.ts +0 -26
  1898. package/dist/record/reader/internal.js +0 -8
  1899. package/dist/record/reader/internal.js.map +0 -1
  1900. package/dist/record/writer/runtime.cjs +0 -656
  1901. package/dist/record/writer/runtime.cjs.map +0 -1
  1902. package/dist/record/writer/runtime.d.cts +0 -7
  1903. package/dist/record/writer/runtime.d.mts +0 -7
  1904. package/dist/record/writer/runtime.d.ts +0 -7
  1905. package/dist/record/writer/runtime.js +0 -6
  1906. package/dist/report/author/identity.cjs +0 -268
  1907. package/dist/report/author/identity.cjs.map +0 -1
  1908. package/dist/report/author/identity.d.cts +0 -75
  1909. package/dist/report/author/identity.d.mts +0 -75
  1910. package/dist/report/author/identity.d.ts +0 -75
  1911. package/dist/report/author/identity.js +0 -34
  1912. package/dist/report/author/identity.js.map +0 -1
  1913. package/dist/report/author/index.cjs +0 -19
  1914. package/dist/report/author/index.cjs.map +0 -1
  1915. package/dist/report/author/index.d.cts +0 -4
  1916. package/dist/report/author/index.d.mts +0 -4
  1917. package/dist/report/author/index.d.ts +0 -4
  1918. package/dist/report/author/index.js +0 -30
  1919. package/dist/report/author/internal.cjs +0 -98
  1920. package/dist/report/author/internal.cjs.map +0 -1
  1921. package/dist/report/author/internal.d.cts +0 -91
  1922. package/dist/report/author/internal.d.mts +0 -91
  1923. package/dist/report/author/internal.d.ts +0 -91
  1924. package/dist/report/author/internal.js +0 -18
  1925. package/dist/report/author/internal.js.map +0 -1
  1926. package/dist/report/author/model.cjs +0 -467
  1927. package/dist/report/author/model.cjs.map +0 -1
  1928. package/dist/report/author/model.d.cts +0 -241
  1929. package/dist/report/author/model.d.mts +0 -241
  1930. package/dist/report/author/model.d.ts +0 -241
  1931. package/dist/report/author/model.js +0 -32
  1932. package/dist/report/author/model.js.map +0 -1
  1933. package/dist/report/execution/index.cjs +0 -20
  1934. package/dist/report/execution/index.cjs.map +0 -1
  1935. package/dist/report/execution/index.d.cts +0 -3
  1936. package/dist/report/execution/index.d.mts +0 -3
  1937. package/dist/report/execution/index.d.ts +0 -3
  1938. package/dist/report/execution/index.js +0 -30
  1939. package/dist/report/execution/problems.cjs +0 -210
  1940. package/dist/report/execution/problems.cjs.map +0 -1
  1941. package/dist/report/execution/problems.d.cts +0 -54
  1942. package/dist/report/execution/problems.d.mts +0 -54
  1943. package/dist/report/execution/problems.d.ts +0 -54
  1944. package/dist/report/execution/problems.js +0 -14
  1945. package/dist/report/execution/problems.js.map +0 -1
  1946. package/dist/report/execution/results.cjs +0 -26
  1947. package/dist/report/execution/results.cjs.map +0 -1
  1948. package/dist/report/execution/results.d.cts +0 -102
  1949. package/dist/report/execution/results.d.mts +0 -102
  1950. package/dist/report/execution/results.d.ts +0 -102
  1951. package/dist/report/execution/results.js +0 -8
  1952. package/dist/report/execution/results.js.map +0 -1
  1953. package/dist/report/host/html.cjs +0 -424
  1954. package/dist/report/host/html.cjs.map +0 -1
  1955. package/dist/report/host/html.d.cts +0 -28
  1956. package/dist/report/host/html.d.mts +0 -28
  1957. package/dist/report/host/html.d.ts +0 -28
  1958. package/dist/report/host/html.js +0 -6
  1959. package/dist/report/host/html.js.map +0 -1
  1960. package/dist/report/host/node/theme.cjs +0 -21
  1961. package/dist/report/host/node/theme.cjs.map +0 -1
  1962. package/dist/report/host/node/theme.d.cts +0 -1
  1963. package/dist/report/host/node/theme.d.mts +0 -1
  1964. package/dist/report/host/node/theme.d.ts +0 -1
  1965. package/dist/report/host/node/theme.js +0 -14
  1966. package/dist/report/host/presentation.cjs +0 -423
  1967. package/dist/report/host/presentation.cjs.map +0 -1
  1968. package/dist/report/host/presentation.d.cts +0 -42
  1969. package/dist/report/host/presentation.d.mts +0 -42
  1970. package/dist/report/host/presentation.d.ts +0 -42
  1971. package/dist/report/host/presentation.js +0 -16
  1972. package/dist/report/host/theme.cjs +0 -223
  1973. package/dist/report/host/theme.cjs.map +0 -1
  1974. package/dist/report/host/theme.d.cts +0 -64
  1975. package/dist/report/host/theme.d.mts +0 -64
  1976. package/dist/report/host/theme.d.ts +0 -64
  1977. package/dist/report/host/theme.js +0 -14
  1978. package/dist/report/host/theme.js.map +0 -1
  1979. package/dist/report/semantic/document.cjs +0 -593
  1980. package/dist/report/semantic/document.cjs.map +0 -1
  1981. package/dist/report/semantic/document.d.cts +0 -162
  1982. package/dist/report/semantic/document.d.mts +0 -162
  1983. package/dist/report/semantic/document.d.ts +0 -162
  1984. package/dist/report/semantic/document.js +0 -38
  1985. package/dist/report/semantic/document.js.map +0 -1
  1986. package/dist/report/semantic/index.cjs +0 -18
  1987. package/dist/report/semantic/index.cjs.map +0 -1
  1988. package/dist/report/semantic/index.d.cts +0 -1
  1989. package/dist/report/semantic/index.d.mts +0 -1
  1990. package/dist/report/semantic/index.d.ts +0 -1
  1991. package/dist/report/semantic/index.js +0 -38
  1992. package/dist/shared/facts.cjs +0 -24
  1993. package/dist/shared/facts.cjs.map +0 -1
  1994. package/dist/shared/facts.d.cts +0 -7
  1995. package/dist/shared/facts.d.mts +0 -7
  1996. package/dist/shared/facts.d.ts +0 -7
  1997. package/dist/shared/facts.js +0 -6
  1998. package/dist/shared/facts.js.map +0 -1
  1999. package/dist/show/json.cjs +0 -8
  2000. package/dist/show/json.cjs.map +0 -1
  2001. package/dist/show/json.d.cts +0 -2
  2002. package/dist/show/json.d.mts +0 -2
  2003. package/dist/show/json.d.ts +0 -2
  2004. package/dist/show/json.js +0 -8
  2005. package/dist/show/json.js.map +0 -1
  2006. package/dist/show/render.cjs +0 -7
  2007. package/dist/show/render.cjs.map +0 -1
  2008. package/dist/show/render.d.cts +0 -2
  2009. package/dist/show/render.d.mts +0 -2
  2010. package/dist/show/render.d.ts +0 -2
  2011. package/dist/show/render.js +0 -6
  2012. package/dist/show/render.js.map +0 -1
  2013. package/dist/sources/assemble.cjs +0 -634
  2014. package/dist/sources/assemble.cjs.map +0 -1
  2015. package/dist/sources/assemble.d.cts +0 -6
  2016. package/dist/sources/assemble.d.mts +0 -6
  2017. package/dist/sources/assemble.d.ts +0 -6
  2018. package/dist/sources/assemble.js +0 -6
  2019. package/dist/sources/assemble.js.map +0 -1
  2020. package/dist/sources/projection-model.cjs +0 -3
  2021. package/dist/sources/projection-model.cjs.map +0 -1
  2022. package/dist/sources/projection-model.d.cts +0 -327
  2023. package/dist/sources/projection-model.d.mts +0 -327
  2024. package/dist/sources/projection-model.d.ts +0 -327
  2025. package/dist/sources/projection-model.js +0 -4
  2026. package/dist/sources/projection-model.js.map +0 -1
  2027. /package/dist/{projection → coordination/host}/index.js.map +0 -0
  2028. /package/dist/{projection → coordination/host}/index.mjs.map +0 -0
  2029. /package/dist/{projection → coordination/host}/runtime.js.map +0 -0
  2030. /package/dist/{record/migration → coordination/host}/types.cjs +0 -0
  2031. /package/dist/{record/migration → coordination/host}/types.js +0 -0
  2032. /package/dist/{record/migration → coordination/host}/types.js.map +0 -0
  2033. /package/dist/{record/migration → coordination}/identity.js.map +0 -0
  2034. /package/dist/{report/author → coordination}/index.js.map +0 -0
  2035. /package/dist/{report/execution → coordination/platform}/index.js.map +0 -0
  2036. /package/dist/{report/semantic → experiment/host}/index.js.map +0 -0
  2037. /package/dist/record/{writer → host}/runtime.js.map +0 -0
  2038. /package/dist/report/{host/presentation.js.map → presentation.js.map} +0 -0
  2039. /package/dist/report/{host/node/theme.js.map → theme.js.map} +0 -0
@@ -1,1068 +1,1074 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ExperimentIdSchema = exports.RecordHandleInvalid = void 0;
4
- exports.decodeAnalysisSample = decodeAnalysisSample;
5
- exports.encodeAnalysisSample = encodeAnalysisSample;
6
- exports.selectAnalysisSample = selectAnalysisSample;
7
- exports.selectExplicitRuns = selectExplicitRuns;
8
- exports.selectProjectCurrent = selectProjectCurrent;
9
- exports.narrowAnalysisSample = narrowAnalysisSample;
10
- exports.narrowAnalysisSampleHandle = narrowAnalysisSampleHandle;
11
- exports.resolveAnalysisSampleHandle = resolveAnalysisSampleHandle;
3
+ exports.materializeSampleSnapshot = materializeSampleSnapshot;
4
+ exports.narrowSampleSnapshot = narrowSampleSnapshot;
5
+ exports.narrowSampleSnapshotByCurrentIdentity = narrowSampleSnapshotByCurrentIdentity;
6
+ exports.encodeSampleSnapshot = encodeSampleSnapshot;
7
+ exports.decodeSampleSnapshot = decodeSampleSnapshot;
8
+ exports.decodeSampleSnapshotEither = decodeSampleSnapshotEither;
9
+ exports.closeAnalysisRunExecution = closeAnalysisRunExecution;
12
10
  const effect_1 = require("effect");
11
+ const attempt_locator_ts_1 = require("../attempt-locator.cjs");
13
12
  const identifiers_ts_1 = require("../record/codec/identifiers.cjs");
14
- const core_ts_1 = require("../record/codec/core.cjs");
15
13
  const identifiers_ts_2 = require("../record/model/identifiers.cjs");
16
- const record_errors_ts_1 = require("../record/errors/record-errors.cjs");
17
- const errors_ts_1 = require("../record/reader/errors.cjs");
18
- const internal_ts_1 = require("../record/reader/internal.cjs");
19
- const experiment_id_ts_1 = require("../eval/experiment-id.cjs");
20
- const eligibility_ts_1 = require("../eval/record/eligibility.cjs");
21
- var errors_ts_2 = require("../record/reader/errors.cjs");
22
- Object.defineProperty(exports, "RecordHandleInvalid", { enumerable: true, get: function () { return errors_ts_2.RecordHandleInvalid; } });
23
- var experiment_id_ts_2 = require("../eval/experiment-id.cjs");
24
- Object.defineProperty(exports, "ExperimentIdSchema", { enumerable: true, get: function () { return experiment_id_ts_2.ExperimentIdSchema; } });
25
- const analysisSampleHandleTypeId = Symbol("niceeval.analysis-sample-handle");
14
+ const run_context_ts_1 = require("../record/model/run-context.cjs");
26
15
  const MAX_SELECTED_RUNS = 4096;
27
16
  const MAX_SLOTS = 250000;
28
- const CURRENT_INPUT_IDENTITY_DOMAIN = "niceeval.input/fingerprint-v1";
29
- const CURRENT_CONFIG_IDENTITY_DOMAIN = "niceeval.config/identity-v1";
30
- const handleBindings = new WeakMap();
31
- /** Exact, portable decode. The result is deeply frozen and canonically ordered. */
32
- function decodeAnalysisSample(input) {
33
- if (!isExactObject(input, ["selection", "runs", "slots", "denominator"])) {
34
- return effect_1.Either.left(codecError([], "must contain exactly selection, runs, slots, and denominator"));
17
+ /**
18
+ * Reads only the selected Core needed to freeze the Sample denominator. Fixed
19
+ * family payloads, blobs, and physical paths are intentionally not touched.
20
+ */
21
+ function materializeSampleSnapshot(input) {
22
+ return effect_1.Effect.gen(function* () {
23
+ const selection = selectionSummary(input.selectionRequest, input.selection);
24
+ const selected = [...input.selection.runRefs].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId));
25
+ if (selected.length > MAX_SELECTED_RUNS) {
26
+ return yield* effect_1.Effect.die(new Error("Sample selection exceeds the maximum selected Run count"));
27
+ }
28
+ const expectedByRun = expectedSlotsByRun(input.selection);
29
+ const factsByRun = runFactsByRun(input.selection);
30
+ const runs = [];
31
+ const slots = [];
32
+ const attemptsBySlot = new Map();
33
+ const slotIdentitiesBySlot = new Map();
34
+ for (const ref of selected) {
35
+ const facts = factsByRun.get(ref);
36
+ if (facts === undefined) {
37
+ return yield* effect_1.Effect.die(new Error("Record selection omitted closed facts for a selected Run"));
38
+ }
39
+ const expected = expectedSlotsForRun(ref, facts, expectedByRun.get(ref));
40
+ if (expected.length > MAX_SLOTS - slots.length) {
41
+ return yield* effect_1.Effect.die(new Error("Sample selection exceeds the maximum Slot count"));
42
+ }
43
+ const read = yield* input.reader.readRun(ref);
44
+ if (read.state !== "available") {
45
+ runs.push(closeRunFacts(facts));
46
+ for (const expectedSlot of expected) {
47
+ slotIdentitiesBySlot.set(slotKey(ref.runId, expectedSlot.slot.slotId), expectedSlot.slot);
48
+ slots.push(coreInvalidSlot(ref.runId, expectedSlot.experimentId, expectedSlot.slot, null, "the selected Run Core is unavailable"));
49
+ }
50
+ continue;
51
+ }
52
+ const run = read.value;
53
+ if (run.document.experimentId !== facts.experimentId) {
54
+ runs.push(closeRunFacts(facts));
55
+ for (const expectedSlot of expected) {
56
+ slotIdentitiesBySlot.set(slotKey(ref.runId, expectedSlot.slot.slotId), expectedSlot.slot);
57
+ slots.push(coreInvalidSlot(ref.runId, expectedSlot.experimentId, expectedSlot.slot, null, "the selected Run experimentId does not match its closed selection facts"));
58
+ }
59
+ continue;
60
+ }
61
+ runs.push(closeRun(run, expected.map((entry) => entry.slot)));
62
+ const members = membersBySlot(run);
63
+ for (const expectedSlot of expected) {
64
+ const slot = expectedSlot.slot;
65
+ slotIdentitiesBySlot.set(slotKey(ref.runId, slot.slotId), slot);
66
+ const materialized = materializeSlot({
67
+ selectedRun: ref,
68
+ experimentId: expectedSlot.experimentId,
69
+ slot,
70
+ members,
71
+ });
72
+ slots.push(materialized.slot);
73
+ if (materialized.attempt !== undefined) {
74
+ attemptsBySlot.set(slotKey(materialized.slot.runId, materialized.slot.slotId), materialized.attempt);
75
+ }
76
+ }
77
+ }
78
+ const canonicalRuns = Object.freeze([...runs].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId)));
79
+ const canonicalSlots = Object.freeze([...slots].sort(compareSlots));
80
+ const snapshot = makeSnapshot({ selection, runs: canonicalRuns, slots: canonicalSlots });
81
+ return Object.freeze({
82
+ snapshot,
83
+ attemptsBySlot,
84
+ slotIdentitiesBySlot,
85
+ });
86
+ });
87
+ }
88
+ /** Synchronous, monotonic narrowing over an already-frozen snapshot. */
89
+ function narrowSampleSnapshot(snapshot, selector) {
90
+ const runIds = normalizedSelectorIds(selector.runIds);
91
+ const slotIds = normalizedSelectorIds(selector.slotIds);
92
+ if (runIds === undefined && slotIds === undefined) {
93
+ return requestError("narrowSample needs at least one runIds or slotIds selector");
35
94
  }
36
- const selection = decodeSelectionSummary(valueAt(input, "selection"), ["selection"]);
95
+ const slots = snapshot.slots.map((slot) => {
96
+ if (slot.state === "excluded")
97
+ return slot;
98
+ const runMatches = runIds === undefined || runIds.has(slot.runId);
99
+ const slotMatches = slotIds === undefined || slotIds.has(slot.slotId);
100
+ if (runMatches && slotMatches)
101
+ return slot;
102
+ return Object.freeze({
103
+ runId: slot.runId,
104
+ slotId: slot.slotId,
105
+ experimentId: slot.experimentId,
106
+ evalId: slot.evalId,
107
+ attemptOrdinal: slot.attemptOrdinal,
108
+ executionIdentityDigest: slot.executionIdentityDigest,
109
+ state: "excluded",
110
+ base: slot,
111
+ });
112
+ });
113
+ return makeSnapshot({
114
+ selection: snapshot.selection,
115
+ runs: snapshot.runs,
116
+ slots: Object.freeze(slots),
117
+ });
118
+ }
119
+ /**
120
+ * `project-current` identity narrowing. Empty matching ids exclude every
121
+ * active Slot; unmatched members become `excluded` with `identity-mismatch`.
122
+ */
123
+ function narrowSampleSnapshotByCurrentIdentity(snapshot, matchingOccurrences) {
124
+ const keep = new Set(matchingOccurrences.map((occurrence) => slotKey(occurrence.runId, occurrence.slotId)));
125
+ const slots = snapshot.slots.map((slot) => {
126
+ if (slot.state === "excluded")
127
+ return slot;
128
+ if (keep.has(slotKey(slot.runId, slot.slotId)))
129
+ return slot;
130
+ return Object.freeze({
131
+ runId: slot.runId,
132
+ slotId: slot.slotId,
133
+ experimentId: slot.experimentId,
134
+ evalId: slot.evalId,
135
+ attemptOrdinal: slot.attemptOrdinal,
136
+ executionIdentityDigest: slot.executionIdentityDigest,
137
+ state: "excluded",
138
+ base: slot,
139
+ reason: "identity-mismatch",
140
+ });
141
+ });
142
+ return makeSnapshot({
143
+ selection: snapshot.selection,
144
+ runs: snapshot.runs,
145
+ slots: Object.freeze(slots),
146
+ });
147
+ }
148
+ /** The only portable Sample encoding; it has no selected Record references. */
149
+ function encodeSampleSnapshot(snapshot) {
150
+ return snapshotJson(decodeSampleSnapshot(snapshot));
151
+ }
152
+ /** Exact decode, canonical ordering, coverage validation, and deep freeze. */
153
+ function decodeSampleSnapshot(value) {
154
+ const decoded = decodeSampleSnapshotEither(value);
155
+ if (effect_1.Either.isLeft(decoded))
156
+ throw codecException(decoded.left);
157
+ return decoded.right;
158
+ }
159
+ /** @internal Typed codec branch for host diagnostics. */
160
+ function decodeSampleSnapshotEither(value) {
161
+ if (!isExactObject(value, ["version", "identity", "selection", "runs", "slots", "coverage"])) {
162
+ return effect_1.Either.left(codecError([], "must contain exactly version, identity, selection, runs, slots, and coverage"));
163
+ }
164
+ if (valueAt(value, "version") !== 1)
165
+ return effect_1.Either.left(codecError(["version"], "must be 1"));
166
+ const selection = decodeSelection(valueAt(value, "selection"), ["selection"]);
37
167
  if (effect_1.Either.isLeft(selection))
38
168
  return effect_1.Either.left(selection.left);
39
- const encodedRuns = valueAt(input, "runs");
40
- if (!Array.isArray(encodedRuns))
41
- return effect_1.Either.left(codecError(["runs"], "must be an array"));
42
- if (encodedRuns.length > MAX_SELECTED_RUNS) {
43
- return effect_1.Either.left(codecError(["runs"], "exceeds the selected-runs limit"));
169
+ const runs = decodeRuns(valueAt(value, "runs"), ["runs"]);
170
+ if (effect_1.Either.isLeft(runs))
171
+ return effect_1.Either.left(runs.left);
172
+ const slots = decodeSlots(valueAt(value, "slots"), ["slots"]);
173
+ if (effect_1.Either.isLeft(slots))
174
+ return effect_1.Either.left(slots.left);
175
+ const alignment = validateSlotRunAlignment(runs.right, slots.right);
176
+ if (alignment !== undefined)
177
+ return effect_1.Either.left(alignment);
178
+ const snapshot = makeSnapshot({ selection: selection.right, runs: runs.right, slots: slots.right });
179
+ if (!sameIdentity(valueAt(value, "identity"), snapshot.identity)) {
180
+ return effect_1.Either.left(codecError(["identity"], "does not match the canonical frozen selection"));
44
181
  }
45
- const runs = [];
46
- for (let index = 0; index < encodedRuns.length; index += 1) {
47
- const decodedRun = decodeAnalysisRun(encodedRuns[index], ["runs", String(index)]);
48
- if (effect_1.Either.isLeft(decodedRun))
49
- return effect_1.Either.left(decodedRun.left);
50
- runs.push(decodedRun.right);
182
+ if (!sameCoverage(valueAt(value, "coverage"), snapshot.coverage)) {
183
+ return effect_1.Either.left(codecError(["coverage"], "does not satisfy the canonical coverage equations"));
51
184
  }
52
- const encodedSlots = valueAt(input, "slots");
53
- if (!Array.isArray(encodedSlots))
54
- return effect_1.Either.left(codecError(["slots"], "must be an array"));
55
- if (encodedSlots.length > MAX_SLOTS) {
56
- return effect_1.Either.left(codecError(["slots"], "exceeds the slots limit"));
57
- }
58
- const slots = [];
59
- for (let index = 0; index < encodedSlots.length; index += 1) {
60
- const decodedSlot = decodeAnalysisSlot(encodedSlots[index], ["slots", String(index)]);
61
- if (effect_1.Either.isLeft(decodedSlot))
62
- return effect_1.Either.left(decodedSlot.left);
63
- slots.push(decodedSlot.right);
185
+ return effect_1.Either.right(snapshot);
186
+ }
187
+ function expectedSlotsByRun(selection) {
188
+ const result = new Map();
189
+ for (const entry of selection.expectedSlots) {
190
+ const slots = result.get(entry.run);
191
+ if (slots === undefined)
192
+ result.set(entry.run, [entry]);
193
+ else
194
+ result.set(entry.run, [...slots, entry]);
64
195
  }
65
- const denominator = valueAt(input, "denominator");
66
- if (!isNonNegativeInteger(denominator)) {
67
- return effect_1.Either.left(codecError(["denominator"], "must be a non-negative safe integer"));
196
+ for (const [ref, slots] of result) {
197
+ result.set(ref, Object.freeze([...slots].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.slot.slotId, right.slot.slotId))));
68
198
  }
69
- const sample = makeAnalysisSample(selection.right, runs, slots);
70
- if (sample.denominator !== denominator) {
71
- return effect_1.Either.left(codecError(["denominator"], "must equal the number of non-excluded slots"));
199
+ return result;
200
+ }
201
+ function runFactsByRun(selection) {
202
+ return new Map(selection.runFacts.map((facts) => [facts.run, facts]));
203
+ }
204
+ function expectedSlotsForRun(ref, facts, fromSelection) {
205
+ if (fromSelection !== undefined)
206
+ return fromSelection;
207
+ return Object.freeze(facts.expectedSlots.map((slot) => Object.freeze({
208
+ run: ref,
209
+ experimentId: facts.experimentId,
210
+ slot,
211
+ })));
212
+ }
213
+ function selectionSummary(request, selection) {
214
+ const selectedRunIds = uniqueSorted(selection.runRefs.map((ref) => ref.runId));
215
+ const problems = normalizedSelectionProblems([
216
+ ...selection.problems,
217
+ ...selection.warnings.map((warning) => Object.freeze({
218
+ code: "incomplete-run",
219
+ runId: warning.runId,
220
+ })),
221
+ ]);
222
+ if (request.policy === "explicit-runs") {
223
+ return Object.freeze({
224
+ policy: "explicit-runs",
225
+ runIds: uniqueSorted(request.runIds),
226
+ selectedRunIds,
227
+ problems,
228
+ });
72
229
  }
73
- const integrity = validateSampleIntegrity(sample);
74
- if (integrity !== undefined)
75
- return effect_1.Either.left(integrity);
76
- return effect_1.Either.right(sample);
77
- }
78
- /** Encoding shares the exact decoder so callers cannot emit a non-canonical sample. */
79
- function encodeAnalysisSample(sample) {
80
- return decodeAnalysisSample(sample);
81
- }
82
- /** Selects a portable denominator from exactly the supplied frozen Record view. */
83
- function selectAnalysisSample(reader, request) {
84
- return effect_1.Effect.suspend(() => {
85
- const normalized = normalizeSelectionRequest(request);
86
- return effect_1.Either.isLeft(normalized)
87
- ? effect_1.Effect.fail(normalized.left)
88
- : selectNormalizedAnalysisSample(reader, normalized.right);
230
+ const requestedExperimentIds = request.experimentIds === undefined
231
+ ? uniqueSorted(request.currentSlots.map((slot) => slot.experimentId))
232
+ : uniqueSorted(request.experimentIds);
233
+ return Object.freeze({
234
+ policy: "project-current",
235
+ experimentIds: requestedExperimentIds.length === 0 ? "all" : requestedExperimentIds,
236
+ selectedRunIds,
237
+ problems,
89
238
  });
90
239
  }
91
- /** Narrow entry point for the explicit completed-Run policy. */
92
- function selectExplicitRuns(reader, input) {
93
- return effect_1.Effect.suspend(() => {
94
- const runIds = normalizeExplicitRunIds(input);
95
- return effect_1.Either.isLeft(runIds)
96
- ? effect_1.Effect.fail(runIds.left)
97
- : selectNormalizedAnalysisSample(reader, Object.freeze({ policy: "explicit-runs", runIds: runIds.right }));
98
- });
240
+ function normalizedSelectionProblems(values) {
241
+ const byKey = new Map();
242
+ for (const problem of values) {
243
+ byKey.set(`${problem.code}\u0000${problem.runId}`, Object.freeze({ ...problem }));
244
+ }
245
+ return Object.freeze([...byKey.entries()]
246
+ .sort(([left], [right]) => (0, identifiers_ts_2.compareCanonicalIdentity)(left, right))
247
+ .map(([, problem]) => problem));
99
248
  }
100
- /** Narrow entry point for results whose durable identities match the project target. */
101
- function selectProjectCurrent(reader, input) {
102
- return effect_1.Effect.suspend(() => {
103
- const normalized = normalizeProjectCurrentInput(input);
104
- return effect_1.Either.isLeft(normalized)
105
- ? effect_1.Effect.fail(normalized.left)
106
- : selectNormalizedAnalysisSample(reader, Object.freeze({
107
- policy: "project-current",
108
- target: normalized.right.target,
109
- }));
249
+ function closeRun(run, expectedSlots) {
250
+ return Object.freeze({
251
+ runId: run.document.runId,
252
+ experimentId: run.document.experimentId,
253
+ context: closeRunContext(run.document.context),
254
+ startedAt: run.document.startedAt,
255
+ completedAt: run.document.completedAt,
256
+ expectedSlots: Object.freeze(expectedSlots.map((slot) => slot.slotId)),
110
257
  });
111
258
  }
112
- /** Pure, monotonic narrowing. It neither needs nor restores Record I/O. */
113
- function narrowAnalysisSample(sample, selector) {
114
- const canonical = encodeAnalysisSample(sample);
115
- if (effect_1.Either.isLeft(canonical)) {
116
- return effect_1.Either.left(selectionInvalid("sample", canonical.left.reason));
117
- }
118
- const normalized = normalizeSelector(selector);
119
- if (effect_1.Either.isLeft(normalized))
120
- return effect_1.Either.left(normalized.left);
121
- const slots = [];
122
- for (const slot of canonical.right.slots) {
123
- if (slot.state === "excluded") {
124
- slots.push(copyAnalysisSlot(slot));
125
- continue;
126
- }
127
- const base = copyBaseSlot(slot);
128
- if (matchesSelector(base, normalized.right)) {
129
- slots.push(base);
130
- }
131
- else {
132
- slots.push(excludedSlot(base));
133
- }
134
- }
135
- return effect_1.Either.right(makeAnalysisSample(canonical.right.selection, canonical.right.runs, slots));
259
+ function closeRunFacts(facts) {
260
+ return Object.freeze({
261
+ runId: facts.run.runId,
262
+ experimentId: facts.experimentId,
263
+ context: null,
264
+ startedAt: facts.startedAt,
265
+ completedAt: facts.completedAt,
266
+ expectedSlots: Object.freeze(facts.expectedSlots.map((slot) => slot.slotId)),
267
+ });
136
268
  }
137
269
  /**
138
- * Live narrowing validates the authentic handle and its reader first. The new
139
- * handle remains bound to exactly the same frozen Record view.
270
+ * Context is Core, but Sample owns an independent value-only closure rather
271
+ * than retaining a reference to a Record read result. Canonical key ordering
272
+ * keeps the Snapshot identity stable before it reaches JSON encoding.
140
273
  */
141
- function narrowAnalysisSampleHandle(handle, selector) {
142
- return effect_1.Effect.suspend(() => {
143
- const binding = handleBindings.get(handle);
144
- if (binding === undefined
145
- || handle.sample !== binding.sample
146
- || (0, internal_ts_1.resolveFrozenRecordReaderPort)(binding.reader) !== binding.port) {
147
- return effect_1.Effect.fail(recordHandleInvalid());
148
- }
149
- return effect_1.Effect.gen(function* () {
150
- yield* binding.port.assertOpen(binding.reader);
151
- const narrowed = narrowAnalysisSample(binding.sample, selector);
152
- if (effect_1.Either.isLeft(narrowed))
153
- return yield* effect_1.Effect.fail(narrowed.left);
154
- return makeHandle(binding.reader, binding.port, narrowed.right);
155
- });
274
+ function closeRunContext(context) {
275
+ return Object.freeze({
276
+ execution: closeAnalysisRunExecution(context.execution),
277
+ labels: closeStringRecord(context.labels),
156
278
  });
157
279
  }
158
280
  /**
159
- * @internal Projection consumes the exact frozen reader capability bound when
160
- * selection minted this handle. This is intentionally not a public Sample
161
- * export: a pure AnalysisSample can never recover Record I/O.
281
+ * Internal closure shared by selected-Run snapshot construction and the
282
+ * origin-Attempt projection. It copies only durable JSON facts; neither path,
283
+ * reader, nor mutable Record object escapes into Sample.
162
284
  */
163
- function resolveAnalysisSampleHandle(handle) {
164
- return effect_1.Effect.suspend(() => {
165
- const binding = handleBindings.get(handle);
166
- if (binding === undefined
167
- || handle.sample !== binding.sample
168
- || (0, internal_ts_1.resolveFrozenRecordReaderPort)(binding.reader) !== binding.port) {
169
- return effect_1.Effect.fail(recordHandleInvalid());
170
- }
171
- return effect_1.Effect.map(binding.port.assertOpen(binding.reader), () => Object.freeze({ reader: binding.reader, sample: binding.sample }));
285
+ function closeAnalysisRunExecution(execution) {
286
+ return Object.freeze({
287
+ agentId: execution.agentId,
288
+ model: execution.model,
289
+ reasoningEffort: execution.reasoningEffort,
290
+ flags: closeJsonObject(execution.flags),
172
291
  });
173
292
  }
174
- function selectNormalizedAnalysisSample(reader, selection) {
175
- return effect_1.Effect.suspend(() => {
176
- const port = (0, internal_ts_1.resolveFrozenRecordReaderPort)(reader);
177
- if (port === undefined)
178
- return effect_1.Effect.fail(recordHandleInvalid());
179
- return effect_1.Effect.gen(function* () {
180
- yield* port.assertOpen(reader);
181
- if (selection.policy === "explicit-runs") {
182
- const runs = yield* selectExplicitRunsFromPort(reader, port, selection.runIds);
183
- const summary = Object.freeze({
184
- policy: "explicit-runs",
185
- runIds: selection.runIds,
186
- });
187
- const sample = yield* materializeAnalysisSample(reader, port, summary, runs);
188
- return makeHandle(reader, port, sample);
189
- }
190
- const sample = yield* selectProjectCurrentFromPort(reader, port, selection);
191
- const summary = Object.freeze({
192
- policy: "project-current",
193
- experimentIds: selection.target.experiments.map((experiment) => experiment.id),
194
- selectedRunIds: Object.freeze(sample.runs.map((run) => run.runId)),
195
- });
196
- return makeHandle(reader, port, makeAnalysisSample(summary, sample.runs, sample.slots));
293
+ function closeStringRecord(value) {
294
+ const result = Object.create(null);
295
+ for (const key of Object.keys(value).sort(identifiers_ts_2.compareCanonicalIdentity)) {
296
+ Object.defineProperty(result, key, {
297
+ value: value[key],
298
+ enumerable: true,
299
+ configurable: false,
300
+ writable: false,
301
+ });
302
+ }
303
+ return Object.freeze(result);
304
+ }
305
+ function closeJsonObject(value) {
306
+ const result = Object.create(null);
307
+ for (const key of Object.keys(value).sort(identifiers_ts_2.compareCanonicalIdentity)) {
308
+ Object.defineProperty(result, key, {
309
+ value: closeJsonValue(value[key]),
310
+ enumerable: true,
311
+ configurable: false,
312
+ writable: false,
313
+ });
314
+ }
315
+ return Object.freeze(result);
316
+ }
317
+ function closeJsonValue(value) {
318
+ if (value === null || typeof value === "boolean" || typeof value === "number" || typeof value === "string") {
319
+ return value;
320
+ }
321
+ if (Array.isArray(value))
322
+ return Object.freeze(value.map(closeJsonValue));
323
+ if (isRunContextJsonObject(value))
324
+ return closeJsonObject(value);
325
+ throw new TypeError("RunContext JSON value must be an object after scalar and array cases");
326
+ }
327
+ function isRunContextJsonObject(value) {
328
+ return typeof value === "object" && value !== null && !Array.isArray(value);
329
+ }
330
+ function membersBySlot(run) {
331
+ const result = new Map();
332
+ for (const member of run.members) {
333
+ if (result.has(member.document.slotId))
334
+ result.set(member.document.slotId, "duplicate");
335
+ else
336
+ result.set(member.document.slotId, member);
337
+ }
338
+ return result;
339
+ }
340
+ function materializeSlot(input) {
341
+ const member = input.members.get(input.slot.slotId);
342
+ if (member === undefined) {
343
+ return Object.freeze({
344
+ slot: Object.freeze({
345
+ runId: input.selectedRun.runId,
346
+ slotId: input.slot.slotId,
347
+ experimentId: input.experimentId,
348
+ evalId: input.slot.evalId,
349
+ attemptOrdinal: input.slot.attemptOrdinal,
350
+ executionIdentityDigest: input.slot.executionIdentityDigest,
351
+ state: "not-recorded",
352
+ action: null,
353
+ attempt: null,
354
+ }),
355
+ });
356
+ }
357
+ if (member === "duplicate" || member.document.slotId !== input.slot.slotId) {
358
+ return Object.freeze({
359
+ slot: coreInvalidSlot(input.selectedRun.runId, input.experimentId, input.slot, null, "the Run has an invalid Member mapping"),
360
+ });
361
+ }
362
+ if (member.document.attempt === null) {
363
+ return Object.freeze({
364
+ slot: Object.freeze({
365
+ runId: input.selectedRun.runId,
366
+ slotId: input.slot.slotId,
367
+ experimentId: input.experimentId,
368
+ evalId: input.slot.evalId,
369
+ attemptOrdinal: input.slot.attemptOrdinal,
370
+ executionIdentityDigest: input.slot.executionIdentityDigest,
371
+ state: "not-recorded",
372
+ action: member.document.action,
373
+ attempt: null,
374
+ }),
375
+ });
376
+ }
377
+ if (member.attempt === null ||
378
+ member.document.attempt.originRunId !== member.attempt.originRunId ||
379
+ member.document.attempt.attemptId !== member.attempt.attemptId) {
380
+ return Object.freeze({
381
+ slot: coreInvalidSlot(input.selectedRun.runId, input.experimentId, input.slot, member.document.action, "the selected Member did not receive the exact Attempt capability"),
197
382
  });
383
+ }
384
+ const slot = Object.freeze({
385
+ runId: input.selectedRun.runId,
386
+ slotId: input.slot.slotId,
387
+ experimentId: input.experimentId,
388
+ evalId: input.slot.evalId,
389
+ attemptOrdinal: input.slot.attemptOrdinal,
390
+ executionIdentityDigest: input.slot.executionIdentityDigest,
391
+ state: "included",
392
+ action: member.document.action,
393
+ relation: member.attempt.originRunId === input.selectedRun.runId ? "origin" : "reference",
394
+ attempt: Object.freeze({
395
+ kind: "attempt",
396
+ locator: (0, attempt_locator_ts_1.encodeAttemptLocator)(member.attempt.attemptId),
397
+ originRunId: member.attempt.originRunId,
398
+ }),
198
399
  });
400
+ return Object.freeze({ slot, attempt: member.attempt });
199
401
  }
200
- function selectExplicitRunsFromPort(reader, port, runIds) {
201
- return effect_1.Effect.gen(function* () {
202
- const runs = [];
203
- for (const runId of runIds) {
204
- const read = yield* port.run(reader, runId);
205
- if (read.state === "missing") {
206
- return yield* effect_1.Effect.fail(runNotFound(runId));
207
- }
208
- if (read.state === "core-invalid") {
209
- return yield* effect_1.Effect.fail(runInvalid(runId, read.issues));
210
- }
211
- runs.push(read.value);
212
- }
213
- return Object.freeze(runs);
402
+ function coreInvalidSlot(runId, experimentId, slot, action, message) {
403
+ return Object.freeze({
404
+ runId,
405
+ slotId: slot.slotId,
406
+ experimentId,
407
+ evalId: slot.evalId,
408
+ attemptOrdinal: slot.attemptOrdinal,
409
+ executionIdentityDigest: slot.executionIdentityDigest,
410
+ state: "core-invalid",
411
+ action,
412
+ attempt: null,
413
+ issues: Object.freeze([analysisIssue("input-invalid", message)]),
214
414
  });
215
415
  }
216
- function selectProjectCurrentFromPort(reader, port, selection) {
217
- const targets = new Map(selection.target.experiments.map((experiment) => [
218
- experiment.id,
219
- Object.freeze({
220
- attempts: experiment.attempts,
221
- evals: new Map(experiment.evals.map((evaluation) => [evaluation.id, evaluation])),
222
- }),
223
- ]));
224
- return effect_1.Stream.runFoldEffect(port.candidates(reader), { byRun: new Map(), slotCount: 0 }, (matches, candidate) => collectProjectCurrentCandidate(reader, port, targets, matches, candidate)).pipe(effect_1.Effect.flatMap((matches) => materializeProjectCurrentMatches(matches)));
416
+ function makeSnapshot(input) {
417
+ const runs = Object.freeze([...input.runs].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId)));
418
+ const slots = Object.freeze([...input.slots].sort(compareSlots));
419
+ const canonicalSelection = selectionForSlots(input.selection, slots);
420
+ const coverage = coverageFor(slots);
421
+ return Object.freeze({
422
+ version: 1,
423
+ identity: sampleIdentity(canonicalSelection, runs, slots),
424
+ selection: canonicalSelection,
425
+ runs,
426
+ slots,
427
+ coverage,
428
+ });
225
429
  }
226
- function collectProjectCurrentCandidate(reader, port, targets, matches, candidate) {
227
- return effect_1.Effect.gen(function* () {
228
- // Project-current is a conservative filter. A candidate whose Core or
229
- // identity facts cannot be proved contributes nothing, but does not hide
230
- // a different Run whose durable identities do match.
231
- if (candidate.state !== "available")
232
- return matches;
233
- const attachment = yield* port.readRunAttachment(reader, candidate.value, experiment_id_ts_1.evaluationsAttachmentFamily);
234
- if (attachment.state !== "available")
235
- return matches;
236
- const experimentId = attachment.value.payload.experimentId;
237
- const target = targets.get(experimentId);
238
- if (target === undefined)
239
- return matches;
240
- const expectedSlots = new Set(candidate.value.expectedSlots);
241
- if (expectedSlots.size !== candidate.value.expectedSlots.length)
242
- return matches;
243
- const matchedSlots = [];
244
- for (const evaluation of attachment.value.payload.evaluations) {
245
- const evalTarget = target.evals.get(evaluation.evalId);
246
- if (evalTarget === undefined
247
- || evalTarget.evaluationKind !== evaluation.evaluationKind)
248
- continue;
249
- for (const slot of evaluation.slots) {
250
- if (slot.attempt >= target.attempts
251
- || !expectedSlots.has(slot.slotId))
252
- continue;
253
- const member = yield* port.member(reader, candidate.value, slot.slotId);
254
- if (member.state !== "available"
255
- || member.value.slotId !== slot.slotId)
256
- continue;
257
- const attempt = yield* port.attempt(reader, member.value.attempt);
258
- if (attempt.state !== "available"
259
- || attempt.value.originRunId !== member.value.attempt.originRunId
260
- || attempt.value.attemptId !== member.value.attempt.attemptId)
261
- continue;
262
- const eligibility = yield* port.readAttemptAttachment(reader, attempt.value, eligibility_ts_1.eligibilityAttachmentFamilyV1);
263
- if (eligibility.state !== "available")
264
- continue;
265
- const facts = eligibility.value.payload;
266
- if (facts.inputIdentity.domain !== CURRENT_INPUT_IDENTITY_DOMAIN
267
- || facts.inputIdentity.value !== evalTarget.fingerprint
268
- || facts.configIdentity.domain !== CURRENT_CONFIG_IDENTITY_DOMAIN
269
- || facts.configIdentity.value !== evalTarget.resultConfigHash)
270
- continue;
271
- matchedSlots.push(Object.freeze({
272
- run: candidate.value,
273
- slotId: slot.slotId,
274
- attempt: copyAttemptRef(member.value.attempt),
275
- relation: attempt.value.originRunId === candidate.value.runId
276
- ? "origin"
277
- : "reference",
278
- }));
279
- }
280
- }
281
- if (matchedSlots.length === 0)
282
- return matches;
283
- const previous = matches.byRun.get(candidate.value.runId);
284
- if (previous === undefined && matches.byRun.size >= MAX_SELECTED_RUNS) {
285
- return yield* effect_1.Effect.fail(selectionLimit("selected-runs", matches.byRun.size + 1));
286
- }
287
- const nextSlotCount = matches.slotCount
288
- - (previous?.slots.length ?? 0)
289
- + matchedSlots.length;
290
- if (nextSlotCount > MAX_SLOTS) {
291
- return yield* effect_1.Effect.fail(selectionLimit("slots", nextSlotCount));
292
- }
293
- matches.byRun.set(candidate.value.runId, {
294
- run: candidate.value,
295
- slots: matchedSlots,
430
+ /** Every derived Sample retains its source policy and refreshes its active result. */
431
+ function selectionForSlots(selection, slots) {
432
+ const selectedRunIds = uniqueSorted(slots.flatMap((slot) => slot.state === "excluded" ? [] : [slot.runId]));
433
+ const problems = normalizedSelectionProblems(selection.problems);
434
+ if (selection.policy === "explicit-runs") {
435
+ return Object.freeze({
436
+ policy: "explicit-runs",
437
+ runIds: uniqueSorted(selection.runIds),
438
+ selectedRunIds,
439
+ problems,
296
440
  });
297
- matches.slotCount = nextSlotCount;
298
- return matches;
441
+ }
442
+ return Object.freeze({
443
+ policy: "project-current",
444
+ experimentIds: selection.experimentIds === "all"
445
+ ? "all"
446
+ : uniqueSorted(selection.experimentIds),
447
+ selectedRunIds,
448
+ problems,
299
449
  });
300
450
  }
301
- function materializeProjectCurrentMatches(matches) {
302
- const runs = [];
303
- const slots = [];
304
- for (const [runId, bucket] of [...matches.byRun].sort(([left], [right]) => (0, identifiers_ts_2.compareCanonicalIdentity)(left, right))) {
305
- const runSlots = [...bucket.slots].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.slotId, right.slotId));
306
- runs.push(Object.freeze({
307
- runId,
308
- startedAt: bucket.run.startedAt,
309
- completedAt: bucket.run.completedAt,
310
- expectedSlots: Object.freeze(runSlots.map((entry) => entry.slotId)),
311
- }));
312
- for (const entry of runSlots) {
313
- slots.push(Object.freeze({
314
- runId,
315
- slotId: entry.slotId,
316
- state: "included",
317
- relation: entry.relation,
318
- attempt: entry.attempt,
319
- }));
451
+ function coverageFor(slots) {
452
+ let selected = 0;
453
+ let included = 0;
454
+ let notRecorded = 0;
455
+ let coreInvalid = 0;
456
+ let excluded = 0;
457
+ for (const slot of slots) {
458
+ if (slot.state === "excluded") {
459
+ excluded += 1;
460
+ continue;
320
461
  }
462
+ selected += 1;
463
+ if (slot.state === "included")
464
+ included += 1;
465
+ else if (slot.state === "not-recorded")
466
+ notRecorded += 1;
467
+ else
468
+ coreInvalid += 1;
321
469
  }
322
- return effect_1.Effect.succeed(Object.freeze({
323
- runs: Object.freeze(runs),
324
- slots: Object.freeze(slots),
325
- }));
470
+ return Object.freeze({
471
+ frameTotal: slots.length,
472
+ selected,
473
+ included,
474
+ notRecorded,
475
+ coreInvalid,
476
+ excluded,
477
+ });
326
478
  }
327
- function materializeAnalysisSample(reader, port, selection, selectedRuns) {
328
- return effect_1.Effect.gen(function* () {
329
- const runs = [...selectedRuns].sort((left, right) => (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId));
330
- if (runs.length > MAX_SELECTED_RUNS) {
331
- return yield* effect_1.Effect.fail(selectionLimit("selected-runs", runs.length));
332
- }
333
- const analysisRuns = [];
334
- const slots = [];
335
- let slotCount = 0;
336
- for (const run of runs) {
337
- const expectedSlots = sortedUnique(run.expectedSlots);
338
- if (expectedSlots.length !== run.expectedSlots.length) {
339
- return yield* effect_1.Effect.fail(runInvalid(run.runId, singleRecordIssue("record-expected-slot-duplicate", ["runs", run.runId])));
340
- }
341
- if (slotCount > MAX_SLOTS - expectedSlots.length) {
342
- return yield* effect_1.Effect.fail(selectionLimit("slots", slotCount + expectedSlots.length));
343
- }
344
- slotCount += expectedSlots.length;
345
- analysisRuns.push(Object.freeze({
346
- runId: run.runId,
347
- startedAt: run.startedAt,
348
- completedAt: run.completedAt,
349
- expectedSlots: Object.freeze(expectedSlots),
350
- }));
351
- for (const slotId of expectedSlots) {
352
- slots.push(yield* materializeAnalysisSlot(reader, port, run, slotId));
353
- }
354
- }
355
- return makeAnalysisSample(selection, analysisRuns, slots);
479
+ function sampleIdentity(selection, runs, slots) {
480
+ return Object.freeze({
481
+ kind: "analysis-sample",
482
+ id: canonicalIdentity({ selection, runs, slots }),
356
483
  });
357
484
  }
358
- function materializeAnalysisSlot(reader, port, run, slotId) {
359
- return effect_1.Effect.gen(function* () {
360
- const member = yield* port.member(reader, run, slotId);
361
- if (member.state === "missing") {
362
- return Object.freeze({ runId: run.runId, slotId, state: "not-recorded" });
363
- }
364
- if (member.state === "core-invalid") {
365
- return coreInvalidSlot(run.runId, slotId, member.issues);
366
- }
367
- if (member.value.slotId !== slotId) {
368
- return coreInvalidSlot(run.runId, slotId, singleRecordIssue("record-member-slot-unexpected", ["members", slotId]));
369
- }
370
- const attempt = yield* port.attempt(reader, member.value.attempt);
371
- if (attempt.state === "missing") {
372
- return coreInvalidSlot(run.runId, slotId, singleRecordIssue("record-attempt-reference-missing", ["members", slotId, "attempt"]));
373
- }
374
- if (attempt.state === "core-invalid") {
375
- return coreInvalidSlot(run.runId, slotId, attempt.issues);
376
- }
377
- if (attempt.value.originRunId !== member.value.attempt.originRunId
378
- || attempt.value.attemptId !== member.value.attempt.attemptId) {
379
- return coreInvalidSlot(run.runId, slotId, singleRecordIssue("record-attempt-owner-invalid", ["members", slotId, "attempt"]));
380
- }
381
- return Object.freeze({
485
+ function compareSlots(left, right) {
486
+ const run = (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId);
487
+ return run === 0 ? (0, identifiers_ts_2.compareCanonicalIdentity)(left.slotId, right.slotId) : run;
488
+ }
489
+ function slotKey(runId, slotId) {
490
+ return `${runId}\u0000${slotId}`;
491
+ }
492
+ function normalizedSelectorIds(values) {
493
+ if (values === undefined)
494
+ return undefined;
495
+ return new Set(values);
496
+ }
497
+ function requestError(reason) {
498
+ return Object.freeze({ code: "analysis-request-invalid", reason });
499
+ }
500
+ function analysisIssue(code, message) {
501
+ return Object.freeze({ code, message, refs: Object.freeze([]) });
502
+ }
503
+ function snapshotJson(snapshot) {
504
+ return Object.freeze({
505
+ version: snapshot.version,
506
+ identity: Object.freeze({ kind: snapshot.identity.kind, id: snapshot.identity.id }),
507
+ selection: selectionJson(snapshot.selection),
508
+ runs: Object.freeze(snapshot.runs.map((run) => Object.freeze({
382
509
  runId: run.runId,
383
- slotId,
384
- state: "included",
385
- relation: attempt.value.originRunId === run.runId ? "origin" : "reference",
386
- attempt: copyAttemptRef(member.value.attempt),
387
- });
510
+ experimentId: run.experimentId,
511
+ context: run.context === null ? null : Object.freeze({
512
+ execution: Object.freeze({
513
+ agentId: run.context.execution.agentId,
514
+ model: run.context.execution.model,
515
+ reasoningEffort: run.context.execution.reasoningEffort,
516
+ flags: closeJsonObject(run.context.execution.flags),
517
+ }),
518
+ labels: closeStringRecord(run.context.labels),
519
+ }),
520
+ startedAt: run.startedAt,
521
+ completedAt: run.completedAt,
522
+ expectedSlots: Object.freeze([...run.expectedSlots]),
523
+ }))),
524
+ slots: Object.freeze(snapshot.slots.map(slotJson)),
525
+ coverage: Object.freeze({ ...snapshot.coverage }),
388
526
  });
389
527
  }
390
- function normalizeSelectionRequest(input) {
391
- if (!isExactObject(input, ["policy", "input"]) || !hasOwnProperty(input, "policy") || !hasOwnProperty(input, "input")) {
392
- return effect_1.Either.left(selectionInvalid("request", "must contain exactly policy and input"));
393
- }
394
- const policy = valueAt(input, "policy");
395
- if (policy === "explicit-runs") {
396
- const runIds = normalizeExplicitRunIds(valueAt(input, "input"));
397
- return effect_1.Either.isLeft(runIds)
398
- ? effect_1.Either.left(runIds.left)
399
- : effect_1.Either.right(Object.freeze({ policy, runIds: runIds.right }));
400
- }
401
- if (policy === "project-current") {
402
- const normalized = normalizeProjectCurrentInput(valueAt(input, "input"));
403
- return effect_1.Either.isLeft(normalized)
404
- ? effect_1.Either.left(normalized.left)
405
- : effect_1.Either.right(Object.freeze({
406
- policy,
407
- target: normalized.right.target,
408
- }));
528
+ function selectionJson(selection) {
529
+ const problems = Object.freeze(selection.problems.map((problem) => Object.freeze({ ...problem })));
530
+ if (selection.policy === "explicit-runs") {
531
+ return Object.freeze({
532
+ policy: selection.policy,
533
+ runIds: Object.freeze([...selection.runIds]),
534
+ selectedRunIds: Object.freeze([...selection.selectedRunIds]),
535
+ problems,
536
+ });
409
537
  }
410
- return effect_1.Either.left(selectionInvalid("request.policy", "must be explicit-runs or project-current"));
538
+ return Object.freeze({
539
+ policy: selection.policy,
540
+ experimentIds: selection.experimentIds === "all"
541
+ ? "all"
542
+ : Object.freeze([...selection.experimentIds]),
543
+ selectedRunIds: Object.freeze([...selection.selectedRunIds]),
544
+ problems,
545
+ });
411
546
  }
412
- function normalizeExplicitRunIds(input) {
413
- if (!isExactObject(input, ["runIds"]) || !hasOwnProperty(input, "runIds")) {
414
- return effect_1.Either.left(selectionInvalid("input", "must contain exactly runIds"));
415
- }
416
- const encodedRunIds = valueAt(input, "runIds");
417
- if (!Array.isArray(encodedRunIds) || encodedRunIds.length === 0) {
418
- return effect_1.Either.left(selectionInvalid("input.runIds", "must be a non-empty array"));
419
- }
420
- const runIds = [];
421
- for (let index = 0; index < encodedRunIds.length; index += 1) {
422
- const runId = decodeRunId(encodedRunIds[index], ["input", "runIds", String(index)]);
423
- if (effect_1.Either.isLeft(runId)) {
424
- return effect_1.Either.left(selectionInvalid(`input.runIds.${index}`, runId.left.reason));
425
- }
426
- runIds.push(runId.right);
427
- }
428
- const normalized = sortedUnique(runIds);
429
- return normalized.length > MAX_SELECTED_RUNS
430
- ? effect_1.Either.left(selectionLimit("selected-runs", normalized.length))
431
- : effect_1.Either.right(Object.freeze(normalized));
432
- }
433
- function normalizeProjectCurrentInput(input) {
434
- if (!isExactObject(input, ["target"]) || !hasOwnProperty(input, "target")) {
435
- return effect_1.Either.left(selectionInvalid("input", "must contain exactly target"));
436
- }
437
- const rawTarget = valueAt(input, "target");
438
- if (typeof rawTarget !== "object" || rawTarget === null) {
439
- return effect_1.Either.left(selectionInvalid("input.target", "must be a project target object"));
547
+ function slotJson(slot) {
548
+ if (slot.state === "excluded") {
549
+ return Object.freeze({
550
+ runId: slot.runId,
551
+ slotId: slot.slotId,
552
+ experimentId: slot.experimentId,
553
+ evalId: slot.evalId,
554
+ attemptOrdinal: slot.attemptOrdinal,
555
+ executionIdentityDigest: slot.executionIdentityDigest,
556
+ state: slot.state,
557
+ base: slotJson(slot.base),
558
+ ...(slot.reason === undefined ? {} : { reason: slot.reason }),
559
+ });
440
560
  }
441
- const encodedExperiments = Reflect.get(rawTarget, "experiments");
442
- if (!Array.isArray(encodedExperiments) || encodedExperiments.length === 0) {
443
- return effect_1.Either.left(selectionInvalid("input.target.experiments", "must be a non-empty array"));
561
+ if (slot.state === "included") {
562
+ return Object.freeze({
563
+ runId: slot.runId,
564
+ slotId: slot.slotId,
565
+ experimentId: slot.experimentId,
566
+ evalId: slot.evalId,
567
+ attemptOrdinal: slot.attemptOrdinal,
568
+ executionIdentityDigest: slot.executionIdentityDigest,
569
+ state: slot.state,
570
+ action: slot.action,
571
+ relation: slot.relation,
572
+ attempt: Object.freeze({ ...slot.attempt }),
573
+ });
444
574
  }
445
- const experiments = [];
446
- const seenExperiments = new Set();
447
- for (let experimentIndex = 0; experimentIndex < encodedExperiments.length; experimentIndex += 1) {
448
- const rawExperiment = encodedExperiments[experimentIndex];
449
- if (typeof rawExperiment !== "object" || rawExperiment === null) {
450
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}`, "must be an object"));
451
- }
452
- const id = Reflect.get(rawExperiment, "id");
453
- const attempts = Reflect.get(rawExperiment, "attempts");
454
- const rawEvals = Reflect.get(rawExperiment, "evals");
455
- const decodedId = decodeExperimentId(id, ["input", "target", "experiments", String(experimentIndex), "id"]);
456
- if (effect_1.Either.isLeft(decodedId)) {
457
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.id`, decodedId.left.reason));
458
- }
459
- if (seenExperiments.has(decodedId.right)) {
460
- return effect_1.Either.left(selectionInvalid("input.target.experiments", "must contain unique ExperimentIds"));
461
- }
462
- if (!Number.isSafeInteger(attempts) || attempts < 1) {
463
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.attempts`, "must be a positive integer"));
464
- }
465
- if (!Array.isArray(rawEvals) || rawEvals.length === 0) {
466
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals`, "must be a non-empty array"));
467
- }
468
- const evals = [];
469
- const seenEvals = new Set();
470
- for (let evalIndex = 0; evalIndex < rawEvals.length; evalIndex += 1) {
471
- const rawEval = rawEvals[evalIndex];
472
- if (typeof rawEval !== "object" || rawEval === null) {
473
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals.${evalIndex}`, "must be an object"));
474
- }
475
- const evalId = Reflect.get(rawEval, "id");
476
- const resultConfigHash = Reflect.get(rawEval, "resultConfigHash");
477
- const fingerprint = Reflect.get(rawEval, "fingerprint");
478
- const evaluationKind = Reflect.get(rawEval, "evaluationKind");
479
- if (typeof evalId !== "string" || evalId.length === 0 || evalId.includes("\u0000") || seenEvals.has(evalId)) {
480
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals.${evalIndex}.id`, "must be a unique non-empty EvalId"));
481
- }
482
- if (typeof resultConfigHash !== "string" || resultConfigHash.length === 0) {
483
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals.${evalIndex}.resultConfigHash`, "must be non-empty"));
484
- }
485
- if (typeof fingerprint !== "string" || fingerprint.length === 0) {
486
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals.${evalIndex}.fingerprint`, "must be non-empty"));
487
- }
488
- if (evaluationKind !== "pass" && evaluationKind !== "score") {
489
- return effect_1.Either.left(selectionInvalid(`input.target.experiments.${experimentIndex}.evals.${evalIndex}.evaluationKind`, "must be pass or score"));
490
- }
491
- seenEvals.add(evalId);
492
- evals.push(Object.freeze({ id: evalId, resultConfigHash, fingerprint, evaluationKind }));
493
- }
494
- seenExperiments.add(decodedId.right);
495
- experiments.push(Object.freeze({
496
- id: decodedId.right,
497
- attempts: attempts,
498
- evals: Object.freeze(evals.sort((left, right) => left.id.localeCompare(right.id))),
499
- }));
575
+ if (slot.state === "not-recorded") {
576
+ return Object.freeze({
577
+ runId: slot.runId,
578
+ slotId: slot.slotId,
579
+ experimentId: slot.experimentId,
580
+ evalId: slot.evalId,
581
+ attemptOrdinal: slot.attemptOrdinal,
582
+ executionIdentityDigest: slot.executionIdentityDigest,
583
+ state: slot.state,
584
+ action: slot.action,
585
+ attempt: null,
586
+ });
500
587
  }
501
- const target = Object.freeze({
502
- experiments: Object.freeze(experiments.sort((left, right) => left.id.localeCompare(right.id))),
503
- });
504
- return effect_1.Either.right(Object.freeze({ target }));
505
- }
506
- function runNotFound(runId) {
507
- return Object.freeze({ code: "sample-run-not-found", runId });
508
- }
509
- function runInvalid(runId, issues) {
510
- return Object.freeze({ code: "sample-run-invalid", runId, issues: copyIssues(issues) });
511
- }
512
- function selectionLimit(limit, observedAtLeast) {
513
- const maximum = limit === "selected-runs" ? MAX_SELECTED_RUNS : MAX_SLOTS;
514
588
  return Object.freeze({
515
- code: "sample-limit-exceeded",
516
- limit,
517
- maximum,
518
- observedAtLeast,
589
+ runId: slot.runId,
590
+ slotId: slot.slotId,
591
+ experimentId: slot.experimentId,
592
+ evalId: slot.evalId,
593
+ attemptOrdinal: slot.attemptOrdinal,
594
+ executionIdentityDigest: slot.executionIdentityDigest,
595
+ state: slot.state,
596
+ action: slot.action,
597
+ attempt: null,
598
+ issues: Object.freeze(slot.issues.map(issueJson)),
519
599
  });
520
600
  }
521
- function coreInvalidSlot(runId, slotId, issues) {
601
+ function issueJson(issue) {
522
602
  return Object.freeze({
523
- runId,
524
- slotId,
525
- state: "core-invalid",
526
- issues: copyIssues(issues),
603
+ code: issue.code,
604
+ message: issue.message,
605
+ refs: Object.freeze(issue.refs.map((ref) => Object.freeze({
606
+ identity: Object.freeze({ kind: ref.identity.kind, locator: ref.identity.locator }),
607
+ }))),
527
608
  });
528
609
  }
529
- function singleRecordIssue(code, path) {
530
- return Object.freeze([(0, record_errors_ts_1.recordIssue)(code, path)]);
531
- }
532
- function decodeSelectionSummary(input, path) {
533
- if (!isExactObject(input, ["policy", "runIds", "experimentIds", "selectedRunIds"])) {
534
- return effect_1.Either.left(codecError(path, "contains unsupported fields"));
535
- }
536
- const policy = valueAt(input, "policy");
610
+ function decodeSelection(value, path) {
611
+ if (!isPlainObject(value))
612
+ return effect_1.Either.left(codecError(path, "must be an object"));
613
+ const policy = valueAt(value, "policy");
537
614
  if (policy === "explicit-runs") {
538
- if (!isExactObject(input, ["policy", "runIds"])) {
539
- return effect_1.Either.left(codecError(path, "explicit selection must contain exactly policy and runIds"));
615
+ if (!isExactObject(value, ["policy", "runIds", "selectedRunIds", "problems"])) {
616
+ return effect_1.Either.left(codecError(path, "explicit-runs must contain exactly policy, runIds, selectedRunIds, and problems"));
540
617
  }
541
- const runIds = decodeIdentityArray(valueAt(input, "runIds"), [...path, "runIds"], true, decodeRunId);
618
+ const runIds = decodeArray(valueAt(value, "runIds"), [...path, "runIds"], decodeRunId);
619
+ const selectedRunIds = decodeArray(valueAt(value, "selectedRunIds"), [...path, "selectedRunIds"], decodeRunId);
620
+ const problems = decodeSelectionProblems(valueAt(value, "problems"), [...path, "problems"]);
542
621
  if (effect_1.Either.isLeft(runIds))
543
622
  return effect_1.Either.left(runIds.left);
544
- const selection = {
623
+ if (effect_1.Either.isLeft(selectedRunIds))
624
+ return effect_1.Either.left(selectedRunIds.left);
625
+ if (effect_1.Either.isLeft(problems))
626
+ return effect_1.Either.left(problems.left);
627
+ return effect_1.Either.right(Object.freeze({
545
628
  policy: "explicit-runs",
546
- runIds: runIds.right,
547
- };
548
- return effect_1.Either.right(Object.freeze(selection));
629
+ runIds: uniqueSorted(runIds.right),
630
+ selectedRunIds: uniqueSorted(selectedRunIds.right),
631
+ problems: normalizedSelectionProblems(problems.right),
632
+ }));
549
633
  }
550
634
  if (policy === "project-current") {
551
- if (!isExactObject(input, ["policy", "experimentIds", "selectedRunIds"])) {
552
- return effect_1.Either.left(codecError(path, "project-current selection must contain policy, experimentIds, and selectedRunIds"));
635
+ if (!isExactObject(value, ["policy", "experimentIds", "selectedRunIds", "problems"])) {
636
+ return effect_1.Either.left(codecError(path, "project-current must contain exactly policy, experimentIds, selectedRunIds, and problems"));
553
637
  }
554
- const encodedExperimentIds = valueAt(input, "experimentIds");
638
+ const experimentIdsValue = valueAt(value, "experimentIds");
555
639
  let experimentIds;
556
- if (encodedExperimentIds === "all") {
640
+ if (experimentIdsValue === "all") {
557
641
  experimentIds = "all";
558
642
  }
559
643
  else {
560
- const decodedExperimentIds = decodeIdentityArray(encodedExperimentIds, [...path, "experimentIds"], true, decodeExperimentId);
561
- if (effect_1.Either.isLeft(decodedExperimentIds)) {
644
+ const decodedExperimentIds = decodeArray(experimentIdsValue, [...path, "experimentIds"], decodeExperimentId);
645
+ if (effect_1.Either.isLeft(decodedExperimentIds))
562
646
  return effect_1.Either.left(decodedExperimentIds.left);
563
- }
564
- experimentIds = decodedExperimentIds.right;
647
+ experimentIds = uniqueSorted(decodedExperimentIds.right);
565
648
  }
566
- const selectedRunIds = decodeIdentityArray(valueAt(input, "selectedRunIds"), [...path, "selectedRunIds"], false, decodeRunId);
649
+ const selectedRunIds = decodeArray(valueAt(value, "selectedRunIds"), [...path, "selectedRunIds"], decodeRunId);
650
+ const problems = decodeSelectionProblems(valueAt(value, "problems"), [...path, "problems"]);
567
651
  if (effect_1.Either.isLeft(selectedRunIds))
568
652
  return effect_1.Either.left(selectedRunIds.left);
569
- const selection = {
653
+ if (effect_1.Either.isLeft(problems))
654
+ return effect_1.Either.left(problems.left);
655
+ return effect_1.Either.right(Object.freeze({
570
656
  policy: "project-current",
571
657
  experimentIds,
572
- selectedRunIds: selectedRunIds.right,
573
- };
574
- return effect_1.Either.right(Object.freeze(selection));
658
+ selectedRunIds: uniqueSorted(selectedRunIds.right),
659
+ problems: normalizedSelectionProblems(problems.right),
660
+ }));
575
661
  }
576
662
  return effect_1.Either.left(codecError([...path, "policy"], "must be explicit-runs or project-current"));
577
663
  }
578
- function decodeAnalysisRun(input, path) {
579
- if (!isExactObject(input, ["runId", "startedAt", "completedAt", "expectedSlots"])) {
580
- return effect_1.Either.left(codecError(path, "must contain exactly runId, startedAt, completedAt, and expectedSlots"));
664
+ function decodeSelectionProblems(value, path) {
665
+ if (!Array.isArray(value))
666
+ return effect_1.Either.left(codecError(path, "must be an array"));
667
+ const problems = [];
668
+ for (let index = 0; index < value.length; index += 1) {
669
+ const decoded = decodeSelectionProblem(value[index], [...path, String(index)]);
670
+ if (effect_1.Either.isLeft(decoded))
671
+ return effect_1.Either.left(decoded.left);
672
+ problems.push(decoded.right);
673
+ }
674
+ return effect_1.Either.right(Object.freeze(problems));
675
+ }
676
+ function decodeSelectionProblem(value, path) {
677
+ if (!isExactObject(value, ["code", "runId"]))
678
+ return effect_1.Either.left(codecError(path, "must contain exactly code and runId"));
679
+ const code = valueAt(value, "code");
680
+ if (code !== "incomplete-run" && code !== "record-core-invalid" && code !== "selection-run-missing" && code !== "selection-run-unreadable") {
681
+ return effect_1.Either.left(codecError([...path, "code"], "is not a known selection problem"));
581
682
  }
582
- const runId = decodeRunId(valueAt(input, "runId"), [...path, "runId"]);
683
+ const runId = decodeRunId(valueAt(value, "runId"), [...path, "runId"]);
684
+ return effect_1.Either.isLeft(runId) ? effect_1.Either.left(runId.left) : effect_1.Either.right(Object.freeze({ code, runId: runId.right }));
685
+ }
686
+ function decodeRuns(value, path) {
687
+ if (!Array.isArray(value))
688
+ return effect_1.Either.left(codecError(path, "must be an array"));
689
+ if (value.length > MAX_SELECTED_RUNS)
690
+ return effect_1.Either.left(codecError(path, "exceeds the selected-runs limit"));
691
+ const runs = [];
692
+ for (let index = 0; index < value.length; index += 1) {
693
+ const decoded = decodeRun(value[index], [...path, String(index)]);
694
+ if (effect_1.Either.isLeft(decoded))
695
+ return effect_1.Either.left(decoded.left);
696
+ runs.push(decoded.right);
697
+ }
698
+ return effect_1.Either.right(Object.freeze(uniqueSortedBy(runs, (run) => run.runId)));
699
+ }
700
+ function decodeRun(value, path) {
701
+ if (!isExactObject(value, ["runId", "experimentId", "context", "startedAt", "completedAt", "expectedSlots"])) {
702
+ return effect_1.Either.left(codecError(path, "contains unsupported fields"));
703
+ }
704
+ const runId = decodeRunId(valueAt(value, "runId"), [...path, "runId"]);
705
+ const experimentId = decodeExperimentId(valueAt(value, "experimentId"), [...path, "experimentId"]);
706
+ const startedAt = decodeUtcMillis(valueAt(value, "startedAt"), [...path, "startedAt"]);
707
+ const completedAt = decodeUtcMillis(valueAt(value, "completedAt"), [...path, "completedAt"]);
708
+ const slots = decodeArray(valueAt(value, "expectedSlots"), [...path, "expectedSlots"], decodeSlotId);
583
709
  if (effect_1.Either.isLeft(runId))
584
710
  return effect_1.Either.left(runId.left);
585
- const startedAt = decodeUtcMillis(valueAt(input, "startedAt"), [...path, "startedAt"]);
711
+ if (effect_1.Either.isLeft(experimentId))
712
+ return effect_1.Either.left(experimentId.left);
713
+ const context = decodeRunContext(valueAt(value, "context"), experimentId.right, [...path, "context"]);
714
+ if (effect_1.Either.isLeft(context))
715
+ return effect_1.Either.left(context.left);
586
716
  if (effect_1.Either.isLeft(startedAt))
587
717
  return effect_1.Either.left(startedAt.left);
588
- const completedAt = decodeUtcMillis(valueAt(input, "completedAt"), [...path, "completedAt"]);
589
- if (effect_1.Either.isLeft(completedAt) || completedAt.right < startedAt.right) {
590
- return effect_1.Either.left(codecError([...path, "completedAt"], "must be a UTC millisecond no earlier than startedAt"));
591
- }
592
- const expectedSlots = decodeIdentityArray(valueAt(input, "expectedSlots"), [...path, "expectedSlots"], false, decodeSlotId);
593
- if (effect_1.Either.isLeft(expectedSlots))
594
- return effect_1.Either.left(expectedSlots.left);
595
- const run = {
718
+ if (effect_1.Either.isLeft(completedAt))
719
+ return effect_1.Either.left(completedAt.left);
720
+ if (effect_1.Either.isLeft(slots))
721
+ return effect_1.Either.left(slots.left);
722
+ return effect_1.Either.right(Object.freeze({
596
723
  runId: runId.right,
724
+ experimentId: experimentId.right,
725
+ context: context.right,
597
726
  startedAt: startedAt.right,
598
727
  completedAt: completedAt.right,
599
- expectedSlots: expectedSlots.right,
600
- };
601
- return effect_1.Either.right(Object.freeze(run));
728
+ expectedSlots: Object.freeze(uniqueSorted(slots.right)),
729
+ }));
602
730
  }
603
- function decodeAnalysisSlot(input, path) {
604
- if (!isExactObject(input, ["runId", "slotId", "state", "relation", "attempt", "issues", "base"])) {
605
- return effect_1.Either.left(codecError(path, "contains unsupported fields"));
731
+ function decodeRunContext(value, experimentId, path) {
732
+ if (value === null)
733
+ return effect_1.Either.right(null);
734
+ if (!isExactObject(value, ["execution", "labels"])) {
735
+ return effect_1.Either.left(codecError(path, "must contain exactly execution and labels"));
736
+ }
737
+ const decoded = (0, run_context_ts_1.canonicalizeRunContext)({
738
+ experimentId,
739
+ execution: valueAt(value, "execution"),
740
+ labels: valueAt(value, "labels"),
741
+ });
742
+ return effect_1.Either.isLeft(decoded)
743
+ ? effect_1.Either.left(codecError(path, "is not a valid closed Run context"))
744
+ : effect_1.Either.right(closeRunContext(decoded.right));
745
+ }
746
+ function decodeSlots(value, path) {
747
+ if (!Array.isArray(value))
748
+ return effect_1.Either.left(codecError(path, "must be an array"));
749
+ if (value.length > MAX_SLOTS)
750
+ return effect_1.Either.left(codecError(path, "exceeds the Slot limit"));
751
+ const slots = [];
752
+ const identities = new Set();
753
+ for (let index = 0; index < value.length; index += 1) {
754
+ const decoded = decodeSlot(value[index], [...path, String(index)], false);
755
+ if (effect_1.Either.isLeft(decoded))
756
+ return effect_1.Either.left(decoded.left);
757
+ const key = slotKey(decoded.right.runId, decoded.right.slotId);
758
+ if (identities.has(key))
759
+ return effect_1.Either.left(codecError([...path, String(index)], "duplicates a Run/Slot identity"));
760
+ identities.add(key);
761
+ slots.push(decoded.right);
762
+ }
763
+ return effect_1.Either.right(Object.freeze(slots.sort(compareSlots)));
764
+ }
765
+ /** A Snapshot Slot is a derived occurrence of exactly one closed AnalysisRun. */
766
+ function validateSlotRunAlignment(runs, slots) {
767
+ const runsById = new Map(runs.map((run) => [run.runId, run]));
768
+ for (let index = 0; index < slots.length; index += 1) {
769
+ const slot = slots[index];
770
+ const run = runsById.get(slot.runId);
771
+ if (run === undefined) {
772
+ return codecError(["slots", String(index), "runId"], "does not identify a selected AnalysisRun");
773
+ }
774
+ if (run.experimentId !== slot.experimentId) {
775
+ return codecError(["slots", String(index), "experimentId"], "does not match the associated AnalysisRun");
776
+ }
777
+ if (!run.expectedSlots.includes(slot.slotId)) {
778
+ return codecError(["slots", String(index), "slotId"], "does not belong to the associated AnalysisRun");
779
+ }
606
780
  }
607
- const state = valueAt(input, "state");
781
+ return undefined;
782
+ }
783
+ function decodeSlot(value, path, nested) {
784
+ if (!isPlainObject(value))
785
+ return effect_1.Either.left(codecError(path, "must be an object"));
786
+ const state = valueAt(value, "state");
608
787
  if (state === "excluded") {
609
- if (!isExactObject(input, ["runId", "slotId", "state", "base"])) {
610
- return effect_1.Either.left(codecError(path, "excluded slot must contain runId, slotId, state, and base"));
788
+ const hasReason = Object.prototype.hasOwnProperty.call(value, "reason");
789
+ const expectedKeys = hasReason
790
+ ? ["runId", "slotId", "experimentId", "evalId", "attemptOrdinal", "executionIdentityDigest", "state", "base", "reason"]
791
+ : ["runId", "slotId", "experimentId", "evalId", "attemptOrdinal", "executionIdentityDigest", "state", "base"];
792
+ if (nested || !isExactObject(value, expectedKeys)) {
793
+ return effect_1.Either.left(codecError(path, "excluded Slots must contain exactly runId, slotId, state, base, and optional reason"));
611
794
  }
612
- const runId = decodeRunId(valueAt(input, "runId"), [...path, "runId"]);
795
+ const runId = decodeRunId(valueAt(value, "runId"), [...path, "runId"]);
796
+ const slotId = decodeSlotId(valueAt(value, "slotId"), [...path, "slotId"]);
797
+ const experimentId = decodeExperimentId(valueAt(value, "experimentId"), [...path, "experimentId"]);
798
+ const evalId = decodeEvalId(valueAt(value, "evalId"), [...path, "evalId"]);
799
+ const attemptOrdinal = decodeAttemptOrdinal(valueAt(value, "attemptOrdinal"), [...path, "attemptOrdinal"]);
800
+ const executionIdentityDigest = decodeExecutionIdentityDigest(valueAt(value, "executionIdentityDigest"), [...path, "executionIdentityDigest"]);
801
+ const base = decodeSlot(valueAt(value, "base"), [...path, "base"], true);
613
802
  if (effect_1.Either.isLeft(runId))
614
803
  return effect_1.Either.left(runId.left);
615
- const slotId = decodeSlotId(valueAt(input, "slotId"), [...path, "slotId"]);
616
804
  if (effect_1.Either.isLeft(slotId))
617
805
  return effect_1.Either.left(slotId.left);
618
- const base = decodeBaseSlot(valueAt(input, "base"), [...path, "base"]);
806
+ if (effect_1.Either.isLeft(experimentId))
807
+ return effect_1.Either.left(experimentId.left);
808
+ if (effect_1.Either.isLeft(evalId))
809
+ return effect_1.Either.left(evalId.left);
810
+ if (effect_1.Either.isLeft(attemptOrdinal))
811
+ return effect_1.Either.left(attemptOrdinal.left);
812
+ if (effect_1.Either.isLeft(executionIdentityDigest))
813
+ return effect_1.Either.left(executionIdentityDigest.left);
619
814
  if (effect_1.Either.isLeft(base))
620
815
  return effect_1.Either.left(base.left);
621
- if (base.right.runId !== runId.right || base.right.slotId !== slotId.right) {
622
- return effect_1.Either.left(codecError([...path, "base"], "must keep the same runId and slotId"));
816
+ if (base.right.state === "excluded"
817
+ || base.right.runId !== runId.right
818
+ || base.right.slotId !== slotId.right
819
+ || base.right.experimentId !== experimentId.right
820
+ || base.right.evalId !== evalId.right
821
+ || base.right.attemptOrdinal !== attemptOrdinal.right
822
+ || base.right.executionIdentityDigest !== executionIdentityDigest.right) {
823
+ return effect_1.Either.left(codecError(path, "excluded base must be a matching active Slot"));
824
+ }
825
+ if (hasReason && valueAt(value, "reason") !== "identity-mismatch") {
826
+ return effect_1.Either.left(codecError([...path, "reason"], "must be identity-mismatch"));
623
827
  }
624
- const slot = {
828
+ return effect_1.Either.right(Object.freeze({
625
829
  runId: runId.right,
626
830
  slotId: slotId.right,
627
- state: "excluded",
831
+ experimentId: experimentId.right,
832
+ evalId: evalId.right,
833
+ attemptOrdinal: attemptOrdinal.right,
834
+ executionIdentityDigest: executionIdentityDigest.right,
835
+ state,
628
836
  base: base.right,
629
- };
630
- return effect_1.Either.right(Object.freeze(slot));
631
- }
632
- return decodeBaseSlot(input, path);
633
- }
634
- function decodeBaseSlot(input, path) {
635
- if (!isExactObject(input, ["runId", "slotId", "state", "relation", "attempt", "issues"])) {
636
- return effect_1.Either.left(codecError(path, "contains unsupported fields"));
837
+ ...(hasReason ? { reason: "identity-mismatch" } : {}),
838
+ }));
637
839
  }
638
- const state = valueAt(input, "state");
840
+ const runId = decodeRunId(valueAt(value, "runId"), [...path, "runId"]);
841
+ const slotId = decodeSlotId(valueAt(value, "slotId"), [...path, "slotId"]);
842
+ const experimentId = decodeExperimentId(valueAt(value, "experimentId"), [...path, "experimentId"]);
843
+ const evalId = decodeEvalId(valueAt(value, "evalId"), [...path, "evalId"]);
844
+ const attemptOrdinal = decodeAttemptOrdinal(valueAt(value, "attemptOrdinal"), [...path, "attemptOrdinal"]);
845
+ const executionIdentityDigest = decodeExecutionIdentityDigest(valueAt(value, "executionIdentityDigest"), [...path, "executionIdentityDigest"]);
846
+ if (effect_1.Either.isLeft(runId))
847
+ return effect_1.Either.left(runId.left);
848
+ if (effect_1.Either.isLeft(slotId))
849
+ return effect_1.Either.left(slotId.left);
850
+ if (effect_1.Either.isLeft(experimentId))
851
+ return effect_1.Either.left(experimentId.left);
852
+ if (effect_1.Either.isLeft(evalId))
853
+ return effect_1.Either.left(evalId.left);
854
+ if (effect_1.Either.isLeft(attemptOrdinal))
855
+ return effect_1.Either.left(attemptOrdinal.left);
856
+ if (effect_1.Either.isLeft(executionIdentityDigest))
857
+ return effect_1.Either.left(executionIdentityDigest.left);
639
858
  if (state === "included") {
640
- if (!isExactObject(input, ["runId", "slotId", "state", "relation", "attempt"])) {
641
- return effect_1.Either.left(codecError(path, "included slot must contain runId, slotId, state, relation, and attempt"));
859
+ if (!isExactObject(value, ["runId", "slotId", "experimentId", "evalId", "attemptOrdinal", "executionIdentityDigest", "state", "action", "relation", "attempt"])) {
860
+ return effect_1.Either.left(codecError(path, "included Slots contain unsupported fields"));
642
861
  }
643
- const runId = decodeRunId(valueAt(input, "runId"), [...path, "runId"]);
644
- if (effect_1.Either.isLeft(runId))
645
- return effect_1.Either.left(runId.left);
646
- const slotId = decodeSlotId(valueAt(input, "slotId"), [...path, "slotId"]);
647
- if (effect_1.Either.isLeft(slotId))
648
- return effect_1.Either.left(slotId.left);
649
- const relation = valueAt(input, "relation");
650
- if (relation !== "origin" && relation !== "reference") {
651
- return effect_1.Either.left(codecError([...path, "relation"], "must be origin or reference"));
862
+ const action = valueAt(value, "action");
863
+ const relation = valueAt(value, "relation");
864
+ const attempt = decodeAttemptIdentity(valueAt(value, "attempt"), [...path, "attempt"]);
865
+ if ((action !== "executed" && action !== "carried" && action !== "accepted") || (relation !== "origin" && relation !== "reference")) {
866
+ return effect_1.Either.left(codecError(path, "included Slot has an invalid Member action or relation"));
652
867
  }
653
- const attempt = decodeAttemptRef(valueAt(input, "attempt"), [...path, "attempt"]);
654
868
  if (effect_1.Either.isLeft(attempt))
655
869
  return effect_1.Either.left(attempt.left);
656
- const slot = {
870
+ return effect_1.Either.right(Object.freeze({
657
871
  runId: runId.right,
658
872
  slotId: slotId.right,
659
- state: "included",
873
+ experimentId: experimentId.right,
874
+ evalId: evalId.right,
875
+ attemptOrdinal: attemptOrdinal.right,
876
+ executionIdentityDigest: executionIdentityDigest.right,
877
+ state,
878
+ action,
660
879
  relation,
661
880
  attempt: attempt.right,
662
- };
663
- return effect_1.Either.right(Object.freeze(slot));
881
+ }));
664
882
  }
665
883
  if (state === "not-recorded") {
666
- if (!isExactObject(input, ["runId", "slotId", "state"])) {
667
- return effect_1.Either.left(codecError(path, "not-recorded slot must contain runId, slotId, and state"));
884
+ if (!isExactObject(value, ["runId", "slotId", "experimentId", "evalId", "attemptOrdinal", "executionIdentityDigest", "state", "action", "attempt"]) || valueAt(value, "attempt") !== null) {
885
+ return effect_1.Either.left(codecError(path, "not-recorded Slots must retain a null Attempt"));
668
886
  }
669
- const runId = decodeRunId(valueAt(input, "runId"), [...path, "runId"]);
670
- if (effect_1.Either.isLeft(runId))
671
- return effect_1.Either.left(runId.left);
672
- const slotId = decodeSlotId(valueAt(input, "slotId"), [...path, "slotId"]);
673
- if (effect_1.Either.isLeft(slotId))
674
- return effect_1.Either.left(slotId.left);
675
- const slot = {
887
+ const action = valueAt(value, "action");
888
+ if (action !== null && action !== "not-dispatched" && action !== "interrupted") {
889
+ return effect_1.Either.left(codecError([...path, "action"], "is not a null Member action"));
890
+ }
891
+ return effect_1.Either.right(Object.freeze({
676
892
  runId: runId.right,
677
893
  slotId: slotId.right,
678
- state: "not-recorded",
679
- };
680
- return effect_1.Either.right(Object.freeze(slot));
894
+ experimentId: experimentId.right,
895
+ evalId: evalId.right,
896
+ attemptOrdinal: attemptOrdinal.right,
897
+ executionIdentityDigest: executionIdentityDigest.right,
898
+ state,
899
+ action,
900
+ attempt: null,
901
+ }));
681
902
  }
682
903
  if (state === "core-invalid") {
683
- if (!isExactObject(input, ["runId", "slotId", "state", "issues"])) {
684
- return effect_1.Either.left(codecError(path, "core-invalid slot must contain runId, slotId, state, and issues"));
904
+ if (!isExactObject(value, ["runId", "slotId", "experimentId", "evalId", "attemptOrdinal", "executionIdentityDigest", "state", "action", "attempt", "issues"]) || valueAt(value, "attempt") !== null) {
905
+ return effect_1.Either.left(codecError(path, "core-invalid Slots must contain null Attempt and issues"));
685
906
  }
686
- const runId = decodeRunId(valueAt(input, "runId"), [...path, "runId"]);
687
- if (effect_1.Either.isLeft(runId))
688
- return effect_1.Either.left(runId.left);
689
- const slotId = decodeSlotId(valueAt(input, "slotId"), [...path, "slotId"]);
690
- if (effect_1.Either.isLeft(slotId))
691
- return effect_1.Either.left(slotId.left);
692
- const issues = decodeIssues(valueAt(input, "issues"), [...path, "issues"]);
907
+ const action = valueAt(value, "action");
908
+ if (action !== null && action !== "executed" && action !== "carried" && action !== "accepted" && action !== "not-dispatched" && action !== "interrupted") {
909
+ return effect_1.Either.left(codecError([...path, "action"], "is not a Member action"));
910
+ }
911
+ const issues = decodeIssues(valueAt(value, "issues"), [...path, "issues"]);
693
912
  if (effect_1.Either.isLeft(issues))
694
913
  return effect_1.Either.left(issues.left);
695
- const slot = {
914
+ return effect_1.Either.right(Object.freeze({
696
915
  runId: runId.right,
697
916
  slotId: slotId.right,
698
- state: "core-invalid",
917
+ experimentId: experimentId.right,
918
+ evalId: evalId.right,
919
+ attemptOrdinal: attemptOrdinal.right,
920
+ executionIdentityDigest: executionIdentityDigest.right,
921
+ state,
922
+ action,
923
+ attempt: null,
699
924
  issues: issues.right,
700
- };
701
- return effect_1.Either.right(Object.freeze(slot));
925
+ }));
702
926
  }
703
- return effect_1.Either.left(codecError([...path, "state"], "must be included, not-recorded, or core-invalid"));
927
+ return effect_1.Either.left(codecError([...path, "state"], "must be included, not-recorded, core-invalid, or excluded"));
704
928
  }
705
- function decodeAttemptRef(input, path) {
706
- if (!isExactObject(input, ["originRunId", "attemptId"])) {
707
- return effect_1.Either.left(codecError(path, "must contain exactly originRunId and attemptId"));
929
+ function decodeAttemptIdentity(value, path) {
930
+ if (!isExactObject(value, ["kind", "locator", "originRunId"]) || valueAt(value, "kind") !== "attempt") {
931
+ return effect_1.Either.left(codecError(path, "must contain an Attempt locator identity"));
708
932
  }
709
- const originRunId = decodeRunId(valueAt(input, "originRunId"), [...path, "originRunId"]);
710
- if (effect_1.Either.isLeft(originRunId))
711
- return effect_1.Either.left(originRunId.left);
712
- const attemptId = decodeAttemptId(valueAt(input, "attemptId"), [...path, "attemptId"]);
713
- if (effect_1.Either.isLeft(attemptId))
714
- return effect_1.Either.left(attemptId.left);
715
- const ref = {
716
- originRunId: originRunId.right,
717
- attemptId: attemptId.right,
718
- };
719
- return effect_1.Either.right(Object.freeze(ref));
720
- }
721
- function decodeIssues(input, path) {
722
- const decoded = effect_1.Schema.decodeUnknownEither(record_errors_ts_1.NonEmptyRecordIssuesSchema, core_ts_1.RecordExactParseOptions)(input);
723
- return effect_1.Either.isLeft(decoded)
724
- ? effect_1.Either.left(codecError(path, "must be a non-empty Record issue array"))
725
- : effect_1.Either.right(copyIssues(decoded.right));
933
+ const locator = valueAt(value, "locator");
934
+ const originRunId = decodeRunId(valueAt(value, "originRunId"), [...path, "originRunId"]);
935
+ if (typeof locator !== "string" || !(0, attempt_locator_ts_1.parseAttemptLocator)(locator).valid) {
936
+ return effect_1.Either.left(codecError([...path, "locator"], "is not a canonical Attempt locator"));
937
+ }
938
+ return effect_1.Either.isLeft(originRunId)
939
+ ? effect_1.Either.left(originRunId.left)
940
+ : effect_1.Either.right(Object.freeze({ kind: "attempt", locator: locator, originRunId: originRunId.right }));
726
941
  }
727
- function decodeIdentityArray(input, path, requireNonEmpty, decodeIdentity) {
728
- if (!Array.isArray(input))
942
+ function decodeIssues(value, path) {
943
+ if (!Array.isArray(value))
729
944
  return effect_1.Either.left(codecError(path, "must be an array"));
730
- if (requireNonEmpty && input.length === 0)
731
- return effect_1.Either.left(codecError(path, "must not be empty"));
732
- const values = [];
733
- let previous;
734
- for (let index = 0; index < input.length; index += 1) {
735
- const identity = decodeIdentity(input[index], [...path, String(index)]);
736
- if (effect_1.Either.isLeft(identity))
737
- return effect_1.Either.left(identity.left);
738
- if (previous !== undefined && (0, identifiers_ts_2.compareCanonicalIdentity)(previous, identity.right) >= 0) {
739
- return effect_1.Either.left(codecError(path, "must be strictly sorted and unique"));
945
+ const issues = [];
946
+ for (let index = 0; index < value.length; index += 1) {
947
+ const entry = value[index];
948
+ if (!isExactObject(entry, ["code", "message", "refs"]))
949
+ return effect_1.Either.left(codecError([...path, String(index)], "has unsupported fields"));
950
+ const code = valueAt(entry, "code");
951
+ const message = valueAt(entry, "message");
952
+ const refs = valueAt(entry, "refs");
953
+ if ((code !== "missing" && code !== "unsupported" && code !== "producer-incompatible" && code !== "input-invalid" && code !== "reduction-failed" && code !== "relation-unmatched") || typeof message !== "string" || !Array.isArray(refs)) {
954
+ return effect_1.Either.left(codecError([...path, String(index)], "is not a closed Analysis issue"));
955
+ }
956
+ const decodedRefs = [];
957
+ for (let refIndex = 0; refIndex < refs.length; refIndex += 1) {
958
+ const ref = refs[refIndex];
959
+ if (!isExactObject(ref, ["identity"]) || !isExactObject(valueAt(ref, "identity"), ["kind", "locator"])) {
960
+ return effect_1.Either.left(codecError([...path, String(index), "refs", String(refIndex)], "is not a closed evidence reference"));
961
+ }
962
+ const identity = valueAt(ref, "identity");
963
+ if (!isExactObject(identity, ["kind", "locator"])) {
964
+ return effect_1.Either.left(codecError([...path, String(index), "refs", String(refIndex)], "is not a closed evidence reference"));
965
+ }
966
+ const locator = valueAt(identity, "locator");
967
+ if (valueAt(identity, "kind") !== "attempt" || typeof locator !== "string" || !(0, attempt_locator_ts_1.parseAttemptLocator)(locator).valid) {
968
+ return effect_1.Either.left(codecError([...path, String(index), "refs", String(refIndex)], "has an invalid evidence locator"));
969
+ }
970
+ decodedRefs.push(Object.freeze({ identity: Object.freeze({ kind: "attempt", locator: locator }) }));
740
971
  }
741
- previous = identity.right;
742
- values.push(identity.right);
972
+ issues.push(Object.freeze({ code, message, refs: Object.freeze(decodedRefs) }));
973
+ }
974
+ return effect_1.Either.right(Object.freeze(issues));
975
+ }
976
+ function decodeArray(value, path, decode) {
977
+ if (!Array.isArray(value))
978
+ return effect_1.Either.left(codecError(path, "must be an array"));
979
+ const values = [];
980
+ for (let index = 0; index < value.length; index += 1) {
981
+ const decoded = decode(value[index], [...path, String(index)]);
982
+ if (effect_1.Either.isLeft(decoded))
983
+ return effect_1.Either.left(decoded.left);
984
+ values.push(decoded.right);
743
985
  }
744
986
  return effect_1.Either.right(Object.freeze(values));
745
987
  }
746
- function decodeRunId(input, path) {
747
- const decoded = effect_1.Schema.decodeUnknownEither(identifiers_ts_1.RunIdSchema, core_ts_1.RecordExactParseOptions)(input);
748
- return effect_1.Either.isLeft(decoded)
749
- ? effect_1.Either.left(codecError(path, "must be a portable RunId"))
750
- : effect_1.Either.right(decoded.right);
988
+ function decodeRunId(value, path) {
989
+ return decodeBrand(identifiers_ts_1.RunIdSchema, value, path, "a RunId");
751
990
  }
752
- function decodeSlotId(input, path) {
753
- const decoded = effect_1.Schema.decodeUnknownEither(identifiers_ts_1.SlotIdSchema, core_ts_1.RecordExactParseOptions)(input);
754
- return effect_1.Either.isLeft(decoded)
755
- ? effect_1.Either.left(codecError(path, "must be a portable SlotId"))
756
- : effect_1.Either.right(decoded.right);
991
+ function decodeSlotId(value, path) {
992
+ return decodeBrand(identifiers_ts_1.SlotIdSchema, value, path, "a SlotId");
757
993
  }
758
- function decodeAttemptId(input, path) {
759
- const decoded = effect_1.Schema.decodeUnknownEither(identifiers_ts_1.AttemptIdSchema, core_ts_1.RecordExactParseOptions)(input);
760
- return effect_1.Either.isLeft(decoded)
761
- ? effect_1.Either.left(codecError(path, "must be a portable AttemptId"))
762
- : effect_1.Either.right(decoded.right);
994
+ function decodeEvalId(value, path) {
995
+ return decodeBrand(identifiers_ts_1.EvalIdSchema, value, path, "an EvalId");
763
996
  }
764
- function decodeUtcMillis(input, path) {
765
- const decoded = effect_1.Schema.decodeUnknownEither(identifiers_ts_1.UtcMillisSchema, core_ts_1.RecordExactParseOptions)(input);
766
- return effect_1.Either.isLeft(decoded)
767
- ? effect_1.Either.left(codecError(path, "must be a UTC millisecond"))
768
- : effect_1.Either.right(decoded.right);
997
+ function decodeAttemptOrdinal(value, path) {
998
+ return typeof value === "number" && Number.isSafeInteger(value) && value >= 0
999
+ ? effect_1.Either.right(value)
1000
+ : effect_1.Either.left(codecError(path, "must be a zero-based non-negative safe attempt ordinal"));
769
1001
  }
770
- function decodeExperimentId(input, path) {
771
- const decoded = effect_1.Schema.decodeUnknownEither(experiment_id_ts_1.ExperimentIdSchema)(input);
772
- return effect_1.Either.isLeft(decoded)
773
- ? effect_1.Either.left(codecError(path, "must be an Experiment identity"))
774
- : effect_1.Either.right(decoded.right);
775
- }
776
- function validateSampleIntegrity(sample) {
777
- const expectedSlotsByRun = new Map();
778
- let previousRunId;
779
- let expectedSlotCount = 0;
780
- for (const run of sample.runs) {
781
- if (previousRunId !== undefined && (0, identifiers_ts_2.compareCanonicalIdentity)(previousRunId, run.runId) >= 0) {
782
- return codecError(["runs"], "must be strictly sorted and unique by runId");
783
- }
784
- previousRunId = run.runId;
785
- const slots = new Set();
786
- for (const slotId of run.expectedSlots)
787
- slots.add(slotId);
788
- expectedSlotsByRun.set(run.runId, slots);
789
- if (expectedSlotCount > MAX_SLOTS - run.expectedSlots.length) {
790
- return codecError(["runs"], "expected slot count exceeds the slots limit");
791
- }
792
- expectedSlotCount += run.expectedSlots.length;
793
- }
794
- if (sample.slots.length !== expectedSlotCount) {
795
- return codecError(["slots"], "must contain one entry for every expected slot");
796
- }
797
- const seenSlotsByRun = new Map();
798
- let previousSlot;
799
- let denominator = 0;
800
- for (const slot of sample.slots) {
801
- if (previousSlot !== undefined &&
802
- compareSlotIdentity(previousSlot, slot) >= 0) {
803
- return codecError(["slots"], "must be strictly sorted and unique by runId and slotId");
804
- }
805
- previousSlot = slot;
806
- const expectedSlots = expectedSlotsByRun.get(slot.runId);
807
- if (expectedSlots === undefined || !expectedSlots.has(slot.slotId)) {
808
- return codecError(["slots"], "must reference an expected slot of a selected run");
809
- }
810
- let seenSlots = seenSlotsByRun.get(slot.runId);
811
- if (seenSlots === undefined) {
812
- seenSlots = new Set();
813
- seenSlotsByRun.set(slot.runId, seenSlots);
814
- }
815
- seenSlots.add(slot.slotId);
816
- if (slot.state !== "excluded")
817
- denominator += 1;
818
- }
819
- if (denominator !== sample.denominator) {
820
- return codecError(["denominator"], "must equal the number of non-excluded slots");
821
- }
822
- const runIds = sample.runs.map((run) => run.runId);
823
- if (sample.selection.policy === "explicit-runs") {
824
- if (!sameIdentitySequence(sample.selection.runIds, runIds)) {
825
- return codecError(["selection", "runIds"], "must equal selected runs in canonical order");
826
- }
827
- }
828
- else if (!sameIdentitySequence(sample.selection.selectedRunIds, runIds)) {
829
- return codecError(["selection", "selectedRunIds"], "must equal selected runs in canonical order");
830
- }
831
- return undefined;
1002
+ function decodeExecutionIdentityDigest(value, path) {
1003
+ return decodeBrand(identifiers_ts_1.ExecutionIdentityDigestSchema, value, path, "an execution identity digest");
832
1004
  }
833
- function normalizeSelector(selector) {
834
- if (!isExactObject(selector, ["runIds", "slotIds"])) {
835
- return effect_1.Either.left(selectionInvalid("selector", "may contain only runIds and slotIds"));
836
- }
837
- if (hasOwnProperty(selector, "runIds") && selector.runIds === undefined) {
838
- return effect_1.Either.left(selectionInvalid("selector.runIds", "must be omitted or an array"));
839
- }
840
- if (hasOwnProperty(selector, "slotIds") && selector.slotIds === undefined) {
841
- return effect_1.Either.left(selectionInvalid("selector.slotIds", "must be omitted or an array"));
842
- }
843
- if (selector.runIds !== undefined && !Array.isArray(selector.runIds)) {
844
- return effect_1.Either.left(selectionInvalid("selector.runIds", "must be an array"));
845
- }
846
- if (selector.slotIds !== undefined && !Array.isArray(selector.slotIds)) {
847
- return effect_1.Either.left(selectionInvalid("selector.slotIds", "must be an array"));
848
- }
849
- let runIds;
850
- if (selector.runIds !== undefined) {
851
- const decodedRunIds = selectorIdentitySet(selector.runIds, "selector.runIds");
852
- if (effect_1.Either.isLeft(decodedRunIds))
853
- return effect_1.Either.left(decodedRunIds.left);
854
- runIds = decodedRunIds.right;
855
- }
856
- let slotIds;
857
- if (selector.slotIds !== undefined) {
858
- const decodedSlotIds = selectorIdentitySet(selector.slotIds, "selector.slotIds");
859
- if (effect_1.Either.isLeft(decodedSlotIds))
860
- return effect_1.Either.left(decodedSlotIds.left);
861
- slotIds = decodedSlotIds.right;
862
- }
863
- const normalized = {
864
- runIds,
865
- slotIds,
866
- };
867
- return effect_1.Either.right(Object.freeze(normalized));
868
- }
869
- function selectorIdentitySet(values, field) {
870
- const selected = new Set();
1005
+ function decodeExperimentId(value, path) {
1006
+ return decodeBrand(identifiers_ts_1.ExperimentIdSchema, value, path, "an ExperimentId");
1007
+ }
1008
+ function decodeUtcMillis(value, path) {
1009
+ return decodeBrand(identifiers_ts_1.UtcMillisSchema, value, path, "a UTC millisecond value");
1010
+ }
1011
+ function decodeBrand(schema, value, path, label) {
1012
+ const decoded = effect_1.Schema.decodeUnknownEither(schema)(value);
1013
+ return effect_1.Either.isLeft(decoded) ? effect_1.Either.left(codecError(path, `must be ${label}`)) : effect_1.Either.right(decoded.right);
1014
+ }
1015
+ function uniqueSorted(values) {
1016
+ return Object.freeze([...new Set(values)].sort(identifiers_ts_2.compareCanonicalIdentity));
1017
+ }
1018
+ function uniqueSortedBy(values, key) {
1019
+ const byKey = new Map();
871
1020
  for (const value of values) {
872
- if (!(0, identifiers_ts_2.isPortableSegment)(value)) {
873
- return effect_1.Either.left(selectionInvalid(field, "must contain portable Record identities"));
874
- }
875
- selected.add(value);
876
- }
877
- return effect_1.Either.right(selected);
878
- }
879
- function makeHandle(reader, port, sample) {
880
- const handle = {
881
- sample,
882
- [analysisSampleHandleTypeId](boundSample) {
883
- return boundSample;
884
- },
885
- };
886
- const frozenHandle = Object.freeze(handle);
887
- const binding = {
888
- reader,
889
- port,
890
- sample,
891
- };
892
- handleBindings.set(frozenHandle, Object.freeze(binding));
893
- return frozenHandle;
894
- }
895
- function makeAnalysisSample(selection, runs, slots) {
896
- const copiedRuns = Object.freeze(runs.map(copyAnalysisRun));
897
- const copiedSlots = Object.freeze(slots.map(copyAnalysisSlot));
898
- let denominator = 0;
899
- for (const slot of copiedSlots) {
900
- if (slot.state !== "excluded")
901
- denominator += 1;
902
- }
903
- const sample = {
904
- selection: copySelectionSummary(selection),
905
- runs: copiedRuns,
906
- slots: copiedSlots,
907
- denominator,
908
- };
909
- return Object.freeze(sample);
910
- }
911
- function copySelectionSummary(selection) {
912
- if (selection.policy === "explicit-runs") {
913
- const summary = {
914
- policy: "explicit-runs",
915
- runIds: Object.freeze(sortedUnique(selection.runIds)),
916
- };
917
- return Object.freeze(summary);
1021
+ const identity = key(value);
1022
+ if (byKey.has(identity))
1023
+ throw new Error("SampleSnapshot contains duplicate identities");
1024
+ byKey.set(identity, value);
918
1025
  }
919
- const experimentIds = selection.experimentIds === "all"
920
- ? "all"
921
- : Object.freeze(sortedUnique(selection.experimentIds));
922
- const summary = {
923
- policy: "project-current",
924
- experimentIds,
925
- selectedRunIds: Object.freeze(sortedUnique(selection.selectedRunIds)),
926
- };
927
- return Object.freeze(summary);
928
- }
929
- function copyAnalysisRun(run) {
930
- const copy = {
931
- runId: run.runId,
932
- startedAt: run.startedAt,
933
- completedAt: run.completedAt,
934
- expectedSlots: Object.freeze(sortedUnique(run.expectedSlots)),
935
- };
936
- return Object.freeze(copy);
937
- }
938
- function copyAnalysisSlot(slot) {
939
- if (slot.state === "excluded") {
940
- const copy = {
941
- runId: slot.runId,
942
- slotId: slot.slotId,
943
- state: "excluded",
944
- base: copyBaseSlot(slot.base),
945
- };
946
- return Object.freeze(copy);
947
- }
948
- return copyBaseSlot(slot);
1026
+ return Object.freeze([...byKey.entries()]
1027
+ .sort(([left], [right]) => (0, identifiers_ts_2.compareCanonicalIdentity)(left, right))
1028
+ .map(([, value]) => value));
949
1029
  }
950
- function copyBaseSlot(slot) {
951
- if (slot.state === "included") {
952
- const copy = {
953
- runId: slot.runId,
954
- slotId: slot.slotId,
955
- state: "included",
956
- relation: slot.relation,
957
- attempt: copyAttemptRef(slot.attempt),
958
- };
959
- return Object.freeze(copy);
960
- }
961
- if (slot.state === "not-recorded") {
962
- const copy = {
963
- runId: slot.runId,
964
- slotId: slot.slotId,
965
- state: "not-recorded",
966
- };
967
- return Object.freeze(copy);
968
- }
969
- const copy = {
970
- runId: slot.runId,
971
- slotId: slot.slotId,
972
- state: "core-invalid",
973
- issues: copyIssues(slot.issues),
974
- };
975
- return Object.freeze(copy);
976
- }
977
- function copyAttemptRef(ref) {
978
- const copy = {
979
- originRunId: ref.originRunId,
980
- attemptId: ref.attemptId,
981
- };
982
- return Object.freeze(copy);
983
- }
984
- function copyIssues(issues) {
985
- const [first, ...rest] = issues;
986
- const copied = [copyIssue(first), ...rest.map(copyIssue)];
987
- return Object.freeze(copied);
988
- }
989
- function copyIssue(issue) {
990
- const copy = {
991
- code: issue.code,
992
- path: Object.freeze([...issue.path]),
993
- };
994
- return Object.freeze(copy);
995
- }
996
- function matchesSelector(slot, selector) {
997
- const runMatches = selector.runIds === undefined || selector.runIds.has(slot.runId);
998
- const slotMatches = selector.slotIds === undefined || selector.slotIds.has(slot.slotId);
999
- return runMatches && slotMatches;
1000
- }
1001
- function excludedSlot(base) {
1002
- const excluded = {
1003
- runId: base.runId,
1004
- slotId: base.slotId,
1005
- state: "excluded",
1006
- base: copyBaseSlot(base),
1007
- };
1008
- return Object.freeze(excluded);
1009
- }
1010
- function compareSlotIdentity(left, right) {
1011
- const runComparison = (0, identifiers_ts_2.compareCanonicalIdentity)(left.runId, right.runId);
1012
- return runComparison === 0
1013
- ? (0, identifiers_ts_2.compareCanonicalIdentity)(left.slotId, right.slotId)
1014
- : runComparison;
1015
- }
1016
- function sameIdentitySequence(left, right) {
1017
- return left.length === right.length && left.every((value, index) => value === right[index]);
1018
- }
1019
- function sortedUnique(values) {
1020
- const valuesByIdentity = new Set(values);
1021
- const sorted = [...valuesByIdentity];
1022
- sorted.sort(identifiers_ts_2.compareCanonicalIdentity);
1023
- return sorted;
1024
- }
1025
- function isNonNegativeInteger(value) {
1026
- return typeof value === "number" && Number.isSafeInteger(value) && value >= 0;
1027
- }
1028
- function isExactObject(value, allowed) {
1030
+ function sameIdentity(value, expected) {
1031
+ return isExactObject(value, ["kind", "id"])
1032
+ && valueAt(value, "kind") === expected.kind
1033
+ && valueAt(value, "id") === expected.id;
1034
+ }
1035
+ function sameCoverage(value, expected) {
1036
+ return isExactObject(value, ["frameTotal", "selected", "included", "notRecorded", "coreInvalid", "excluded"])
1037
+ && valueAt(value, "frameTotal") === expected.frameTotal
1038
+ && valueAt(value, "selected") === expected.selected
1039
+ && valueAt(value, "included") === expected.included
1040
+ && valueAt(value, "notRecorded") === expected.notRecorded
1041
+ && valueAt(value, "coreInvalid") === expected.coreInvalid
1042
+ && valueAt(value, "excluded") === expected.excluded;
1043
+ }
1044
+ function codecException(error) {
1045
+ const exception = new Error(error.reason);
1046
+ Object.assign(exception, error);
1047
+ return exception;
1048
+ }
1049
+ function codecError(path, reason) {
1050
+ return Object.freeze({ code: "sample-snapshot-invalid", path: Object.freeze([...path]), reason });
1051
+ }
1052
+ /** Complete normalized selection data is collision-safe identity material. */
1053
+ function canonicalIdentity(value) {
1054
+ const encoded = JSON.stringify(value);
1055
+ if (encoded === undefined)
1056
+ throw new Error("Sample identity input must be JSON-serializable");
1057
+ return `sample-v1:${encoded}`;
1058
+ }
1059
+ function isPlainObject(value) {
1029
1060
  if (typeof value !== "object" || value === null || Array.isArray(value))
1030
1061
  return false;
1031
1062
  const prototype = Object.getPrototypeOf(value);
1032
- if (prototype !== Object.prototype && prototype !== null)
1063
+ return prototype === Object.prototype || prototype === null;
1064
+ }
1065
+ function isExactObject(value, keys) {
1066
+ if (!isPlainObject(value))
1033
1067
  return false;
1034
- for (const key of Reflect.ownKeys(value)) {
1035
- if (typeof key !== "string" || !allowed.includes(key))
1036
- return false;
1037
- const descriptor = Object.getOwnPropertyDescriptor(value, key);
1038
- if (descriptor === undefined || !("value" in descriptor))
1039
- return false;
1040
- }
1041
- return true;
1068
+ const actual = Reflect.ownKeys(value);
1069
+ return actual.length === keys.length && actual.every((key) => typeof key === "string" && keys.includes(key));
1042
1070
  }
1043
1071
  function valueAt(value, key) {
1044
1072
  return Reflect.get(value, key);
1045
1073
  }
1046
- function hasOwnProperty(value, property) {
1047
- return Object.prototype.hasOwnProperty.call(value, property);
1048
- }
1049
- function selectionInvalid(field, reason) {
1050
- const error = {
1051
- code: "sample-selection-invalid",
1052
- field,
1053
- reason,
1054
- };
1055
- return Object.freeze(error);
1056
- }
1057
- function codecError(path, reason) {
1058
- const error = {
1059
- code: "analysis-sample-invalid",
1060
- path: Object.freeze([...path]),
1061
- reason,
1062
- };
1063
- return Object.freeze(error);
1064
- }
1065
- function recordHandleInvalid() {
1066
- return new errors_ts_1.RecordHandleInvalid({ code: "record-handle-invalid" });
1067
- }
1068
1074
  //# sourceMappingURL=analysis.cjs.map