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
@@ -1 +1 @@
1
- {"version":3,"file":"facts.js","sourceRoot":"","sources":["facts.ts"],"names":[],"mappings":"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","sourcesContent":["import { Result, Schema } from \"effect\";\nimport { encodeAttemptLocator } from \"../attempt-locator.ts\";\nimport { mintRecordContentHandle, type RecordContentHandle, } from \"../record/attachment/content.ts\";\nimport { enumerateRecordAttachmentClosure, hydrateRecordAttachmentCurrent, mintRecordAttachmentReference, RecordAttachmentReference, recordAttachmentReferenceWire, } from \"../record/attachment/protocol.ts\";\nimport { decodeAttemptDocument, decodeMemberDocument, decodeRunDocument, RecordExactParseOptions, RecordSlotIdentitySchema, } from \"../record/codec/core.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/definition.ts\";\nimport type { AttemptDocument, MemberDocument, RunDocument, } from \"../record/model/core.ts\";\nimport type { PersistedContentMetadata, SealedAttachmentMetadata, SealedRunCore, SealedRunCutoff, SealedRunSummary, } from \"../record/sqlite/types.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nexport interface DecodedInspectionAttachment {\n readonly physical: SealedAttachmentMetadata;\n readonly value: InspectionJson;\n}\n/** A strictly decoded sealed Run with its browser-neutral reader capability. */\nexport interface LoadedInspectionRun {\n readonly source: InspectionFactSource;\n readonly physical: SealedRunCore;\n readonly run: RunDocument;\n readonly members: readonly MemberDocument[];\n readonly attempts: readonly AttemptDocument[];\n readonly attachments: readonly DecodedInspectionAttachment[];\n}\n/** Exact lifecycle resource plus its optional published Core at one cutoff. */\nexport interface LoadedInspectionRunResource {\n readonly source: InspectionFactSource;\n readonly resource: ReadableRunResource;\n readonly published?: LoadedInspectionRun;\n}\nexport interface InspectionAttemptTarget {\n readonly run: LoadedInspectionRun;\n readonly member: MemberDocument;\n}\n/** Exact origin Attempt plus every target membership visible to the resolver. */\nexport interface ResolvedInspectionAttempt {\n readonly attempt: AttemptDocument;\n readonly origin: LoadedInspectionRun;\n readonly locator: string;\n readonly targets: readonly InspectionAttemptTarget[];\n}\nexport type InspectionAssertionsRead = {\n readonly state: \"available\";\n readonly attachment: DecodedInspectionAttachment;\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"not-recorded\" | \"unsupported\" | \"failed\";\n readonly attachment?: DecodedInspectionAttachment;\n readonly issues: readonly InspectionJson[];\n};\nconst RUN_PAGE_SIZE = 100;\nconst ATTEMPT_CANDIDATE_RUN_LIMIT = 64;\nconst ATTEMPT_TARGET_MEMBER_LIMIT = 256;\n/**\n * Pins the source cutoff, exhausts the fixed Run-summary pagination, then\n * reads and strictly decodes every Run Core in that exact sealed generation.\n */\nexport function loadInspectionRuns(source: InspectionFactSource): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const summaries: SealedRunSummary[] = [];\n const seen = new Set<string>();\n let afterRunId = \"\";\n for (;;) {\n const page = source.readSealedRunSummaryPage(afterRunId, RUN_PAGE_SIZE, cutoff.identity);\n requireCutoff(page.cutoff, cutoff);\n if (page.afterRunId !== afterRunId) {\n throw factsError(\"Run pagination returned a different cursor\");\n }\n let previous = afterRunId;\n for (const summary of page.summaries) {\n if (summary.runId <= previous || seen.has(summary.runId)) {\n throw factsError(\"Run pagination is not strictly ordered\");\n }\n seen.add(summary.runId);\n summaries.push(summary);\n previous = summary.runId;\n }\n if (page.nextAfterRunId === null)\n break;\n if (page.summaries.length === 0 ||\n page.nextAfterRunId !== page.summaries.at(-1)!.runId ||\n page.nextAfterRunId === afterRunId) {\n throw factsError(\"Run pagination returned an invalid continuation cursor\");\n }\n afterRunId = page.nextAfterRunId;\n }\n if (summaries.length !== cutoff.runCount) {\n throw factsError(\"Run pagination did not close the pinned sealed cutoff\");\n }\n return Object.freeze(summaries.map((summary) => {\n const physical = source.readSealedRunCore(summary.runId);\n if (physical === undefined) {\n throw factsError(`Sealed Run ${summary.runId} disappeared from the pinned cutoff`);\n }\n return decodeInspectionRun(source, physical);\n }));\n}\n/** Reads a bounded, explicit Run selection without changing its caller order. */\nexport function loadSelectedInspectionRuns(source: InspectionFactSource, runIds: readonly string[]): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const loaded: LoadedInspectionRun[] = [];\n for (const runId of new Set(runIds)) {\n const physical = source.readSealedRunCore(runId);\n if (physical !== undefined)\n loaded.push(decodeInspectionRun(source, physical));\n }\n requireCutoff(source.cutoff(), cutoff);\n return Object.freeze(loaded);\n}\n/** Reads Run create/close facts even when no Attempt Core has been published. */\nexport function loadInspectionRunResource(source: InspectionFactSource, runId: string): LoadedInspectionRunResource | undefined {\n const cutoff = source.cutoff();\n const resource = source.readRunResource(runId);\n if (resource === undefined)\n return undefined;\n const physical = source.readSealedRunCore(runId);\n const published = physical === undefined\n ? undefined\n : decodeInspectionRun(source, physical);\n requireCutoff(source.cutoff(), cutoff);\n if (resource.published > 0 && published === undefined) {\n throw factsError(`Run ${runId} has published bindings without a readable Core`);\n }\n if (published !== undefined)\n validateRunResourceCore(resource, published);\n return Object.freeze({ source, resource, ...(published === undefined ? {} : { published }) });\n}\nfunction validateRunResourceCore(resource: ReadableRunResource, published: LoadedInspectionRun): void {\n const run = published.run;\n if (run.runId !== resource.runId ||\n run.experimentId !== resource.experimentId ||\n run.startedAt !== Date.parse(resource.startedAt) ||\n run.expectedSlots.length !== resource.slots.length) {\n throw factsError(`Run ${resource.runId} lifecycle resource does not match its published Core`);\n }\n for (const [index, slot] of run.expectedSlots.entries()) {\n const expected = resource.slots[index];\n if (expected === undefined ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(`Run ${resource.runId} expected Slot does not match its published Core`);\n }\n }\n}\n/** Strictly decodes all Core documents and Attachment JSON for one sealed Run. */\nexport function decodeInspectionRun(source: InspectionFactSource, physical: SealedRunCore): LoadedInspectionRun {\n const run = decodedRight(decodeRunDocument(parseJson(physical.runCoreBytes, \"Run Core\")), \"Run Core is invalid\");\n if (run.runId !== physical.runId) {\n throw factsError(\"Run Core identity does not match its sealed row\");\n }\n if (physical.slots.length !== run.expectedSlots.length) {\n throw factsError(\"Run Core Slot rows do not match its expected denominator\");\n }\n for (const [index, stored] of physical.slots.entries()) {\n const decoded = Schema.decodeUnknownResult(RecordSlotIdentitySchema, RecordExactParseOptions)(parseJson(stored.coreBytes, \"Slot Core\"));\n const slot = decodedRight(decoded, \"Slot Core is invalid\");\n const expected = run.expectedSlots[index];\n if (expected === undefined ||\n stored.ordinal !== index ||\n stored.slotId !== slot.slotId ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(\"Slot Core does not match its sealed Run denominator\");\n }\n }\n const members = physical.members.map((stored) => {\n const member = decodedRight(decodeMemberDocument(parseJson(stored.coreBytes, \"Member Core\")), \"Member Core is invalid\");\n if (member.slotId !== stored.slotId ||\n member.action !== stored.action ||\n (member.attempt?.originRunId ?? undefined) !== stored.originRunId ||\n (member.attempt?.attemptId ?? undefined) !== stored.attemptId) {\n throw factsError(\"Member Core does not match its sealed row\");\n }\n return member;\n });\n const attempts = physical.attempts.map((stored) => {\n const attempt = decodedRight(decodeAttemptDocument(parseJson(stored.coreBytes, \"Attempt Core\")), \"Attempt Core is invalid\");\n if (attempt.attemptId !== stored.attemptId ||\n attempt.originRunId !== run.runId ||\n encodeAttemptLocator(attempt.attemptId) !== stored.attemptLocator) {\n throw factsError(\"Attempt Core does not match its sealed row\");\n }\n return attempt;\n });\n validateCoreRelations(run, members, attempts, physical.publicationManaged === true);\n const localAttemptIds = new Set<string>(attempts.map(({ attemptId }) => attemptId));\n const attachments = physical.attachments.map((attachment): DecodedInspectionAttachment => {\n if (attachment.ownerRunId !== run.runId ||\n attachment.ownerKind === \"run\" && attachment.ownerAttemptId !== undefined ||\n attachment.ownerKind === \"attempt\" &&\n (attachment.ownerAttemptId === undefined ||\n !localAttemptIds.has(attachment.ownerAttemptId))) {\n throw factsError(\"Attachment ownership does not match its sealed Run\");\n }\n return Object.freeze({\n physical: attachment,\n value: parseInspectionJson(attachment.canonicalBytes, \"Attachment\"),\n });\n });\n return Object.freeze({\n source,\n physical,\n run,\n members: Object.freeze(members),\n attempts: Object.freeze(attempts),\n attachments: Object.freeze(attachments),\n });\n}\n/** Resolves a public locator through the source's bounded exact index. */\nexport function resolveInspectionAttempt(source: InspectionFactSource, locator: string): ResolvedInspectionAttempt | undefined {\n const projection = source.findAttemptLocatorCandidates(locator, ATTEMPT_CANDIDATE_RUN_LIMIT);\n if (projection.candidates.length === 0)\n return undefined;\n if (projection.ambiguous)\n return undefined;\n const origins = projection.candidates.filter(({ relation }) => relation === \"origin\");\n if (origins.length !== 1) {\n throw factsError(`Attempt ${locator} indexed projection is invalid`);\n }\n const identity = origins[0]!;\n const runs = loadSelectedInspectionRuns(source, projection.candidates.map(({ runId }) => runId));\n const byRunId = new Map<string, LoadedInspectionRun>(runs.map((run) => [run.run.runId, run] as const));\n const origin = byRunId.get(identity.originRunId);\n if (origin === undefined) {\n throw factsError(`Attempt ${locator} origin is not a sealed Run`);\n }\n const attempt = origin.attempts.find((candidate) => candidate.attemptId === identity.attemptId &&\n candidate.originRunId === identity.originRunId &&\n encodeAttemptLocator(candidate.attemptId) === locator);\n if (attempt === undefined) {\n throw factsError(`Attempt ${locator} origin Core is invalid`);\n }\n const targets: InspectionAttemptTarget[] = [];\n const targetRunIds = new Set(projection.candidates.flatMap((candidate) => candidate.relation === \"target\" &&\n candidate.originRunId === identity.originRunId &&\n candidate.attemptId === identity.attemptId\n ? [candidate.runId]\n : []));\n for (const runId of targetRunIds) {\n const run = byRunId.get(runId);\n if (run === undefined) {\n throw factsError(`Attempt ${locator} target is not a sealed Run`);\n }\n const members = targetMembers(run, attempt);\n if (members.length === 0) {\n throw factsError(`Attempt ${locator} target Core is invalid`);\n }\n if (targets.length + members.length > ATTEMPT_TARGET_MEMBER_LIMIT) {\n throw factsError(`Attempt ${locator} exceeds its fixed target member limit`);\n }\n targets.push(...members.map((member) => Object.freeze({ run, member })));\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\n/** Resolves one already loaded target Member without consulting a platform index. */\nexport function resolveInspectionMemberAttempt(runs: readonly LoadedInspectionRun[], target: LoadedInspectionRun, member: MemberDocument): ResolvedInspectionAttempt | undefined {\n if (member.attempt === null)\n return undefined;\n const origin = runs.find(({ run }) => run.runId === member.attempt!.originRunId);\n const attempt = origin?.attempts.find((candidate) => candidate.attemptId === member.attempt!.attemptId &&\n candidate.originRunId === member.attempt!.originRunId);\n if (origin === undefined || attempt === undefined)\n return undefined;\n const locator = encodeAttemptLocator(attempt.attemptId);\n const targets = runs.flatMap((run) => targetMembers(run, attempt).map((candidate) => Object.freeze({ run, member: candidate })));\n if (!targets.some(({ run, member: candidate }) => run.run.runId === target.run.runId && candidate.slotId === member.slotId)) {\n return undefined;\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\nexport function attemptAttachment(resolved: ResolvedInspectionAttempt, family: string): DecodedInspectionAttachment | undefined {\n return resolved.origin.attachments.find(({ physical }) => physical.ownerKind === \"attempt\" &&\n physical.ownerAttemptId === resolved.attempt.attemptId &&\n physical.family === family);\n}\nexport function runAttachment(run: LoadedInspectionRun, family: string): DecodedInspectionAttachment | undefined {\n return run.attachments.find(({ physical }) => physical.ownerKind === \"run\" && physical.family === family);\n}\n/** Reads only the current logical Assertions family, preserving failure state. */\nexport function readInspectionAssertions(resolved: ResolvedInspectionAttempt): InspectionAssertionsRead {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.assertions.family);\n if (attachment === undefined) {\n return Object.freeze({\n state: \"not-recorded\" as const,\n issues: Object.freeze([issue(\"assertions-not-recorded\", resolved.locator)]),\n });\n }\n if (attachment.physical.familyRevision !==\n NiceEvalCurrentRecordAttachments.assertions.revision) {\n return Object.freeze({\n state: \"unsupported\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-revision-unsupported\", resolved.locator)]),\n });\n }\n const decoded = decodeCurrentAssertions(attachment);\n if (decoded === undefined) {\n return Object.freeze({\n state: \"failed\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-current-invalid\", resolved.locator)]),\n });\n }\n return Object.freeze({\n state: \"available\" as const,\n attachment,\n value: decoded.value,\n contents: decoded.contents,\n issues: Object.freeze([]),\n });\n}\nfunction decodeCurrentAssertions(attachment: DecodedInspectionAttachment): {\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n} | undefined {\n const definition = NiceEvalRecordAttachments.assertions;\n const byHandle = new Map(attachment.physical.contents.map((content) => [content.logicalHandle, content]));\n const handles = new Map<string, RecordContentHandle>();\n const contents = new WeakMap<object, PersistedContentMetadata>();\n const usedContent = new Set<string>();\n const hydrated = hydrateRecordAttachmentCurrent(definition, attachment.value, {\n content: (token, declaration) => {\n const logicalHandle = exactMarker(token, \"$niceeval.record.content\");\n if (logicalHandle === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.content\")) {\n return Result.succeed(undefined);\n }\n if (typeof logicalHandle !== \"string\") {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n const metadata = byHandle.get(logicalHandle);\n if (metadata === undefined ||\n declaration.maximumBytes !== undefined &&\n metadata.byteLength > declaration.maximumBytes) {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n let handle = handles.get(logicalHandle);\n if (handle === undefined) {\n handle = mintRecordContentHandle(declaration.kind);\n handles.set(logicalHandle, handle);\n contents.set(handle, metadata);\n }\n usedContent.add(logicalHandle);\n return Result.succeed(handle);\n },\n reference: (token, declaration) => {\n const marker = exactMarker(token, \"$niceeval.record.reference\");\n if (marker === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.reference\")) {\n return Result.succeed(undefined);\n }\n if (typeof marker !== \"object\" || marker === null || Array.isArray(marker)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n const value = marker as Record<string, unknown>;\n if (Reflect.ownKeys(value).length !== 3 ||\n value.owner !== declaration.definition.owner ||\n value.family !== declaration.definition.family ||\n !(\"value\" in value)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n return Result.succeed(mintRecordAttachmentReference(RecordAttachmentReference.to(declaration.definition, declaration.valueSchema), value.value));\n },\n });\n if (Result.isFailure(hydrated) ||\n usedContent.size !== attachment.physical.contents.length) {\n return undefined;\n }\n const closure = enumerateRecordAttachmentClosure(definition, hydrated.success);\n if (Result.isFailure(closure))\n return undefined;\n const references = new Map<string, {\n readonly owner: string;\n readonly family: string;\n }>();\n for (const reference of closure.success.references) {\n const wire = recordAttachmentReferenceWire(reference);\n if (wire === undefined)\n return undefined;\n references.set(`${wire.owner}\\u0000${wire.family}`, Object.freeze({ owner: wire.owner, family: wire.family }));\n }\n const ordered = [...references.values()].sort((left, right) => compareText(left.owner, right.owner) || compareText(left.family, right.family));\n if (ordered.length !== attachment.physical.references.length)\n return undefined;\n for (let ordinal = 0; ordinal < ordered.length; ordinal += 1) {\n const logical = ordered[ordinal]!;\n const physical = attachment.physical.references[ordinal]!;\n if (physical.ordinal !== ordinal ||\n physical.owner !== logical.owner ||\n physical.family !== logical.family) {\n return undefined;\n }\n }\n return Object.freeze({ value: hydrated.success, contents });\n}\nfunction validateCoreRelations(run: RunDocument, members: readonly MemberDocument[], attempts: readonly AttemptDocument[], allowPendingSlots = false): void {\n const slots = new Map(run.expectedSlots.map((slot) => [slot.slotId, slot] as const));\n if (slots.size !== run.expectedSlots.length || (!allowPendingSlots && members.length !== slots.size) || members.length > slots.size) {\n throw factsError(\"Run Core does not close its expected Slot membership\");\n }\n const memberSlots = new Set<string>();\n for (const member of members) {\n if (!slots.has(member.slotId) || memberSlots.has(member.slotId)) {\n throw factsError(\"Run Core contains an invalid Member Slot\");\n }\n memberSlots.add(member.slotId);\n }\n const attemptIds = new Set<string>();\n for (const attempt of attempts) {\n const slot = slots.get(attempt.slotId);\n if (attemptIds.has(attempt.attemptId) ||\n slot === undefined ||\n attempt.evalId !== slot.evalId ||\n attempt.executionIdentityDigest !== slot.executionIdentityDigest) {\n throw factsError(\"Run Core contains an invalid origin Attempt\");\n }\n attemptIds.add(attempt.attemptId);\n }\n for (const member of members) {\n if (member.action === \"executed\" &&\n (member.attempt === null ||\n member.attempt.originRunId !== run.runId ||\n !attemptIds.has(member.attempt.attemptId))) {\n throw factsError(\"Executed Member does not name a local origin Attempt\");\n }\n }\n}\nfunction targetMembers(run: LoadedInspectionRun, attempt: AttemptDocument): readonly MemberDocument[] {\n return run.members.filter((member) => member.attempt !== null &&\n member.attempt.originRunId === attempt.originRunId &&\n member.attempt.attemptId === attempt.attemptId);\n}\nfunction requireCutoff(actual: SealedRunCutoff, expected: SealedRunCutoff): void {\n if (actual.identity !== expected.identity ||\n actual.runCount !== expected.runCount) {\n throw factsError(\"Inspection source changed its pinned sealed cutoff\");\n }\n}\nfunction parseJson(bytes: Uint8Array, owner: string): unknown {\n try {\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)) as unknown;\n }\n catch (cause) {\n throw factsError(`${owner} is not canonical UTF-8 JSON`, cause);\n }\n}\nfunction parseInspectionJson(bytes: Uint8Array, owner: string): InspectionJson {\n const closed = closeInspectionJson(parseJson(bytes, owner));\n if (isInspectionCodecError(closed)) {\n throw factsError(`${owner} is invalid: ${closed.reason}`);\n }\n return closed;\n}\nfunction decodedRight<A>(decoded: Result.Result<A, unknown>, reason: string): A {\n if (Result.isFailure(decoded))\n throw factsError(reason, decoded.failure);\n return decoded.success;\n}\nfunction exactMarker(value: unknown, key: string): unknown | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n const keys = Reflect.ownKeys(value);\n if (keys.length !== 1 || keys[0] !== key)\n return undefined;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor?.enumerable === true && \"value\" in descriptor\n ? descriptor.value\n : undefined;\n}\nfunction hasOwnMarker(value: unknown, key: string): boolean {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Object.prototype.hasOwnProperty.call(value, key);\n}\nfunction issue(code: string, locator: string): InspectionJson {\n return Object.freeze({ code, locator });\n}\nfunction factsError(reason: string, cause?: unknown): Error {\n return new Error(reason, cause === undefined ? undefined : { cause });\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
1
+ {"version":3,"file":"facts.js","sourceRoot":"","sources":["facts.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-eval-inspection-facts-reader\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/inspection/architecture.md\n// @concord-implements docs/feature/inspection/use-case/inspection-check-completeness.md\nimport { Result, Schema } from \"effect\";\nimport { encodeAttemptLocator } from \"../attempt-locator.ts\";\nimport { mintRecordContentHandle, type RecordContentHandle, } from \"../record/attachment/content.ts\";\nimport { enumerateRecordAttachmentClosure, hydrateRecordAttachmentCurrent, mintRecordAttachmentReference, RecordAttachmentReference, recordAttachmentReferenceWire, } from \"../record/attachment/protocol.ts\";\nimport { decodeAttemptDocument, decodeMemberDocument, decodeRunDocument, RecordExactParseOptions, RecordSlotIdentitySchema, } from \"../record/codec/core.ts\";\nimport { NiceEvalCurrentRecordAttachments, NiceEvalRecordAttachments, } from \"../record/family/current.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/definition.ts\";\nimport type { AttemptDocument, MemberDocument, RunDocument, } from \"../record/model/core.ts\";\nimport type { PersistedContentMetadata, SealedAttachmentMetadata, SealedRunCore, SealedRunCutoff, SealedRunSummary, } from \"../record/sqlite/types.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson, } from \"./codec.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { ReadableRunResource } from \"../run/storage/types.ts\";\nexport interface DecodedInspectionAttachment {\n readonly physical: SealedAttachmentMetadata;\n readonly value: InspectionJson;\n}\n/** A strictly decoded sealed Run with its browser-neutral reader capability. */\nexport interface LoadedInspectionRun {\n readonly source: InspectionFactSource;\n readonly physical: SealedRunCore;\n readonly run: RunDocument;\n readonly members: readonly MemberDocument[];\n readonly attempts: readonly AttemptDocument[];\n readonly attachments: readonly DecodedInspectionAttachment[];\n}\n/** Exact lifecycle resource plus its optional published Core at one cutoff. */\nexport interface LoadedInspectionRunResource {\n readonly source: InspectionFactSource;\n readonly resource: ReadableRunResource;\n readonly published?: LoadedInspectionRun;\n}\nexport interface InspectionAttemptTarget {\n readonly run: LoadedInspectionRun;\n readonly member: MemberDocument;\n}\n/** Exact origin Attempt plus every target membership visible to the resolver. */\nexport interface ResolvedInspectionAttempt {\n readonly attempt: AttemptDocument;\n readonly origin: LoadedInspectionRun;\n readonly locator: string;\n readonly targets: readonly InspectionAttemptTarget[];\n}\nexport type InspectionAssertionsRead = {\n readonly state: \"available\";\n readonly attachment: DecodedInspectionAttachment;\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"not-recorded\" | \"unsupported\" | \"failed\";\n readonly attachment?: DecodedInspectionAttachment;\n readonly issues: readonly InspectionJson[];\n};\nconst RUN_PAGE_SIZE = 100;\nconst ATTEMPT_CANDIDATE_RUN_LIMIT = 64;\nconst ATTEMPT_TARGET_MEMBER_LIMIT = 256;\n/**\n * Pins the source cutoff, exhausts the fixed Run-summary pagination, then\n * reads and strictly decodes every Run Core in that exact sealed generation.\n */\n// @concord-code ne-eval-inspection-load-runs\n// @concord-implements docs/feature/inspection/architecture.md\n// @concord-implements docs/feature/inspection/use-case/inspection-check-completeness.md\nexport function loadInspectionRuns(source: InspectionFactSource): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const summaries: SealedRunSummary[] = [];\n const seen = new Set<string>();\n let afterRunId = \"\";\n for (;;) {\n const page = source.readSealedRunSummaryPage(afterRunId, RUN_PAGE_SIZE, cutoff.identity);\n requireCutoff(page.cutoff, cutoff);\n if (page.afterRunId !== afterRunId) {\n throw factsError(\"Run pagination returned a different cursor\");\n }\n let previous = afterRunId;\n for (const summary of page.summaries) {\n if (summary.runId <= previous || seen.has(summary.runId)) {\n throw factsError(\"Run pagination is not strictly ordered\");\n }\n seen.add(summary.runId);\n summaries.push(summary);\n previous = summary.runId;\n }\n if (page.nextAfterRunId === null)\n break;\n if (page.summaries.length === 0 ||\n page.nextAfterRunId !== page.summaries.at(-1)!.runId ||\n page.nextAfterRunId === afterRunId) {\n throw factsError(\"Run pagination returned an invalid continuation cursor\");\n }\n afterRunId = page.nextAfterRunId;\n }\n if (summaries.length !== cutoff.runCount) {\n throw factsError(\"Run pagination did not close the pinned sealed cutoff\");\n }\n return Object.freeze(summaries.map((summary) => {\n const physical = source.readSealedRunCore(summary.runId);\n if (physical === undefined) {\n throw factsError(`Sealed Run ${summary.runId} disappeared from the pinned cutoff`);\n }\n return decodeInspectionRun(source, physical);\n }));\n}\n/** Reads a bounded, explicit Run selection without changing its caller order. */\nexport function loadSelectedInspectionRuns(source: InspectionFactSource, runIds: readonly string[]): readonly LoadedInspectionRun[] {\n const cutoff = source.cutoff();\n const loaded: LoadedInspectionRun[] = [];\n for (const runId of new Set(runIds)) {\n const physical = source.readSealedRunCore(runId);\n if (physical !== undefined)\n loaded.push(decodeInspectionRun(source, physical));\n }\n requireCutoff(source.cutoff(), cutoff);\n return Object.freeze(loaded);\n}\n/** Reads Run create/close facts even when no Attempt Core has been published. */\nexport function loadInspectionRunResource(source: InspectionFactSource, runId: string): LoadedInspectionRunResource | undefined {\n const cutoff = source.cutoff();\n const resource = source.readRunResource(runId);\n if (resource === undefined)\n return undefined;\n const physical = source.readSealedRunCore(runId);\n const published = physical === undefined\n ? undefined\n : decodeInspectionRun(source, physical);\n requireCutoff(source.cutoff(), cutoff);\n if (resource.published > 0 && published === undefined) {\n throw factsError(`Run ${runId} has published bindings without a readable Core`);\n }\n if (published !== undefined)\n validateRunResourceCore(resource, published);\n return Object.freeze({ source, resource, ...(published === undefined ? {} : { published }) });\n}\nfunction validateRunResourceCore(resource: ReadableRunResource, published: LoadedInspectionRun): void {\n const run = published.run;\n if (run.runId !== resource.runId ||\n run.experimentId !== resource.experimentId ||\n run.startedAt !== Date.parse(resource.startedAt) ||\n run.expectedSlots.length !== resource.slots.length) {\n throw factsError(`Run ${resource.runId} lifecycle resource does not match its published Core`);\n }\n for (const [index, slot] of run.expectedSlots.entries()) {\n const expected = resource.slots[index];\n if (expected === undefined ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(`Run ${resource.runId} expected Slot does not match its published Core`);\n }\n }\n}\n/** Strictly decodes all Core documents and Attachment JSON for one sealed Run. */\nexport function decodeInspectionRun(source: InspectionFactSource, physical: SealedRunCore): LoadedInspectionRun {\n const run = decodedRight(decodeRunDocument(parseJson(physical.runCoreBytes, \"Run Core\")), \"Run Core is invalid\");\n if (run.runId !== physical.runId) {\n throw factsError(\"Run Core identity does not match its sealed row\");\n }\n if (physical.slots.length !== run.expectedSlots.length) {\n throw factsError(\"Run Core Slot rows do not match its expected denominator\");\n }\n for (const [index, stored] of physical.slots.entries()) {\n const decoded = Schema.decodeUnknownResult(RecordSlotIdentitySchema, RecordExactParseOptions)(parseJson(stored.coreBytes, \"Slot Core\"));\n const slot = decodedRight(decoded, \"Slot Core is invalid\");\n const expected = run.expectedSlots[index];\n if (expected === undefined ||\n stored.ordinal !== index ||\n stored.slotId !== slot.slotId ||\n slot.slotId !== expected.slotId ||\n slot.evalId !== expected.evalId ||\n slot.attemptOrdinal !== expected.attemptOrdinal ||\n slot.executionIdentityDigest !== expected.executionIdentityDigest) {\n throw factsError(\"Slot Core does not match its sealed Run denominator\");\n }\n }\n const members = physical.members.map((stored) => {\n const member = decodedRight(decodeMemberDocument(parseJson(stored.coreBytes, \"Member Core\")), \"Member Core is invalid\");\n if (member.slotId !== stored.slotId ||\n member.action !== stored.action ||\n (member.attempt?.originRunId ?? undefined) !== stored.originRunId ||\n (member.attempt?.attemptId ?? undefined) !== stored.attemptId) {\n throw factsError(\"Member Core does not match its sealed row\");\n }\n return member;\n });\n const attempts = physical.attempts.map((stored) => {\n const attempt = decodedRight(decodeAttemptDocument(parseJson(stored.coreBytes, \"Attempt Core\")), \"Attempt Core is invalid\");\n if (attempt.attemptId !== stored.attemptId ||\n attempt.originRunId !== run.runId ||\n encodeAttemptLocator(attempt.attemptId) !== stored.attemptLocator) {\n throw factsError(\"Attempt Core does not match its sealed row\");\n }\n return attempt;\n });\n validateCoreRelations(run, members, attempts, physical.publicationManaged === true);\n const localAttemptIds = new Set<string>(attempts.map(({ attemptId }) => attemptId));\n const attachments = physical.attachments.map((attachment): DecodedInspectionAttachment => {\n if (attachment.ownerRunId !== run.runId ||\n attachment.ownerKind === \"run\" && attachment.ownerAttemptId !== undefined ||\n attachment.ownerKind === \"attempt\" &&\n (attachment.ownerAttemptId === undefined ||\n !localAttemptIds.has(attachment.ownerAttemptId))) {\n throw factsError(\"Attachment ownership does not match its sealed Run\");\n }\n return Object.freeze({\n physical: attachment,\n value: parseInspectionJson(attachment.canonicalBytes, \"Attachment\"),\n });\n });\n return Object.freeze({\n source,\n physical,\n run,\n members: Object.freeze(members),\n attempts: Object.freeze(attempts),\n attachments: Object.freeze(attachments),\n });\n}\n/** Resolves a public locator through the source's bounded exact index. */\n// @concord-code ne-eval-inspection-resolve-attempt\n// @concord-implements docs/feature/inspection/architecture.md\nexport function resolveInspectionAttempt(source: InspectionFactSource, locator: string): ResolvedInspectionAttempt | undefined {\n const projection = source.findAttemptLocatorCandidates(locator, ATTEMPT_CANDIDATE_RUN_LIMIT);\n if (projection.candidates.length === 0)\n return undefined;\n if (projection.ambiguous)\n return undefined;\n const origins = projection.candidates.filter(({ relation }) => relation === \"origin\");\n if (origins.length !== 1) {\n throw factsError(`Attempt ${locator} indexed projection is invalid`);\n }\n const identity = origins[0]!;\n const runs = loadSelectedInspectionRuns(source, projection.candidates.map(({ runId }) => runId));\n const byRunId = new Map<string, LoadedInspectionRun>(runs.map((run) => [run.run.runId, run] as const));\n const origin = byRunId.get(identity.originRunId);\n if (origin === undefined) {\n throw factsError(`Attempt ${locator} origin is not a sealed Run`);\n }\n const attempt = origin.attempts.find((candidate) => candidate.attemptId === identity.attemptId &&\n candidate.originRunId === identity.originRunId &&\n encodeAttemptLocator(candidate.attemptId) === locator);\n if (attempt === undefined) {\n throw factsError(`Attempt ${locator} origin Core is invalid`);\n }\n const targets: InspectionAttemptTarget[] = [];\n const targetRunIds = new Set(projection.candidates.flatMap((candidate) => candidate.relation === \"target\" &&\n candidate.originRunId === identity.originRunId &&\n candidate.attemptId === identity.attemptId\n ? [candidate.runId]\n : []));\n for (const runId of targetRunIds) {\n const run = byRunId.get(runId);\n if (run === undefined) {\n throw factsError(`Attempt ${locator} target is not a sealed Run`);\n }\n const members = targetMembers(run, attempt);\n if (members.length === 0) {\n throw factsError(`Attempt ${locator} target Core is invalid`);\n }\n if (targets.length + members.length > ATTEMPT_TARGET_MEMBER_LIMIT) {\n throw factsError(`Attempt ${locator} exceeds its fixed target member limit`);\n }\n targets.push(...members.map((member) => Object.freeze({ run, member })));\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\n/** Resolves one already loaded target Member without consulting a platform index. */\nexport function resolveInspectionMemberAttempt(runs: readonly LoadedInspectionRun[], target: LoadedInspectionRun, member: MemberDocument): ResolvedInspectionAttempt | undefined {\n if (member.attempt === null)\n return undefined;\n const origin = runs.find(({ run }) => run.runId === member.attempt!.originRunId);\n const attempt = origin?.attempts.find((candidate) => candidate.attemptId === member.attempt!.attemptId &&\n candidate.originRunId === member.attempt!.originRunId);\n if (origin === undefined || attempt === undefined)\n return undefined;\n const locator = encodeAttemptLocator(attempt.attemptId);\n const targets = runs.flatMap((run) => targetMembers(run, attempt).map((candidate) => Object.freeze({ run, member: candidate })));\n if (!targets.some(({ run, member: candidate }) => run.run.runId === target.run.runId && candidate.slotId === member.slotId)) {\n return undefined;\n }\n return Object.freeze({\n attempt,\n origin,\n locator,\n targets: Object.freeze(targets),\n });\n}\nexport function attemptAttachment(resolved: ResolvedInspectionAttempt, family: string): DecodedInspectionAttachment | undefined {\n return resolved.origin.attachments.find(({ physical }) => physical.ownerKind === \"attempt\" &&\n physical.ownerAttemptId === resolved.attempt.attemptId &&\n physical.family === family);\n}\nexport function runAttachment(run: LoadedInspectionRun, family: string): DecodedInspectionAttachment | undefined {\n return run.attachments.find(({ physical }) => physical.ownerKind === \"run\" && physical.family === family);\n}\n/** Reads only the current logical Assertions family, preserving failure state. */\n// @concord-code ne-eval-inspection-read-assertions\n// @concord-implements docs/feature/assertions/README.md\n// @concord-implements docs/feature/inspection/README.md\nexport function readInspectionAssertions(resolved: ResolvedInspectionAttempt): InspectionAssertionsRead {\n const attachment = attemptAttachment(resolved, NiceEvalRecordAttachments.assertions.family);\n if (attachment === undefined) {\n return Object.freeze({\n state: \"not-recorded\" as const,\n issues: Object.freeze([issue(\"assertions-not-recorded\", resolved.locator)]),\n });\n }\n if (attachment.physical.familyRevision !==\n NiceEvalCurrentRecordAttachments.assertions.revision) {\n return Object.freeze({\n state: \"unsupported\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-revision-unsupported\", resolved.locator)]),\n });\n }\n const decoded = decodeCurrentAssertions(attachment);\n if (decoded === undefined) {\n return Object.freeze({\n state: \"failed\" as const,\n attachment,\n issues: Object.freeze([issue(\"assertions-current-invalid\", resolved.locator)]),\n });\n }\n return Object.freeze({\n state: \"available\" as const,\n attachment,\n value: decoded.value,\n contents: decoded.contents,\n issues: Object.freeze([]),\n });\n}\nfunction decodeCurrentAssertions(attachment: DecodedInspectionAttachment): {\n readonly value: AssertionsAttachment;\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n} | undefined {\n const definition = NiceEvalRecordAttachments.assertions;\n const byHandle = new Map(attachment.physical.contents.map((content) => [content.logicalHandle, content]));\n const handles = new Map<string, RecordContentHandle>();\n const contents = new WeakMap<object, PersistedContentMetadata>();\n const usedContent = new Set<string>();\n const hydrated = hydrateRecordAttachmentCurrent(definition, attachment.value, {\n content: (token, declaration) => {\n const logicalHandle = exactMarker(token, \"$niceeval.record.content\");\n if (logicalHandle === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.content\")) {\n return Result.succeed(undefined);\n }\n if (typeof logicalHandle !== \"string\") {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n const metadata = byHandle.get(logicalHandle);\n if (metadata === undefined ||\n declaration.maximumBytes !== undefined &&\n metadata.byteLength > declaration.maximumBytes) {\n return Result.fail({ code: \"current-content-bind-failed\" as const });\n }\n let handle = handles.get(logicalHandle);\n if (handle === undefined) {\n handle = mintRecordContentHandle(declaration.kind);\n handles.set(logicalHandle, handle);\n contents.set(handle, metadata);\n }\n usedContent.add(logicalHandle);\n return Result.succeed(handle);\n },\n reference: (token, declaration) => {\n const marker = exactMarker(token, \"$niceeval.record.reference\");\n if (marker === undefined &&\n !hasOwnMarker(token, \"$niceeval.record.reference\")) {\n return Result.succeed(undefined);\n }\n if (typeof marker !== \"object\" || marker === null || Array.isArray(marker)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n const value = marker as Record<string, unknown>;\n if (Reflect.ownKeys(value).length !== 3 ||\n value.owner !== declaration.definition.owner ||\n value.family !== declaration.definition.family ||\n !(\"value\" in value)) {\n return Result.fail({ code: \"current-reference-bind-failed\" as const });\n }\n return Result.succeed(mintRecordAttachmentReference(RecordAttachmentReference.to(declaration.definition, declaration.valueSchema), value.value));\n },\n });\n if (Result.isFailure(hydrated) ||\n usedContent.size !== attachment.physical.contents.length) {\n return undefined;\n }\n const closure = enumerateRecordAttachmentClosure(definition, hydrated.success);\n if (Result.isFailure(closure))\n return undefined;\n const references = new Map<string, {\n readonly owner: string;\n readonly family: string;\n }>();\n for (const reference of closure.success.references) {\n const wire = recordAttachmentReferenceWire(reference);\n if (wire === undefined)\n return undefined;\n references.set(`${wire.owner}\\u0000${wire.family}`, Object.freeze({ owner: wire.owner, family: wire.family }));\n }\n const ordered = [...references.values()].sort((left, right) => compareText(left.owner, right.owner) || compareText(left.family, right.family));\n if (ordered.length !== attachment.physical.references.length)\n return undefined;\n for (let ordinal = 0; ordinal < ordered.length; ordinal += 1) {\n const logical = ordered[ordinal]!;\n const physical = attachment.physical.references[ordinal]!;\n if (physical.ordinal !== ordinal ||\n physical.owner !== logical.owner ||\n physical.family !== logical.family) {\n return undefined;\n }\n }\n return Object.freeze({ value: hydrated.success, contents });\n}\nfunction validateCoreRelations(run: RunDocument, members: readonly MemberDocument[], attempts: readonly AttemptDocument[], allowPendingSlots = false): void {\n const slots = new Map(run.expectedSlots.map((slot) => [slot.slotId, slot] as const));\n if (slots.size !== run.expectedSlots.length || (!allowPendingSlots && members.length !== slots.size) || members.length > slots.size) {\n throw factsError(\"Run Core does not close its expected Slot membership\");\n }\n const memberSlots = new Set<string>();\n for (const member of members) {\n if (!slots.has(member.slotId) || memberSlots.has(member.slotId)) {\n throw factsError(\"Run Core contains an invalid Member Slot\");\n }\n memberSlots.add(member.slotId);\n }\n const attemptIds = new Set<string>();\n for (const attempt of attempts) {\n const slot = slots.get(attempt.slotId);\n if (attemptIds.has(attempt.attemptId) ||\n slot === undefined ||\n attempt.evalId !== slot.evalId ||\n attempt.executionIdentityDigest !== slot.executionIdentityDigest) {\n throw factsError(\"Run Core contains an invalid origin Attempt\");\n }\n attemptIds.add(attempt.attemptId);\n }\n for (const member of members) {\n if (member.action === \"executed\" &&\n (member.attempt === null ||\n member.attempt.originRunId !== run.runId ||\n !attemptIds.has(member.attempt.attemptId))) {\n throw factsError(\"Executed Member does not name a local origin Attempt\");\n }\n }\n}\nfunction targetMembers(run: LoadedInspectionRun, attempt: AttemptDocument): readonly MemberDocument[] {\n return run.members.filter((member) => member.attempt !== null &&\n member.attempt.originRunId === attempt.originRunId &&\n member.attempt.attemptId === attempt.attemptId);\n}\nfunction requireCutoff(actual: SealedRunCutoff, expected: SealedRunCutoff): void {\n if (actual.identity !== expected.identity ||\n actual.runCount !== expected.runCount) {\n throw factsError(\"Inspection source changed its pinned sealed cutoff\");\n }\n}\nfunction parseJson(bytes: Uint8Array, owner: string): unknown {\n try {\n return JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes)) as unknown;\n }\n catch (cause) {\n throw factsError(`${owner} is not canonical UTF-8 JSON`, cause);\n }\n}\nfunction parseInspectionJson(bytes: Uint8Array, owner: string): InspectionJson {\n const closed = closeInspectionJson(parseJson(bytes, owner));\n if (isInspectionCodecError(closed)) {\n throw factsError(`${owner} is invalid: ${closed.reason}`);\n }\n return closed;\n}\nfunction decodedRight<A>(decoded: Result.Result<A, unknown>, reason: string): A {\n if (Result.isFailure(decoded))\n throw factsError(reason, decoded.failure);\n return decoded.success;\n}\nfunction exactMarker(value: unknown, key: string): unknown | undefined {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return undefined;\n }\n const keys = Reflect.ownKeys(value);\n if (keys.length !== 1 || keys[0] !== key)\n return undefined;\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n return descriptor?.enumerable === true && \"value\" in descriptor\n ? descriptor.value\n : undefined;\n}\nfunction hasOwnMarker(value: unknown, key: string): boolean {\n return typeof value === \"object\" && value !== null && !Array.isArray(value) &&\n Object.prototype.hasOwnProperty.call(value, key);\n}\nfunction issue(code: string, locator: string): InspectionJson {\n return Object.freeze({ code, locator });\n}\nfunction factsError(reason: string, cause?: unknown): Error {\n return new Error(reason, cause === undefined ? undefined : { cause });\n}\nfunction compareText(left: string, right: string): number {\n return left < right ? -1 : left > right ? 1 : 0;\n}\n"]}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INSPECTION_RESULT_BYTE_LIMIT = void 0;
3
+ exports.INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = exports.INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = exports.INSPECTION_RESULT_BYTE_LIMIT = void 0;
4
4
  /** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
5
5
  exports.INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;
6
+ /** Complete Experiment aggregates and cells include per-Assertion coverage. */
7
+ exports.INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = 4 * 1024 * 1024;
8
+ /** Full source content, Judge audit and base64 encoding for assertion detail only. */
9
+ exports.INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = 32 * 1024 * 1024;
6
10
  //# sourceMappingURL=limits.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"limits.js","sourceRoot":"","sources":["limits.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;AAC5D,QAAA,4BAA4B,GAAG,GAAG,GAAG,IAAI,CAAC","sourcesContent":["/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */\nexport const INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;\n"]}
1
+ {"version":3,"file":"limits.js","sourceRoot":"","sources":["limits.ts"],"names":[],"mappings":";;;AAAA,yEAAyE;AAC5D,QAAA,4BAA4B,GAAG,GAAG,GAAG,IAAI,CAAC;AACvD,+EAA+E;AAClE,QAAA,uCAAuC,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACvE,sFAAsF;AACzE,QAAA,sCAAsC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC","sourcesContent":["/** Maximum UTF-8 JSON bytes for any one fixed operation result field. */\nexport const INSPECTION_RESULT_BYTE_LIMIT = 512 * 1024;\n/** Complete Experiment aggregates and cells include per-Assertion coverage. */\nexport const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT = 4 * 1024 * 1024;\n/** Full source content, Judge audit and base64 encoding for assertion detail only. */\nexport const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT = 32 * 1024 * 1024;\n"]}
@@ -1,2 +1,6 @@
1
1
  /** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
2
2
  export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
3
+ /** Complete Experiment aggregates and cells include per-Assertion coverage. */
4
+ export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
5
+ /** Full source content, Judge audit and base64 encoding for assertion detail only. */
6
+ export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
@@ -1,2 +1,6 @@
1
1
  /** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
2
2
  export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
3
+ /** Complete Experiment aggregates and cells include per-Assertion coverage. */
4
+ export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
5
+ /** Full source content, Judge audit and base64 encoding for assertion detail only. */
6
+ export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
@@ -1,2 +1,6 @@
1
1
  /** Maximum UTF-8 JSON bytes for any one fixed operation result field. */
2
2
  export declare const INSPECTION_RESULT_BYTE_LIMIT: number;
3
+ /** Complete Experiment aggregates and cells include per-Assertion coverage. */
4
+ export declare const INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT: number;
5
+ /** Full source content, Judge audit and base64 encoding for assertion detail only. */
6
+ export declare const INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT: number;
@@ -1,6 +1,10 @@
1
1
  import { createRequire as __niceevalCreateRequire } from "node:module";
2
2
  const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
3
  const __niceevalCanonical = __niceevalRequire("./limits.cjs");
4
- const __niceevalExport0 = __niceevalCanonical["INSPECTION_RESULT_BYTE_LIMIT"];
5
- export { __niceevalExport0 as INSPECTION_RESULT_BYTE_LIMIT };
4
+ const __niceevalExport0 = __niceevalCanonical["INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT"];
5
+ export { __niceevalExport0 as INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT };
6
+ const __niceevalExport1 = __niceevalCanonical["INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT"];
7
+ export { __niceevalExport1 as INSPECTION_EXPERIMENT_RESULT_BYTE_LIMIT };
8
+ const __niceevalExport2 = __niceevalCanonical["INSPECTION_RESULT_BYTE_LIMIT"];
9
+ export { __niceevalExport2 as INSPECTION_RESULT_BYTE_LIMIT };
6
10
  //# sourceMappingURL=limits.js.map
@@ -1,6 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.selectInspectionOverview = selectInspectionOverview;
4
+ exports.aggregateInspectionCurrentSlots = aggregateInspectionCurrentSlots;
5
+ // @concord-file ne-eval-inspection-overview
6
+ // @concord-implements docs/feature/inspection/README.md
7
+ // @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md
8
+ // @concord-implements docs/feature/insight/README.md
4
9
  const verdict_ts_1 = require("../eval/record/verdict.cjs");
5
10
  const effect_1 = require("effect");
6
11
  const current_ts_1 = require("../record/family/current.cjs");
@@ -11,19 +16,49 @@ const trace_ts_1 = require("./trace.cjs");
11
16
  * Selects the latest sealed occurrence of every Experiment/Eval/ordinal Slot
12
17
  * and closes the shared machine/Insight Overview without platform APIs.
13
18
  */
19
+ // @concord-code ne-eval-inspection-select-overview
20
+ // @concord-implements docs/feature/inspection/use-case/inspection-compare-quality-cost.md
21
+ // @concord-implements docs/feature/insight/README.md
14
22
  function selectInspectionOverview(facts, supportingRuns) {
15
23
  const runs = isLoadedInspectionRuns(facts) ? facts : (0, facts_ts_1.loadInspectionRuns)(facts);
16
24
  const selected = selectLatestSlots(runs, supportingRuns ?? runs);
17
- const cells = groupSelectedSlots(selected, ({ target, slot }) => `${target.run.experimentId}\u0000${slot.evalId}`)
18
- .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ target }) => target.run.experimentId === slots[0]?.target.run.experimentId))));
19
- const experiments = groupSelectedSlots(selected, ({ target }) => target.run.experimentId)
20
- .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.target.run.experimentId), inspectionLabelKeys(slots)));
25
+ return aggregateSelectedSlots(selected);
26
+ }
27
+ function aggregateSelectedSlots(selected) {
28
+ const cells = groupSelectedSlots(selected, ({ experimentId, evalId }) => `${experimentId}\u0000${evalId}`)
29
+ .map((slots) => makeCell(slots, inspectionLabelKeys(selected.filter(({ experimentId }) => experimentId === slots[0]?.experimentId))));
30
+ const experiments = groupSelectedSlots(selected, ({ experimentId }) => experimentId)
31
+ .map((slots) => makeExperiment(slots, cells.filter(({ experimentId }) => experimentId === slots[0]?.experimentId), inspectionLabelKeys(slots)));
21
32
  return closeOverview({
22
33
  totals: aggregate(selected, scoreFromCells(cells)),
23
34
  experiments,
24
35
  cells,
25
36
  });
26
37
  }
