niceeval 0.15.1-canary.76 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (714) hide show
  1. package/INDEX.md +45 -40
  2. package/dist/adapter-execution-trace.cjs.map +1 -1
  3. package/dist/adapter-execution-trace.d.cts +26 -0
  4. package/dist/adapter-execution-trace.d.mts +26 -0
  5. package/dist/adapter-execution-trace.d.ts +26 -0
  6. package/dist/adapter-usage.cjs.map +1 -1
  7. package/dist/adapter-usage.d.cts +9 -0
  8. package/dist/adapter-usage.d.mts +9 -0
  9. package/dist/adapter-usage.d.ts +9 -0
  10. package/dist/adapter.cjs +19 -4
  11. package/dist/adapter.cjs.map +1 -1
  12. package/dist/adapter.d.cts +37 -12
  13. package/dist/adapter.d.mts +37 -12
  14. package/dist/adapter.d.ts +37 -12
  15. package/dist/agents/ai-sdk.cjs +3 -0
  16. package/dist/agents/ai-sdk.cjs.map +1 -1
  17. package/dist/agents/bub.cjs +3 -0
  18. package/dist/agents/bub.cjs.map +1 -1
  19. package/dist/agents/claude-code-native.cjs +28 -2
  20. package/dist/agents/claude-code-native.cjs.map +1 -1
  21. package/dist/agents/claude-code.cjs +3 -0
  22. package/dist/agents/claude-code.cjs.map +1 -1
  23. package/dist/agents/codex.cjs +3 -0
  24. package/dist/agents/codex.cjs.map +1 -1
  25. package/dist/agents/coding-cli-versions.cjs +9 -10
  26. package/dist/agents/coding-cli-versions.cjs.map +1 -1
  27. package/dist/agents/coding-cli-versions.d.cts +1 -1
  28. package/dist/agents/coding-cli-versions.d.mts +1 -1
  29. package/dist/agents/coding-cli-versions.d.ts +1 -1
  30. package/dist/agents/deepseek-harness.cjs +3 -0
  31. package/dist/agents/deepseek-harness.cjs.map +1 -1
  32. package/dist/agents/hermes.cjs +3 -0
  33. package/dist/agents/hermes.cjs.map +1 -1
  34. package/dist/agents/index.cjs.map +1 -1
  35. package/dist/agents/index.d.cts +3 -2
  36. package/dist/agents/index.d.mts +3 -2
  37. package/dist/agents/index.d.ts +3 -2
  38. package/dist/agents/omp.cjs +3 -0
  39. package/dist/agents/omp.cjs.map +1 -1
  40. package/dist/agents/openai-compat.cjs +6 -0
  41. package/dist/agents/openai-compat.cjs.map +1 -1
  42. package/dist/agents/openclaw.cjs +3 -0
  43. package/dist/agents/openclaw.cjs.map +1 -1
  44. package/dist/agents/opencode.cjs +3 -0
  45. package/dist/agents/opencode.cjs.map +1 -1
  46. package/dist/agents/sdk-streams.cjs +9 -0
  47. package/dist/agents/sdk-streams.cjs.map +1 -1
  48. package/dist/agents/ui-message-stream.cjs +3 -0
  49. package/dist/agents/ui-message-stream.cjs.map +1 -1
  50. package/dist/assertions/api.cjs.map +1 -1
  51. package/dist/assertions/api.d.cts +27 -5
  52. package/dist/assertions/api.d.mts +27 -5
  53. package/dist/assertions/api.d.ts +27 -5
  54. package/dist/assertions/collection.cjs +6 -0
  55. package/dist/assertions/collection.cjs.map +1 -1
  56. package/dist/assertions/collection.d.cts +4 -2
  57. package/dist/assertions/collection.d.mts +4 -2
  58. package/dist/assertions/collection.d.ts +4 -2
  59. package/dist/assertions/collection.js +12 -8
  60. package/dist/assertions/context-match.cjs +70 -0
  61. package/dist/assertions/context-match.cjs.map +1 -0
  62. package/dist/assertions/context-match.d.cts +107 -0
  63. package/dist/assertions/context-match.d.mts +107 -0
  64. package/dist/assertions/context-match.d.ts +107 -0
  65. package/dist/assertions/context-match.js +12 -0
  66. package/dist/assertions/context-match.js.map +1 -0
  67. package/dist/assertions/full-content.cjs +109 -0
  68. package/dist/assertions/full-content.cjs.map +1 -0
  69. package/dist/assertions/full-content.d.cts +6 -0
  70. package/dist/assertions/full-content.d.mts +6 -0
  71. package/dist/assertions/full-content.d.ts +6 -0
  72. package/dist/assertions/full-content.js +12 -0
  73. package/dist/assertions/full-content.js.map +1 -0
  74. package/dist/assertions/judge-presets.cjs +2 -34
  75. package/dist/assertions/judge-presets.cjs.map +1 -1
  76. package/dist/assertions/judge-presets.d.cts +6 -9
  77. package/dist/assertions/judge-presets.d.mts +6 -9
  78. package/dist/assertions/judge-presets.d.ts +6 -9
  79. package/dist/assertions/judge-presets.js +8 -8
  80. package/dist/assertions/judge.cjs +107 -29
  81. package/dist/assertions/judge.cjs.map +1 -1
  82. package/dist/assertions/judge.d.cts +2 -0
  83. package/dist/assertions/judge.d.mts +2 -0
  84. package/dist/assertions/judge.d.ts +2 -0
  85. package/dist/assertions/match.cjs +244 -5
  86. package/dist/assertions/match.cjs.map +1 -1
  87. package/dist/assertions/match.d.cts +43 -3
  88. package/dist/assertions/match.d.mts +43 -3
  89. package/dist/assertions/match.d.ts +43 -3
  90. package/dist/assertions/match.js +88 -78
  91. package/dist/assertions/material.cjs +520 -0
  92. package/dist/assertions/material.cjs.map +1 -0
  93. package/dist/assertions/material.d.cts +56 -0
  94. package/dist/assertions/material.d.mts +56 -0
  95. package/dist/assertions/material.d.ts +56 -0
  96. package/dist/assertions/material.js +20 -0
  97. package/dist/assertions/material.js.map +1 -0
  98. package/dist/assertions/record/attachment.cjs +5 -2
  99. package/dist/assertions/record/attachment.cjs.map +1 -1
  100. package/dist/assertions/record/codec.cjs +2 -1
  101. package/dist/assertions/record/codec.cjs.map +1 -1
  102. package/dist/assertions/record/model.cjs.map +1 -1
  103. package/dist/assertions/record/model.d.cts +6 -1
  104. package/dist/assertions/record/model.d.mts +6 -1
  105. package/dist/assertions/record/model.d.ts +6 -1
  106. package/dist/assertions/runtime.cjs +207 -14
  107. package/dist/assertions/runtime.cjs.map +1 -1
  108. package/dist/assertions/runtime.d.cts +9 -0
  109. package/dist/assertions/runtime.d.mts +9 -0
  110. package/dist/assertions/runtime.d.ts +9 -0
  111. package/dist/assertions/runtime.js +14 -8
  112. package/dist/assertions/score-match-audit.cjs +18 -8
  113. package/dist/assertions/score-match-audit.cjs.map +1 -1
  114. package/dist/assertions/score-match-gateway.cjs +83 -25
  115. package/dist/assertions/score-match-gateway.cjs.map +1 -1
  116. package/dist/assertions/score-match-gateway.d.cts +2 -0
  117. package/dist/assertions/score-match-gateway.d.mts +2 -0
  118. package/dist/assertions/score-match-gateway.d.ts +2 -0
  119. package/dist/assertions/value-composition.test-d.cjs +77 -0
  120. package/dist/assertions/value-composition.test-d.cjs.map +1 -0
  121. package/dist/assertions/value-composition.test-d.d.cts +1 -0
  122. package/dist/assertions/value-composition.test-d.d.mts +1 -0
  123. package/dist/assertions/value-composition.test-d.d.ts +1 -0
  124. package/dist/assertions/value-composition.test-d.js +4 -0
  125. package/dist/assertions/value-composition.test-d.js.map +1 -0
  126. package/dist/context/assert-first.cjs +207 -213
  127. package/dist/context/assert-first.cjs.map +1 -1
  128. package/dist/context/assert-first.d.cts +49 -23
  129. package/dist/context/assert-first.d.mts +49 -23
  130. package/dist/context/assert-first.d.ts +49 -23
  131. package/dist/context/session.cjs +111 -9
  132. package/dist/context/session.cjs.map +1 -1
  133. package/dist/context/session.d.cts +18 -0
  134. package/dist/context/session.d.mts +18 -0
  135. package/dist/context/session.d.ts +18 -0
  136. package/dist/define.cjs +17 -1
  137. package/dist/define.cjs.map +1 -1
  138. package/dist/eval/cli/contribution.cjs +2 -0
  139. package/dist/eval/cli/contribution.cjs.map +1 -1
  140. package/dist/eval/host/index.cjs +2 -0
  141. package/dist/eval/host/index.cjs.map +1 -1
  142. package/dist/eval/record/evaluation.cjs +3 -0
  143. package/dist/eval/record/evaluation.cjs.map +1 -1
  144. package/dist/eval/record/membership-provenance.d.cts +15 -15
  145. package/dist/eval/record/membership-provenance.d.mts +15 -15
  146. package/dist/eval/record/membership-provenance.d.ts +15 -15
  147. package/dist/eval/record/score.cjs +7 -0
  148. package/dist/eval/record/score.cjs.map +1 -1
  149. package/dist/eval/record/sealed-assertion.cjs +3 -0
  150. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  151. package/dist/eval/record/verdict.cjs +7 -0
  152. package/dist/eval/record/verdict.cjs.map +1 -1
  153. package/dist/expect/index.cjs +8 -2
  154. package/dist/expect/index.cjs.map +1 -1
  155. package/dist/expect/index.d.cts +9 -4
  156. package/dist/expect/index.d.mts +9 -4
  157. package/dist/expect/index.d.ts +9 -4
  158. package/dist/expect/index.js +72 -62
  159. package/dist/expect/index.mjs +72 -62
  160. package/dist/experiment/host/cli/contribution.cjs +37 -23
  161. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  162. package/dist/experiment/host/cli/contribution.d.cts +9 -1
  163. package/dist/experiment/host/cli/contribution.d.mts +9 -1
  164. package/dist/experiment/host/cli/contribution.d.ts +9 -1
  165. package/dist/experiment/host/current.cjs +74 -0
  166. package/dist/experiment/host/current.cjs.map +1 -0
  167. package/dist/experiment/host/current.d.cts +33 -0
  168. package/dist/experiment/host/current.d.mts +33 -0
  169. package/dist/experiment/host/current.d.ts +33 -0
  170. package/dist/experiment/host/current.js +10 -0
  171. package/dist/experiment/host/current.js.map +1 -0
  172. package/dist/experiment/host/index.cjs +17 -174
  173. package/dist/experiment/host/index.cjs.map +1 -1
  174. package/dist/experiment/host/index.d.cts +8 -54
  175. package/dist/experiment/host/index.d.mts +8 -54
  176. package/dist/experiment/host/index.d.ts +8 -54
  177. package/dist/experiment/host/operations.cjs +33 -10
  178. package/dist/experiment/host/operations.cjs.map +1 -1
  179. package/dist/experiment/host/operations.d.cts +29 -1
  180. package/dist/experiment/host/operations.d.mts +29 -1
  181. package/dist/experiment/host/operations.d.ts +29 -1
  182. package/dist/experiment/host/operations.js +6 -4
  183. package/dist/experiment/host/requirements.cjs +3 -0
  184. package/dist/experiment/host/requirements.cjs.map +1 -0
  185. package/dist/experiment/host/requirements.d.cts +3 -0
  186. package/dist/experiment/host/requirements.d.mts +3 -0
  187. package/dist/experiment/host/requirements.d.ts +3 -0
  188. package/dist/experiment/host/requirements.js +4 -0
  189. package/dist/experiment/host/requirements.js.map +1 -0
  190. package/dist/experiment/host/runtime.cjs +179 -0
  191. package/dist/experiment/host/runtime.cjs.map +1 -0
  192. package/dist/experiment/host/runtime.d.cts +79 -0
  193. package/dist/experiment/host/runtime.d.mts +79 -0
  194. package/dist/experiment/host/runtime.d.ts +79 -0
  195. package/dist/experiment/host/runtime.js +6 -0
  196. package/dist/experiment/host/runtime.js.map +1 -0
  197. package/dist/experiment/host/types.cjs.map +1 -1
  198. package/dist/experiment/host/types.d.cts +17 -16
  199. package/dist/experiment/host/types.d.mts +17 -16
  200. package/dist/experiment/host/types.d.ts +17 -16
  201. package/dist/fresh-import.cjs +2 -1
  202. package/dist/fresh-import.cjs.map +1 -1
  203. package/dist/index.cjs +4 -2
  204. package/dist/index.cjs.map +1 -1
  205. package/dist/index.d.cts +12 -6
  206. package/dist/index.d.mts +12 -6
  207. package/dist/index.d.ts +12 -6
  208. package/dist/index.js +32 -30
  209. package/dist/index.mjs +32 -30
  210. package/dist/inspection/artifacts.cjs +83 -54
  211. package/dist/inspection/artifacts.cjs.map +1 -1
  212. package/dist/inspection/artifacts.d.cts +8 -0
  213. package/dist/inspection/artifacts.d.mts +8 -0
  214. package/dist/inspection/artifacts.d.ts +8 -0
  215. package/dist/inspection/artifacts.js +2 -0
  216. package/dist/inspection/assertions.cjs +4 -1
  217. package/dist/inspection/assertions.cjs.map +1 -1
  218. package/dist/inspection/cli/contribution.cjs +27 -4
  219. package/dist/inspection/cli/contribution.cjs.map +1 -1
  220. package/dist/inspection/cli/contribution.d.cts +2 -1
  221. package/dist/inspection/cli/contribution.d.mts +2 -1
  222. package/dist/inspection/cli/contribution.d.ts +2 -1
  223. package/dist/inspection/execution-traces.cjs +114 -8
  224. package/dist/inspection/execution-traces.cjs.map +1 -1
  225. package/dist/inspection/execution-traces.d.cts +38 -0
  226. package/dist/inspection/execution-traces.d.mts +38 -0
  227. package/dist/inspection/execution-traces.d.ts +38 -0
  228. package/dist/inspection/facts.cjs +12 -0
  229. package/dist/inspection/facts.cjs.map +1 -1
  230. package/dist/inspection/limits.cjs +5 -1
  231. package/dist/inspection/limits.cjs.map +1 -1
  232. package/dist/inspection/limits.d.cts +4 -0
  233. package/dist/inspection/limits.d.mts +4 -0
  234. package/dist/inspection/limits.d.ts +4 -0
  235. package/dist/inspection/limits.js +6 -2
  236. package/dist/inspection/overview.cjs +74 -33
  237. package/dist/inspection/overview.cjs.map +1 -1
  238. package/dist/inspection/overview.d.cts +19 -1
  239. package/dist/inspection/overview.d.mts +19 -1
  240. package/dist/inspection/overview.d.ts +19 -1
  241. package/dist/inspection/overview.js +4 -2
  242. package/dist/inspection/project-input.cjs +9 -0
  243. package/dist/inspection/project-input.cjs.map +1 -0
  244. package/dist/inspection/project-input.d.cts +20 -0
  245. package/dist/inspection/project-input.d.mts +20 -0
  246. package/dist/inspection/project-input.d.ts +20 -0
  247. package/dist/inspection/project-input.js +8 -0
  248. package/dist/inspection/project-input.js.map +1 -0
  249. package/dist/inspection/project-result.cjs +60 -0
  250. package/dist/inspection/project-result.cjs.map +1 -0
  251. package/dist/inspection/project-result.d.cts +1264 -0
  252. package/dist/inspection/project-result.d.mts +1264 -0
  253. package/dist/inspection/project-result.d.ts +1264 -0
  254. package/dist/inspection/project-result.js +10 -0
  255. package/dist/inspection/project-result.js.map +1 -0
  256. package/dist/inspection/project-source.cjs +109 -0
  257. package/dist/inspection/project-source.cjs.map +1 -0
  258. package/dist/inspection/project-source.d.cts +10 -0
  259. package/dist/inspection/project-source.d.mts +10 -0
  260. package/dist/inspection/project-source.d.ts +10 -0
  261. package/dist/inspection/project-source.js +6 -0
  262. package/dist/inspection/project-source.js.map +1 -0
  263. package/dist/inspection/project.cjs +100 -0
  264. package/dist/inspection/project.cjs.map +1 -0
  265. package/dist/inspection/project.d.cts +3 -0
  266. package/dist/inspection/project.d.mts +3 -0
  267. package/dist/inspection/project.d.ts +3 -0
  268. package/dist/inspection/project.js +6 -0
  269. package/dist/inspection/project.js.map +1 -0
  270. package/dist/inspection/protocol.cjs +19 -9
  271. package/dist/inspection/protocol.cjs.map +1 -1
  272. package/dist/inspection/protocol.d.cts +5506 -38189
  273. package/dist/inspection/protocol.d.mts +5506 -38189
  274. package/dist/inspection/protocol.d.ts +5506 -38189
  275. package/dist/inspection/public.mjs +896 -84
  276. package/dist/inspection/query.cjs +2 -0
  277. package/dist/inspection/query.cjs.map +1 -1
  278. package/dist/inspection/results.cjs +234 -29
  279. package/dist/inspection/results.cjs.map +1 -1
  280. package/dist/inspection/results.d.cts +870 -13
  281. package/dist/inspection/results.d.mts +870 -13
  282. package/dist/inspection/results.d.ts +870 -13
  283. package/dist/inspection/results.js +36 -34
  284. package/dist/inspection/select.cjs +126 -14
  285. package/dist/inspection/select.cjs.map +1 -1
  286. package/dist/inspection/select.d.cts +1 -1
  287. package/dist/inspection/select.d.mts +1 -1
  288. package/dist/inspection/select.d.ts +1 -1
  289. package/dist/inspection/source.cjs +4 -0
  290. package/dist/inspection/source.cjs.map +1 -1
  291. package/dist/inspection/sources.cjs +5 -0
  292. package/dist/inspection/sources.cjs.map +1 -1
  293. package/dist/inspection/trace.cjs +82 -84
  294. package/dist/inspection/trace.cjs.map +1 -1
  295. package/dist/inspection/trace.d.cts +7 -2
  296. package/dist/inspection/trace.d.mts +7 -2
  297. package/dist/inspection/trace.d.ts +7 -2
  298. package/dist/model-slots.cjs +35 -0
  299. package/dist/model-slots.cjs.map +1 -0
  300. package/dist/model-slots.d.cts +19 -0
  301. package/dist/model-slots.d.mts +19 -0
  302. package/dist/model-slots.d.ts +19 -0
  303. package/dist/model-slots.js +8 -0
  304. package/dist/model-slots.js.map +1 -0
  305. package/dist/o11y/adapter-call-price.cjs +4 -0
  306. package/dist/o11y/adapter-call-price.cjs.map +1 -1
  307. package/dist/o11y/adapter-call-price.d.cts +24 -0
  308. package/dist/o11y/adapter-call-price.d.mts +24 -0
  309. package/dist/o11y/adapter-call-price.d.ts +24 -0
  310. package/dist/o11y/adapter-call-price.js +6 -2
  311. package/dist/o11y/adapter-usage-projection.cjs +158 -0
  312. package/dist/o11y/adapter-usage-projection.cjs.map +1 -0
  313. package/dist/o11y/adapter-usage-projection.d.cts +141 -0
  314. package/dist/o11y/adapter-usage-projection.d.mts +141 -0
  315. package/dist/o11y/adapter-usage-projection.d.ts +141 -0
  316. package/dist/o11y/adapter-usage-projection.js +20 -0
  317. package/dist/o11y/adapter-usage-projection.js.map +1 -0
  318. package/dist/o11y/eval-usage.cjs +149 -0
  319. package/dist/o11y/eval-usage.cjs.map +1 -0
  320. package/dist/o11y/eval-usage.d.cts +46 -0
  321. package/dist/o11y/eval-usage.d.mts +46 -0
  322. package/dist/o11y/eval-usage.d.ts +46 -0
  323. package/dist/o11y/eval-usage.js +8 -0
  324. package/dist/o11y/eval-usage.js.map +1 -0
  325. package/dist/o11y/judge-call-price.cjs +62 -0
  326. package/dist/o11y/judge-call-price.cjs.map +1 -0
  327. package/dist/o11y/judge-call-price.d.cts +3 -0
  328. package/dist/o11y/judge-call-price.d.mts +3 -0
  329. package/dist/o11y/judge-call-price.d.ts +3 -0
  330. package/dist/o11y/judge-call-price.js +6 -0
  331. package/dist/o11y/judge-call-price.js.map +1 -0
  332. package/dist/o11y/judge-usage-projection.cjs +134 -0
  333. package/dist/o11y/judge-usage-projection.cjs.map +1 -0
  334. package/dist/o11y/judge-usage-projection.d.cts +18 -0
  335. package/dist/o11y/judge-usage-projection.d.mts +18 -0
  336. package/dist/o11y/judge-usage-projection.d.ts +18 -0
  337. package/dist/o11y/judge-usage-projection.js +20 -0
  338. package/dist/o11y/judge-usage-projection.js.map +1 -0
  339. package/dist/o11y/judge-usage-receipt.cjs +135 -0
  340. package/dist/o11y/judge-usage-receipt.cjs.map +1 -0
  341. package/dist/o11y/judge-usage-receipt.d.cts +5 -0
  342. package/dist/o11y/judge-usage-receipt.d.mts +5 -0
  343. package/dist/o11y/judge-usage-receipt.d.ts +5 -0
  344. package/dist/o11y/judge-usage-receipt.js +6 -0
  345. package/dist/o11y/judge-usage-receipt.js.map +1 -0
  346. package/dist/o11y/judge-usage.cjs +171 -0
  347. package/dist/o11y/judge-usage.cjs.map +1 -0
  348. package/dist/o11y/judge-usage.d.cts +35 -0
  349. package/dist/o11y/judge-usage.d.mts +35 -0
  350. package/dist/o11y/judge-usage.d.ts +35 -0
  351. package/dist/o11y/judge-usage.js +6 -0
  352. package/dist/o11y/judge-usage.js.map +1 -0
  353. package/dist/plugin/contracts.cjs +2 -0
  354. package/dist/plugin/contracts.cjs.map +1 -1
  355. package/dist/plugin/link.cjs +7 -0
  356. package/dist/plugin/link.cjs.map +1 -1
  357. package/dist/record/attachment/protocol.cjs +8 -6
  358. package/dist/record/attachment/protocol.cjs.map +1 -1
  359. package/dist/record/attachment/protocol.d.cts +10 -0
  360. package/dist/record/attachment/protocol.d.mts +10 -0
  361. package/dist/record/attachment/protocol.d.ts +10 -0
  362. package/dist/record/attachment/protocol.js +38 -36
  363. package/dist/record/codec/seal-manifest.d.cts +3 -3
  364. package/dist/record/codec/seal-manifest.d.mts +3 -3
  365. package/dist/record/codec/seal-manifest.d.ts +3 -3
  366. package/dist/record/family/adapter-usage/definition.d.cts +1 -0
  367. package/dist/record/family/adapter-usage/definition.d.mts +1 -0
  368. package/dist/record/family/adapter-usage/definition.d.ts +1 -0
  369. package/dist/record/family/adapter-usage/persistence.cjs +1 -1
  370. package/dist/record/family/adapter-usage/persistence.cjs.map +1 -1
  371. package/dist/record/family/adapter-usage/persistence.d.cts +2 -1
  372. package/dist/record/family/adapter-usage/persistence.d.mts +2 -1
  373. package/dist/record/family/adapter-usage/persistence.d.ts +2 -1
  374. package/dist/record/family/adapter-usage/schema.cjs +21 -2
  375. package/dist/record/family/adapter-usage/schema.cjs.map +1 -1
  376. package/dist/record/family/adapter-usage/schema.d.cts +85 -0
  377. package/dist/record/family/adapter-usage/schema.d.mts +85 -0
  378. package/dist/record/family/adapter-usage/schema.d.ts +85 -0
  379. package/dist/record/family/adapter-usage/schema.js +18 -12
  380. package/dist/record/family/catalog.cjs +31 -27
  381. package/dist/record/family/catalog.cjs.map +1 -1
  382. package/dist/record/family/catalog.d.cts +94 -3
  383. package/dist/record/family/catalog.d.mts +94 -3
  384. package/dist/record/family/catalog.d.ts +94 -3
  385. package/dist/record/family/current.cjs +45 -42
  386. package/dist/record/family/current.cjs.map +1 -1
  387. package/dist/record/family/current.d.cts +240 -1
  388. package/dist/record/family/current.d.mts +240 -1
  389. package/dist/record/family/current.d.ts +240 -1
  390. package/dist/record/family/execution-traces/definition.d.cts +26 -0
  391. package/dist/record/family/execution-traces/definition.d.mts +26 -0
  392. package/dist/record/family/execution-traces/definition.d.ts +26 -0
  393. package/dist/record/family/execution-traces/definition.js +20 -14
  394. package/dist/record/family/execution-traces/schema.cjs +57 -1
  395. package/dist/record/family/execution-traces/schema.cjs.map +1 -1
  396. package/dist/record/family/execution-traces/schema.d.cts +114 -0
  397. package/dist/record/family/execution-traces/schema.d.mts +114 -0
  398. package/dist/record/family/execution-traces/schema.d.ts +114 -0
  399. package/dist/record/family/execution-traces/schema.js +18 -12
  400. package/dist/record/family/judge-usage/definition.cjs +12 -0
  401. package/dist/record/family/judge-usage/definition.cjs.map +1 -0
  402. package/dist/record/family/judge-usage/definition.d.cts +91 -0
  403. package/dist/record/family/judge-usage/definition.d.mts +91 -0
  404. package/dist/record/family/judge-usage/definition.d.ts +91 -0
  405. package/dist/record/family/judge-usage/definition.js +6 -0
  406. package/dist/record/family/judge-usage/definition.js.map +1 -0
  407. package/dist/record/family/judge-usage/persistence.cjs +10 -0
  408. package/dist/record/family/judge-usage/persistence.cjs.map +1 -0
  409. package/dist/record/family/judge-usage/persistence.d.cts +91 -0
  410. package/dist/record/family/judge-usage/persistence.d.mts +91 -0
  411. package/dist/record/family/judge-usage/persistence.d.ts +91 -0
  412. package/dist/record/family/judge-usage/persistence.js +6 -0
  413. package/dist/record/family/judge-usage/persistence.js.map +1 -0
  414. package/dist/record/family/judge-usage/schema.cjs +307 -0
  415. package/dist/record/family/judge-usage/schema.cjs.map +1 -0
  416. package/dist/record/family/judge-usage/schema.d.cts +351 -0
  417. package/dist/record/family/judge-usage/schema.d.mts +351 -0
  418. package/dist/record/family/judge-usage/schema.d.ts +351 -0
  419. package/dist/record/family/judge-usage/schema.js +18 -0
  420. package/dist/record/family/judge-usage/schema.js.map +1 -0
  421. package/dist/record/host/sqlite-host.cjs +55 -9
  422. package/dist/record/host/sqlite-host.cjs.map +1 -1
  423. package/dist/record/host/types.cjs.map +1 -1
  424. package/dist/record/host/types.d.cts +7 -0
  425. package/dist/record/host/types.d.mts +7 -0
  426. package/dist/record/host/types.d.ts +7 -0
  427. package/dist/record/model/run-context.cjs +7 -1
  428. package/dist/record/model/run-context.cjs.map +1 -1
  429. package/dist/record/model/run-context.d.cts +4 -0
  430. package/dist/record/model/run-context.d.mts +4 -0
  431. package/dist/record/model/run-context.d.ts +4 -0
  432. package/dist/record/model/seal-manifest.d.cts +1 -1
  433. package/dist/record/model/seal-manifest.d.mts +1 -1
  434. package/dist/record/model/seal-manifest.d.ts +1 -1
  435. package/dist/record/sqlite/client.cjs +18 -5
  436. package/dist/record/sqlite/client.cjs.map +1 -1
  437. package/dist/record/sqlite/client.d.cts +1 -1
  438. package/dist/record/sqlite/client.d.mts +1 -1
  439. package/dist/record/sqlite/client.d.ts +1 -1
  440. package/dist/record/sqlite/project-state-database.cjs +29 -8
  441. package/dist/record/sqlite/project-state-database.cjs.map +1 -1
  442. package/dist/run/host/runtime.cjs +4 -0
  443. package/dist/run/host/runtime.cjs.map +1 -1
  444. package/dist/run/storage/sqlite.cjs +20 -0
  445. package/dist/run/storage/sqlite.cjs.map +1 -1
  446. package/dist/runner/adapter-execution-trace.cjs +125 -2
  447. package/dist/runner/adapter-execution-trace.cjs.map +1 -1
  448. package/dist/runner/adapter-execution-trace.d.cts +1 -1
  449. package/dist/runner/adapter-execution-trace.d.mts +1 -1
  450. package/dist/runner/adapter-execution-trace.d.ts +1 -1
  451. package/dist/runner/adapter-usage.cjs +55 -7
  452. package/dist/runner/adapter-usage.cjs.map +1 -1
  453. package/dist/runner/adapter-usage.d.cts +9 -2
  454. package/dist/runner/adapter-usage.d.mts +9 -2
  455. package/dist/runner/adapter-usage.d.ts +9 -2
  456. package/dist/runner/adoption.cjs +9 -0
  457. package/dist/runner/adoption.cjs.map +1 -1
  458. package/dist/runner/attempt-cancellation.cjs +12 -0
  459. package/dist/runner/attempt-cancellation.cjs.map +1 -0
  460. package/dist/runner/attempt-cancellation.d.cts +6 -0
  461. package/dist/runner/attempt-cancellation.d.mts +6 -0
  462. package/dist/runner/attempt-cancellation.d.ts +6 -0
  463. package/dist/runner/attempt-cancellation.js +6 -0
  464. package/dist/runner/attempt-cancellation.js.map +1 -0
  465. package/dist/runner/attempt-resources.cjs +10 -4
  466. package/dist/runner/attempt-resources.cjs.map +1 -1
  467. package/dist/runner/attempt-resources.d.cts +2 -1
  468. package/dist/runner/attempt-resources.d.mts +2 -1
  469. package/dist/runner/attempt-resources.d.ts +2 -1
  470. package/dist/runner/attempt.cjs +1177 -1139
  471. package/dist/runner/attempt.cjs.map +1 -1
  472. package/dist/runner/config-identity.cjs +20 -1
  473. package/dist/runner/config-identity.cjs.map +1 -1
  474. package/dist/runner/config-identity.d.cts +5 -0
  475. package/dist/runner/config-identity.d.mts +5 -0
  476. package/dist/runner/config-identity.d.ts +5 -0
  477. package/dist/runner/discover.cjs +14 -0
  478. package/dist/runner/discover.cjs.map +1 -1
  479. package/dist/runner/discover.d.cts +3 -0
  480. package/dist/runner/discover.d.mts +3 -0
  481. package/dist/runner/discover.d.ts +3 -0
  482. package/dist/runner/feedback/human.cjs +9 -4
  483. package/dist/runner/feedback/human.cjs.map +1 -1
  484. package/dist/runner/fingerprint.cjs +1 -0
  485. package/dist/runner/fingerprint.cjs.map +1 -1
  486. package/dist/runner/judge-usage.cjs +18 -0
  487. package/dist/runner/judge-usage.cjs.map +1 -0
  488. package/dist/runner/judge-usage.d.cts +5 -0
  489. package/dist/runner/judge-usage.d.mts +5 -0
  490. package/dist/runner/judge-usage.d.ts +5 -0
  491. package/dist/runner/judge-usage.js +8 -0
  492. package/dist/runner/judge-usage.js.map +1 -0
  493. package/dist/runner/project-target.cjs.map +1 -1
  494. package/dist/runner/project-target.d.cts +2 -0
  495. package/dist/runner/project-target.d.mts +2 -0
  496. package/dist/runner/project-target.d.ts +2 -0
  497. package/dist/runner/record/planning.cjs +1 -0
  498. package/dist/runner/record/planning.cjs.map +1 -1
  499. package/dist/runner/record.cjs +4 -0
  500. package/dist/runner/record.cjs.map +1 -1
  501. package/dist/runner/reporters/braintrust.cjs +2 -0
  502. package/dist/runner/reporters/braintrust.cjs.map +1 -1
  503. package/dist/runner/reuse-diagnostics.cjs +9 -10
  504. package/dist/runner/reuse-diagnostics.cjs.map +1 -1
  505. package/dist/runner/reuse-diagnostics.d.cts +5 -6
  506. package/dist/runner/reuse-diagnostics.d.mts +5 -6
  507. package/dist/runner/reuse-diagnostics.d.ts +5 -6
  508. package/dist/runner/reuse-diagnostics.js +4 -4
  509. package/dist/runner/reuse-plan.cjs +100 -48
  510. package/dist/runner/reuse-plan.cjs.map +1 -1
  511. package/dist/runner/reuse-plan.d.cts +60 -3
  512. package/dist/runner/reuse-plan.d.mts +60 -3
  513. package/dist/runner/reuse-plan.d.ts +60 -3
  514. package/dist/runner/reuse-plan.js +14 -10
  515. package/dist/runner/run.cjs +8 -6
  516. package/dist/runner/run.cjs.map +1 -1
  517. package/dist/runner/session.cjs +1 -1
  518. package/dist/runner/session.cjs.map +1 -1
  519. package/dist/runner/session.d.cts +1 -1
  520. package/dist/runner/session.d.mts +1 -1
  521. package/dist/runner/session.d.ts +1 -1
  522. package/dist/runner/source-producer.cjs +3 -1
  523. package/dist/runner/source-producer.cjs.map +1 -1
  524. package/dist/runner/types.cjs.map +1 -1
  525. package/dist/runner/types.d.cts +26 -5
  526. package/dist/runner/types.d.mts +26 -5
  527. package/dist/runner/types.d.ts +26 -5
  528. package/dist/sandbox/action.cjs +3 -0
  529. package/dist/sandbox/action.cjs.map +1 -1
  530. package/dist/sandbox/commands.cjs +3 -0
  531. package/dist/sandbox/commands.cjs.map +1 -1
  532. package/dist/sandbox/compose.cjs +6 -0
  533. package/dist/sandbox/compose.cjs.map +1 -1
  534. package/dist/sandbox/docker-profile/registry.cjs +7 -0
  535. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  536. package/dist/sandbox/docker-profile/runtime.cjs +3 -0
  537. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  538. package/dist/sandbox/docker-profile/schema.cjs +7 -0
  539. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  540. package/dist/sandbox/incus.cjs +7 -0
  541. package/dist/sandbox/incus.cjs.map +1 -1
  542. package/dist/sandbox/layer.cjs +12 -0
  543. package/dist/sandbox/layer.cjs.map +1 -1
  544. package/dist/shared/adapter-cleanup.cjs +18 -0
  545. package/dist/shared/adapter-cleanup.cjs.map +1 -0
  546. package/dist/shared/adapter-cleanup.d.cts +4 -0
  547. package/dist/shared/adapter-cleanup.d.mts +4 -0
  548. package/dist/shared/adapter-cleanup.d.ts +4 -0
  549. package/dist/shared/adapter-cleanup.js +10 -0
  550. package/dist/shared/adapter-cleanup.js.map +1 -0
  551. package/dist/shared/attempt-lifecycle.cjs +3 -0
  552. package/dist/shared/attempt-lifecycle.cjs.map +1 -0
  553. package/dist/shared/attempt-lifecycle.d.cts +13 -0
  554. package/dist/shared/attempt-lifecycle.d.mts +13 -0
  555. package/dist/shared/attempt-lifecycle.d.ts +13 -0
  556. package/dist/shared/attempt-lifecycle.js +4 -0
  557. package/dist/shared/attempt-lifecycle.js.map +1 -0
  558. package/dist/show/contribution.cjs +52 -14
  559. package/dist/show/contribution.cjs.map +1 -1
  560. package/dist/show/contribution.d.cts +23 -1
  561. package/dist/show/contribution.d.mts +23 -1
  562. package/dist/show/contribution.d.ts +23 -1
  563. package/dist/show/model.cjs +8 -1
  564. package/dist/show/model.cjs.map +1 -1
  565. package/dist/show/model.d.cts +10 -1
  566. package/dist/show/model.d.mts +10 -1
  567. package/dist/show/model.d.ts +10 -1
  568. package/dist/show/render.cjs +287 -49
  569. package/dist/show/render.cjs.map +1 -1
  570. package/dist/show/render.d.cts +3 -0
  571. package/dist/show/render.d.mts +3 -0
  572. package/dist/show/render.d.ts +3 -0
  573. package/dist/sources/projector.cjs +3 -0
  574. package/dist/sources/projector.cjs.map +1 -1
  575. package/dist/types.cjs.map +1 -1
  576. package/dist/types.d.cts +1 -1
  577. package/dist/types.d.mts +1 -1
  578. package/dist/types.d.ts +1 -1
  579. package/dist/view/app-dist/.vite/manifest.json +2 -2
  580. package/dist/view/app-dist/assets/index-CmVoXbwG.js +63 -0
  581. package/dist/view/app-dist/assets/{quality-cost-scatter-CFB3wnkN.js → quality-cost-scatter-BuLISaH4.js} +1 -1
  582. package/dist/view/app-dist/index.html +1 -1
  583. package/dist/view/cli/contribution.cjs +54 -21
  584. package/dist/view/cli/contribution.cjs.map +1 -1
  585. package/dist/view/cli/contribution.d.cts +2 -1
  586. package/dist/view/cli/contribution.d.mts +2 -1
  587. package/dist/view/cli/contribution.d.ts +2 -1
  588. package/dist/view/function-runtime.mjs +13231 -11647
  589. package/dist/view/http-protocol.cjs +3 -0
  590. package/dist/view/http-protocol.cjs.map +1 -1
  591. package/dist/view/http-protocol.d.cts +8 -0
  592. package/dist/view/http-protocol.d.mts +8 -0
  593. package/dist/view/http-protocol.d.ts +8 -0
  594. package/dist/view/inspection-host.cjs +17 -1
  595. package/dist/view/inspection-host.cjs.map +1 -1
  596. package/dist/view/render.cjs +1 -0
  597. package/dist/view/render.cjs.map +1 -1
  598. package/dist/view/render.d.cts +2 -1
  599. package/dist/view/render.d.mts +2 -1
  600. package/dist/view/render.d.ts +2 -1
  601. package/dist/view/revision.cjs.map +1 -1
  602. package/dist/view/revision.d.cts +12 -0
  603. package/dist/view/revision.d.mts +12 -0
  604. package/dist/view/revision.d.ts +12 -0
  605. package/dist/view/server.cjs +10 -9
  606. package/dist/view/server.cjs.map +1 -1
  607. package/docs-site/zh/examples/ai-agent-application.mdx +1 -1
  608. package/docs-site/zh/explanation/adapter.mdx +2 -2
  609. package/docs-site/zh/explanation/assert.mdx +60 -24
  610. package/docs-site/zh/explanation/drive.mdx +1 -1
  611. package/docs-site/zh/explanation/evals.mdx +31 -29
  612. package/docs-site/zh/explanation/experiment.mdx +15 -15
  613. package/docs-site/zh/explanation/judge.mdx +23 -15
  614. package/docs-site/zh/explanation/overview.mdx +44 -21
  615. package/docs-site/zh/explanation/record.mdx +28 -13
  616. package/docs-site/zh/explanation/results-flow.mdx +37 -0
  617. package/docs-site/zh/explanation/runner.mdx +27 -6
  618. package/docs-site/zh/index.mdx +22 -115
  619. package/docs-site/zh/introduction.mdx +89 -61
  620. package/docs-site/zh/reference/cli.mdx +50 -26
  621. package/docs-site/zh/reference/define-agent.mdx +37 -5
  622. package/docs-site/zh/reference/define-eval.mdx +130 -29
  623. package/docs-site/zh/reference/define-experiment.mdx +251 -0
  624. package/docs-site/zh/reference/events.mdx +34 -30
  625. package/docs-site/zh/reference/expect.mdx +77 -2
  626. package/docs-site/zh/reference/official-adapters.mdx +2 -2
  627. package/docs-site/zh/troubleshooting/debug-sandbox.mdx +43 -24
  628. package/docs-site/zh/troubleshooting/debugging.mdx +65 -42
  629. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +35 -28
  630. package/docs-site/zh/tutorials/accept-results.mdx +34 -24
  631. package/docs-site/zh/tutorials/agent-feedback-loop.mdx +74 -43
  632. package/docs-site/zh/tutorials/agent-onboarding.mdx +27 -20
  633. package/docs-site/zh/tutorials/authoring.mdx +138 -121
  634. package/docs-site/zh/tutorials/ci-integration.mdx +46 -22
  635. package/docs-site/zh/tutorials/compare-runs.mdx +40 -13
  636. package/docs-site/zh/tutorials/concurrency.mdx +66 -62
  637. package/docs-site/zh/tutorials/configuration.mdx +17 -17
  638. package/docs-site/zh/tutorials/connect-otel.mdx +48 -37
  639. package/docs-site/zh/tutorials/connect-your-agent.mdx +80 -173
  640. package/docs-site/zh/tutorials/control-run-cost.mdx +63 -12
  641. package/docs-site/zh/tutorials/criteria-files.mdx +28 -21
  642. package/docs-site/zh/tutorials/custom-application.mdx +75 -55
  643. package/docs-site/zh/tutorials/dataset-fanout.mdx +32 -22
  644. package/docs-site/zh/tutorials/debug-lifecycle-plan.mdx +38 -31
  645. package/docs-site/zh/tutorials/docker-in-docker.mdx +83 -89
  646. package/docs-site/zh/tutorials/eval-groups.mdx +70 -89
  647. package/docs-site/zh/tutorials/evaluation-kinds.mdx +12 -5
  648. package/docs-site/zh/tutorials/experiment-services.mdx +243 -0
  649. package/docs-site/zh/tutorials/fixtures.mdx +42 -26
  650. package/docs-site/zh/tutorials/handle-execution-failures.mdx +41 -19
  651. package/docs-site/zh/tutorials/install-custom-sandbox-agent.mdx +21 -16
  652. package/docs-site/zh/tutorials/niceeval-taste-application.mdx +394 -0
  653. package/docs-site/zh/tutorials/niceeval-taste.mdx +190 -0
  654. package/docs-site/zh/tutorials/nixos-managed-dind.mdx +51 -39
  655. package/docs-site/zh/tutorials/plugins.mdx +55 -31
  656. package/docs-site/zh/tutorials/prebuilt-sandbox.mdx +204 -0
  657. package/docs-site/zh/tutorials/quickstart.mdx +91 -47
  658. package/docs-site/zh/tutorials/reporters.mdx +45 -30
  659. package/docs-site/zh/tutorials/rerun-and-cache.mdx +39 -40
  660. package/docs-site/zh/tutorials/sandbox-agent.mdx +65 -40
  661. package/docs-site/zh/tutorials/sandbox-providers.mdx +104 -282
  662. package/docs-site/zh/tutorials/sandbox-reuse.mdx +65 -97
  663. package/docs-site/zh/tutorials/select-and-preview.mdx +25 -20
  664. package/docs-site/zh/tutorials/verify-judge.mdx +49 -26
  665. package/docs-site/zh/tutorials/viewing-results.mdx +130 -80
  666. package/docs-site/zh/tutorials/write-experiment.mdx +116 -298
  667. package/docs-site/zh/tutorials/write-send.mdx +53 -52
  668. package/node_modules/undici/docs/docs/api/Agent.md +8 -8
  669. package/node_modules/undici/docs/docs/api/DiagnosticsChannel.md +9 -6
  670. package/node_modules/undici/docs/docs/api/Errors.md +25 -0
  671. package/node_modules/undici/docs/docs/api/Interceptors.md +4 -3
  672. package/node_modules/undici/docs/docs/api/Pool.md +5 -6
  673. package/node_modules/undici/lib/api/readable.js +1 -2
  674. package/node_modules/undici/lib/core/request.js +23 -2
  675. package/node_modules/undici/lib/core/util.js +0 -39
  676. package/node_modules/undici/lib/dispatcher/client-h1.js +11 -4
  677. package/node_modules/undici/lib/dispatcher/client-h2.js +52 -8
  678. package/node_modules/undici/lib/dispatcher/client.js +1 -1
  679. package/node_modules/undici/lib/dispatcher/dispatcher1-wrapper.js +3 -2
  680. package/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +21 -6
  681. package/node_modules/undici/lib/dispatcher/pool-base.js +63 -2
  682. package/node_modules/undici/lib/dispatcher/pool.js +90 -7
  683. package/node_modules/undici/lib/dispatcher/proxy-agent.js +16 -3
  684. package/node_modules/undici/lib/handler/deduplication-handler.js +24 -11
  685. package/node_modules/undici/lib/handler/redirect-handler.js +5 -0
  686. package/node_modules/undici/lib/handler/retry-handler.js +72 -13
  687. package/node_modules/undici/lib/interceptor/cache.js +4 -1
  688. package/node_modules/undici/lib/interceptor/decompress.js +236 -69
  689. package/node_modules/undici/lib/web/cache/cache.js +17 -8
  690. package/node_modules/undici/lib/web/cache/cachestorage.js +11 -5
  691. package/node_modules/undici/lib/web/cookies/index.js +19 -7
  692. package/node_modules/undici/lib/web/cookies/util.js +3 -1
  693. package/node_modules/undici/lib/web/eventsource/eventsource.js +25 -1
  694. package/node_modules/undici/lib/web/fetch/body.js +22 -15
  695. package/node_modules/undici/lib/web/fetch/data-url.js +6 -6
  696. package/node_modules/undici/lib/web/fetch/formdata.js +30 -36
  697. package/node_modules/undici/lib/web/fetch/headers.js +34 -31
  698. package/node_modules/undici/lib/web/fetch/index.js +38 -14
  699. package/node_modules/undici/lib/web/fetch/request.js +74 -79
  700. package/node_modules/undici/lib/web/fetch/response.js +43 -44
  701. package/node_modules/undici/lib/web/fetch/util.js +7 -7
  702. package/node_modules/undici/lib/web/infra/index.js +16 -1
  703. package/node_modules/undici/lib/web/webidl/index.js +2 -14
  704. package/node_modules/undici/lib/web/websocket/events.js +43 -26
  705. package/node_modules/undici/lib/web/websocket/receiver.js +5 -0
  706. package/node_modules/undici/lib/web/websocket/stream/websocketerror.js +13 -10
  707. package/node_modules/undici/lib/web/websocket/websocket.js +44 -41
  708. package/node_modules/undici/package.json +1 -1
  709. package/node_modules/undici/types/diagnostics-channel.d.ts +2 -1
  710. package/node_modules/undici/types/interceptors.d.ts +1 -1
  711. package/node_modules/undici/types/webidl.d.ts +13 -7
  712. package/package.json +4 -4
  713. package/dist/view/app-dist/assets/index-DFzw1L97.js +0 -63
  714. package/docs-site/zh/tutorials/experiments.mdx +0 -101
