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
@@ -33,6 +33,10 @@ function freezeConfigIdentity(identity) {
33
33
  return Object.freeze({
34
34
  ...withoutSharedState,
35
35
  adapter: Object.freeze({ ...identity.adapter }),
36
+ ...(identity.models === undefined ? {} : { models: Object.freeze({
37
+ version: 1,
38
+ slots: Object.freeze(Object.fromEntries(Object.entries(identity.models.slots).map(([key, value]) => [key, Object.freeze({ ...value })]))),
39
+ }) }),
36
40
  model: Object.freeze(identity.model),
37
41
  reasoningEffort: Object.freeze(identity.reasoningEffort),
38
42
  flags: freezeJson({ ...identity.flags }),
@@ -115,6 +119,7 @@ function judgeIdentity(judge) {
115
119
  function configIdentityForRun(run, plan, judge = undefined) {
116
120
  return freezeConfigIdentity({
117
121
  adapter: (0, adapter_ts_1.adapterIdentity)(run.adapter),
122
+ ...(run.adapter.kind === "custom" ? { models: { version: 1, slots: run.models ?? Object.freeze({}) } } : {}),
118
123
  model: declaredString(run.model),
119
124
  reasoningEffort: declaredString(run.reasoningEffort),
120
125
  flags: run.flags,
@@ -136,6 +141,7 @@ function configIdentityFromResult(result) {
136
141
  return undefined;
137
142
  return freezeConfigIdentity({
138
143
  adapter: result.adapter,
144
+ ...(exp.models === undefined ? {} : { models: { version: 1, slots: exp.models } }),
139
145
  model: declaredString(result.model),
140
146
  reasoningEffort: declaredString(exp.reasoningEffort),
141
147
  flags: exp.flags ?? {},
@@ -160,6 +166,15 @@ function flatten(identity) {
160
166
  put("adapter.name", identity.adapter.name);
161
167
  put("adapter.contract", identity.adapter.contract);
162
168
  put("adapter.behaviorRevision", identity.adapter.behaviorRevision);
169
+ if (identity.adapter.cleanupTimeoutMs !== undefined)
170
+ put("adapter.cleanupTimeoutMs", identity.adapter.cleanupTimeoutMs);
171
+ if (identity.models !== undefined) {
172
+ put("models.version", identity.models.version);
173
+ for (const [slot, selection] of Object.entries(identity.models.slots)) {
174
+ put(`models.${slot}.model`, selection.model);
175
+ put(`models.${slot}.reasoningEffort`, selection.reasoningEffort);
176
+ }
177
+ }
163
178
  putDeclared("model", identity.model);
164
179
  putDeclared("reasoningEffort", identity.reasoningEffort);
165
180
  put("sandboxReuse", identity.sandboxReuse);
@@ -259,8 +274,9 @@ function counterfactualConfigIdentity(current, historical, accepted) {
259
274
  let judgeRuntime = current.judgeRuntime;
260
275
  let agentInstalls = current.agentInstalls;
261
276
  let adapter = current.adapter;
277
+ let models = current.models;
262
278
  const rollbackGroups = [
263
- "adapter", "sandboxLayer", "plugins", "judgeRuntime", "agentInstalls",
279
+ "adapter", "sandboxLayer", "plugins", "judgeRuntime", "agentInstalls", "models",
264
280
  ];
265
281
  for (const group of rollbackGroups) {
266
282
  const paths = [...differing].filter((selector) => selector === `config:${group}` || selector.startsWith(`config:${group}.`));
@@ -274,12 +290,15 @@ function counterfactualConfigIdentity(current, historical, accepted) {
274
290
  plugins = historical.plugins;
275
291
  else if (group === "judgeRuntime")
276
292
  judgeRuntime = historical.judgeRuntime;
293
+ else if (group === "models")
294
+ models = historical.models;
277
295
  else
278
296
  agentInstalls = historical.agentInstalls;
279
297
  }
280
298
  const sharedState = accepted.has("config:sharedState.key") ? historical.sharedState : current.sharedState;
281
299
  return freezeConfigIdentity({
282
300
  adapter,
301
+ ...(models === undefined ? {} : { models }),
283
302
  model: accepted.has("config:model") ? historical.model : current.model,
284
303
  reasoningEffort: accepted.has("config:reasoningEffort")
285
304
  ? historical.reasoningEffort
@@ -1 +1 @@
1
- {"version":3,"file":"config-identity.js","sourceRoot":"","sources":["config-identity.ts"],"names":[],"mappings":"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","sourcesContent":["// 配置身份的字段级投影:`configHash` 的哈希输入本身,加上「同一份输入怎样按字段路径比对」。\n//\n// 哈希只回答「等不等」,回答不了「哪里变了」。`--accept config:<字段路径>` 与 `--dry` 的逐条\n// 作废原因都要后一个答案,而两侧必须来自同一份字段集合——configHash 里有的字段,这里就能按\n// 点路径指名;这里指不出来的路径,`--accept` 也就没有对应的差异可授权。\n//\n// 历史侧的同名投影从落盘重建(`ExperimentRunInfo` + 结果顶层的 adapter/model),这正是\n// 「进 configHash 的字段必须落进 run.json」那条规则存在的理由。\nimport type { LinkedRunPlan } from \"../sandbox/plan.ts\";\nimport { sandboxLayerIdentityFor } from \"../sandbox/link.ts\";\nimport type { AgentIdentity, AgentInstaller } from \"../agents/types.ts\";\nimport type { EvalResult, JsonValue, ResolvedJudgeConfig } from \"../types.ts\";\nimport type { AgentRun } from \"./types.ts\";\nimport { adapterIdentity } from \"../adapter.ts\";\nimport type { AdapterIdentity } from \"../record/model/run-context.ts\";\n/**\n * 一次运行的**配置身份**:`computeConfigHash` 的哈希输入,字段集合与\n * docs/feature/experiments/cache.md「指纹:两个哈希嵌套」逐字对应。\n *\n * 可选配置必须真的省略键,而不是写入 `undefined` 或一个 Omitted 哨兵;否则未声明配置会\n * 无端改变基础 configHash。新增公开配置字段时只在这里裁决一次「进不进 configHash」。\n */\nexport interface ConfigIdentity {\n readonly adapter: AdapterIdentity;\n readonly model: DeclaredConfigValue<string>;\n readonly reasoningEffort: DeclaredConfigValue<string>;\n readonly flags: Readonly<globalThis.Record<string, JsonValue>>;\n /** Credential-free Experiment Plugin and receiver behavior. */\n readonly plugins: JsonValue;\n readonly sandboxReuse: boolean;\n /** Stable public key for the shared-state mutex, never a secret or stored state. */\n readonly sharedState?: string;\n /** Experiment 作者 layer 身份;物理 provider plan 属于逐 Eval fingerprint,不进入 Run 级身份。 */\n readonly sandboxLayer: JsonValue;\n readonly judgeRuntime: JudgeConfigIdentity;\n /** 声明顺序、精确 installer 配对、安装模式与计划目标平台的完整静态身份。 */\n readonly agentInstalls: readonly JsonValue[];\n}\nexport type DeclaredConfigValue<Value> = {\n readonly _tag: \"Omitted\";\n} | {\n readonly _tag: \"Configured\";\n readonly value: Value;\n};\nexport type JudgeConfigIdentity = {\n readonly _tag: \"Unconfigured\";\n} | {\n readonly _tag: \"Configured\";\n readonly provider: ResolvedJudgeConfig[\"provider\"];\n readonly model: string;\n readonly baseUrl: string;\n readonly credential: ResolvedJudgeConfig[\"credential\"];\n readonly timeoutMs: number;\n readonly maxResponseBytes: number;\n readonly supportsImages?: boolean;\n readonly protocol: ResolvedJudgeConfig[\"protocol\"];\n};\n/** manifest 相减得出的一条具名差异;`selector` 原样可复制进 `--accept`。 */\nexport type ConfigFieldDelta = {\n readonly _tag: \"Added\";\n readonly selector: string;\n readonly from?: never;\n readonly to: string;\n} | {\n readonly _tag: \"Removed\";\n readonly selector: string;\n readonly from: string;\n readonly to?: never;\n} | {\n readonly _tag: \"Changed\";\n readonly selector: string;\n readonly from: string;\n readonly to: string;\n};\nexport function addedConfigField(selector: string, to: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Added\", selector, to });\n}\nexport function removedConfigField(selector: string, from: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Removed\", selector, from });\n}\nexport function changedConfigField(selector: string, from: string, to: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Changed\", selector, from, to });\n}\nfunction freezeJson<Value extends JsonValue>(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) => freezeJson(entry))) as Value;\n }\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, freezeJson(entry)]))) as Value;\n}\nfunction freezeConfigIdentity(identity: ConfigIdentity): ConfigIdentity {\n const { sharedState, ...withoutSharedState } = identity;\n return Object.freeze({\n ...withoutSharedState,\n adapter: Object.freeze({ ...identity.adapter }),\n model: Object.freeze(identity.model),\n reasoningEffort: Object.freeze(identity.reasoningEffort),\n flags: freezeJson({ ...identity.flags }),\n plugins: freezeJson(identity.plugins),\n ...(sharedState === undefined ? {} : { sharedState }),\n sandboxLayer: freezeJson(identity.sandboxLayer),\n judgeRuntime: identity.judgeRuntime._tag === \"Unconfigured\"\n ? Object.freeze({ _tag: \"Unconfigured\" as const })\n : Object.freeze({\n _tag: \"Configured\" as const,\n provider: identity.judgeRuntime.provider,\n model: identity.judgeRuntime.model,\n baseUrl: identity.judgeRuntime.baseUrl,\n credential: Object.freeze({ ...identity.judgeRuntime.credential }),\n timeoutMs: Object.freeze(identity.judgeRuntime.timeoutMs),\n maxResponseBytes: Object.freeze(identity.judgeRuntime.maxResponseBytes),\n ...(identity.judgeRuntime.supportsImages === true ? { supportsImages: true } : {}),\n protocol: Object.freeze({ ...identity.judgeRuntime.protocol }),\n }),\n agentInstalls: Object.freeze(identity.agentInstalls.map((entry) => freezeJson(entry))),\n });\n}\nfunction sameAgentIdentity(left: AgentIdentity, right: AgentIdentity): boolean {\n return left.agent === right.agent && left.version === right.version && left.revision === right.revision;\n}\nfunction installerIdentity(installer: AgentInstaller | undefined): JsonValue {\n if (installer === undefined)\n return { _tag: \"Missing\" };\n return {\n _tag: \"Matched\",\n identity: {\n agent: installer.identity.agent,\n version: installer.identity.version,\n revision: installer.identity.revision,\n },\n installMode: installer.installMode,\n platforms: installer.platforms === undefined\n ? { _tag: \"All\" }\n : { _tag: \"Listed\", values: [...installer.platforms] },\n };\n}\n/** 计划期一次性冻结全部 ensure/installer 配对;运行事实与 staged digest 不反写配置身份。 */\nexport function agentInstallPlansForRun(run: AgentRun): readonly JsonValue[] {\n if (run.adapter.kind === \"custom\")\n return Object.freeze([]);\n const agent = run.agent;\n if (agent === undefined)\n throw new Error(\"Agent AdapterRun requires its Agent execution implementation.\");\n if (agent.kind === \"direct\")\n return Object.freeze([]);\n return Object.freeze(agent.ensure.map((ensure, index) => freezeJson({\n order: index,\n ensure: {\n agent: ensure.identity.agent,\n version: ensure.identity.version,\n revision: ensure.identity.revision,\n },\n installer: installerIdentity(agent.installers.find((candidate) => sameAgentIdentity(candidate.identity, ensure.identity))),\n })));\n}\nfunction declaredString(value: string | undefined): DeclaredConfigValue<string> {\n return value === undefined ? { _tag: \"Omitted\" } : { _tag: \"Configured\", value };\n}\nfunction judgeIdentity(judge: ResolvedJudgeConfig | undefined): JudgeConfigIdentity {\n return judge === undefined\n ? { _tag: \"Unconfigured\" }\n : {\n _tag: \"Configured\",\n provider: judge.provider,\n model: judge.model,\n baseUrl: judge.baseUrl,\n credential: judge.credential,\n timeoutMs: judge.timeoutMs,\n maxResponseBytes: judge.maxResponseBytes,\n ...(judge.supportsImages === true ? { supportsImages: true } : {}),\n protocol: judge.protocol,\n };\n}\n/** 本次解析后配置的身份投影。 */\nexport function configIdentityForRun(run: AgentRun, plan: LinkedRunPlan, judge: ResolvedJudgeConfig | undefined = undefined): ConfigIdentity {\n return freezeConfigIdentity({\n adapter: adapterIdentity(run.adapter),\n model: declaredString(run.model),\n reasoningEffort: declaredString(run.reasoningEffort),\n flags: run.flags,\n plugins: run.pluginBehavior ?? [],\n sandboxReuse: run.sandboxReuse ?? false,\n ...(run.sharedState === undefined ? {} : { sharedState: run.sharedState.key }),\n sandboxLayer: sandboxLayerIdentityFor(plan.pair, \"experiment\"),\n judgeRuntime: judgeIdentity(judge),\n agentInstalls: agentInstallPlansForRun(run),\n });\n}\n/**\n * 历史条目的同一份投影,从落盘重建。缺 `ExperimentRunInfo`(第三方 harness 写的结果)时\n * 配置面无从重算,返回 `undefined`——差异算不出就如实算不出,不猜。\n */\nexport function configIdentityFromResult(result: EvalResult): ConfigIdentity | undefined {\n const exp = result.experiment;\n if (exp === undefined)\n return undefined;\n return freezeConfigIdentity({\n adapter: result.adapter,\n model: declaredString(result.model),\n reasoningEffort: declaredString(exp.reasoningEffort),\n flags: exp.flags ?? {},\n plugins: exp.plugins ?? [],\n sandboxReuse: exp.sandboxReuse ?? false,\n ...(exp.sharedState === undefined ? {} : { sharedState: exp.sharedState.key }),\n sandboxLayer: exp.sandboxLayer,\n judgeRuntime: judgeIdentity(exp.judgeRuntime),\n agentInstalls: exp.agentInstalls,\n });\n}\n/**\n * 身份 → 字段路径表。真正未声明的配置不会生成对象键或字段路径。\n */\nfunction flatten(identity: ConfigIdentity): Map<string, JsonValue> {\n const out = new Map<string, JsonValue>();\n const put = (path: string, value: JsonValue): void => { out.set(path, value); };\n const putDeclared = <Value extends JsonValue>(path: string, value: DeclaredConfigValue<Value>): void => {\n if (value._tag === \"Configured\")\n put(path, value.value);\n };\n put(\"adapter.name\", identity.adapter.name);\n put(\"adapter.contract\", identity.adapter.contract);\n put(\"adapter.behaviorRevision\", identity.adapter.behaviorRevision);\n putDeclared(\"model\", identity.model);\n putDeclared(\"reasoningEffort\", identity.reasoningEffort);\n put(\"sandboxReuse\", identity.sandboxReuse);\n if (identity.sharedState !== undefined)\n put(\"sharedState.key\", identity.sharedState);\n for (const [key, value] of Object.entries(identity.flags))\n put(`flags.${key}`, value);\n put(\"plugins\", identity.plugins);\n put(\"sandboxLayer\", identity.sandboxLayer);\n if (identity.judgeRuntime._tag === \"Configured\") {\n put(\"judgeRuntime.provider\", identity.judgeRuntime.provider);\n put(\"judgeRuntime.model\", identity.judgeRuntime.model);\n put(\"judgeRuntime.baseUrl\", identity.judgeRuntime.baseUrl);\n put(\"judgeRuntime.credential.kind\", identity.judgeRuntime.credential.kind);\n if (identity.judgeRuntime.credential.kind === \"environment\")\n put(\"judgeRuntime.credential.name\", identity.judgeRuntime.credential.name);\n put(\"judgeRuntime.timeoutMs\", identity.judgeRuntime.timeoutMs);\n put(\"judgeRuntime.maxResponseBytes\", identity.judgeRuntime.maxResponseBytes);\n if (identity.judgeRuntime.supportsImages === true)\n put(\"judgeRuntime.supportsImages\", true);\n put(\"judgeRuntime.protocol.kind\", identity.judgeRuntime.protocol.kind);\n put(\"judgeRuntime.protocol.revision\", identity.judgeRuntime.protocol.revision);\n if (identity.judgeRuntime.protocol.kind === \"chat-completions\")\n put(\"judgeRuntime.protocol.maxOutputTokens\", identity.judgeRuntime.protocol.maxOutputTokens);\n }\n put(\"agentInstalls\", [...identity.agentInstalls]);\n return out;\n}\n/**\n * 身份的字段路径投影,供 manifest 的配置面落盘(见 `runner/manifest.ts`)。与差异比对读的是\n * 同一个 `flatten`:清单里指得出的路径,`--accept config:<路径>` 就授权得了,两侧不可能分叉。\n */\nexport function configIdentityPaths(identity: ConfigIdentity): Array<[\n string,\n JsonValue\n]> {\n return [...flatten(identity)];\n}\n/** 值的字符串投影:差异明细与 `carriedAccepting` 留痕共用完整值,有界呈现是人读 renderer(`feedback/human.ts`)的职责,不在构造点做。 */\nfunction serializeValue(value: JsonValue): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n/**\n * 历史侧与本次侧的字段级差异,按 selector 字典序。键的增删同样是一条差异。\n */\nexport function configDeltas(historical: ConfigIdentity, current: ConfigIdentity): ConfigFieldDelta[] {\n const from = flatten(historical);\n const to = flatten(current);\n const paths = [...new Set([...from.keys(), ...to.keys()])].sort();\n const out: ConfigFieldDelta[] = [];\n for (const path of paths) {\n const hasFrom = from.has(path);\n const hasTo = to.has(path);\n if (hasFrom && hasTo && JSON.stringify(from.get(path)) === JSON.stringify(to.get(path)))\n continue;\n const fromValue = from.get(path);\n const toValue = to.get(path);\n if (hasFrom && fromValue === undefined)\n throw new Error(`Missing historical config value for ${path}.`);\n if (hasTo && toValue === undefined)\n throw new Error(`Missing current config value for ${path}.`);\n const selector = `config:${path}`;\n if (!hasFrom)\n out.push(addedConfigField(selector, serializeValue(toValue!)));\n else if (!hasTo)\n out.push(removedConfigField(selector, serializeValue(fromValue!)));\n else\n out.push(changedConfigField(selector, serializeValue(fromValue!), serializeValue(toValue!)));\n }\n return out;\n}\n/**\n * 反事实身份:把本次身份里**被授权的那些字段**换回历史值,其余原样。\n *\n * 换出来的身份再算一次指纹,与历史条目落盘的那个相等,才证明「两侧只差这些被授权的字段」——\n * 授权因此不是绕开判据,而是把判据挪到一个明确写下来的口径上重算一次。\n *\n * `sandbox` / `judge` 是整对象进哈希的分组:键在不在本身改变字节,逐字段拼回去会造出两侧都\n * 不存在的形状。分组内**每一条**差异都被授权才整体换回历史对象,否则保持本次值——那样指纹\n * 自然对不上,条目照常重跑,不会静默跨过没被授权的那半。\n */\nexport function counterfactualConfigIdentity(current: ConfigIdentity, historical: ConfigIdentity, accepted: ReadonlySet<string>): ConfigIdentity {\n const differing = new Set(configDeltas(historical, current).map((d) => d.selector));\n const flags: globalThis.Record<string, JsonValue> = { ...current.flags };\n for (const selector of accepted) {\n if (!selector.startsWith(\"config:flags.\"))\n continue;\n const key = selector.slice(\"config:flags.\".length);\n if (Object.hasOwn(historical.flags, key)) {\n const value = historical.flags[key];\n if (value === undefined)\n throw new Error(`Missing historical flag value for ${key}.`);\n flags[key] = value;\n }\n else\n delete flags[key];\n }\n let sandboxLayer = current.sandboxLayer;\n let plugins = current.plugins;\n let judgeRuntime = current.judgeRuntime;\n let agentInstalls = current.agentInstalls;\n let adapter = current.adapter;\n const rollbackGroups: readonly (\"adapter\" | \"sandboxLayer\" | \"plugins\" | \"judgeRuntime\" | \"agentInstalls\")[] = [\n \"adapter\", \"sandboxLayer\", \"plugins\", \"judgeRuntime\", \"agentInstalls\",\n ];\n for (const group of rollbackGroups) {\n const paths = [...differing].filter((selector) => selector === `config:${group}` || selector.startsWith(`config:${group}.`));\n if (paths.length === 0 || !paths.every((selector) => accepted.has(selector)))\n continue;\n if (group === \"adapter\")\n adapter = historical.adapter;\n else if (group === \"sandboxLayer\")\n sandboxLayer = historical.sandboxLayer;\n else if (group === \"plugins\")\n plugins = historical.plugins;\n else if (group === \"judgeRuntime\")\n judgeRuntime = historical.judgeRuntime;\n else\n agentInstalls = historical.agentInstalls;\n }\n const sharedState = accepted.has(\"config:sharedState.key\") ? historical.sharedState : current.sharedState;\n return freezeConfigIdentity({\n adapter,\n model: accepted.has(\"config:model\") ? historical.model : current.model,\n reasoningEffort: accepted.has(\"config:reasoningEffort\")\n ? historical.reasoningEffort\n : current.reasoningEffort,\n flags,\n plugins,\n sandboxReuse: accepted.has(\"config:sandboxReuse\") ? historical.sandboxReuse : current.sandboxReuse,\n ...(sharedState === undefined ? {} : { sharedState }),\n sandboxLayer,\n judgeRuntime,\n agentInstalls,\n });\n}\n"]}
1
+ {"version":3,"file":"config-identity.js","sourceRoot":"","sources":["config-identity.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ResolvedModelSlots } from \"../model-slots.ts\";\n// 配置身份的字段级投影:`configHash` 的哈希输入本身,加上「同一份输入怎样按字段路径比对」。\n//\n// 哈希只回答「等不等」,回答不了「哪里变了」。`--accept config:<字段路径>` 与 `--dry` 的逐条\n// 作废原因都要后一个答案,而两侧必须来自同一份字段集合——configHash 里有的字段,这里就能按\n// 点路径指名;这里指不出来的路径,`--accept` 也就没有对应的差异可授权。\n//\n// 历史侧的同名投影从落盘重建(`ExperimentRunInfo` + 结果顶层的 adapter/model),这正是\n// 「进 configHash 的字段必须落进 run.json」那条规则存在的理由。\nimport type { LinkedRunPlan } from \"../sandbox/plan.ts\";\nimport { sandboxLayerIdentityFor } from \"../sandbox/link.ts\";\nimport type { AgentIdentity, AgentInstaller } from \"../agents/types.ts\";\nimport type { EvalResult, JsonValue, ResolvedJudgeConfig } from \"../types.ts\";\nimport type { AgentRun } from \"./types.ts\";\nimport { adapterIdentity } from \"../adapter.ts\";\nimport type { AdapterIdentity } from \"../record/model/run-context.ts\";\n/**\n * 一次运行的**配置身份**:`computeConfigHash` 的哈希输入,字段集合与\n * docs/feature/experiments/cache.md「指纹:两个哈希嵌套」逐字对应。\n *\n * 可选配置必须真的省略键,而不是写入 `undefined` 或一个 Omitted 哨兵;否则未声明配置会\n * 无端改变基础 configHash。新增公开配置字段时只在这里裁决一次「进不进 configHash」。\n */\nexport interface ConfigIdentity {\n readonly models?: {\n readonly version: 1;\n readonly slots: ResolvedModelSlots;\n };\n readonly adapter: AdapterIdentity;\n readonly model: DeclaredConfigValue<string>;\n readonly reasoningEffort: DeclaredConfigValue<string>;\n readonly flags: Readonly<globalThis.Record<string, JsonValue>>;\n /** Credential-free Experiment Plugin and receiver behavior. */\n readonly plugins: JsonValue;\n readonly sandboxReuse: boolean;\n /** Stable public key for the shared-state mutex, never a secret or stored state. */\n readonly sharedState?: string;\n /** Experiment 作者 layer 身份;物理 provider plan 属于逐 Eval fingerprint,不进入 Run 级身份。 */\n readonly sandboxLayer: JsonValue;\n readonly judgeRuntime: JudgeConfigIdentity;\n /** 声明顺序、精确 installer 配对、安装模式与计划目标平台的完整静态身份。 */\n readonly agentInstalls: readonly JsonValue[];\n}\nexport type DeclaredConfigValue<Value> = {\n readonly _tag: \"Omitted\";\n} | {\n readonly _tag: \"Configured\";\n readonly value: Value;\n};\nexport type JudgeConfigIdentity = {\n readonly _tag: \"Unconfigured\";\n} | {\n readonly _tag: \"Configured\";\n readonly provider: ResolvedJudgeConfig[\"provider\"];\n readonly model: string;\n readonly baseUrl: string;\n readonly credential: ResolvedJudgeConfig[\"credential\"];\n readonly timeoutMs: number;\n readonly maxResponseBytes: number;\n readonly supportsImages?: boolean;\n readonly protocol: ResolvedJudgeConfig[\"protocol\"];\n};\n/** manifest 相减得出的一条具名差异;`selector` 原样可复制进 `--accept`。 */\nexport type ConfigFieldDelta = {\n readonly _tag: \"Added\";\n readonly selector: string;\n readonly from?: never;\n readonly to: string;\n} | {\n readonly _tag: \"Removed\";\n readonly selector: string;\n readonly from: string;\n readonly to?: never;\n} | {\n readonly _tag: \"Changed\";\n readonly selector: string;\n readonly from: string;\n readonly to: string;\n};\nexport function addedConfigField(selector: string, to: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Added\", selector, to });\n}\nexport function removedConfigField(selector: string, from: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Removed\", selector, from });\n}\nexport function changedConfigField(selector: string, from: string, to: string): ConfigFieldDelta {\n return Object.freeze({ _tag: \"Changed\", selector, from, to });\n}\nfunction freezeJson<Value extends JsonValue>(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) => freezeJson(entry))) as Value;\n }\n return Object.freeze(Object.fromEntries(Object.entries(value).map(([key, entry]) => [key, freezeJson(entry)]))) as Value;\n}\nfunction freezeConfigIdentity(identity: ConfigIdentity): ConfigIdentity {\n const { sharedState, ...withoutSharedState } = identity;\n return Object.freeze({\n ...withoutSharedState,\n adapter: Object.freeze({ ...identity.adapter }),\n ...(identity.models === undefined ? {} : { models: Object.freeze({\n version: 1 as const,\n slots: Object.freeze(Object.fromEntries(Object.entries(identity.models.slots).map(([key, value]) => [key, Object.freeze({ ...value })]))),\n }) }),\n model: Object.freeze(identity.model),\n reasoningEffort: Object.freeze(identity.reasoningEffort),\n flags: freezeJson({ ...identity.flags }),\n plugins: freezeJson(identity.plugins),\n ...(sharedState === undefined ? {} : { sharedState }),\n sandboxLayer: freezeJson(identity.sandboxLayer),\n judgeRuntime: identity.judgeRuntime._tag === \"Unconfigured\"\n ? Object.freeze({ _tag: \"Unconfigured\" as const })\n : Object.freeze({\n _tag: \"Configured\" as const,\n provider: identity.judgeRuntime.provider,\n model: identity.judgeRuntime.model,\n baseUrl: identity.judgeRuntime.baseUrl,\n credential: Object.freeze({ ...identity.judgeRuntime.credential }),\n timeoutMs: Object.freeze(identity.judgeRuntime.timeoutMs),\n maxResponseBytes: Object.freeze(identity.judgeRuntime.maxResponseBytes),\n ...(identity.judgeRuntime.supportsImages === true ? { supportsImages: true } : {}),\n protocol: Object.freeze({ ...identity.judgeRuntime.protocol }),\n }),\n agentInstalls: Object.freeze(identity.agentInstalls.map((entry) => freezeJson(entry))),\n });\n}\nfunction sameAgentIdentity(left: AgentIdentity, right: AgentIdentity): boolean {\n return left.agent === right.agent && left.version === right.version && left.revision === right.revision;\n}\nfunction installerIdentity(installer: AgentInstaller | undefined): JsonValue {\n if (installer === undefined)\n return { _tag: \"Missing\" };\n return {\n _tag: \"Matched\",\n identity: {\n agent: installer.identity.agent,\n version: installer.identity.version,\n revision: installer.identity.revision,\n },\n installMode: installer.installMode,\n platforms: installer.platforms === undefined\n ? { _tag: \"All\" }\n : { _tag: \"Listed\", values: [...installer.platforms] },\n };\n}\n/** 计划期一次性冻结全部 ensure/installer 配对;运行事实与 staged digest 不反写配置身份。 */\nexport function agentInstallPlansForRun(run: AgentRun): readonly JsonValue[] {\n if (run.adapter.kind === \"custom\")\n return Object.freeze([]);\n const agent = run.agent;\n if (agent === undefined)\n throw new Error(\"Agent AdapterRun requires its Agent execution implementation.\");\n if (agent.kind === \"direct\")\n return Object.freeze([]);\n return Object.freeze(agent.ensure.map((ensure, index) => freezeJson({\n order: index,\n ensure: {\n agent: ensure.identity.agent,\n version: ensure.identity.version,\n revision: ensure.identity.revision,\n },\n installer: installerIdentity(agent.installers.find((candidate) => sameAgentIdentity(candidate.identity, ensure.identity))),\n })));\n}\nfunction declaredString(value: string | undefined): DeclaredConfigValue<string> {\n return value === undefined ? { _tag: \"Omitted\" } : { _tag: \"Configured\", value };\n}\nfunction judgeIdentity(judge: ResolvedJudgeConfig | undefined): JudgeConfigIdentity {\n return judge === undefined\n ? { _tag: \"Unconfigured\" }\n : {\n _tag: \"Configured\",\n provider: judge.provider,\n model: judge.model,\n baseUrl: judge.baseUrl,\n credential: judge.credential,\n timeoutMs: judge.timeoutMs,\n maxResponseBytes: judge.maxResponseBytes,\n ...(judge.supportsImages === true ? { supportsImages: true } : {}),\n protocol: judge.protocol,\n };\n}\n/** 本次解析后配置的身份投影。 */\nexport function configIdentityForRun(run: AgentRun, plan: LinkedRunPlan, judge: ResolvedJudgeConfig | undefined = undefined): ConfigIdentity {\n return freezeConfigIdentity({\n adapter: adapterIdentity(run.adapter),\n ...(run.adapter.kind === \"custom\" ? { models: { version: 1 as const, slots: run.models ?? Object.freeze({}) } } : {}),\n model: declaredString(run.model),\n reasoningEffort: declaredString(run.reasoningEffort),\n flags: run.flags,\n plugins: run.pluginBehavior ?? [],\n sandboxReuse: run.sandboxReuse ?? false,\n ...(run.sharedState === undefined ? {} : { sharedState: run.sharedState.key }),\n sandboxLayer: sandboxLayerIdentityFor(plan.pair, \"experiment\"),\n judgeRuntime: judgeIdentity(judge),\n agentInstalls: agentInstallPlansForRun(run),\n });\n}\n/**\n * 历史条目的同一份投影,从落盘重建。缺 `ExperimentRunInfo`(第三方 harness 写的结果)时\n * 配置面无从重算,返回 `undefined`——差异算不出就如实算不出,不猜。\n */\nexport function configIdentityFromResult(result: EvalResult): ConfigIdentity | undefined {\n const exp = result.experiment;\n if (exp === undefined)\n return undefined;\n return freezeConfigIdentity({\n adapter: result.adapter,\n ...(exp.models === undefined ? {} : { models: { version: 1 as const, slots: exp.models } }),\n model: declaredString(result.model),\n reasoningEffort: declaredString(exp.reasoningEffort),\n flags: exp.flags ?? {},\n plugins: exp.plugins ?? [],\n sandboxReuse: exp.sandboxReuse ?? false,\n ...(exp.sharedState === undefined ? {} : { sharedState: exp.sharedState.key }),\n sandboxLayer: exp.sandboxLayer,\n judgeRuntime: judgeIdentity(exp.judgeRuntime),\n agentInstalls: exp.agentInstalls,\n });\n}\n/**\n * 身份 → 字段路径表。真正未声明的配置不会生成对象键或字段路径。\n */\nfunction flatten(identity: ConfigIdentity): Map<string, JsonValue> {\n const out = new Map<string, JsonValue>();\n const put = (path: string, value: JsonValue): void => { out.set(path, value); };\n const putDeclared = <Value extends JsonValue>(path: string, value: DeclaredConfigValue<Value>): void => {\n if (value._tag === \"Configured\")\n put(path, value.value);\n };\n put(\"adapter.name\", identity.adapter.name);\n put(\"adapter.contract\", identity.adapter.contract);\n put(\"adapter.behaviorRevision\", identity.adapter.behaviorRevision);\n if (identity.adapter.cleanupTimeoutMs !== undefined)\n put(\"adapter.cleanupTimeoutMs\", identity.adapter.cleanupTimeoutMs);\n if (identity.models !== undefined) {\n put(\"models.version\", identity.models.version);\n for (const [slot, selection] of Object.entries(identity.models.slots)) {\n put(`models.${slot}.model`, selection.model);\n put(`models.${slot}.reasoningEffort`, selection.reasoningEffort);\n }\n }\n putDeclared(\"model\", identity.model);\n putDeclared(\"reasoningEffort\", identity.reasoningEffort);\n put(\"sandboxReuse\", identity.sandboxReuse);\n if (identity.sharedState !== undefined)\n put(\"sharedState.key\", identity.sharedState);\n for (const [key, value] of Object.entries(identity.flags))\n put(`flags.${key}`, value);\n put(\"plugins\", identity.plugins);\n put(\"sandboxLayer\", identity.sandboxLayer);\n if (identity.judgeRuntime._tag === \"Configured\") {\n put(\"judgeRuntime.provider\", identity.judgeRuntime.provider);\n put(\"judgeRuntime.model\", identity.judgeRuntime.model);\n put(\"judgeRuntime.baseUrl\", identity.judgeRuntime.baseUrl);\n put(\"judgeRuntime.credential.kind\", identity.judgeRuntime.credential.kind);\n if (identity.judgeRuntime.credential.kind === \"environment\")\n put(\"judgeRuntime.credential.name\", identity.judgeRuntime.credential.name);\n put(\"judgeRuntime.timeoutMs\", identity.judgeRuntime.timeoutMs);\n put(\"judgeRuntime.maxResponseBytes\", identity.judgeRuntime.maxResponseBytes);\n if (identity.judgeRuntime.supportsImages === true)\n put(\"judgeRuntime.supportsImages\", true);\n put(\"judgeRuntime.protocol.kind\", identity.judgeRuntime.protocol.kind);\n put(\"judgeRuntime.protocol.revision\", identity.judgeRuntime.protocol.revision);\n if (identity.judgeRuntime.protocol.kind === \"chat-completions\")\n put(\"judgeRuntime.protocol.maxOutputTokens\", identity.judgeRuntime.protocol.maxOutputTokens);\n }\n put(\"agentInstalls\", [...identity.agentInstalls]);\n return out;\n}\n/**\n * 身份的字段路径投影,供 manifest 的配置面落盘(见 `runner/manifest.ts`)。与差异比对读的是\n * 同一个 `flatten`:清单里指得出的路径,`--accept config:<路径>` 就授权得了,两侧不可能分叉。\n */\nexport function configIdentityPaths(identity: ConfigIdentity): Array<[\n string,\n JsonValue\n]> {\n return [...flatten(identity)];\n}\n/** 值的字符串投影:差异明细与 `carriedAccepting` 留痕共用完整值,有界呈现是人读 renderer(`feedback/human.ts`)的职责,不在构造点做。 */\nfunction serializeValue(value: JsonValue): string {\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n/**\n * 历史侧与本次侧的字段级差异,按 selector 字典序。键的增删同样是一条差异。\n */\nexport function configDeltas(historical: ConfigIdentity, current: ConfigIdentity): ConfigFieldDelta[] {\n const from = flatten(historical);\n const to = flatten(current);\n const paths = [...new Set([...from.keys(), ...to.keys()])].sort();\n const out: ConfigFieldDelta[] = [];\n for (const path of paths) {\n const hasFrom = from.has(path);\n const hasTo = to.has(path);\n if (hasFrom && hasTo && JSON.stringify(from.get(path)) === JSON.stringify(to.get(path)))\n continue;\n const fromValue = from.get(path);\n const toValue = to.get(path);\n if (hasFrom && fromValue === undefined)\n throw new Error(`Missing historical config value for ${path}.`);\n if (hasTo && toValue === undefined)\n throw new Error(`Missing current config value for ${path}.`);\n const selector = `config:${path}`;\n if (!hasFrom)\n out.push(addedConfigField(selector, serializeValue(toValue!)));\n else if (!hasTo)\n out.push(removedConfigField(selector, serializeValue(fromValue!)));\n else\n out.push(changedConfigField(selector, serializeValue(fromValue!), serializeValue(toValue!)));\n }\n return out;\n}\n/**\n * 反事实身份:把本次身份里**被授权的那些字段**换回历史值,其余原样。\n *\n * 换出来的身份再算一次指纹,与历史条目落盘的那个相等,才证明「两侧只差这些被授权的字段」——\n * 授权因此不是绕开判据,而是把判据挪到一个明确写下来的口径上重算一次。\n *\n * `sandbox` / `judge` 是整对象进哈希的分组:键在不在本身改变字节,逐字段拼回去会造出两侧都\n * 不存在的形状。分组内**每一条**差异都被授权才整体换回历史对象,否则保持本次值——那样指纹\n * 自然对不上,条目照常重跑,不会静默跨过没被授权的那半。\n */\nexport function counterfactualConfigIdentity(current: ConfigIdentity, historical: ConfigIdentity, accepted: ReadonlySet<string>): ConfigIdentity {\n const differing = new Set(configDeltas(historical, current).map((d) => d.selector));\n const flags: globalThis.Record<string, JsonValue> = { ...current.flags };\n for (const selector of accepted) {\n if (!selector.startsWith(\"config:flags.\"))\n continue;\n const key = selector.slice(\"config:flags.\".length);\n if (Object.hasOwn(historical.flags, key)) {\n const value = historical.flags[key];\n if (value === undefined)\n throw new Error(`Missing historical flag value for ${key}.`);\n flags[key] = value;\n }\n else\n delete flags[key];\n }\n let sandboxLayer = current.sandboxLayer;\n let plugins = current.plugins;\n let judgeRuntime = current.judgeRuntime;\n let agentInstalls = current.agentInstalls;\n let adapter = current.adapter;\n let models = current.models;\n const rollbackGroups: readonly (\"adapter\" | \"sandboxLayer\" | \"plugins\" | \"judgeRuntime\" | \"agentInstalls\" | \"models\")[] = [\n \"adapter\", \"sandboxLayer\", \"plugins\", \"judgeRuntime\", \"agentInstalls\", \"models\",\n ];\n for (const group of rollbackGroups) {\n const paths = [...differing].filter((selector) => selector === `config:${group}` || selector.startsWith(`config:${group}.`));\n if (paths.length === 0 || !paths.every((selector) => accepted.has(selector)))\n continue;\n if (group === \"adapter\")\n adapter = historical.adapter;\n else if (group === \"sandboxLayer\")\n sandboxLayer = historical.sandboxLayer;\n else if (group === \"plugins\")\n plugins = historical.plugins;\n else if (group === \"judgeRuntime\")\n judgeRuntime = historical.judgeRuntime;\n else if (group === \"models\")\n models = historical.models;\n else\n agentInstalls = historical.agentInstalls;\n }\n const sharedState = accepted.has(\"config:sharedState.key\") ? historical.sharedState : current.sharedState;\n return freezeConfigIdentity({\n adapter,\n ...(models === undefined ? {} : { models }),\n model: accepted.has(\"config:model\") ? historical.model : current.model,\n reasoningEffort: accepted.has(\"config:reasoningEffort\")\n ? historical.reasoningEffort\n : current.reasoningEffort,\n flags,\n plugins,\n sandboxReuse: accepted.has(\"config:sandboxReuse\") ? historical.sandboxReuse : current.sandboxReuse,\n ...(sharedState === undefined ? {} : { sharedState }),\n sandboxLayer,\n judgeRuntime,\n agentInstalls,\n });\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.cjs";
1
2
  import type { LinkedRunPlan } from "../sandbox/plan.cjs";
2
3
  import type { EvalResult, JsonValue, ResolvedJudgeConfig } from "../types.cjs";
3
4
  import type { AgentRun } from "./types.cjs";
@@ -10,6 +11,10 @@ import type { AdapterIdentity } from "../record/model/run-context.cjs";
10
11
  * 无端改变基础 configHash。新增公开配置字段时只在这里裁决一次「进不进 configHash」。
11
12
  */
12
13
  export interface ConfigIdentity {
14
+ readonly models?: {
15
+ readonly version: 1;
16
+ readonly slots: ResolvedModelSlots;
17
+ };
13
18
  readonly adapter: AdapterIdentity;
14
19
  readonly model: DeclaredConfigValue<string>;
15
20
  readonly reasoningEffort: DeclaredConfigValue<string>;
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.mjs";
1
2
  import type { LinkedRunPlan } from "../sandbox/plan.mjs";
2
3
  import type { EvalResult, JsonValue, ResolvedJudgeConfig } from "../types.mjs";
3
4
  import type { AgentRun } from "./types.mjs";
@@ -10,6 +11,10 @@ import type { AdapterIdentity } from "../record/model/run-context.mjs";
10
11
  * 无端改变基础 configHash。新增公开配置字段时只在这里裁决一次「进不进 configHash」。
11
12
  */
12
13
  export interface ConfigIdentity {
14
+ readonly models?: {
15
+ readonly version: 1;
16
+ readonly slots: ResolvedModelSlots;
17
+ };
13
18
  readonly adapter: AdapterIdentity;
14
19
  readonly model: DeclaredConfigValue<string>;
15
20
  readonly reasoningEffort: DeclaredConfigValue<string>;
@@ -1,3 +1,4 @@
1
+ import type { ResolvedModelSlots } from "../model-slots.js";
1
2
  import type { LinkedRunPlan } from "../sandbox/plan.js";
2
3
  import type { EvalResult, JsonValue, ResolvedJudgeConfig } from "../types.js";
3
4
  import type { AgentRun } from "./types.js";
@@ -10,6 +11,10 @@ import type { AdapterIdentity } from "../record/model/run-context.js";
10
11
  * 无端改变基础 configHash。新增公开配置字段时只在这里裁决一次「进不进 configHash」。
11
12
  */
12
13
  export interface ConfigIdentity {
14
+ readonly models?: {
15
+ readonly version: 1;
16
+ readonly slots: ResolvedModelSlots;
17
+ };
13
18
  readonly adapter: AdapterIdentity;
14
19
  readonly model: DeclaredConfigValue<string>;
15
20
  readonly reasoningEffort: DeclaredConfigValue<string>;
@@ -165,6 +165,8 @@ function validDatasetKey(key) {
165
165
  function isEvalDefinitionArray(exported) {
166
166
  return Array.isArray(exported);
167
167
  }
168
+ // @concord-code ne-runner-expand-eval-export
169
+ // @concord-implements docs/feature/eval/use-case/dataset-fanout.md
168
170
  function expandEvalExport(exported, entry, root) {
169
171
  if ((0, types_ts_1.isEvalDefinition)(exported)) {
170
172
  return effect_1.Effect.succeed(Object.freeze([{ id: entry.baseId, definition: exported }]));
@@ -483,6 +485,9 @@ function normalizeEvalGroupSource(content) {
483
485
  return output === "" ? content : output + content.slice(cursor);
484
486
  }
485
487
  /** Discovery remains in Effect through selection/planning; an adapter host closes it. */
488
+ // @concord-code ne-runner-discover-evals
489
+ // @concord-implements docs/feature/eval-groups/architecture.md
490
+ // @concord-implements docs/feature/eval-groups/library.md
486
491
  function discoverEvals(root, options = {}) {
487
492
  const dir = (0, node_path_1.join)(root, "evals");
488
493
  const discoverWith = (load) => effect_1.Effect.gen(function* () {
@@ -596,10 +601,14 @@ function discoverEvals(root, options = {}) {
596
601
  return yield* effect_1.Effect.fail(discoveryError(issues));
597
602
  return Object.freeze(evals.map((item) => annotated.get(item.definition) ?? item));
598
603
  });
604
+ if (options.generation !== undefined)
605
+ return discoverWith(options.generation.import);
599
606
  if (!options.freshImport)
600
607
  return discoverWith(cachedModuleLoader);
601
608
  return effect_1.Effect.scoped((0, fresh_import_ts_1.acquireFreshImportGeneration)(root).pipe(effect_1.Effect.flatMap((fresh) => discoverWith(fresh.import))));
602
609
  }
610
+ // @concord-code ne-runner-discover-experiment-file
611
+ // @concord-implements docs/feature/experiments/library.md
603
612
  function discoverExperimentFile(file, root, experimentsDir, load = cachedModuleLoader) {
604
613
  const fileLabel = (0, node_path_1.relative)(root, file).split(node_path_1.sep).join("/");
605
614
  return effect_1.Effect.gen(function* () {
@@ -620,11 +629,16 @@ function discoverExperimentFile(file, root, experimentsDir, load = cachedModuleL
620
629
  });
621
630
  }
622
631
  /** Discovery remains in Effect through selection/planning; an adapter host closes it. */
632
+ // @concord-code ne-runner-discover-experiments
633
+ // @concord-implements docs/feature/experiments/README.md
634
+ // @concord-implements docs/feature/experiments/library.md
623
635
  function discoverExperiments(root, options = {}) {
624
636
  const dir = (0, node_path_1.join)(root, "experiments");
625
637
  const discoverWith = (load) => walkFiles(dir, root, (name) => name.endsWith(".ts") && !name.endsWith(".d.ts")).pipe(effect_1.Effect.flatMap((files) => effect_1.Effect.partition(files, (file) => discoverExperimentFile(file, root, dir, load), { concurrency: 1 })), effect_1.Effect.flatMap(([errors, groups]) => errors.length > 0
626
638
  ? effect_1.Effect.fail(discoveryError(errors.flatMap((error) => error.issues)))
627
639
  : effect_1.Effect.succeed(Object.freeze(groups.flat()))));
640
+ if (options.generation !== undefined)
641
+ return discoverWith(options.generation.import);
628
642
  if (!options.freshImport)
629
643
  return discoverWith(cachedModuleLoader);
630
644
  return effect_1.Effect.scoped((0, fresh_import_ts_1.acquireFreshImportGeneration)(root).pipe(effect_1.Effect.flatMap((fresh) => discoverWith(fresh.import))));