38
+ /** Aggregate exactly the Host-assessed current positions; gaps add no value. */
39
+ function aggregateInspectionCurrentSlots(inputs) {
40
+ return aggregateSelectedSlots(inputs.map((input) => {
41
+ const recorded = input.recorded;
42
+ return Object.freeze({
43
+ ...input,
44
+ ...(recorded ?? {}),
45
+ member: recorded?.member,
46
+ resolved: recorded?.resolved,
47
+ analysis: recorded === undefined ? Object.freeze({
48
+ assertionsState: "attempt-missing",
49
+ evaluationKind: input.evaluationKind === "score" ? "points" : "pass",
50
+ verdict: null,
51
+ score: emptyAttemptScore(),
52
+ costUSD: unavailableAttemptCost(),
53
+ durationMs: unavailableOperationalMetric(),
54
+ tokens: unavailableOperationalMetric(),
55
+ coverage: Object.freeze([]),
56
+ issues: Object.freeze([]),
57
+ ref: null,
58
+ }) : analyzeAttempt(recorded.resolved, recorded.target, recorded.member, recorded.slot),
59
+ });
60
+ }));
61
+ }
27
62
  function isLoadedInspectionRuns(facts) {
28
63
  return Array.isArray(facts);
29
64
  }
@@ -49,6 +84,12 @@ function selectLatestSlots(runs, resolutionRuns = runs) {
49
84
  ? undefined
50
85
  : (0, facts_ts_1.resolveInspectionMemberAttempt)(resolutionRuns, target, member);
51
86
  return Object.freeze({
87
+ experimentId: target.run.experimentId,
88
+ evalId: slot.evalId,
89
+ attemptOrdinal: slot.attemptOrdinal,
90
+ adapter: target.run.context.execution.adapter,
91
+ model: target.run.context.execution.model,
92
+ labels: target.run.context.labels,
52
93
  target,
53
94
  slot,
54
95
  member,
@@ -160,20 +201,22 @@ function makeCell(slots, labelKeys) {
160
201
  if (first === undefined)
161
202
  throw new Error("Overview cell cannot be empty");
162
203
  return Object.freeze({
163
- experimentId: first.target.run.experimentId,
164
- evalId: first.slot.evalId,
165
- groupPath: groupPath(first.slot.evalId),
204
+ experimentId: first.experimentId,
205
+ evalId: first.evalId,
206
+ groupPath: groupPath(first.evalId),
166
207
  ...aggregate(slots, scoreForCell(slots)),
167
- members: Object.freeze(slots.map((selected) => {
208
+ members: Object.freeze(slots.flatMap((selected) => {
209
+ if (selected.target === undefined || selected.slot === undefined)
210
+ return [];
168
211
  const resolved = selected.resolved;
169
- return Object.freeze({
170
- runId: selected.target.run.runId,
171
- slotId: selected.slot.slotId,
172
- evalId: selected.slot.evalId,
173
- attemptOrdinal: selected.slot.attemptOrdinal,
174
- labels: inspectionLabels([selected], labelKeys),
175
- publication: overviewPublication(selected),
176
- });
212
+ return [Object.freeze({
213
+ runId: selected.target.run.runId,
214
+ slotId: selected.slot.slotId,
215
+ evalId: selected.slot.evalId,
216
+ attemptOrdinal: selected.slot.attemptOrdinal,
217
+ labels: inspectionLabels([selected], labelKeys),
218
+ publication: overviewPublication(selected),
219
+ })];
177
220
  })),
178
221
  });
179
222
  }
@@ -183,7 +226,7 @@ function makeExperiment(slots, cells, labelKeys) {
183
226
  throw new Error("Overview Experiment cannot be empty");
184
227
  const prefixes = new Map();
185
228
  for (const selected of slots) {
186
- const path = groupPath(selected.slot.evalId);
229
+ const path = groupPath(selected.evalId);
187
230
  for (let length = 1; length <= path.length; length += 1) {
188
231
  const prefix = path.slice(0, length);
189
232
  const key = prefix.join("\u0000");
@@ -201,9 +244,9 @@ function makeExperiment(slots, cells, labelKeys) {
201
244
  ...aggregate(values, scoreFromCells(cells.filter((cell) => hasGroupPrefix(cell.groupPath, key.split("\u0000"))))),
202
245
  }));
203
246
  return Object.freeze({
204
- experimentId: first.target.run.experimentId,
205
- adapter: adapterValue(slots.map(({ target }) => target.run.context.execution.adapter)),
206
- model: executionValue(slots.map(({ target }) => target.run.context.execution.model)),
247
+ experimentId: first.experimentId,
248
+ adapter: adapterValue(slots.map(({ adapter }) => adapter)),
249
+ model: executionValue(slots.map(({ model }) => model)),
207
250
  labels: inspectionLabels(slots, labelKeys),
208
251
  ...aggregate(slots, scoreFromCells(cells)),
209
252
  groups: Object.freeze(groups),
@@ -213,7 +256,8 @@ function adapterValue(values) {
213
256
  const first = values[0];
214
257
  if (first === undefined || values.some((value) => value.name !== first.name ||
215
258
  value.contract !== first.contract ||
216
- value.behaviorRevision !== first.behaviorRevision)) {
259
+ value.behaviorRevision !== first.behaviorRevision ||
260
+ value.cleanupTimeoutMs !== first.cleanupTimeoutMs)) {
217
261
  return Object.freeze({ state: "mixed" });
218
262
  }
219
263
  return Object.freeze({ state: "available", value: first });
@@ -247,6 +291,7 @@ function attemptOperationalMetrics(resolved) {
247
291
  }, null);
248
292
  const adapterUsage = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.adapterUsage.family);
249
293
  const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({
294
+ models: resolved.origin.run.context.execution.models,
250
295
  agentTurns: (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.agentTurns.family),
251
296
  ...(adapterUsage === undefined ? {} : { adapterUsage }),
252
297
  }));
@@ -265,7 +310,7 @@ function attemptOperationalMetrics(resolved) {
265
310
  ? "available"
266
311
  : "partial",
267
312
  })
268
- : (0, trace_ts_1.projectAdapterUsageTokens)(adapterUsage);
313
+ : (0, trace_ts_1.projectAdapterUsageTokens)(adapterUsage, resolved.origin.run.context.execution.models);
269
314
  return Object.freeze({
270
315
  durationMs: Object.freeze({
271
316
  value: durationMs,
@@ -312,7 +357,7 @@ function overviewPublication(selected) {
312
357
  });
313
358
  }
314
359
  if (resolved === undefined) {
315
- throw new Error(`Published Slot ${selected.slot.slotId} has no readable Attempt`);
360
+ throw new Error(`Published Slot ${selected.slot?.slotId} has no readable Attempt`);
316
361
  }
317
362
  return Object.freeze({
318
363
  state: "published",
@@ -338,22 +383,18 @@ function executionValue(values) {
338
383
  : Object.freeze({ state: "available", value });
339
384
  }
340
385
  function inspectionLabelKeys(slots) {
341
- return Object.freeze([...new Set(slots.flatMap(({ target }) => Object.keys(target.run.context.labels)))].sort(compareText));
386
+ return Object.freeze([...new Set(slots.flatMap(({ labels }) => Object.keys(labels)))].sort(compareText));
342
387
  }
343
388
  function inspectionLabels(slots, keys) {
344
- const targets = new Map();
345
- for (const { target } of slots)
346
- targets.set(target.run.runId, target);
347
- const runs = [...targets.values()];
348
389
  return Object.freeze(Object.fromEntries(keys.map((key) => [
349
390
  key,
350
- executionValue(runs.map(({ run }) => run.context.labels[key] ?? null)),
391
+ executionValue(slots.map(({ labels }) => labels[key] ?? null)),
351
392
  ])));
352
393
  }
353
394
  function costUSDOf(resolved) {
354
395
  const adapterUsage = (0, facts_ts_1.attemptAttachment)(resolved, current_ts_1.NiceEvalRecordAttachments.adapterUsage.family);
355
396
  if (adapterUsage !== undefined) {
356
- const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({ adapterUsage }));
397
+ const usage = (0, trace_ts_1.projectAttemptUsage)(Object.freeze({ adapterUsage, models: resolved.origin.run.context.execution.models }));
357
398
  const costs = usage.totals.costs;
358
399
  const usd = costs?.values.find((value) => value.currency === "USD");
359
400
  if (costs === undefined || usd === undefined)
@@ -402,7 +443,7 @@ function unavailableAttemptCost() {
402
443
  function costForSlots(slots) {
403
444
  const unique = new Map();
404
445
  for (const slot of slots) {
405
- const key = slot.resolved?.locator ?? `slot:${slot.target.run.runId}:${slot.slot.slotId}`;
446
+ const key = slot.resolved?.locator ?? (slot.target === undefined ? `current:${slot.experimentId}:${slot.evalId}:${slot.attemptOrdinal}` : `slot:${slot.target.run.runId}:${slot.slot.slotId}`);
406
447
  if (!unique.has(key))
407
448
  unique.set(key, slot);
408
449
  }
@@ -553,8 +594,8 @@ function scoreForCell(slots) {
553
594
  const eligible = knownPoints.length === 0
554
595
  ? unknown
555
596
  : slots.filter(({ analysis }) => analysis.evaluationKind !== "pass");
556
- const complete = eligible.filter(({ analysis }) => analysis.verdict === "passed" &&
557
- analysis.score.hasPoints &&
597
+ // Earned-score coverage is independent of gate Verdict and ranking eligibility.
598
+ const complete = eligible.filter(({ analysis }) => analysis.score.hasPoints &&
558
599
  analysis.score.hasValue &&
559
600
  analysis.score.complete);
560
601
  const earned = complete.reduce((sum, { analysis }) => sum + analysis.score.earned, 0);