@@ -348,6 +348,7 @@ function planPreparedProjectTarget(preparedPairs, options) {
348
348
  runConfigHash,
349
349
  attempts: run.attempts,
350
350
  adapter: (0, adapter_ts_1.adapterIdentity)(run.adapter),
351
+ ...(run.models !== undefined ? { models: run.models } : {}),
351
352
  ...(run.model !== undefined ? { model: run.model } : {}),
352
353
  ...(run.reasoningEffort !== undefined ? { reasoningEffort: run.reasoningEffort } : {}),
353
354
  flags: Object.freeze({ ...run.flags }),
@@ -1 +1 @@
1
- {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["fingerprint.ts"],"names":[],"mappings":";;;AAiCA,oEAEC;AAaD,4BAKC;AAED,8CAEC;AAED,gDAEC;AAED,gDAEC;AAeD,0DAMC;AAiOD,8CAQC;AAMD,8DAkGC;AAvaD,+EAA+E;AAC/E,+EAA+E;AAC/E,6CAAyC;AACzC,qCAA2C;AAC3C,+CAAkD;AAClD,yCAAgE;AAChE,mCAAsC;AACtC,gDAA6G;AAG7G,yCAAiE;AACjE,uDAAiD;AACjD,qEAAoG;AACpG,iEAAwK;AAExK,uDAAqG;AACrG,6DAAuG;AACvG,8CAAgD;AAChD,iFAAiF;AACjF,MAAa,oBAAqB,SAAQ,aAAI,CAAC,WAAW,CAAC,sBAAsB,CAI/E;CACD;AALD,oDAKC;AACD,sFAAsF;AACtF,MAAa,wBAAyB,SAAQ,aAAI,CAAC,WAAW,CAAC,0BAA0B,CAGvF;CACD;AAJD,4DAIC;AAGD,SAAgB,4BAA4B;IACxC,OAAO,IAAI,GAAG,EAAE,CAAC;AACrB,CAAC;AACD,SAAS,SAAS,CAAC,KAAc;IAC7B,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,oBAAoB,CAAC,SAA4C,EAAE,IAAY,EAAE,KAAc;IACpG,OAAO,IAAI,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpF,CAAC;AACD,SAAS,wBAAwB,CAAC,KAAwC,EAAE,KAAc;IACtF,OAAO,IAAI,wBAAwB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AACD,SAAS,SAAS,CAAC,OAAe;IAC9B,OAAO,IAAI,wBAAwB,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;AACzE,CAAC;AACD,SAAgB,QAAQ,CAAC,GAAa,EAAE,MAAc;IAClD,IAAI,GAAG,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,IAAA,iCAAU,EAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAChD,CAAC;AACD,iEAAiE;AACjE,SAAgB,iBAAiB,CAAC,IAAqB;IACnD,OAAO,kBAAkB,CAAC,IAAA,yCAAoB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACzE,CAAC;AACD,qBAAqB;AACrB,SAAgB,kBAAkB,CAAC,QAAwB;IACvD,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1B,CAAC;AACD,qFAAqF;AACrF,SAAgB,kBAAkB,CAAC,IAAqB,EAAE,WAAoC,EAAE,aAAoC,4BAA4B,CAAC,IAAI,CAAC;IAClK,OAAO,eAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC;AAChH,CAAC;AAKD,SAAS,4BAA4B,CAAC,IAAqB,EAAE,WAA2B,IAAA,yCAAoB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;IAC7H,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAC;AACxD,CAAC;AACD;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,IAAqB,EAAE,WAAoC,EAAE,aAAoC,4BAA4B,CAAC,IAAI,CAAC;IAKvK,OAAO,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,uBAAuB,CAAC,IAAqB,EAAE,WAAoC,EAAE,aAAoC,4BAA4B,CAAC,IAAI,CAAC;IAKhK,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QACzB,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;YACjC,GAAG,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC;YACvC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;SACrE,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAGlE,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,CAAU,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACrK,sDAAsD;QACtD,qDAAqD;QACrD,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAG9D,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAU,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1K,2DAA2D;QAC3D,6DAA6D;QAC7D,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAGjE,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAA,oBAAQ,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAU,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1K,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACpE,MAAM,OAAO,GAAG;YACZ,mBAAmB,EAAE,+BAAoB;YACzC,cAAc,EAAE;gBACZ,QAAQ,EAAE,2CAAwB;gBAClC,QAAQ,EAAE,2CAAwB;aACrC;YACD,OAAO;YACP,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM;YACN,IAAI,EAAE;gBACF,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,EAAE;gBAChC,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE;wBAC5C,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE;wBACxB,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC;wBACvC,cAAc,EAAE,OAAO,CAAC,SAAS,CAAC,cAAc;wBAChD,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,aAAa;qBACjD,EAAE,CAAC;aACX;YACD,UAAU;YACV,mDAAmD;YACnD,wBAAwB;YACxB,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,CAAC;QACF,yDAAyD;QACzD,sCAAsC;QACtC,qEAAqE;QACrE,EAAE;QACF,6CAA6C;QAC7C,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;YAC/B,GAAG,EAAE,GAAiB,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnC,gBAAgB,EAAE,2CAA6B;gBAC/C,eAAe,EAAE,0CAA4B;gBAC7C,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAA,wCAAmB,EAAC,QAAQ,CAAC,CAAC,CAAC;gBACxE,IAAI,EAAE,IAAI,CAAC,QAAQ;gBACnB,OAAO;gBACP,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrG,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC;oBACnC,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBACjE,GAAG,QAAQ;oBACX,GAAG,YAAY;iBAClB,CAAC,CAAC;aACN,CAAC;YACF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;SACrE,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;YACrB,GAAG,EAAE,GAAG,EAAE;gBACN,MAAM,aAAa,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACxC,MAAM,qBAAqB,GAAG,IAAA,mDAAyC,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnF,MAAM,oBAAoB,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;gBACnD,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC,CAAC;gBACrE,MAAM,+BAA+B,GAAG,gBAAgB,KAAK,SAAS;oBAClE,UAAU,CAAC,gBAAgB,CAAC,KAAK,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;gBACxE,MAAM,2BAA2B,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS;oBAC5D,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,SAAS;oBAC/B,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;yBAC1D,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC;gBAChG,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,YAAoB,EAAsB,EAAE;oBACjF,IAAI,YAAY,KAAK,oBAAoB;wBACrC,OAAO,WAAW,CAAC;oBACvB,IAAI,CAAC,+BAA+B,IAAI,2BAA2B;wBAC/D,OAAO,SAAS,CAAC;oBACrB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;oBACrD,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrF,CAAC,CAAC,CAAC;gBACH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC;YACxD,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;SACrE,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,UAAU,CAAC,IAAY,EAAE,KAA8B;IAC5D,OAAO,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,eAAM,CAAC,UAAU,CAAC;QACzD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,mBAAQ,EAAC,IAAI,EAAE,MAAM,CAAC;QACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;KAC9D,CAAC,CAAC,CAAC;AACR,CAAC;AACD;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAA8B;IACnE,MAAM,GAAG,GAAG,YAAY,IAAI,EAAE,CAAC;IAC/B,OAAO,gBAAgB,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;AACtE,CAAC;AACD,SAAS,gBAAgB,CAAC,GAAW,EAAE,KAAyC,EAAE,MAAyD;IACvI,OAAO,eAAM,CAAC,OAAO,CAAC,GAAG,EAAE;QACvB,MAAM,QAAQ,GAAG,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,QAAQ,KAAK,SAAS;YACtB,OAAO,QAAQ,CAAC;QACpB,IAAI,KAAK,KAAK,SAAS;YACnB,OAAO,MAAM,EAAE,CAAC;QACpB,OAAO,eAAM,CAAC,OAAO,CAAC,eAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,eAAM,CAAC,OAAO,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YACzF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,gBAAgB,CAAC,IAAY;IAClC,OAAO,eAAM,CAAC,MAAM,CAAC,eAAM,CAAC,cAAc,CAAC,eAAM,CAAC,GAAG,CAAC;QAClD,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,0BAAgB,EAAC,IAAI,CAAC;QACjC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;KAC9D,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QAC7B,IAAI,CAAC,MAAM,CAAC,SAAS;YACjB,MAAM,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAM,CAAC,UAAU,CAAC;QAClD,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClB,MAAM,KAAK,GAAG,GAAS,EAAE;gBACrB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBACpB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC/E,CAAC;YACL,CAAC,CAAC;YACF,IAAI,MAAM,CAAC,OAAO;gBACd,KAAK,EAAE,CAAC;YACZ,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC;gBACD,MAAM,MAAM,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC;gBACpC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM;oBAC5B,MAAM,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;gBACnC,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,CAAC;oBACO,CAAC;gBACL,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/C,CAAC;QACL,CAAC;QACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;KAC9D,CAAC,CAAC,CAAC,CAAC,CAAC;AACV,CAAC;AACD,4CAA4C;AAC5C,SAAS,aAAa,CAAC,OAAuB,EAAE,KAA8B;IAI1E,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAGN,EAAE,CAAC;IACR,MAAM,KAAK,GAAG,CAAC,IAAY,EAA6C,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC3F,MAAM,QAAQ,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,QAAQ,KAAK,IAAI,CAAC;YAChF,OAAO;QACX,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CAAC,CAAC,IAAA,oBAAQ,EAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,iEAAiE,CAAC,CAAC;aACjG,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAC9C,SAAS;YACb,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,IAAA,mBAAO,EAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;YAC/D,IAAI,QAAQ;gBACR,KAAK,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC,CAAC,CAAC;IACH,OAAO,eAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,eAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtH,CAAC;AACD,SAAS,aAAa,CAAC,IAAY,EAAE,SAAiB;IAClD,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,IAAA,mBAAO,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAA,mBAAO,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5M,MAAM,MAAM,GAAG,CAAC,KAAa,EAAqC,EAAE;QAChE,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,SAAS;YACvB,OAAO,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACrC,OAAO,eAAM,CAAC,UAAU,CAAC;YACrB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,eAAI,EAAC,SAAS,CAAC;YAC1B,mFAAmF;YACnF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC;SACnE,CAAC,CAAC,IAAI,CAAC,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,eAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7I,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAaD;;;GAGG;AACH,SAAgB,iBAAiB,CAAC,KAAgC,EAAE,SAA8B,EAAE,eAAwB,EAAE,UAG1H,EAAE;IACF,OAAO,eAAM,CAAC,OAAO,CAAC,IAAA,0CAAmB,EAAC,KAAK,EAAE,SAAS,EAAE,IAAA,qCAA2B,GAAE,EAAE;QACvF,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;QAClF,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;KAChE,CAAC,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,yBAAyB,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AACD;;;;GAIG;AACH,SAAgB,yBAAyB,CAAC,aAAyC,EAAE,OAGpF;IACG,OAAO,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvB,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;YACzC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,yCAAkB,EAAC,aAAa,CAAC;YAC5C,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC;SACjE,CAAC,CAAC;QACH,MAAM,WAAW,GAAG,4BAA4B,EAAE,CAAC;QACnD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtD,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAwD,CAAC;QAChG,MAAM,cAAc,GAAG,IAAI,GAAG,EAAwB,CAAC;QACvD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtD,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAA2C,CAAC;QAC/E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAA6D,CAAC;QACzF,KAAK,CAAC,CAAC,eAAM,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;YAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;gBACpC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,8BAAY,EAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC;gBACvF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;aACrE,CAAC,CAAC;YACH,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;gBAC/B,GAAG,EAAE,GAAG,EAAE,CAAC,IAAA,yCAAoB,EAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC;gBACnE,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;aACrE,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;gBACvC,GAAG,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,QAAQ,CAAC;gBACvC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;aACrE,CAAC,CAAC;YACH,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,eAAM,CAAC,GAAG,CAAC;gBACpC,GAAG,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAClC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC;aACrE,CAAC,CAAC;YACH,MAAM,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACnE,IAAI,eAAe,KAAK,SAAS,IAAI,eAAe,KAAK,aAAa,EAAE,CAAC;gBACrE,OAAO,KAAK,CAAC,CAAC,eAAM,CAAC,IAAI,CAAC,SAAS,CAAC,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/H,CAAC;YACD,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;YAC1D,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,4BAA4B,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YACrJ,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;YACpD,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC/C,uBAAuB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;YACzD,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACvC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YAC5D,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtB,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACnB,gBAAgB;gBAChB,WAAW;gBACX,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,MAAM;aACxD,CAAC,CAAC,CAAC;YACJ,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAY,CAAC;QACrC,MAAM,WAAW,GAAqC,EAAE,CAAC;QACzD,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;gBACjB,SAAS;YACb,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClB,MAAM,aAAa,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC5D,IAAI,aAAa,KAAK,SAAS;gBAC3B,SAAS;YACb,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3B,EAAE,EAAE,GAAG,CAAC,YAAY;gBACpB,aAAa;gBACb,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,OAAO,EAAE,IAAA,4BAAe,EAAC,GAAG,CAAC,OAAO,CAAC;gBACrC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACxD,GAAG,CAAC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC;gBACtC,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,GAAG,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aAChH,CAAC,CAAC,CAAC;QACR,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YAC/B,WAAW,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC;YACxD,WAAW,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClF,WAAW,CAAC,GAAG,CAAC,IAAA,mBAAO,EAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YACvG,kBAAkB,EAAE,mBAAmB,CAAC,kBAAkB,CAAC;YAC3D,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC;YAC7D,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC;YAC7D,mBAAmB,EAAE,mBAAmB,CAAC,mBAAmB,CAAC;YAC7D,uBAAuB,EAAE,mBAAmB,CAAC,uBAAuB,CAAC;YACrE,cAAc,EAAE,mBAAmB,CAAC,cAAc,CAAC;YACnD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;SACtD,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC;AACD,SAAS,mBAAmB,CAAa,OAGvC;IACE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAA6B,CAAC;IAClC,IAAI,GAAG;QACH,IAAI,IAAI,KAAK,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/B,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;QAC/B,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QAC1G,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE;QACjC,IAAI,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;QAC/B,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;KACvD,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AACD,SAAS,sBAAsB,CAAQ,KAAY;IAC/C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3C,OAAO,KAAK,CAAC;IACjB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAU,CAAC;IACvF,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAU,CAAC;AACzI,CAAC;AACD,SAAS,IAAI,CAAC,KAAc;IACxB,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxE,CAAC;AACD,iDAAiD;AACjD,oDAAoD;AACpD,SAAS,QAAQ,CAAC,OAAe;IAC7B,OAAO,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AACD,iDAAiD;AACjD,SAAS,UAAU,CAAC,KAAc;IAC9B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3C,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;IAChD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACpB,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAClD,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;SAC3B,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;SACpE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACtB,CAAC","sourcesContent":["// ProjectTarget planning: current eval sources + resolved configuration become\n// immutable input identities. Reuse is decided only by Frozen Record planning.\nimport { createHash } from \"node:crypto\";\nimport { createReadStream } from \"node:fs\";\nimport { readFile, stat } from \"node:fs/promises\";\nimport { dirname, extname, relative, resolve } from \"node:path\";\nimport { Data, Effect } from \"effect\";\nimport { captureLinkedRunRenameFingerprintIdentity, liveSandboxPlanningServices, } from \"../sandbox/plan.ts\";\nimport type { DiscoveredEval, ResolvedJudgeConfig } from \"../types.ts\";\nimport type { ProjectCurrentExperimentTarget, ProjectCurrentTarget, } from \"./project-target.ts\";\nimport { EVALUATION_ALGORITHM, type AgentRun } from \"./types.ts\";\nimport { resolveJudge } from \"./judge-config.ts\";\nimport { JUDGE_AUTHORING_PROTOCOL, JUDGE_AUTHORING_REVISION } from \"../assertions/judge-presets.ts\";\nimport { prepareRunSandboxes, preparedPairsByKey as indexPreparedPairs, runPairKey, type PreparedRunPair, type SandboxRunPlanningError, } from \"./sandbox-selection.ts\";\nimport type { EvalManifest } from \"./manifest.ts\";\nimport { FINGERPRINT_ALGORITHM_VERSION, FINGERPRINT_COVERAGE_VERSION, } from \"../record/manifest.ts\";\nimport { configIdentityPaths, configIdentityForRun, type ConfigIdentity, } from \"./config-identity.ts\";\nimport { adapterIdentity } from \"../adapter.ts\";\n/** Files that participate in a fingerprint are an explicit planning boundary. */\nexport class FingerprintFileError extends Data.TaggedError(\"FingerprintFileError\")<{\n readonly operation: \"read\" | \"hash\";\n readonly path: string;\n readonly message: string;\n}> {\n}\n/** A malformed or internally inconsistent planning input must not become a defect. */\nexport class FingerprintPlanningError extends Data.TaggedError(\"FingerprintPlanningError\")<{\n readonly stage: \"configuration\" | \"invariant\";\n readonly message: string;\n}> {\n}\nexport type FingerprintPlanningFailure = FingerprintFileError | FingerprintPlanningError;\nexport type FingerprintSourceCache = Map<string, Effect.Effect<string, FingerprintFileError>>;\nexport function createFingerprintSourceCache(): FingerprintSourceCache {\n return new Map();\n}\nfunction messageOf(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\nfunction fingerprintFileError(operation: FingerprintFileError[\"operation\"], path: string, cause: unknown): FingerprintFileError {\n return new FingerprintFileError({ operation, path, message: messageOf(cause) });\n}\nfunction fingerprintPlanningError(stage: FingerprintPlanningError[\"stage\"], cause: unknown): FingerprintPlanningError {\n return new FingerprintPlanningError({ stage, message: messageOf(cause) });\n}\nfunction invariant(message: string): FingerprintPlanningError {\n return new FingerprintPlanningError({ stage: \"invariant\", message });\n}\nexport function cacheKey(run: AgentRun, evalId: string): string {\n if (run.experimentId === undefined) {\n throw new Error(\"ProjectTarget planning requires a discovered Experiment id.\");\n }\n return runPairKey(run.experimentId, evalId);\n}\n/** Run 级配置身份。所有会改变结果解释口径的实验配置只在 `configIdentityForRun` 里裁决一次。 */\nexport function computeConfigHash(pair: PreparedRunPair): string {\n return hashConfigIdentity(configIdentityForRun(pair.run, pair.plan));\n}\n/** 身份对象 → 配置身份哈希。 */\nexport function hashConfigIdentity(identity: ConfigIdentity): string {\n return hash(identity);\n}\n/** The only supported projection is the immutable current configuration identity. */\nexport function computeFingerprint(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<string, FingerprintPlanningFailure> {\n return Effect.map(fingerprintWithManifest(pair, sourceCache, projection), ({ fingerprint }) => fingerprint);\n}\nexport interface FingerprintProjection {\n readonly _tag: \"Current\";\n readonly identity: ConfigIdentity;\n}\nfunction currentFingerprintProjection(pair: PreparedRunPair, identity: ConfigIdentity = configIdentityForRun(pair.run, pair.plan)): FingerprintProjection {\n return Object.freeze({ _tag: \"Current\", identity });\n}\n/**\n * 指纹与它的可读清单一次算出。两者**同一份输入**:清单不是事后再扫一遍磁盘拼出来的近似,\n * 而是哈希那一刻手里的原料换一种投影(内容换成内容哈希)。分开算迟早分叉,症状是\n * 「`--dry` 说这个文件变了,指纹却相等」。\n *\n * @param projection The immutable current configuration identity.\n */\nexport function fingerprintWithManifest(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<{\n fingerprint: string;\n manifest: EvalManifest;\n renameFingerprint: (experimentId: string) => string | undefined;\n}, FingerprintPlanningFailure> {\n return fingerprintPreparedPair(pair, sourceCache, projection);\n}\nfunction fingerprintPreparedPair(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<{\n fingerprint: string;\n manifest: EvalManifest;\n renameFingerprint: (experimentId: string) => string | undefined;\n}, FingerprintPlanningFailure> {\n return Effect.gen(function* () {\n const { evalDef } = pair;\n const identity = projection.identity;\n const configHash = yield* Effect.try({\n try: () => hashConfigIdentity(identity),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const source = yield* sourceClosure(evalDef, sourceCache);\n const loaderData = yield* Effect.forEach([...(evalDef.loaderDataPaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedRead(path, sourceCache), (content) => [relative(process.cwd(), path), content] as const), { concurrency: \"unbounded\" });\n // 判据树(loadCriteria 登记)进的是「项目根相对路径 × 内容流式哈希」对:内容从不进内存,\n // 权限位与 mtime 不参与,所以重新 clone 一份工作树不作废。增删文件与改一字节同等作废——\n // 前者改的是这张对表的成员,后者改的是某一项的哈希。\n const criteria = yield* Effect.forEach([...(evalDef.criteriaPaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedContentHash(path, sourceCache), (digest) => [relative(process.cwd(), path), digest] as const), { concurrency: \"unbounded\" });\n // private 与 criteria 同口径(路径 × 流式内容哈希),分键存放——混进 criteria 会让\n // 「只改 private」与「只改 verifier」在指纹上无法区分,也让存量无 private 的结果一次性作废。\n const privateFiles = yield* Effect.forEach([...(evalDef.privatePaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedContentHash(path, sourceCache), (digest) => [relative(process.cwd(), path), digest] as const), { concurrency: \"unbounded\" });\n const plugins = Object.freeze({ pair: pair.plugin.pairProjection });\n const payload = {\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n judgeAuthoring: {\n protocol: JUDGE_AUTHORING_PROTOCOL,\n revision: JUDGE_AUTHORING_REVISION,\n },\n plugins,\n configHash,\n pairPlan: pair.identity,\n source,\n eval: {\n id: evalDef.id,\n tags: evalDef.tags ?? [],\n metadata: evalDef.metadata ?? {},\n ...(evalDef.evalGroup === undefined ? {} : { group: {\n id: evalDef.evalGroup.id,\n evalIds: [...evalDef.evalGroup.evalIds],\n definitionHash: evalDef.evalGroup.definitionHash,\n onUnavailable: evalDef.evalGroup.onUnavailable,\n } }),\n },\n loaderData,\n // 没登记判据树的 eval 完全不带这个键:空数组也会改变 payload 的字节,让所有存量结果\n // 一次性作废,而它们的判据面本来什么都没变。\n ...(criteria.length > 0 ? { criteria } : {}),\n ...(privateFiles.length > 0 ? { private: privateFiles } : {}),\n };\n // timeoutMs(evalDef / run 两处来源)刻意不入哈希:超时上限不改变「结果是什么」,只决定\n // 「等不等得到」,把它掺进指纹会让单纯调高上限也作废全部已完成结果。它由\n // ExecutionReusePlan 的 current eligibility comparison 单独裁决,不参与指纹相等性。\n //\n // 清单与哈希同一份原料:源码面把内容换成内容哈希,数据面直接沿用已经算好的哈希/内容。\n const manifest = yield* Effect.try({\n try: (): EvalManifest => Object.freeze({\n algorithmVersion: FINGERPRINT_ALGORITHM_VERSION,\n coverageVersion: FINGERPRINT_COVERAGE_VERSION,\n config: Object.freeze(Object.fromEntries(configIdentityPaths(identity))),\n plan: pair.identity,\n plugins,\n source: Object.freeze(Object.fromEntries(source.map(([path, content]) => [path, hashText(content)]))),\n data: Object.freeze(Object.fromEntries([\n ...loaderData.map(([path, content]) => [path, hashText(content)]),\n ...criteria,\n ...privateFiles,\n ])),\n }),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n return yield* Effect.try({\n try: () => {\n const frozenPayload = freezeFingerprintInput(payload);\n const fingerprint = hash(frozenPayload);\n const pairPlanForExperiment = captureLinkedRunRenameFingerprintIdentity(pair.plan);\n const originalExperimentId = pair.run.experimentId;\n const capturedPairPlan = pairPlanForExperiment(originalExperimentId);\n const pairPlanMatchesFingerprintInput = capturedPairPlan !== undefined &&\n stableJson(capturedPairPlan) === stableJson(frozenPayload.pairPlan);\n const hasOpaqueExperimentBehavior = pair.run.setup !== undefined ||\n pair.run.teardown !== undefined ||\n [...pair.plugin.groupLifecycles, ...pair.plugin.evalLifecycles]\n .some((lifecycle) => lifecycle.setup !== undefined || lifecycle.teardown !== undefined);\n const renameFingerprint = Object.freeze((experimentId: string): string | undefined => {\n if (experimentId === originalExperimentId)\n return fingerprint;\n if (!pairPlanMatchesFingerprintInput || hasOpaqueExperimentBehavior)\n return undefined;\n const pairPlan = pairPlanForExperiment(experimentId);\n return pairPlan === undefined ? undefined : hash({ ...frozenPayload, pairPlan });\n });\n return { fingerprint, manifest, renameFingerprint };\n },\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n });\n}\nfunction cachedRead(path: string, cache?: FingerprintSourceCache): Effect.Effect<string, FingerprintFileError> {\n return cachedFileEffect(path, cache, () => Effect.tryPromise({\n try: () => readFile(path, \"utf8\"),\n catch: (cause) => fingerprintFileError(\"read\", path, cause),\n }));\n}\n/**\n * 判据树文件的内容哈希:流式算,几百个文件上百 MB 的判据树不整读进内存。\n * 与 `cachedRead` 共用同一张表,键加 `criteria:` 前缀——同一个文件可能既被 `loadText` 读入\n * (缓存的是内容)又被 `loadCriteria` 登记(缓存的是哈希),不分开两种值会互相顶掉。\n */\nfunction cachedContentHash(path: string, cache?: FingerprintSourceCache): Effect.Effect<string, FingerprintFileError> {\n const key = `criteria:${path}`;\n return cachedFileEffect(key, cache, () => streamHashEffect(path));\n}\nfunction cachedFileEffect(key: string, cache: FingerprintSourceCache | undefined, create: () => Effect.Effect<string, FingerprintFileError>): Effect.Effect<string, FingerprintFileError> {\n return Effect.suspend(() => {\n const existing = cache?.get(key);\n if (existing !== undefined)\n return existing;\n if (cache === undefined)\n return create();\n return Effect.flatMap(Effect.cached(create()), (memoized) => Effect.andThen(Effect.sync(() => {\n cache.set(key, memoized);\n }), memoized));\n });\n}\nfunction streamHashEffect(path: string): Effect.Effect<string, FingerprintFileError> {\n return Effect.scoped(Effect.acquireRelease(Effect.try({\n try: () => createReadStream(path),\n catch: (cause) => fingerprintFileError(\"hash\", path, cause),\n }), (stream) => Effect.sync(() => {\n if (!stream.destroyed)\n stream.destroy();\n })).pipe(Effect.flatMap((stream) => Effect.tryPromise({\n try: async (signal) => {\n const abort = (): void => {\n if (!stream.destroyed) {\n stream.destroy(signal.reason instanceof Error ? signal.reason : undefined);\n }\n };\n if (signal.aborted)\n abort();\n signal.addEventListener(\"abort\", abort, { once: true });\n try {\n const hasher = createHash(\"sha256\");\n for await (const chunk of stream)\n hasher.update(chunk as Buffer);\n return hasher.digest(\"hex\");\n }\n finally {\n signal.removeEventListener(\"abort\", abort);\n }\n },\n catch: (cause) => fingerprintFileError(\"hash\", path, cause),\n }))));\n}\n/** 项目内静态 import 图;外部包和动态 import 有意不进入闭包。 */\nfunction sourceClosure(evalDef: DiscoveredEval, cache?: FingerprintSourceCache): Effect.Effect<Array<[\n string,\n string\n]>, FingerprintFileError> {\n const root = process.cwd();\n const visited = new Set<string>();\n const files: Array<[\n string,\n string\n ]> = [];\n const visit = (path: string): Effect.Effect<void, FingerprintFileError> => Effect.gen(function* () {\n const absolute = resolve(path);\n if (visited.has(absolute) || (!absolute.startsWith(`${root}/`) && absolute !== root))\n return;\n visited.add(absolute);\n const content = yield* cachedRead(absolute, cache);\n files.push([relative(root, absolute), content]);\n const specs = [...content.matchAll(/\\b(?:import|export)\\s+(?:[^\"'()]*?\\s+from\\s+)?[\"']([^\"']+)[\"']/g)]\n .flatMap((match) => match[1] === undefined ? [] : [match[1]]);\n for (const spec of specs) {\n if (!spec.startsWith(\".\") && !spec.startsWith(\"/\"))\n continue;\n const resolved = yield* resolveModule(dirname(absolute), spec);\n if (resolved)\n yield* visit(resolved);\n }\n });\n return Effect.andThen(visit(evalDef.sourcePath), Effect.sync(() => files.sort(([a], [b]) => a.localeCompare(b))));\n}\nfunction resolveModule(from: string, specifier: string): Effect.Effect<string | undefined> {\n const raw = resolve(from, specifier);\n const candidates = extname(raw) ? [raw] : [raw, ...[\".ts\", \".tsx\", \".mts\", \".cts\", \".js\", \".jsx\"].map((ext) => `${raw}${ext}`), ...[\"index.ts\", \"index.tsx\", \"index.js\"].map((name) => resolve(raw, name))];\n const findAt = (index: number): Effect.Effect<string | undefined> => {\n const candidate = candidates[index];\n if (candidate === undefined)\n return Effect.succeed(undefined);\n return Effect.tryPromise({\n try: () => stat(candidate),\n // Existing behavior intentionally treats every stat failure as a missed candidate.\n catch: (cause) => fingerprintFileError(\"read\", candidate, cause),\n }).pipe(Effect.flatMap((info) => info?.isFile() ? Effect.succeed(candidate) : findAt(index + 1)), Effect.catch(() => findAt(index + 1)));\n };\n return findAt(0);\n}\n/** 无派发项目规划:身份目标与 runner 后续真正消费的 prepared pair 来自同一产物。 */\nexport interface ProjectTargetPlan {\n readonly target: ProjectCurrentTarget;\n readonly preparedPairsByKey: ReadonlyMap<string, PreparedRunPair>;\n readonly plannedConfigHashes: ReadonlyMap<string, string>;\n readonly resolvedJudgesByKey: ReadonlyMap<string, ResolvedJudgeConfig | undefined>;\n readonly plannedFingerprints: ReadonlyMap<string, string>;\n readonly renameFingerprintsByKey: ReadonlyMap<string, (experimentId: string) => string | undefined>;\n readonly manifestsByKey: ReadonlyMap<string, EvalManifest>;\n /** 仅供本地 watcher;不会序列化进 Target/report。 */\n readonly watchInputs: readonly string[];\n}\n/**\n * 只做 discovery 之后的 link + physical identity planning 与 fingerprint;不读 Record,\n * 不调用 setup/create/build/Agent Ensure,也不决定 reuse/派发。\n */\nexport function planProjectTarget(evals: readonly DiscoveredEval[], agentRuns: readonly AgentRun[], configTimeoutMs?: number, options: {\n readonly configJudge?: import(\"../judge/provider.ts\").JudgeProvider;\n readonly keepSandbox?: \"failed\" | \"all\";\n} = {}): Effect.Effect<ProjectTargetPlan, SandboxRunPlanningError | FingerprintPlanningFailure> {\n return Effect.flatMap(prepareRunSandboxes(evals, agentRuns, liveSandboxPlanningServices(), {\n ...(options.keepSandbox === undefined ? {} : { keepSandbox: options.keepSandbox }),\n ...(configTimeoutMs === undefined ? {} : { configTimeoutMs }),\n }), (preparedPairs) => planPreparedProjectTarget(preparedPairs, options));\n}\n/**\n * Freezes identity and fingerprint planning for already linked physical pairs.\n * Project-current reads and explicit adoption share this seam so neither can\n * rebuild the effective Experiment identity with a different projection.\n */\nexport function planPreparedProjectTarget(preparedPairs: readonly PreparedRunPair[], options: {\n readonly configJudge?: import(\"../judge/provider.ts\").JudgeProvider;\n readonly keepSandbox?: \"failed\" | \"all\";\n}): Effect.Effect<ProjectTargetPlan, FingerprintPlanningFailure> {\n return Effect.gen(function* () {\n const preparedPairsByKey = yield* Effect.try({\n try: () => indexPreparedPairs(preparedPairs),\n catch: (cause) => fingerprintPlanningError(\"invariant\", cause),\n });\n const sourceCache = createFingerprintSourceCache();\n const plannedFingerprints = new Map<string, string>();\n const renameFingerprintsByKey = new Map<string, (experimentId: string) => string | undefined>();\n const manifestsByKey = new Map<string, EvalManifest>();\n const plannedConfigHashes = new Map<string, string>();\n const resolvedJudgesByKey = new Map<string, ResolvedJudgeConfig | undefined>();\n const runConfigHashes = new Map<string, string>();\n const targetEvals = new Map<string, ProjectCurrentExperimentTarget[\"evals\"][number][]>();\n yield* Effect.forEach(preparedPairs, (pair) => Effect.gen(function* () {\n const resolvedJudge = yield* Effect.try({\n try: () => resolveJudge(pair.run.judgeRuntime, pair.evalDef.judge, options.configJudge),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n resolvedJudgesByKey.set(pair.key, resolvedJudge);\n const identity = yield* Effect.try({\n try: () => configIdentityForRun(pair.run, pair.plan, resolvedJudge),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const resultConfigHash = yield* Effect.try({\n try: () => hashConfigIdentity(identity),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const runConfigHash = yield* Effect.try({\n try: () => computeConfigHash(pair),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const existingRunHash = runConfigHashes.get(pair.run.experimentId);\n if (existingRunHash !== undefined && existingRunHash !== runConfigHash) {\n return yield* Effect.fail(invariant(`Run config hash differs across evals for ${JSON.stringify(pair.run.experimentId)}.`));\n }\n runConfigHashes.set(pair.run.experimentId, runConfigHash);\n const { fingerprint, manifest, renameFingerprint } = yield* fingerprintWithManifest(pair, sourceCache, currentFingerprintProjection(pair, identity));\n plannedConfigHashes.set(pair.key, resultConfigHash);\n plannedFingerprints.set(pair.key, fingerprint);\n renameFingerprintsByKey.set(pair.key, renameFingerprint);\n manifestsByKey.set(pair.key, manifest);\n const bucket = targetEvals.get(pair.run.experimentId) ?? [];\n bucket.push(Object.freeze({\n id: pair.evalDef.id,\n resultConfigHash,\n fingerprint,\n evaluationKind: pair.evalDef.evaluationKind ?? \"pass\",\n }));\n targetEvals.set(pair.run.experimentId, bucket);\n }), { concurrency: \"unbounded\", discard: true });\n const seenRuns = new Set<AgentRun>();\n const experiments: ProjectCurrentExperimentTarget[] = [];\n for (const pair of preparedPairs) {\n const run = pair.run;\n if (seenRuns.has(run))\n continue;\n seenRuns.add(run);\n const runConfigHash = runConfigHashes.get(run.experimentId);\n if (runConfigHash === undefined)\n continue;\n experiments.push(Object.freeze({\n id: run.experimentId,\n runConfigHash,\n attempts: run.attempts,\n adapter: adapterIdentity(run.adapter),\n ...(run.model !== undefined ? { model: run.model } : {}),\n ...(run.reasoningEffort !== undefined ? { reasoningEffort: run.reasoningEffort } : {}),\n flags: Object.freeze({ ...run.flags }),\n ...(run.labels !== undefined ? { labels: Object.freeze({ ...run.labels }) } : {}),\n ...(run.description !== undefined ? { description: run.description } : {}),\n evals: Object.freeze([...(targetEvals.get(run.experimentId) ?? [])].sort((a, b) => a.id.localeCompare(b.id))),\n }));\n }\n const watchInputs = new Set<string>();\n for (const pair of preparedPairs) {\n watchInputs.add(resolve(pair.run.experimentSourcePath));\n watchInputs.add(resolve(pair.evalDef.sourcePath));\n }\n for (const manifest of manifestsByKey.values()) {\n for (const path of [...Object.keys(manifest.source), ...Object.keys(manifest.data)]) {\n watchInputs.add(resolve(process.cwd(), path));\n }\n }\n return Object.freeze({\n target: Object.freeze({ plannedAt: new Date().toISOString(), experiments: Object.freeze(experiments) }),\n preparedPairsByKey: readonlyMapSnapshot(preparedPairsByKey),\n plannedConfigHashes: readonlyMapSnapshot(plannedConfigHashes),\n resolvedJudgesByKey: readonlyMapSnapshot(resolvedJudgesByKey),\n plannedFingerprints: readonlyMapSnapshot(plannedFingerprints),\n renameFingerprintsByKey: readonlyMapSnapshot(renameFingerprintsByKey),\n manifestsByKey: readonlyMapSnapshot(manifestsByKey),\n watchInputs: Object.freeze([...watchInputs].sort()),\n });\n });\n}\nfunction readonlyMapSnapshot<Key, Value>(entries: Iterable<readonly [\n Key,\n Value\n]>): ReadonlyMap<Key, Value> {\n const snapshot = new Map(entries);\n let view: ReadonlyMap<Key, Value>;\n view = {\n get size() { return snapshot.size; },\n get: (key) => snapshot.get(key),\n has: (key) => snapshot.has(key),\n forEach: (callback, thisArg) => snapshot.forEach((value, key) => callback.call(thisArg, value, key, view)),\n entries: () => snapshot.entries(),\n keys: () => snapshot.keys(),\n values: () => snapshot.values(),\n [Symbol.iterator]: () => snapshot[Symbol.iterator](),\n };\n return Object.freeze(view);\n}\nfunction freezeFingerprintInput<Value>(value: Value): Value {\n if (value === null || typeof value !== \"object\")\n return value;\n if (Array.isArray(value)) {\n return Object.freeze(value.map((entry) => freezeFingerprintInput(entry))) as Value;\n }\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, child]) => [key, freezeFingerprintInput(child)]))) as Value;\n}\nfunction hash(value: unknown): string {\n return createHash(\"sha256\").update(stableJson(value)).digest(\"hex\");\n}\n/** folder-local source 进指纹时只留纯数据面(brand 不参与)。 */\n/** 文本内容哈希:manifest 的源码面/数据面把「内容」换成「内容哈希」时用的唯一口径。 */\nfunction hashText(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n/** 键序稳定的 JSON 序列化(对象键排序),保证同一 payload 永远同一指纹。 */\nfunction stableJson(value: unknown): string {\n if (value === null || typeof value !== \"object\")\n return JSON.stringify(value) ?? \"undefined\";\n if (Array.isArray(value))\n return `[${value.map(stableJson).join(\",\")}]`;\n return `{${Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `${JSON.stringify(key)}:${stableJson(child)}`)\n .join(\",\")}}`;\n}\n"]}
1
+ {"version":3,"file":"fingerprint.js","sourceRoot":"","sources":["fingerprint.ts"],"names":[],"mappings":"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","sourcesContent":["// ProjectTarget planning: current eval sources + resolved configuration become\n// immutable input identities. Reuse is decided only by Frozen Record planning.\nimport { createHash } from \"node:crypto\";\nimport { createReadStream } from \"node:fs\";\nimport { readFile, stat } from \"node:fs/promises\";\nimport { dirname, extname, relative, resolve } from \"node:path\";\nimport { Data, Effect } from \"effect\";\nimport { captureLinkedRunRenameFingerprintIdentity, liveSandboxPlanningServices, } from \"../sandbox/plan.ts\";\nimport type { DiscoveredEval, ResolvedJudgeConfig } from \"../types.ts\";\nimport type { ProjectCurrentExperimentTarget, ProjectCurrentTarget, } from \"./project-target.ts\";\nimport { EVALUATION_ALGORITHM, type AgentRun } from \"./types.ts\";\nimport { resolveJudge } from \"./judge-config.ts\";\nimport { JUDGE_AUTHORING_PROTOCOL, JUDGE_AUTHORING_REVISION } from \"../assertions/judge-presets.ts\";\nimport { prepareRunSandboxes, preparedPairsByKey as indexPreparedPairs, runPairKey, type PreparedRunPair, type SandboxRunPlanningError, } from \"./sandbox-selection.ts\";\nimport type { EvalManifest } from \"./manifest.ts\";\nimport { FINGERPRINT_ALGORITHM_VERSION, FINGERPRINT_COVERAGE_VERSION, } from \"../record/manifest.ts\";\nimport { configIdentityPaths, configIdentityForRun, type ConfigIdentity, } from \"./config-identity.ts\";\nimport { adapterIdentity } from \"../adapter.ts\";\n/** Files that participate in a fingerprint are an explicit planning boundary. */\nexport class FingerprintFileError extends Data.TaggedError(\"FingerprintFileError\")<{\n readonly operation: \"read\" | \"hash\";\n readonly path: string;\n readonly message: string;\n}> {\n}\n/** A malformed or internally inconsistent planning input must not become a defect. */\nexport class FingerprintPlanningError extends Data.TaggedError(\"FingerprintPlanningError\")<{\n readonly stage: \"configuration\" | \"invariant\";\n readonly message: string;\n}> {\n}\nexport type FingerprintPlanningFailure = FingerprintFileError | FingerprintPlanningError;\nexport type FingerprintSourceCache = Map<string, Effect.Effect<string, FingerprintFileError>>;\nexport function createFingerprintSourceCache(): FingerprintSourceCache {\n return new Map();\n}\nfunction messageOf(cause: unknown): string {\n return cause instanceof Error ? cause.message : String(cause);\n}\nfunction fingerprintFileError(operation: FingerprintFileError[\"operation\"], path: string, cause: unknown): FingerprintFileError {\n return new FingerprintFileError({ operation, path, message: messageOf(cause) });\n}\nfunction fingerprintPlanningError(stage: FingerprintPlanningError[\"stage\"], cause: unknown): FingerprintPlanningError {\n return new FingerprintPlanningError({ stage, message: messageOf(cause) });\n}\nfunction invariant(message: string): FingerprintPlanningError {\n return new FingerprintPlanningError({ stage: \"invariant\", message });\n}\nexport function cacheKey(run: AgentRun, evalId: string): string {\n if (run.experimentId === undefined) {\n throw new Error(\"ProjectTarget planning requires a discovered Experiment id.\");\n }\n return runPairKey(run.experimentId, evalId);\n}\n/** Run 级配置身份。所有会改变结果解释口径的实验配置只在 `configIdentityForRun` 里裁决一次。 */\nexport function computeConfigHash(pair: PreparedRunPair): string {\n return hashConfigIdentity(configIdentityForRun(pair.run, pair.plan));\n}\n/** 身份对象 → 配置身份哈希。 */\nexport function hashConfigIdentity(identity: ConfigIdentity): string {\n return hash(identity);\n}\n/** The only supported projection is the immutable current configuration identity. */\nexport function computeFingerprint(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<string, FingerprintPlanningFailure> {\n return Effect.map(fingerprintWithManifest(pair, sourceCache, projection), ({ fingerprint }) => fingerprint);\n}\nexport interface FingerprintProjection {\n readonly _tag: \"Current\";\n readonly identity: ConfigIdentity;\n}\nfunction currentFingerprintProjection(pair: PreparedRunPair, identity: ConfigIdentity = configIdentityForRun(pair.run, pair.plan)): FingerprintProjection {\n return Object.freeze({ _tag: \"Current\", identity });\n}\n/**\n * 指纹与它的可读清单一次算出。两者**同一份输入**:清单不是事后再扫一遍磁盘拼出来的近似,\n * 而是哈希那一刻手里的原料换一种投影(内容换成内容哈希)。分开算迟早分叉,症状是\n * 「`--dry` 说这个文件变了,指纹却相等」。\n *\n * @param projection The immutable current configuration identity.\n */\nexport function fingerprintWithManifest(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<{\n fingerprint: string;\n manifest: EvalManifest;\n renameFingerprint: (experimentId: string) => string | undefined;\n}, FingerprintPlanningFailure> {\n return fingerprintPreparedPair(pair, sourceCache, projection);\n}\nfunction fingerprintPreparedPair(pair: PreparedRunPair, sourceCache?: FingerprintSourceCache, projection: FingerprintProjection = currentFingerprintProjection(pair)): Effect.Effect<{\n fingerprint: string;\n manifest: EvalManifest;\n renameFingerprint: (experimentId: string) => string | undefined;\n}, FingerprintPlanningFailure> {\n return Effect.gen(function* () {\n const { evalDef } = pair;\n const identity = projection.identity;\n const configHash = yield* Effect.try({\n try: () => hashConfigIdentity(identity),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const source = yield* sourceClosure(evalDef, sourceCache);\n const loaderData = yield* Effect.forEach([...(evalDef.loaderDataPaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedRead(path, sourceCache), (content) => [relative(process.cwd(), path), content] as const), { concurrency: \"unbounded\" });\n // 判据树(loadCriteria 登记)进的是「项目根相对路径 × 内容流式哈希」对:内容从不进内存,\n // 权限位与 mtime 不参与,所以重新 clone 一份工作树不作废。增删文件与改一字节同等作废——\n // 前者改的是这张对表的成员,后者改的是某一项的哈希。\n const criteria = yield* Effect.forEach([...(evalDef.criteriaPaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedContentHash(path, sourceCache), (digest) => [relative(process.cwd(), path), digest] as const), { concurrency: \"unbounded\" });\n // private 与 criteria 同口径(路径 × 流式内容哈希),分键存放——混进 criteria 会让\n // 「只改 private」与「只改 verifier」在指纹上无法区分,也让存量无 private 的结果一次性作废。\n const privateFiles = yield* Effect.forEach([...(evalDef.privatePaths ?? [])].sort(), (path): Effect.Effect<readonly [\n string,\n string\n ], FingerprintFileError> => Effect.map(cachedContentHash(path, sourceCache), (digest) => [relative(process.cwd(), path), digest] as const), { concurrency: \"unbounded\" });\n const plugins = Object.freeze({ pair: pair.plugin.pairProjection });\n const payload = {\n evaluationAlgorithm: EVALUATION_ALGORITHM,\n judgeAuthoring: {\n protocol: JUDGE_AUTHORING_PROTOCOL,\n revision: JUDGE_AUTHORING_REVISION,\n },\n plugins,\n configHash,\n pairPlan: pair.identity,\n source,\n eval: {\n id: evalDef.id,\n tags: evalDef.tags ?? [],\n metadata: evalDef.metadata ?? {},\n ...(evalDef.evalGroup === undefined ? {} : { group: {\n id: evalDef.evalGroup.id,\n evalIds: [...evalDef.evalGroup.evalIds],\n definitionHash: evalDef.evalGroup.definitionHash,\n onUnavailable: evalDef.evalGroup.onUnavailable,\n } }),\n },\n loaderData,\n // 没登记判据树的 eval 完全不带这个键:空数组也会改变 payload 的字节,让所有存量结果\n // 一次性作废,而它们的判据面本来什么都没变。\n ...(criteria.length > 0 ? { criteria } : {}),\n ...(privateFiles.length > 0 ? { private: privateFiles } : {}),\n };\n // timeoutMs(evalDef / run 两处来源)刻意不入哈希:超时上限不改变「结果是什么」,只决定\n // 「等不等得到」,把它掺进指纹会让单纯调高上限也作废全部已完成结果。它由\n // ExecutionReusePlan 的 current eligibility comparison 单独裁决,不参与指纹相等性。\n //\n // 清单与哈希同一份原料:源码面把内容换成内容哈希,数据面直接沿用已经算好的哈希/内容。\n const manifest = yield* Effect.try({\n try: (): EvalManifest => Object.freeze({\n algorithmVersion: FINGERPRINT_ALGORITHM_VERSION,\n coverageVersion: FINGERPRINT_COVERAGE_VERSION,\n config: Object.freeze(Object.fromEntries(configIdentityPaths(identity))),\n plan: pair.identity,\n plugins,\n source: Object.freeze(Object.fromEntries(source.map(([path, content]) => [path, hashText(content)]))),\n data: Object.freeze(Object.fromEntries([\n ...loaderData.map(([path, content]) => [path, hashText(content)]),\n ...criteria,\n ...privateFiles,\n ])),\n }),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n return yield* Effect.try({\n try: () => {\n const frozenPayload = freezeFingerprintInput(payload);\n const fingerprint = hash(frozenPayload);\n const pairPlanForExperiment = captureLinkedRunRenameFingerprintIdentity(pair.plan);\n const originalExperimentId = pair.run.experimentId;\n const capturedPairPlan = pairPlanForExperiment(originalExperimentId);\n const pairPlanMatchesFingerprintInput = capturedPairPlan !== undefined &&\n stableJson(capturedPairPlan) === stableJson(frozenPayload.pairPlan);\n const hasOpaqueExperimentBehavior = pair.run.setup !== undefined ||\n pair.run.teardown !== undefined ||\n [...pair.plugin.groupLifecycles, ...pair.plugin.evalLifecycles]\n .some((lifecycle) => lifecycle.setup !== undefined || lifecycle.teardown !== undefined);\n const renameFingerprint = Object.freeze((experimentId: string): string | undefined => {\n if (experimentId === originalExperimentId)\n return fingerprint;\n if (!pairPlanMatchesFingerprintInput || hasOpaqueExperimentBehavior)\n return undefined;\n const pairPlan = pairPlanForExperiment(experimentId);\n return pairPlan === undefined ? undefined : hash({ ...frozenPayload, pairPlan });\n });\n return { fingerprint, manifest, renameFingerprint };\n },\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n });\n}\nfunction cachedRead(path: string, cache?: FingerprintSourceCache): Effect.Effect<string, FingerprintFileError> {\n return cachedFileEffect(path, cache, () => Effect.tryPromise({\n try: () => readFile(path, \"utf8\"),\n catch: (cause) => fingerprintFileError(\"read\", path, cause),\n }));\n}\n/**\n * 判据树文件的内容哈希:流式算,几百个文件上百 MB 的判据树不整读进内存。\n * 与 `cachedRead` 共用同一张表,键加 `criteria:` 前缀——同一个文件可能既被 `loadText` 读入\n * (缓存的是内容)又被 `loadCriteria` 登记(缓存的是哈希),不分开两种值会互相顶掉。\n */\nfunction cachedContentHash(path: string, cache?: FingerprintSourceCache): Effect.Effect<string, FingerprintFileError> {\n const key = `criteria:${path}`;\n return cachedFileEffect(key, cache, () => streamHashEffect(path));\n}\nfunction cachedFileEffect(key: string, cache: FingerprintSourceCache | undefined, create: () => Effect.Effect<string, FingerprintFileError>): Effect.Effect<string, FingerprintFileError> {\n return Effect.suspend(() => {\n const existing = cache?.get(key);\n if (existing !== undefined)\n return existing;\n if (cache === undefined)\n return create();\n return Effect.flatMap(Effect.cached(create()), (memoized) => Effect.andThen(Effect.sync(() => {\n cache.set(key, memoized);\n }), memoized));\n });\n}\nfunction streamHashEffect(path: string): Effect.Effect<string, FingerprintFileError> {\n return Effect.scoped(Effect.acquireRelease(Effect.try({\n try: () => createReadStream(path),\n catch: (cause) => fingerprintFileError(\"hash\", path, cause),\n }), (stream) => Effect.sync(() => {\n if (!stream.destroyed)\n stream.destroy();\n })).pipe(Effect.flatMap((stream) => Effect.tryPromise({\n try: async (signal) => {\n const abort = (): void => {\n if (!stream.destroyed) {\n stream.destroy(signal.reason instanceof Error ? signal.reason : undefined);\n }\n };\n if (signal.aborted)\n abort();\n signal.addEventListener(\"abort\", abort, { once: true });\n try {\n const hasher = createHash(\"sha256\");\n for await (const chunk of stream)\n hasher.update(chunk as Buffer);\n return hasher.digest(\"hex\");\n }\n finally {\n signal.removeEventListener(\"abort\", abort);\n }\n },\n catch: (cause) => fingerprintFileError(\"hash\", path, cause),\n }))));\n}\n/** 项目内静态 import 图;外部包和动态 import 有意不进入闭包。 */\nfunction sourceClosure(evalDef: DiscoveredEval, cache?: FingerprintSourceCache): Effect.Effect<Array<[\n string,\n string\n]>, FingerprintFileError> {\n const root = process.cwd();\n const visited = new Set<string>();\n const files: Array<[\n string,\n string\n ]> = [];\n const visit = (path: string): Effect.Effect<void, FingerprintFileError> => Effect.gen(function* () {\n const absolute = resolve(path);\n if (visited.has(absolute) || (!absolute.startsWith(`${root}/`) && absolute !== root))\n return;\n visited.add(absolute);\n const content = yield* cachedRead(absolute, cache);\n files.push([relative(root, absolute), content]);\n const specs = [...content.matchAll(/\\b(?:import|export)\\s+(?:[^\"'()]*?\\s+from\\s+)?[\"']([^\"']+)[\"']/g)]\n .flatMap((match) => match[1] === undefined ? [] : [match[1]]);\n for (const spec of specs) {\n if (!spec.startsWith(\".\") && !spec.startsWith(\"/\"))\n continue;\n const resolved = yield* resolveModule(dirname(absolute), spec);\n if (resolved)\n yield* visit(resolved);\n }\n });\n return Effect.andThen(visit(evalDef.sourcePath), Effect.sync(() => files.sort(([a], [b]) => a.localeCompare(b))));\n}\nfunction resolveModule(from: string, specifier: string): Effect.Effect<string | undefined> {\n const raw = resolve(from, specifier);\n const candidates = extname(raw) ? [raw] : [raw, ...[\".ts\", \".tsx\", \".mts\", \".cts\", \".js\", \".jsx\"].map((ext) => `${raw}${ext}`), ...[\"index.ts\", \"index.tsx\", \"index.js\"].map((name) => resolve(raw, name))];\n const findAt = (index: number): Effect.Effect<string | undefined> => {\n const candidate = candidates[index];\n if (candidate === undefined)\n return Effect.succeed(undefined);\n return Effect.tryPromise({\n try: () => stat(candidate),\n // Existing behavior intentionally treats every stat failure as a missed candidate.\n catch: (cause) => fingerprintFileError(\"read\", candidate, cause),\n }).pipe(Effect.flatMap((info) => info?.isFile() ? Effect.succeed(candidate) : findAt(index + 1)), Effect.catch(() => findAt(index + 1)));\n };\n return findAt(0);\n}\n/** 无派发项目规划:身份目标与 runner 后续真正消费的 prepared pair 来自同一产物。 */\nexport interface ProjectTargetPlan {\n readonly target: ProjectCurrentTarget;\n readonly preparedPairsByKey: ReadonlyMap<string, PreparedRunPair>;\n readonly plannedConfigHashes: ReadonlyMap<string, string>;\n readonly resolvedJudgesByKey: ReadonlyMap<string, ResolvedJudgeConfig | undefined>;\n readonly plannedFingerprints: ReadonlyMap<string, string>;\n readonly renameFingerprintsByKey: ReadonlyMap<string, (experimentId: string) => string | undefined>;\n readonly manifestsByKey: ReadonlyMap<string, EvalManifest>;\n /** 仅供本地 watcher;不会序列化进 Target/report。 */\n readonly watchInputs: readonly string[];\n}\n/**\n * 只做 discovery 之后的 link + physical identity planning 与 fingerprint;不读 Record,\n * 不调用 setup/create/build/Agent Ensure,也不决定 reuse/派发。\n */\nexport function planProjectTarget(evals: readonly DiscoveredEval[], agentRuns: readonly AgentRun[], configTimeoutMs?: number, options: {\n readonly configJudge?: import(\"../judge/provider.ts\").JudgeProvider;\n readonly keepSandbox?: \"failed\" | \"all\";\n} = {}): Effect.Effect<ProjectTargetPlan, SandboxRunPlanningError | FingerprintPlanningFailure> {\n return Effect.flatMap(prepareRunSandboxes(evals, agentRuns, liveSandboxPlanningServices(), {\n ...(options.keepSandbox === undefined ? {} : { keepSandbox: options.keepSandbox }),\n ...(configTimeoutMs === undefined ? {} : { configTimeoutMs }),\n }), (preparedPairs) => planPreparedProjectTarget(preparedPairs, options));\n}\n/**\n * Freezes identity and fingerprint planning for already linked physical pairs.\n * Project-current reads and explicit adoption share this seam so neither can\n * rebuild the effective Experiment identity with a different projection.\n */\nexport function planPreparedProjectTarget(preparedPairs: readonly PreparedRunPair[], options: {\n readonly configJudge?: import(\"../judge/provider.ts\").JudgeProvider;\n readonly keepSandbox?: \"failed\" | \"all\";\n}): Effect.Effect<ProjectTargetPlan, FingerprintPlanningFailure> {\n return Effect.gen(function* () {\n const preparedPairsByKey = yield* Effect.try({\n try: () => indexPreparedPairs(preparedPairs),\n catch: (cause) => fingerprintPlanningError(\"invariant\", cause),\n });\n const sourceCache = createFingerprintSourceCache();\n const plannedFingerprints = new Map<string, string>();\n const renameFingerprintsByKey = new Map<string, (experimentId: string) => string | undefined>();\n const manifestsByKey = new Map<string, EvalManifest>();\n const plannedConfigHashes = new Map<string, string>();\n const resolvedJudgesByKey = new Map<string, ResolvedJudgeConfig | undefined>();\n const runConfigHashes = new Map<string, string>();\n const targetEvals = new Map<string, ProjectCurrentExperimentTarget[\"evals\"][number][]>();\n yield* Effect.forEach(preparedPairs, (pair) => Effect.gen(function* () {\n const resolvedJudge = yield* Effect.try({\n try: () => resolveJudge(pair.run.judgeRuntime, pair.evalDef.judge, options.configJudge),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n resolvedJudgesByKey.set(pair.key, resolvedJudge);\n const identity = yield* Effect.try({\n try: () => configIdentityForRun(pair.run, pair.plan, resolvedJudge),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const resultConfigHash = yield* Effect.try({\n try: () => hashConfigIdentity(identity),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const runConfigHash = yield* Effect.try({\n try: () => computeConfigHash(pair),\n catch: (cause) => fingerprintPlanningError(\"configuration\", cause),\n });\n const existingRunHash = runConfigHashes.get(pair.run.experimentId);\n if (existingRunHash !== undefined && existingRunHash !== runConfigHash) {\n return yield* Effect.fail(invariant(`Run config hash differs across evals for ${JSON.stringify(pair.run.experimentId)}.`));\n }\n runConfigHashes.set(pair.run.experimentId, runConfigHash);\n const { fingerprint, manifest, renameFingerprint } = yield* fingerprintWithManifest(pair, sourceCache, currentFingerprintProjection(pair, identity));\n plannedConfigHashes.set(pair.key, resultConfigHash);\n plannedFingerprints.set(pair.key, fingerprint);\n renameFingerprintsByKey.set(pair.key, renameFingerprint);\n manifestsByKey.set(pair.key, manifest);\n const bucket = targetEvals.get(pair.run.experimentId) ?? [];\n bucket.push(Object.freeze({\n id: pair.evalDef.id,\n resultConfigHash,\n fingerprint,\n evaluationKind: pair.evalDef.evaluationKind ?? \"pass\",\n }));\n targetEvals.set(pair.run.experimentId, bucket);\n }), { concurrency: \"unbounded\", discard: true });\n const seenRuns = new Set<AgentRun>();\n const experiments: ProjectCurrentExperimentTarget[] = [];\n for (const pair of preparedPairs) {\n const run = pair.run;\n if (seenRuns.has(run))\n continue;\n seenRuns.add(run);\n const runConfigHash = runConfigHashes.get(run.experimentId);\n if (runConfigHash === undefined)\n continue;\n experiments.push(Object.freeze({\n id: run.experimentId,\n runConfigHash,\n attempts: run.attempts,\n adapter: adapterIdentity(run.adapter),\n ...(run.models !== undefined ? { models: run.models } : {}),\n ...(run.model !== undefined ? { model: run.model } : {}),\n ...(run.reasoningEffort !== undefined ? { reasoningEffort: run.reasoningEffort } : {}),\n flags: Object.freeze({ ...run.flags }),\n ...(run.labels !== undefined ? { labels: Object.freeze({ ...run.labels }) } : {}),\n ...(run.description !== undefined ? { description: run.description } : {}),\n evals: Object.freeze([...(targetEvals.get(run.experimentId) ?? [])].sort((a, b) => a.id.localeCompare(b.id))),\n }));\n }\n const watchInputs = new Set<string>();\n for (const pair of preparedPairs) {\n watchInputs.add(resolve(pair.run.experimentSourcePath));\n watchInputs.add(resolve(pair.evalDef.sourcePath));\n }\n for (const manifest of manifestsByKey.values()) {\n for (const path of [...Object.keys(manifest.source), ...Object.keys(manifest.data)]) {\n watchInputs.add(resolve(process.cwd(), path));\n }\n }\n return Object.freeze({\n target: Object.freeze({ plannedAt: new Date().toISOString(), experiments: Object.freeze(experiments) }),\n preparedPairsByKey: readonlyMapSnapshot(preparedPairsByKey),\n plannedConfigHashes: readonlyMapSnapshot(plannedConfigHashes),\n resolvedJudgesByKey: readonlyMapSnapshot(resolvedJudgesByKey),\n plannedFingerprints: readonlyMapSnapshot(plannedFingerprints),\n renameFingerprintsByKey: readonlyMapSnapshot(renameFingerprintsByKey),\n manifestsByKey: readonlyMapSnapshot(manifestsByKey),\n watchInputs: Object.freeze([...watchInputs].sort()),\n });\n });\n}\nfunction readonlyMapSnapshot<Key, Value>(entries: Iterable<readonly [\n Key,\n Value\n]>): ReadonlyMap<Key, Value> {\n const snapshot = new Map(entries);\n let view: ReadonlyMap<Key, Value>;\n view = {\n get size() { return snapshot.size; },\n get: (key) => snapshot.get(key),\n has: (key) => snapshot.has(key),\n forEach: (callback, thisArg) => snapshot.forEach((value, key) => callback.call(thisArg, value, key, view)),\n entries: () => snapshot.entries(),\n keys: () => snapshot.keys(),\n values: () => snapshot.values(),\n [Symbol.iterator]: () => snapshot[Symbol.iterator](),\n };\n return Object.freeze(view);\n}\nfunction freezeFingerprintInput<Value>(value: Value): Value {\n if (value === null || typeof value !== \"object\")\n return value;\n if (Array.isArray(value)) {\n return Object.freeze(value.map((entry) => freezeFingerprintInput(entry))) as Value;\n }\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, child]) => [key, freezeFingerprintInput(child)]))) as Value;\n}\nfunction hash(value: unknown): string {\n return createHash(\"sha256\").update(stableJson(value)).digest(\"hex\");\n}\n/** folder-local source 进指纹时只留纯数据面(brand 不参与)。 */\n/** 文本内容哈希:manifest 的源码面/数据面把「内容」换成「内容哈希」时用的唯一口径。 */\nfunction hashText(content: string): string {\n return createHash(\"sha256\").update(content).digest(\"hex\");\n}\n/** 键序稳定的 JSON 序列化(对象键排序),保证同一 payload 永远同一指纹。 */\nfunction stableJson(value: unknown): string {\n if (value === null || typeof value !== \"object\")\n return JSON.stringify(value) ?? \"undefined\";\n if (Array.isArray(value))\n return `[${value.map(stableJson).join(\",\")}]`;\n return `{${Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, child]) => `${JSON.stringify(key)}:${stableJson(child)}`)\n .join(\",\")}}`;\n}\n"]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.retainJudgeUsage = retainJudgeUsage;
4
+ exports.judgeUsageForResult = judgeUsageForResult;
5
+ const captures = new WeakMap();
6
+ function retainJudgeUsage(result, value) { captures.set(result, value); }
7
+ function judgeUsageForResult(result, entryIds) {
8
+ const value = captures.get(result);
9
+ if (value === undefined)
10
+ return undefined;
11
+ return Object.freeze({ ...value, calls: Object.freeze(value.calls.map((call) => {
12
+ const entryId = entryIds[call.entryIndex];
13
+ if (entryId === undefined)
14
+ throw new Error("Judge usage references an unsealed Assertion entry");
15
+ return Object.freeze({ ...call, entryId });
16
+ })) });
17
+ }
18
+ //# sourceMappingURL=judge-usage.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-usage.js","sourceRoot":"","sources":["judge-usage.ts"],"names":[],"mappings":";;AAIA,4CAAwH;AACxH,kDAUC;AAZD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAoC,CAAC;AACjE,SAAgB,gBAAgB,CAAC,MAAkB,EAAE,KAA2B,IAAU,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AACxH,SAAgB,mBAAmB,CAAC,MAAkB,EAAE,QAAqC;IACzF,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS;QACnB,OAAO,SAAS,CAAC;IACrB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1C,IAAI,OAAO,KAAK,SAAS;gBACrB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YAC1E,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACf,CAAC","sourcesContent":["import type { JudgeUsageAttachment } from \"../record/family/judge-usage/schema.ts\";\nimport type { EvalResult } from \"./types.ts\";\nimport type { AssertionEntryId } from \"../assertions/identity.ts\";\nconst captures = new WeakMap<EvalResult, JudgeUsageAttachment>();\nexport function retainJudgeUsage(result: EvalResult, value: JudgeUsageAttachment): void { captures.set(result, value); }\nexport function judgeUsageForResult(result: EvalResult, entryIds: readonly AssertionEntryId[]): JudgeUsageAttachment | undefined {\n const value = captures.get(result);\n if (value === undefined)\n return undefined;\n return Object.freeze({ ...value, calls: Object.freeze(value.calls.map((call) => {\n const entryId = entryIds[call.entryIndex];\n if (entryId === undefined)\n throw new Error(\"Judge usage references an unsealed Assertion entry\");\n return Object.freeze({ ...call, entryId });\n })) });\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import type { JudgeUsageAttachment } from "../record/family/judge-usage/schema.cjs";
2
+ import type { EvalResult } from "./types.cjs";
3
+ import type { AssertionEntryId } from "../assertions/identity.cjs";
4
+ export declare function retainJudgeUsage(result: EvalResult, value: JudgeUsageAttachment): void;
5
+ export declare function judgeUsageForResult(result: EvalResult, entryIds: readonly AssertionEntryId[]): JudgeUsageAttachment | undefined;
@@ -0,0 +1,5 @@
1
+ import type { JudgeUsageAttachment } from "../record/family/judge-usage/schema.mjs";
2
+ import type { EvalResult } from "./types.mjs";
3
+ import type { AssertionEntryId } from "../assertions/identity.mjs";
4
+ export declare function retainJudgeUsage(result: EvalResult, value: JudgeUsageAttachment): void;
5
+ export declare function judgeUsageForResult(result: EvalResult, entryIds: readonly AssertionEntryId[]): JudgeUsageAttachment | undefined;
@@ -0,0 +1,5 @@
1
+ import type { JudgeUsageAttachment } from "../record/family/judge-usage/schema.js";
2
+ import type { EvalResult } from "./types.js";
3
+ import type { AssertionEntryId } from "../assertions/identity.js";
4
+ export declare function retainJudgeUsage(result: EvalResult, value: JudgeUsageAttachment): void;
5
+ export declare function judgeUsageForResult(result: EvalResult, entryIds: readonly AssertionEntryId[]): JudgeUsageAttachment | undefined;
@@ -0,0 +1,8 @@
1
+ import { createRequire as __niceevalCreateRequire } from "node:module";
2
+ const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
+ const __niceevalCanonical = __niceevalRequire("./judge-usage.cjs");
4
+ const __niceevalExport0 = __niceevalCanonical["judgeUsageForResult"];
5
+ export { __niceevalExport0 as judgeUsageForResult };
6
+ const __niceevalExport1 = __niceevalCanonical["retainJudgeUsage"];
7
+ export { __niceevalExport1 as retainJudgeUsage };
8
+ //# sourceMappingURL=judge-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"judge-usage.js","sources":[],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"project-target.js","sourceRoot":"","sources":["project-target.ts"],"names":[],"mappings":"","sourcesContent":["import type { ExperimentFlags } from \"../shared/types.ts\";\nimport type { AdapterIdentity } from \"../record/model/run-context.ts\";\nimport type { EvaluationKind } from \"./types.ts\";\n/** The planned identity of one Eval in the current project. */\nexport interface ProjectCurrentEvalTarget {\n readonly id: string;\n readonly resultConfigHash: string;\n readonly fingerprint: string;\n readonly evaluationKind: EvaluationKind;\n}\n/**\n * The current identity of one Experiment after discovery and physical planning.\n * It is runner-owned planning data, not a durable Record model.\n */\nexport interface ProjectCurrentExperimentTarget {\n readonly id: string;\n readonly runConfigHash: string;\n readonly attempts: number;\n readonly adapter: AdapterIdentity;\n readonly model?: string;\n readonly reasoningEffort?: string;\n readonly flags: ExperimentFlags;\n readonly labels?: globalThis.Record<string, string | number>;\n readonly description?: string;\n readonly evals: readonly ProjectCurrentEvalTarget[];\n}\n/** The complete current target proven by one no-dispatch planning pass. */\nexport interface ProjectCurrentTarget {\n readonly plannedAt: string;\n readonly experiments: readonly ProjectCurrentExperimentTarget[];\n}\n"]}
1
+ {"version":3,"file":"project-target.js","sourceRoot":"","sources":["project-target.ts"],"names":[],"mappings":"","sourcesContent":["import type { ResolvedModelSlots } from \"../model-slots.ts\";\nimport type { ExperimentFlags } from \"../shared/types.ts\";\nimport type { AdapterIdentity } from \"../record/model/run-context.ts\";\nimport type { EvaluationKind } from \"./types.ts\";\n/** The planned identity of one Eval in the current project. */\nexport interface ProjectCurrentEvalTarget {\n readonly id: string;\n readonly resultConfigHash: string;\n readonly fingerprint: string;\n readonly evaluationKind: EvaluationKind;\n}\n/**\n * The current identity of one Experiment after discovery and physical planning.\n * It is runner-owned planning data, not a durable Record model.\n */\nexport interface ProjectCurrentExperimentTarget {\n readonly id: string;\n readonly runConfigHash: string;\n readonly attempts: number;\n readonly adapter: AdapterIdentity;\n readonly model?: string;\n readonly models?: ResolvedModelSlots;\n readonly reasoningEffort?: string;\n readonly flags: ExperimentFlags;\n readonly labels?: globalThis.Record<string, string | number>;\n readonly description?: string;\n readonly evals: readonly ProjectCurrentEvalTarget[];\n}\n/** The complete current target proven by one no-dispatch planning pass. */\nexport interface ProjectCurrentTarget {\n readonly plannedAt: string;\n readonly experiments: readonly ProjectCurrentExperimentTarget[];\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.cjs";
1
2
  import type { ExperimentFlags } from "../shared/types.cjs";
2
3
  import type { AdapterIdentity } from "../record/model/run-context.cjs";
3
4
  import type { EvaluationKind } from "./types.cjs";
@@ -18,6 +19,7 @@ export interface ProjectCurrentExperimentTarget {
18
19
  readonly attempts: number;
19
20
  readonly adapter: AdapterIdentity;
20
21
  readonly model?: string;
22
+ readonly models?: ResolvedModelSlots;
21
23
  readonly reasoningEffort?: string;
22
24
  readonly flags: ExperimentFlags;
23
25
  readonly labels?: globalThis.Record<string, string | number>;
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.mjs";
1
2
  import type { ExperimentFlags } from "../shared/types.mjs";
2
3
  import type { AdapterIdentity } from "../record/model/run-context.mjs";
3
4
  import type { EvaluationKind } from "./types.mjs";
@@ -18,6 +19,7 @@ export interface ProjectCurrentExperimentTarget {
18
19
  readonly attempts: number;
19
20
  readonly adapter: AdapterIdentity;
20
21
  readonly model?: string;
22
+ readonly models?: ResolvedModelSlots;
21
23
  readonly reasoningEffort?: string;
22
24
  readonly flags: ExperimentFlags;
23
25
  readonly labels?: globalThis.Record<string, string | number>;
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.js";
1
2
  import type { ExperimentFlags } from "../shared/types.js";
2
3
  import type { AdapterIdentity } from "../record/model/run-context.js";
3
4
  import type { EvaluationKind } from "./types.js";
@@ -18,6 +19,7 @@ export interface ProjectCurrentExperimentTarget {
18
19
  readonly attempts: number;
19
20
  readonly adapter: AdapterIdentity;
20
21
  readonly model?: string;
22
+ readonly models?: ResolvedModelSlots;
21
23
  readonly reasoningEffort?: string;
22
24
  readonly flags: ExperimentFlags;
23
25
  readonly labels?: globalThis.Record<string, string | number>;
@@ -50,6 +50,7 @@ function runContextFor(run, experimentId) {
50
50
  experimentId,
51
51
  execution: {
52
52
  adapter: (0, adapter_ts_1.adapterIdentity)(run.adapter),
53
+ ...(run.adapter.kind === "custom" ? { models: run.models ?? Object.freeze({}) } : {}),
53
54
  model: run.model ?? null,
54
55
  reasoningEffort: run.reasoningEffort ?? null,
55
56
  flags: run.flags,
@@ -1 +1 @@
1
- {"version":3,"file":"planning.js","sourceRoot":"","sources":["planning.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { adapterIdentity } from \"../../adapter.ts\";\nimport { slotExecutionIdentityDigestHex } from \"../execution-identity.ts\";\nimport { cacheKey } from \"../fingerprint.ts\";\nimport { selectedEvalsForRun } from \"../eval-selection.ts\";\nimport { resolveAttemptTimeout } from \"../timeout.ts\";\nimport { EXECUTION_DURATION_DOMAIN } from \"../../eval/record/eligibility.ts\";\nimport { projectTargetPolicyIdentity, type ExecutionDurationLimit, type ExecutionIdentity, type ProjectTargetPolicy, type TargetRun, type TargetSlot, } from \"../reuse-plan.ts\";\nimport type { AgentRun, Config, DiscoveredEval } from \"../types.ts\";\nimport { EvalIdSchema, ExecutionIdentityDigestSchema, ExperimentIdSchema, RunIdSchema, SlotIdSchema, UtcMillisSchema, } from \"../../record/codec/identifiers.ts\";\nimport type { RecordSlotIdentity } from \"../../record/model/core.ts\";\nimport { canonicalizeRunContext, type RunContext, } from \"../../record/model/run-context.ts\";\nimport { experimentHooksForRun } from \"./context.ts\";\nimport type { ExecutionIdentityDigest, ExperimentId, RunId, UtcMillis, } from \"../../record/model/identifiers.ts\";\n/** Current facts supplied by physical planning; Record never reconstructs them from history. */\nexport interface RunnerRecordReuseSlotInput {\n readonly renameFingerprint?: (experimentId: string) => string | undefined;\n readonly inputIdentity: ExecutionIdentity;\n readonly configIdentity: ExecutionIdentity;\n readonly timeout?: ExecutionDurationLimit;\n}\nexport interface RunnerRecordReuseInput {\n readonly policy: ProjectTargetPolicy;\n readonly slotsByKey: ReadonlyMap<string, RunnerRecordReuseSlotInput>;\n}\nexport interface RunnerRecordReusePreparationInput {\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly config: Pick<Config, \"timeoutMs\">;\n readonly plannedFingerprints: ReadonlyMap<string, string>;\n readonly renameFingerprintsByKey?: ReadonlyMap<string, (experimentId: string) => string | undefined>;\n readonly plannedConfigHashes: ReadonlyMap<string, string>;\n readonly rerun?: \"failed\" | \"all\";\n readonly keepSandbox?: \"failed\" | \"all\";\n}\nexport interface RunnerRecordTargetInputMissing {\n readonly code: \"runner-record-target-input-missing\";\n readonly key: string;\n}\nexport interface RunnerRecordTargetIdentityInvalid {\n readonly code: \"runner-record-target-identity-invalid\";\n readonly kind: \"invocation\" | \"slot\" | \"experiment\" | \"eval\" | \"digest\" | \"context\";\n readonly value: string;\n}\nexport interface PlannedRunnerRecordSlot {\n readonly evalDef: DiscoveredEval;\n readonly attempt: number;\n readonly slot: RecordSlotIdentity;\n readonly reuse: RunnerRecordReuseSlotInput;\n}\nexport interface PlannedRunnerRecordRun {\n readonly run: AgentRun;\n readonly experimentId: ExperimentId;\n readonly context: RunContext;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n readonly slots: ReadonlyMap<string, PlannedRunnerRecordSlot>;\n readonly slotEntries: readonly PlannedRunnerRecordSlot[];\n}\nconst runnerReuseContract = Object.freeze({\n domain: \"niceeval.reuse/base-v1\",\n value: \"project-target/v1\",\n});\nexport function runnerRecordSlotKey(evalId: string, attempt: number): string {\n return `${evalId}\\u0000${attempt}`;\n}\nfunction decodeId<Id>(input: {\n readonly schema: Schema.Codec<Id, string>;\n readonly value: string;\n readonly kind: RunnerRecordTargetIdentityInvalid[\"kind\"];\n}): Result.Result<Id, RunnerRecordTargetIdentityInvalid> {\n const decoded = Schema.decodeUnknownResult(input.schema)(input.value);\n return Result.isFailure(decoded)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: input.kind,\n value: input.value,\n }))\n : Result.succeed(decoded.success);\n}\nexport function runnerRecordUtcMillis(value: number): Result.Result<UtcMillis, RunnerRecordTargetIdentityInvalid> {\n const decoded = Schema.decodeUnknownResult(UtcMillisSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"invocation\" as const,\n value: String(value),\n }))\n : Result.succeed(decoded.success);\n}\nfunction runContextFor(run: AgentRun, experimentId: ExperimentId): Result.Result<RunContext, RunnerRecordTargetIdentityInvalid> {\n const context = canonicalizeRunContext({\n experimentId,\n execution: {\n adapter: adapterIdentity(run.adapter),\n model: run.model ?? null,\n reasoningEffort: run.reasoningEffort ?? null,\n flags: run.flags,\n experimentHooks: experimentHooksForRun(run),\n },\n labels: run.labels ?? {},\n });\n return Result.isFailure(context)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"context\" as const,\n value: `invalid Run context for ${run.experimentId}`,\n }))\n : Result.succeed(context.success);\n}\nfunction executionIdentityDigest(input: {\n readonly run: AgentRun;\n readonly eval: DiscoveredEval;\n readonly attempt: number;\n readonly reuse: RunnerRecordReuseSlotInput;\n}): Result.Result<ExecutionIdentityDigest, RunnerRecordTargetIdentityInvalid> {\n const value = slotExecutionIdentityDigestHex({\n experimentId: input.run.experimentId,\n evalId: input.eval.id,\n attempt: input.attempt,\n input: { domain: input.reuse.inputIdentity.domain, value: input.reuse.inputIdentity.value },\n config: { domain: input.reuse.configIdentity.domain, value: input.reuse.configIdentity.value },\n timeout: input.reuse.timeout === undefined\n ? null\n : { domain: input.reuse.timeout.domain, milliseconds: input.reuse.timeout.milliseconds },\n });\n return decodeId({ schema: ExecutionIdentityDigestSchema, value, kind: \"digest\" });\n}\nexport function prepareRunnerRecordReuse(input: RunnerRecordReusePreparationInput): Effect.Effect<RunnerRecordReuseInput, RunnerRecordTargetInputMissing> {\n return Effect.suspend(() => {\n const slotsByKey = new Map<string, RunnerRecordReuseSlotInput>();\n for (const run of input.runs) {\n for (const evalDef of selectedEvalsForRun(input.evals, run)) {\n const key = cacheKey(run, evalDef.id);\n const fingerprint = input.plannedFingerprints.get(key);\n const configHash = input.plannedConfigHashes.get(key);\n if (fingerprint === undefined || configHash === undefined) {\n return Effect.fail({ code: \"runner-record-target-input-missing\" as const, key });\n }\n const timeout = resolveAttemptTimeout(run, evalDef, input.config);\n const renameFingerprint = input.renameFingerprintsByKey?.get(key);\n slotsByKey.set(key, Object.freeze({\n ...(renameFingerprint === undefined ? {} : { renameFingerprint }),\n inputIdentity: Object.freeze({\n domain: \"niceeval.input/fingerprint-v1\",\n value: fingerprint,\n }),\n configIdentity: Object.freeze({\n domain: \"niceeval.config/identity-v1\",\n value: configHash,\n }),\n ...(timeout === undefined ? {} : {\n timeout: Object.freeze({\n domain: EXECUTION_DURATION_DOMAIN,\n milliseconds: timeout.timeoutMs,\n }),\n }),\n }));\n }\n }\n return Effect.succeed(Object.freeze({\n policy: Object.freeze({\n identity: projectTargetPolicyIdentity,\n reuseContract: Object.freeze({ ...runnerReuseContract }),\n rerun: input.rerun ?? \"none\",\n keepSandbox: input.keepSandbox !== undefined,\n }),\n slotsByKey: new Map(slotsByKey),\n }));\n });\n}\nexport function planRunnerRecordRun(input: {\n readonly run: AgentRun;\n readonly evals: readonly DiscoveredEval[];\n readonly reuse: RunnerRecordReuseInput;\n}): Effect.Effect<PlannedRunnerRecordRun, RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid> {\n return Effect.suspend<PlannedRunnerRecordRun, RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid, never>(() => {\n const experimentId = decodeId({\n schema: ExperimentIdSchema,\n value: input.run.experimentId,\n kind: \"experiment\",\n });\n if (Result.isFailure(experimentId))\n return Effect.fail(experimentId.failure);\n const context = runContextFor(input.run, experimentId.success);\n if (Result.isFailure(context))\n return Effect.fail(context.failure);\n const slots = new Map<string, PlannedRunnerRecordSlot>();\n const entries: PlannedRunnerRecordSlot[] = [];\n for (const evalDef of selectedEvalsForRun(input.evals, input.run)) {\n const reuse = input.reuse.slotsByKey.get(cacheKey(input.run, evalDef.id));\n if (reuse === undefined) {\n return Effect.fail({\n code: \"runner-record-target-input-missing\" as const,\n key: cacheKey(input.run, evalDef.id),\n });\n }\n const evalId = decodeId({ schema: EvalIdSchema, value: evalDef.id, kind: \"eval\" });\n if (Result.isFailure(evalId))\n return Effect.fail(evalId.failure);\n for (let attempt = 0; attempt < input.run.attempts; attempt += 1) {\n const digest = executionIdentityDigest({ run: input.run, eval: evalDef, attempt, reuse });\n if (Result.isFailure(digest))\n return Effect.fail(digest.failure);\n const slotId = decodeId({\n schema: SlotIdSchema,\n value: `slot-${digest.success}`,\n kind: \"slot\",\n });\n if (Result.isFailure(slotId))\n return Effect.fail(slotId.failure);\n const key = runnerRecordSlotKey(evalDef.id, attempt);\n if (slots.has(key)) {\n return Effect.fail({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"slot\" as const,\n value: key,\n });\n }\n const entry = Object.freeze({\n evalDef,\n attempt,\n slot: Object.freeze({\n slotId: slotId.success,\n evalId: evalId.success,\n attemptOrdinal: attempt,\n executionIdentityDigest: digest.success,\n }),\n reuse,\n });\n slots.set(key, entry);\n entries.push(entry);\n }\n }\n return Effect.succeed(Object.freeze({\n run: input.run,\n experimentId: experimentId.success,\n context: context.success,\n expectedSlots: Object.freeze([...entries]\n .map((entry) => entry.slot)\n .sort((left, right) => left.slotId < right.slotId ? -1 : left.slotId > right.slotId ? 1 : 0)),\n slots,\n slotEntries: Object.freeze(entries),\n }));\n });\n}\nexport function previewRunnerRunId(run: AgentRun): Result.Result<RunId, RunnerRecordTargetIdentityInvalid> {\n const hash = createHash(\"sha256\").update(run.experimentId, \"utf8\").digest(\"hex\");\n return decodeId({ schema: RunIdSchema, value: `preview-${hash}`, kind: \"invocation\" });\n}\nexport function targetForRunnerRecordRun(input: {\n readonly planned: PlannedRunnerRecordRun;\n readonly runId: RunId;\n readonly startedAt: UtcMillis;\n}): TargetRun {\n return Object.freeze({\n runId: input.runId,\n experimentId: input.planned.run.experimentId,\n startedAt: input.startedAt,\n slots: Object.freeze(input.planned.slotEntries.map((entry) => Object.freeze({\n runId: input.runId,\n slotId: entry.slot.slotId,\n experimentId: input.planned.run.experimentId,\n evalId: entry.evalDef.id,\n attempt: entry.attempt,\n evaluationKind: entry.evalDef.evaluationKind,\n executionIdentityDigest: entry.slot.executionIdentityDigest,\n inputIdentity: entry.reuse.inputIdentity,\n configIdentity: entry.reuse.configIdentity,\n ...(entry.reuse.renameFingerprint === undefined ? {} : { renameFingerprint: entry.reuse.renameFingerprint }),\n ...(entry.reuse.timeout === undefined ? {} : { timeout: entry.reuse.timeout }),\n ...(input.planned.run.adapter.kind === \"custom\"\n && input.planned.run.adapter.behaviorRevision === null\n ? { reuseEligibility: \"adapter-behavior-revision-required\" as const }\n : {}),\n } satisfies TargetSlot))),\n });\n}\n"]}
1
+ {"version":3,"file":"planning.js","sourceRoot":"","sources":["planning.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { adapterIdentity } from \"../../adapter.ts\";\nimport { slotExecutionIdentityDigestHex } from \"../execution-identity.ts\";\nimport { cacheKey } from \"../fingerprint.ts\";\nimport { selectedEvalsForRun } from \"../eval-selection.ts\";\nimport { resolveAttemptTimeout } from \"../timeout.ts\";\nimport { EXECUTION_DURATION_DOMAIN } from \"../../eval/record/eligibility.ts\";\nimport { projectTargetPolicyIdentity, type ExecutionDurationLimit, type ExecutionIdentity, type ProjectTargetPolicy, type TargetRun, type TargetSlot, } from \"../reuse-plan.ts\";\nimport type { AgentRun, Config, DiscoveredEval } from \"../types.ts\";\nimport { EvalIdSchema, ExecutionIdentityDigestSchema, ExperimentIdSchema, RunIdSchema, SlotIdSchema, UtcMillisSchema, } from \"../../record/codec/identifiers.ts\";\nimport type { RecordSlotIdentity } from \"../../record/model/core.ts\";\nimport { canonicalizeRunContext, type RunContext, } from \"../../record/model/run-context.ts\";\nimport { experimentHooksForRun } from \"./context.ts\";\nimport type { ExecutionIdentityDigest, ExperimentId, RunId, UtcMillis, } from \"../../record/model/identifiers.ts\";\n/** Current facts supplied by physical planning; Record never reconstructs them from history. */\nexport interface RunnerRecordReuseSlotInput {\n readonly renameFingerprint?: (experimentId: string) => string | undefined;\n readonly inputIdentity: ExecutionIdentity;\n readonly configIdentity: ExecutionIdentity;\n readonly timeout?: ExecutionDurationLimit;\n}\nexport interface RunnerRecordReuseInput {\n readonly policy: ProjectTargetPolicy;\n readonly slotsByKey: ReadonlyMap<string, RunnerRecordReuseSlotInput>;\n}\nexport interface RunnerRecordReusePreparationInput {\n readonly evals: readonly DiscoveredEval[];\n readonly runs: readonly AgentRun[];\n readonly config: Pick<Config, \"timeoutMs\">;\n readonly plannedFingerprints: ReadonlyMap<string, string>;\n readonly renameFingerprintsByKey?: ReadonlyMap<string, (experimentId: string) => string | undefined>;\n readonly plannedConfigHashes: ReadonlyMap<string, string>;\n readonly rerun?: \"failed\" | \"all\";\n readonly keepSandbox?: \"failed\" | \"all\";\n}\nexport interface RunnerRecordTargetInputMissing {\n readonly code: \"runner-record-target-input-missing\";\n readonly key: string;\n}\nexport interface RunnerRecordTargetIdentityInvalid {\n readonly code: \"runner-record-target-identity-invalid\";\n readonly kind: \"invocation\" | \"slot\" | \"experiment\" | \"eval\" | \"digest\" | \"context\";\n readonly value: string;\n}\nexport interface PlannedRunnerRecordSlot {\n readonly evalDef: DiscoveredEval;\n readonly attempt: number;\n readonly slot: RecordSlotIdentity;\n readonly reuse: RunnerRecordReuseSlotInput;\n}\nexport interface PlannedRunnerRecordRun {\n readonly run: AgentRun;\n readonly experimentId: ExperimentId;\n readonly context: RunContext;\n readonly expectedSlots: readonly RecordSlotIdentity[];\n readonly slots: ReadonlyMap<string, PlannedRunnerRecordSlot>;\n readonly slotEntries: readonly PlannedRunnerRecordSlot[];\n}\nconst runnerReuseContract = Object.freeze({\n domain: \"niceeval.reuse/base-v1\",\n value: \"project-target/v1\",\n});\nexport function runnerRecordSlotKey(evalId: string, attempt: number): string {\n return `${evalId}\\u0000${attempt}`;\n}\nfunction decodeId<Id>(input: {\n readonly schema: Schema.Codec<Id, string>;\n readonly value: string;\n readonly kind: RunnerRecordTargetIdentityInvalid[\"kind\"];\n}): Result.Result<Id, RunnerRecordTargetIdentityInvalid> {\n const decoded = Schema.decodeUnknownResult(input.schema)(input.value);\n return Result.isFailure(decoded)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: input.kind,\n value: input.value,\n }))\n : Result.succeed(decoded.success);\n}\nexport function runnerRecordUtcMillis(value: number): Result.Result<UtcMillis, RunnerRecordTargetIdentityInvalid> {\n const decoded = Schema.decodeUnknownResult(UtcMillisSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"invocation\" as const,\n value: String(value),\n }))\n : Result.succeed(decoded.success);\n}\nfunction runContextFor(run: AgentRun, experimentId: ExperimentId): Result.Result<RunContext, RunnerRecordTargetIdentityInvalid> {\n const context = canonicalizeRunContext({\n experimentId,\n execution: {\n adapter: adapterIdentity(run.adapter),\n ...(run.adapter.kind === \"custom\" ? { models: run.models ?? Object.freeze({}) } : {}),\n model: run.model ?? null,\n reasoningEffort: run.reasoningEffort ?? null,\n flags: run.flags,\n experimentHooks: experimentHooksForRun(run),\n },\n labels: run.labels ?? {},\n });\n return Result.isFailure(context)\n ? Result.fail(Object.freeze({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"context\" as const,\n value: `invalid Run context for ${run.experimentId}`,\n }))\n : Result.succeed(context.success);\n}\nfunction executionIdentityDigest(input: {\n readonly run: AgentRun;\n readonly eval: DiscoveredEval;\n readonly attempt: number;\n readonly reuse: RunnerRecordReuseSlotInput;\n}): Result.Result<ExecutionIdentityDigest, RunnerRecordTargetIdentityInvalid> {\n const value = slotExecutionIdentityDigestHex({\n experimentId: input.run.experimentId,\n evalId: input.eval.id,\n attempt: input.attempt,\n input: { domain: input.reuse.inputIdentity.domain, value: input.reuse.inputIdentity.value },\n config: { domain: input.reuse.configIdentity.domain, value: input.reuse.configIdentity.value },\n timeout: input.reuse.timeout === undefined\n ? null\n : { domain: input.reuse.timeout.domain, milliseconds: input.reuse.timeout.milliseconds },\n });\n return decodeId({ schema: ExecutionIdentityDigestSchema, value, kind: \"digest\" });\n}\nexport function prepareRunnerRecordReuse(input: RunnerRecordReusePreparationInput): Effect.Effect<RunnerRecordReuseInput, RunnerRecordTargetInputMissing> {\n return Effect.suspend(() => {\n const slotsByKey = new Map<string, RunnerRecordReuseSlotInput>();\n for (const run of input.runs) {\n for (const evalDef of selectedEvalsForRun(input.evals, run)) {\n const key = cacheKey(run, evalDef.id);\n const fingerprint = input.plannedFingerprints.get(key);\n const configHash = input.plannedConfigHashes.get(key);\n if (fingerprint === undefined || configHash === undefined) {\n return Effect.fail({ code: \"runner-record-target-input-missing\" as const, key });\n }\n const timeout = resolveAttemptTimeout(run, evalDef, input.config);\n const renameFingerprint = input.renameFingerprintsByKey?.get(key);\n slotsByKey.set(key, Object.freeze({\n ...(renameFingerprint === undefined ? {} : { renameFingerprint }),\n inputIdentity: Object.freeze({\n domain: \"niceeval.input/fingerprint-v1\",\n value: fingerprint,\n }),\n configIdentity: Object.freeze({\n domain: \"niceeval.config/identity-v1\",\n value: configHash,\n }),\n ...(timeout === undefined ? {} : {\n timeout: Object.freeze({\n domain: EXECUTION_DURATION_DOMAIN,\n milliseconds: timeout.timeoutMs,\n }),\n }),\n }));\n }\n }\n return Effect.succeed(Object.freeze({\n policy: Object.freeze({\n identity: projectTargetPolicyIdentity,\n reuseContract: Object.freeze({ ...runnerReuseContract }),\n rerun: input.rerun ?? \"none\",\n keepSandbox: input.keepSandbox !== undefined,\n }),\n slotsByKey: new Map(slotsByKey),\n }));\n });\n}\nexport function planRunnerRecordRun(input: {\n readonly run: AgentRun;\n readonly evals: readonly DiscoveredEval[];\n readonly reuse: RunnerRecordReuseInput;\n}): Effect.Effect<PlannedRunnerRecordRun, RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid> {\n return Effect.suspend<PlannedRunnerRecordRun, RunnerRecordTargetInputMissing | RunnerRecordTargetIdentityInvalid, never>(() => {\n const experimentId = decodeId({\n schema: ExperimentIdSchema,\n value: input.run.experimentId,\n kind: \"experiment\",\n });\n if (Result.isFailure(experimentId))\n return Effect.fail(experimentId.failure);\n const context = runContextFor(input.run, experimentId.success);\n if (Result.isFailure(context))\n return Effect.fail(context.failure);\n const slots = new Map<string, PlannedRunnerRecordSlot>();\n const entries: PlannedRunnerRecordSlot[] = [];\n for (const evalDef of selectedEvalsForRun(input.evals, input.run)) {\n const reuse = input.reuse.slotsByKey.get(cacheKey(input.run, evalDef.id));\n if (reuse === undefined) {\n return Effect.fail({\n code: \"runner-record-target-input-missing\" as const,\n key: cacheKey(input.run, evalDef.id),\n });\n }\n const evalId = decodeId({ schema: EvalIdSchema, value: evalDef.id, kind: \"eval\" });\n if (Result.isFailure(evalId))\n return Effect.fail(evalId.failure);\n for (let attempt = 0; attempt < input.run.attempts; attempt += 1) {\n const digest = executionIdentityDigest({ run: input.run, eval: evalDef, attempt, reuse });\n if (Result.isFailure(digest))\n return Effect.fail(digest.failure);\n const slotId = decodeId({\n schema: SlotIdSchema,\n value: `slot-${digest.success}`,\n kind: \"slot\",\n });\n if (Result.isFailure(slotId))\n return Effect.fail(slotId.failure);\n const key = runnerRecordSlotKey(evalDef.id, attempt);\n if (slots.has(key)) {\n return Effect.fail({\n code: \"runner-record-target-identity-invalid\" as const,\n kind: \"slot\" as const,\n value: key,\n });\n }\n const entry = Object.freeze({\n evalDef,\n attempt,\n slot: Object.freeze({\n slotId: slotId.success,\n evalId: evalId.success,\n attemptOrdinal: attempt,\n executionIdentityDigest: digest.success,\n }),\n reuse,\n });\n slots.set(key, entry);\n entries.push(entry);\n }\n }\n return Effect.succeed(Object.freeze({\n run: input.run,\n experimentId: experimentId.success,\n context: context.success,\n expectedSlots: Object.freeze([...entries]\n .map((entry) => entry.slot)\n .sort((left, right) => left.slotId < right.slotId ? -1 : left.slotId > right.slotId ? 1 : 0)),\n slots,\n slotEntries: Object.freeze(entries),\n }));\n });\n}\nexport function previewRunnerRunId(run: AgentRun): Result.Result<RunId, RunnerRecordTargetIdentityInvalid> {\n const hash = createHash(\"sha256\").update(run.experimentId, \"utf8\").digest(\"hex\");\n return decodeId({ schema: RunIdSchema, value: `preview-${hash}`, kind: \"invocation\" });\n}\nexport function targetForRunnerRecordRun(input: {\n readonly planned: PlannedRunnerRecordRun;\n readonly runId: RunId;\n readonly startedAt: UtcMillis;\n}): TargetRun {\n return Object.freeze({\n runId: input.runId,\n experimentId: input.planned.run.experimentId,\n startedAt: input.startedAt,\n slots: Object.freeze(input.planned.slotEntries.map((entry) => Object.freeze({\n runId: input.runId,\n slotId: entry.slot.slotId,\n experimentId: input.planned.run.experimentId,\n evalId: entry.evalDef.id,\n attempt: entry.attempt,\n evaluationKind: entry.evalDef.evaluationKind,\n executionIdentityDigest: entry.slot.executionIdentityDigest,\n inputIdentity: entry.reuse.inputIdentity,\n configIdentity: entry.reuse.configIdentity,\n ...(entry.reuse.renameFingerprint === undefined ? {} : { renameFingerprint: entry.reuse.renameFingerprint }),\n ...(entry.reuse.timeout === undefined ? {} : { timeout: entry.reuse.timeout }),\n ...(input.planned.run.adapter.kind === \"custom\"\n && input.planned.run.adapter.behaviorRevision === null\n ? { reuseEligibility: \"adapter-behavior-revision-required\" as const }\n : {}),\n } satisfies TargetSlot))),\n });\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.prepareRunnerRecordReuse = void 0;
4
4
  exports.withRunnerCurrentReusePreview = withRunnerCurrentReusePreview;
5
5
  exports.openRunnerRecordCoordinator = openRunnerRecordCoordinator;
6
+ const judge_usage_ts_1 = require("./judge-usage.cjs");
6
7
  const node_crypto_1 = require("node:crypto");
7
8
  const node_fs_1 = require("node:fs");
8
9
  const effect_1 = require("effect");
@@ -402,6 +403,9 @@ function openRunnerRecordCoordinator(input) {
402
403
  }
403
404
  const attachmentSnapshot = (0, adapter_attachments_ts_1.adapterAttachmentsForResult)(result);
404
405
  const artifacts = (0, attachments_ts_1.createAttemptArtifactsAttachment)(result, attachmentSnapshot);
406
+ const judgeUsage = (0, judge_usage_ts_1.judgeUsageForResult)(result, closedAssertions.success.entryIds);
407
+ if (judgeUsage !== undefined)
408
+ yield* active.session.records.write(catalog_ts_1.NiceEvalRecordAttachments.judgeUsage, judgeUsage);
405
409
  const adapterUsage = (0, adapter_usage_ts_1.adapterUsageForResult)(result);
406
410
  const executionTraces = (0, adapter_execution_trace_ts_1.adapterExecutionTracesForResult)(result);
407
411
  if (adapterUsage !== undefined) {