niceeval 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/INDEX.md +4 -2
  2. package/dist/adapter-usage.cjs.map +1 -1
  3. package/dist/adapter-usage.d.cts +1 -1
  4. package/dist/adapter-usage.d.mts +1 -1
  5. package/dist/adapter-usage.d.ts +1 -1
  6. package/dist/adapter.cjs +8 -7
  7. package/dist/adapter.cjs.map +1 -1
  8. package/dist/adapter.d.cts +21 -21
  9. package/dist/adapter.d.mts +21 -21
  10. package/dist/adapter.d.ts +21 -21
  11. package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
  12. package/dist/agents/agent-effects.cjs.map +1 -0
  13. package/dist/agents/agent-effects.d.cts +23 -0
  14. package/dist/agents/agent-effects.d.mts +23 -0
  15. package/dist/agents/agent-effects.d.ts +23 -0
  16. package/dist/agents/agent-effects.js +16 -0
  17. package/dist/agents/agent-effects.js.map +1 -0
  18. package/dist/agents/ai-sdk.cjs +1 -1
  19. package/dist/agents/ai-sdk.cjs.map +1 -1
  20. package/dist/agents/bub.cjs +31 -18
  21. package/dist/agents/bub.cjs.map +1 -1
  22. package/dist/agents/bub.d.cts +9 -12
  23. package/dist/agents/bub.d.mts +9 -12
  24. package/dist/agents/bub.d.ts +9 -12
  25. package/dist/agents/claude-code-native.cjs +2 -2
  26. package/dist/agents/claude-code-native.cjs.map +1 -1
  27. package/dist/agents/claude-code.cjs +17 -11
  28. package/dist/agents/claude-code.cjs.map +1 -1
  29. package/dist/agents/claude-code.d.cts +11 -11
  30. package/dist/agents/claude-code.d.mts +11 -11
  31. package/dist/agents/claude-code.d.ts +11 -11
  32. package/dist/agents/codex-app-server.cjs +2 -2
  33. package/dist/agents/codex-app-server.cjs.map +1 -1
  34. package/dist/agents/codex.cjs +18 -12
  35. package/dist/agents/codex.cjs.map +1 -1
  36. package/dist/agents/codex.d.cts +12 -12
  37. package/dist/agents/codex.d.mts +12 -12
  38. package/dist/agents/codex.d.ts +12 -12
  39. package/dist/agents/deepseek-harness.cjs +2 -2
  40. package/dist/agents/deepseek-harness.cjs.map +1 -1
  41. package/dist/agents/hermes.cjs +3 -3
  42. package/dist/agents/hermes.cjs.map +1 -1
  43. package/dist/agents/index.cjs +3 -3
  44. package/dist/agents/index.cjs.map +1 -1
  45. package/dist/agents/index.d.cts +3 -3
  46. package/dist/agents/index.d.mts +3 -3
  47. package/dist/agents/index.d.ts +3 -3
  48. package/dist/agents/index.js +2 -2
  49. package/dist/agents/index.mjs +2 -2
  50. package/dist/agents/mcp.cjs.map +1 -1
  51. package/dist/agents/mcp.d.cts +2 -2
  52. package/dist/agents/mcp.d.mts +2 -2
  53. package/dist/agents/mcp.d.ts +2 -2
  54. package/dist/agents/omp.cjs +2 -2
  55. package/dist/agents/omp.cjs.map +1 -1
  56. package/dist/agents/openai-compat.cjs +2 -2
  57. package/dist/agents/openai-compat.cjs.map +1 -1
  58. package/dist/agents/openclaw.cjs +3 -3
  59. package/dist/agents/openclaw.cjs.map +1 -1
  60. package/dist/agents/opencode.cjs +16 -4
  61. package/dist/agents/opencode.cjs.map +1 -1
  62. package/dist/agents/plugin-extensions.cjs +71 -0
  63. package/dist/agents/plugin-extensions.cjs.map +1 -0
  64. package/dist/agents/plugin-extensions.d.cts +26 -0
  65. package/dist/agents/plugin-extensions.d.mts +26 -0
  66. package/dist/agents/plugin-extensions.d.ts +26 -0
  67. package/dist/agents/plugin-extensions.js +8 -0
  68. package/dist/agents/plugin-extensions.js.map +1 -0
  69. package/dist/agents/post-setup.cjs +14 -3
  70. package/dist/agents/post-setup.cjs.map +1 -1
  71. package/dist/agents/post-setup.d.cts +4 -2
  72. package/dist/agents/post-setup.d.mts +4 -2
  73. package/dist/agents/post-setup.d.ts +4 -2
  74. package/dist/agents/post-setup.js +8 -6
  75. package/dist/agents/sdk-streams.cjs +3 -3
  76. package/dist/agents/sdk-streams.cjs.map +1 -1
  77. package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
  78. package/dist/agents/session-key.cjs.map +1 -0
  79. package/dist/agents/session-key.d.cts +12 -0
  80. package/dist/agents/session-key.d.mts +12 -0
  81. package/dist/agents/session-key.d.ts +12 -0
  82. package/dist/agents/session-key.js +6 -0
  83. package/dist/agents/session-key.js.map +1 -0
  84. package/dist/agents/shared.cjs +2 -2
  85. package/dist/agents/shared.cjs.map +1 -1
  86. package/dist/agents/shared.d.cts +4 -4
  87. package/dist/agents/shared.d.mts +4 -4
  88. package/dist/agents/shared.d.ts +4 -4
  89. package/dist/agents/skills.cjs.map +1 -1
  90. package/dist/agents/skills.d.cts +3 -3
  91. package/dist/agents/skills.d.mts +3 -3
  92. package/dist/agents/skills.d.ts +3 -3
  93. package/dist/agents/types.cjs.map +1 -1
  94. package/dist/agents/types.d.cts +55 -54
  95. package/dist/agents/types.d.mts +55 -54
  96. package/dist/agents/types.d.ts +55 -54
  97. package/dist/agents/ui-message-stream.cjs +4 -4
  98. package/dist/agents/ui-message-stream.cjs.map +1 -1
  99. package/dist/agents/unrecognized-events.cjs +32 -0
  100. package/dist/agents/unrecognized-events.cjs.map +1 -0
  101. package/dist/agents/unrecognized-events.d.cts +8 -0
  102. package/dist/agents/unrecognized-events.d.mts +8 -0
  103. package/dist/agents/unrecognized-events.d.ts +8 -0
  104. package/dist/agents/unrecognized-events.js +6 -0
  105. package/dist/agents/unrecognized-events.js.map +1 -0
  106. package/dist/assertions/api.cjs.map +1 -1
  107. package/dist/assertions/api.d.cts +3 -0
  108. package/dist/assertions/api.d.mts +3 -0
  109. package/dist/assertions/api.d.ts +3 -0
  110. package/dist/assertions/collection.cjs +1 -1
  111. package/dist/assertions/collection.cjs.map +1 -1
  112. package/dist/assertions/judge.cjs +1 -1
  113. package/dist/assertions/judge.cjs.map +1 -1
  114. package/dist/assertions/match.cjs +52 -21
  115. package/dist/assertions/match.cjs.map +1 -1
  116. package/dist/assertions/match.d.cts +16 -5
  117. package/dist/assertions/match.d.mts +16 -5
  118. package/dist/assertions/match.d.ts +16 -5
  119. package/dist/assertions/match.js +96 -94
  120. package/dist/assertions/measurements.cjs +22 -6
  121. package/dist/assertions/measurements.cjs.map +1 -1
  122. package/dist/assertions/measurements.d.cts +8 -1
  123. package/dist/assertions/measurements.d.mts +8 -1
  124. package/dist/assertions/measurements.d.ts +8 -1
  125. package/dist/assertions/numeric.cjs +2 -0
  126. package/dist/assertions/numeric.cjs.map +1 -1
  127. package/dist/assertions/numeric.d.cts +1 -1
  128. package/dist/assertions/numeric.d.mts +1 -1
  129. package/dist/assertions/numeric.d.ts +1 -1
  130. package/dist/assertions/quantity.cjs +42 -0
  131. package/dist/assertions/quantity.cjs.map +1 -0
  132. package/dist/assertions/quantity.d.cts +18 -0
  133. package/dist/assertions/quantity.d.mts +18 -0
  134. package/dist/assertions/quantity.d.ts +18 -0
  135. package/dist/assertions/quantity.js +22 -0
  136. package/dist/assertions/quantity.js.map +1 -0
  137. package/dist/assertions/record/attachment.cjs +2 -0
  138. package/dist/assertions/record/attachment.cjs.map +1 -1
  139. package/dist/assertions/record/codec.cjs +5 -1
  140. package/dist/assertions/record/codec.cjs.map +1 -1
  141. package/dist/assertions/record/model.cjs.map +1 -1
  142. package/dist/assertions/record/model.d.cts +3 -1
  143. package/dist/assertions/record/model.d.mts +3 -1
  144. package/dist/assertions/record/model.d.ts +3 -1
  145. package/dist/assertions/runtime.cjs +11 -6
  146. package/dist/assertions/runtime.cjs.map +1 -1
  147. package/dist/cli/program.cjs +3 -0
  148. package/dist/cli/program.cjs.map +1 -1
  149. package/dist/context/assert-first.cjs +6 -4
  150. package/dist/context/assert-first.cjs.map +1 -1
  151. package/dist/context/assert-first.d.cts +9 -3
  152. package/dist/context/assert-first.d.mts +9 -3
  153. package/dist/context/assert-first.d.ts +9 -3
  154. package/dist/context/notes.cjs +47 -0
  155. package/dist/context/notes.cjs.map +1 -0
  156. package/dist/context/notes.d.cts +10 -0
  157. package/dist/context/notes.d.mts +10 -0
  158. package/dist/context/notes.d.ts +10 -0
  159. package/dist/context/notes.js +6 -0
  160. package/dist/context/notes.js.map +1 -0
  161. package/dist/context/send-failures.cjs +1 -7
  162. package/dist/context/send-failures.cjs.map +1 -1
  163. package/dist/context/send-failures.d.cts +2 -3
  164. package/dist/context/send-failures.d.mts +2 -3
  165. package/dist/context/send-failures.d.ts +2 -3
  166. package/dist/context/send-retry.cjs +0 -1
  167. package/dist/context/send-retry.cjs.map +1 -1
  168. package/dist/context/send-retry.d.cts +1 -2
  169. package/dist/context/send-retry.d.mts +1 -2
  170. package/dist/context/send-retry.d.ts +1 -2
  171. package/dist/context/session.cjs +10 -17
  172. package/dist/context/session.cjs.map +1 -1
  173. package/dist/context/session.d.cts +4 -10
  174. package/dist/context/session.d.mts +4 -10
  175. package/dist/context/session.d.ts +4 -10
  176. package/dist/define.cjs +88 -65
  177. package/dist/define.cjs.map +1 -1
  178. package/dist/define.d.cts +3 -3
  179. package/dist/define.d.mts +3 -3
  180. package/dist/define.d.ts +3 -3
  181. package/dist/eval/cli/contribution.cjs +1 -1
  182. package/dist/eval/cli/contribution.cjs.map +1 -1
  183. package/dist/eval/host/index.cjs +1 -1
  184. package/dist/eval/host/index.cjs.map +1 -1
  185. package/dist/eval/record/evaluation.cjs +1 -1
  186. package/dist/eval/record/evaluation.cjs.map +1 -1
  187. package/dist/eval/record/membership-provenance.d.cts +3 -3
  188. package/dist/eval/record/membership-provenance.d.mts +3 -3
  189. package/dist/eval/record/membership-provenance.d.ts +3 -3
  190. package/dist/eval/record/score.cjs +2 -2
  191. package/dist/eval/record/score.cjs.map +1 -1
  192. package/dist/eval/record/sealed-assertion.cjs +1 -1
  193. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  194. package/dist/eval/record/verdict.cjs +2 -2
  195. package/dist/eval/record/verdict.cjs.map +1 -1
  196. package/dist/expect/index.cjs +10 -1
  197. package/dist/expect/index.cjs.map +1 -1
  198. package/dist/expect/index.d.cts +3 -1
  199. package/dist/expect/index.d.mts +3 -1
  200. package/dist/expect/index.d.ts +3 -1
  201. package/dist/expect/index.js +92 -76
  202. package/dist/expect/index.mjs +92 -76
  203. package/dist/experiment/host/cli/contribution.cjs +52 -39
  204. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  205. package/dist/experiment/host/cli/contribution.d.cts +18 -4
  206. package/dist/experiment/host/cli/contribution.d.mts +18 -4
  207. package/dist/experiment/host/cli/contribution.d.ts +18 -4
  208. package/dist/experiment/host/cli/contribution.js +2 -2
  209. package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
  210. package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
  211. package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
  212. package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
  213. package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
  214. package/dist/experiment/host/cli/output-protocol.cjs +1 -1
  215. package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
  216. package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
  217. package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
  218. package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
  219. package/dist/experiment/host/current.cjs +2 -2
  220. package/dist/experiment/host/current.cjs.map +1 -1
  221. package/dist/experiment/host/index.cjs +1 -1
  222. package/dist/experiment/host/index.cjs.map +1 -1
  223. package/dist/experiment/host/operations.cjs +21 -22
  224. package/dist/experiment/host/operations.cjs.map +1 -1
  225. package/dist/experiment/host/runtime.cjs +8 -9
  226. package/dist/experiment/host/runtime.cjs.map +1 -1
  227. package/dist/experiment/host/runtime.d.cts +3 -3
  228. package/dist/experiment/host/runtime.d.mts +3 -3
  229. package/dist/experiment/host/runtime.d.ts +3 -3
  230. package/dist/experiment/host/teardown.cjs +3 -3
  231. package/dist/experiment/host/teardown.cjs.map +1 -1
  232. package/dist/experiment/host/teardown.d.cts +3 -3
  233. package/dist/experiment/host/teardown.d.mts +3 -3
  234. package/dist/experiment/host/teardown.d.ts +3 -3
  235. package/dist/experiment/host/types.cjs.map +1 -1
  236. package/dist/experiment/host/types.d.cts +19 -19
  237. package/dist/experiment/host/types.d.mts +19 -19
  238. package/dist/experiment/host/types.d.ts +19 -19
  239. package/dist/index.cjs +3 -3
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +3 -3
  242. package/dist/index.d.mts +3 -3
  243. package/dist/index.d.ts +3 -3
  244. package/dist/index.js +2 -2
  245. package/dist/index.mjs +2 -2
  246. package/dist/inspection/assertions.cjs +1 -1
  247. package/dist/inspection/assertions.cjs.map +1 -1
  248. package/dist/inspection/cli/contribution.cjs +8 -7
  249. package/dist/inspection/cli/contribution.cjs.map +1 -1
  250. package/dist/inspection/facts.cjs +4 -4
  251. package/dist/inspection/facts.cjs.map +1 -1
  252. package/dist/inspection/index.cjs +1 -5
  253. package/dist/inspection/index.cjs.map +1 -1
  254. package/dist/inspection/index.d.cts +1 -2
  255. package/dist/inspection/index.d.mts +1 -2
  256. package/dist/inspection/index.d.ts +1 -2
  257. package/dist/inspection/index.js +20 -26
  258. package/dist/inspection/lifecycle.cjs +7 -0
  259. package/dist/inspection/lifecycle.cjs.map +1 -0
  260. package/dist/inspection/lifecycle.d.cts +4 -0
  261. package/dist/inspection/lifecycle.d.mts +4 -0
  262. package/dist/inspection/lifecycle.d.ts +4 -0
  263. package/dist/inspection/lifecycle.js +6 -0
  264. package/dist/inspection/lifecycle.js.map +1 -0
  265. package/dist/inspection/notes.cjs +40 -0
  266. package/dist/inspection/notes.cjs.map +1 -0
  267. package/dist/inspection/notes.d.cts +12 -0
  268. package/dist/inspection/notes.d.mts +12 -0
  269. package/dist/inspection/notes.d.ts +12 -0
  270. package/dist/inspection/notes.js +8 -0
  271. package/dist/inspection/notes.js.map +1 -0
  272. package/dist/inspection/overview.cjs +12 -15
  273. package/dist/inspection/overview.cjs.map +1 -1
  274. package/dist/inspection/overview.d.cts +8 -6
  275. package/dist/inspection/overview.d.mts +8 -6
  276. package/dist/inspection/overview.d.ts +8 -6
  277. package/dist/inspection/planned-attempt.cjs +45 -0
  278. package/dist/inspection/planned-attempt.cjs.map +1 -0
  279. package/dist/inspection/planned-attempt.d.cts +109 -0
  280. package/dist/inspection/planned-attempt.d.mts +109 -0
  281. package/dist/inspection/planned-attempt.d.ts +109 -0
  282. package/dist/inspection/planned-attempt.js +24 -0
  283. package/dist/inspection/planned-attempt.js.map +1 -0
  284. package/dist/inspection/project-result.cjs +5 -5
  285. package/dist/inspection/project-result.cjs.map +1 -1
  286. package/dist/inspection/project-result.d.cts +58 -57
  287. package/dist/inspection/project-result.d.mts +58 -57
  288. package/dist/inspection/project-result.d.ts +58 -57
  289. package/dist/inspection/project-result.js +4 -4
  290. package/dist/inspection/project.cjs +3 -3
  291. package/dist/inspection/project.cjs.map +1 -1
  292. package/dist/inspection/protocol-values.cjs +1 -1
  293. package/dist/inspection/protocol-values.cjs.map +1 -1
  294. package/dist/inspection/protocol-values.d.cts +1 -1
  295. package/dist/inspection/protocol-values.d.mts +1 -1
  296. package/dist/inspection/protocol-values.d.ts +1 -1
  297. package/dist/inspection/protocol.cjs +8 -8
  298. package/dist/inspection/protocol.cjs.map +1 -1
  299. package/dist/inspection/protocol.d.cts +237 -219
  300. package/dist/inspection/protocol.d.mts +237 -219
  301. package/dist/inspection/protocol.d.ts +237 -219
  302. package/dist/inspection/public.cjs +1 -5
  303. package/dist/inspection/public.cjs.map +1 -1
  304. package/dist/inspection/public.d.cts +1 -2
  305. package/dist/inspection/public.d.mts +1 -2
  306. package/dist/inspection/public.d.ts +1 -2
  307. package/dist/inspection/public.js +14 -20
  308. package/dist/inspection/public.mjs +166 -129
  309. package/dist/inspection/query.cjs +1 -1
  310. package/dist/inspection/query.cjs.map +1 -1
  311. package/dist/inspection/results.cjs +61 -52
  312. package/dist/inspection/results.cjs.map +1 -1
  313. package/dist/inspection/results.d.cts +157 -140
  314. package/dist/inspection/results.d.mts +157 -140
  315. package/dist/inspection/results.d.ts +157 -140
  316. package/dist/inspection/select.cjs +33 -28
  317. package/dist/inspection/select.cjs.map +1 -1
  318. package/dist/inspection/source.cjs +1 -1
  319. package/dist/inspection/source.cjs.map +1 -1
  320. package/dist/inspection/sources.cjs +2 -2
  321. package/dist/inspection/sources.cjs.map +1 -1
  322. package/dist/inspection/trace.cjs +9 -8
  323. package/dist/inspection/trace.cjs.map +1 -1
  324. package/dist/inspection/trace.d.cts +4 -4
  325. package/dist/inspection/trace.d.mts +4 -4
  326. package/dist/inspection/trace.d.ts +4 -4
  327. package/dist/loaders/index.cjs +7 -279
  328. package/dist/loaders/index.cjs.map +1 -1
  329. package/dist/loaders/index.d.cts +2 -95
  330. package/dist/loaders/index.d.mts +2 -95
  331. package/dist/loaders/index.d.ts +2 -95
  332. package/dist/loaders/index.js +10 -12
  333. package/dist/loaders/index.mjs +10 -12
  334. package/dist/loaders/runtime.cjs +283 -0
  335. package/dist/loaders/runtime.cjs.map +1 -0
  336. package/dist/loaders/runtime.d.cts +95 -0
  337. package/dist/loaders/runtime.d.mts +95 -0
  338. package/dist/loaders/runtime.d.ts +95 -0
  339. package/dist/loaders/runtime.js +16 -0
  340. package/dist/loaders/runtime.js.map +1 -0
  341. package/dist/migrations/judge-provider.md +6 -6
  342. package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
  343. package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
  344. package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
  345. package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
  346. package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
  347. package/dist/model-roles.js +14 -0
  348. package/dist/model-roles.js.map +1 -0
  349. package/dist/o11y/adapter-usage-projection.cjs +9 -8
  350. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  351. package/dist/o11y/adapter-usage-projection.d.cts +23 -15
  352. package/dist/o11y/adapter-usage-projection.d.mts +23 -15
  353. package/dist/o11y/adapter-usage-projection.d.ts +23 -15
  354. package/dist/o11y/cache-read.cjs +14 -14
  355. package/dist/o11y/cache-read.cjs.map +1 -1
  356. package/dist/o11y/cache-read.d.cts +5 -5
  357. package/dist/o11y/cache-read.d.mts +5 -5
  358. package/dist/o11y/cache-read.d.ts +5 -5
  359. package/dist/o11y/derive.cjs.map +1 -1
  360. package/dist/o11y/derive.d.cts +2 -2
  361. package/dist/o11y/derive.d.mts +2 -2
  362. package/dist/o11y/derive.d.ts +2 -2
  363. package/dist/o11y/eval-usage.cjs +9 -9
  364. package/dist/o11y/eval-usage.cjs.map +1 -1
  365. package/dist/o11y/eval-usage.d.cts +7 -7
  366. package/dist/o11y/eval-usage.d.mts +7 -7
  367. package/dist/o11y/eval-usage.d.ts +7 -7
  368. package/dist/o11y/parsers/bub.cjs +57 -81
  369. package/dist/o11y/parsers/bub.cjs.map +1 -1
  370. package/dist/o11y/parsers/index.cjs.map +1 -1
  371. package/dist/o11y/parsers/index.d.cts +2 -0
  372. package/dist/o11y/parsers/index.d.mts +2 -0
  373. package/dist/o11y/parsers/index.d.ts +2 -0
  374. package/dist/o11y/parsers/opencode.cjs +129 -217
  375. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  376. package/dist/o11y/parsers/opencode.d.cts +2 -5
  377. package/dist/o11y/parsers/opencode.d.mts +2 -5
  378. package/dist/o11y/parsers/opencode.d.ts +2 -5
  379. package/dist/o11y/types.cjs.map +1 -1
  380. package/dist/o11y/types.d.cts +1 -1
  381. package/dist/o11y/types.d.mts +1 -1
  382. package/dist/o11y/types.d.ts +1 -1
  383. package/dist/plugin/contracts.cjs +170 -120
  384. package/dist/plugin/contracts.cjs.map +1 -1
  385. package/dist/plugin/contracts.d.cts +102 -90
  386. package/dist/plugin/contracts.d.mts +102 -90
  387. package/dist/plugin/contracts.d.ts +102 -90
  388. package/dist/plugin/contracts.js +16 -12
  389. package/dist/plugin/index.cjs.map +1 -1
  390. package/dist/plugin/index.d.cts +1 -1
  391. package/dist/plugin/index.d.mts +1 -1
  392. package/dist/plugin/index.d.ts +1 -1
  393. package/dist/plugin/link.cjs +69 -64
  394. package/dist/plugin/link.cjs.map +1 -1
  395. package/dist/plugin/link.d.cts +5 -3
  396. package/dist/plugin/link.d.mts +5 -3
  397. package/dist/plugin/link.d.ts +5 -3
  398. package/dist/plugin/link.js +12 -8
  399. package/dist/record/codec/seal-manifest.d.cts +3 -3
  400. package/dist/record/codec/seal-manifest.d.mts +3 -3
  401. package/dist/record/codec/seal-manifest.d.ts +3 -3
  402. package/dist/record/family/attempt-note/definition.cjs +12 -0
  403. package/dist/record/family/attempt-note/definition.cjs.map +1 -0
  404. package/dist/record/family/attempt-note/definition.d.cts +6 -0
  405. package/dist/record/family/attempt-note/definition.d.mts +6 -0
  406. package/dist/record/family/attempt-note/definition.d.ts +6 -0
  407. package/dist/record/family/attempt-note/definition.js +6 -0
  408. package/dist/record/family/attempt-note/definition.js.map +1 -0
  409. package/dist/record/family/attempt-note/persistence.cjs +10 -0
  410. package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
  411. package/dist/record/family/attempt-note/persistence.d.cts +6 -0
  412. package/dist/record/family/attempt-note/persistence.d.mts +6 -0
  413. package/dist/record/family/attempt-note/persistence.d.ts +6 -0
  414. package/dist/record/family/attempt-note/persistence.js +6 -0
  415. package/dist/record/family/attempt-note/persistence.js.map +1 -0
  416. package/dist/record/family/attempt-note/schema.cjs +20 -0
  417. package/dist/record/family/attempt-note/schema.cjs.map +1 -0
  418. package/dist/record/family/attempt-note/schema.d.cts +21 -0
  419. package/dist/record/family/attempt-note/schema.d.mts +21 -0
  420. package/dist/record/family/attempt-note/schema.d.ts +21 -0
  421. package/dist/record/family/attempt-note/schema.js +10 -0
  422. package/dist/record/family/attempt-note/schema.js.map +1 -0
  423. package/dist/record/family/catalog.cjs +32 -29
  424. package/dist/record/family/catalog.cjs.map +1 -1
  425. package/dist/record/family/catalog.d.cts +7 -2
  426. package/dist/record/family/catalog.d.mts +7 -2
  427. package/dist/record/family/catalog.d.ts +7 -2
  428. package/dist/record/family/current.cjs +48 -45
  429. package/dist/record/family/current.cjs.map +1 -1
  430. package/dist/record/family/current.d.cts +15 -0
  431. package/dist/record/family/current.d.mts +15 -0
  432. package/dist/record/family/current.d.ts +15 -0
  433. package/dist/record/model/index.js +66 -64
  434. package/dist/record/model/run-context.cjs +9 -3
  435. package/dist/record/model/run-context.cjs.map +1 -1
  436. package/dist/record/model/run-context.d.cts +9 -2
  437. package/dist/record/model/run-context.d.mts +9 -2
  438. package/dist/record/model/run-context.d.ts +9 -2
  439. package/dist/record/model/run-context.js +8 -6
  440. package/dist/record/model/seal-manifest.d.cts +1 -1
  441. package/dist/record/model/seal-manifest.d.mts +1 -1
  442. package/dist/record/model/seal-manifest.d.ts +1 -1
  443. package/dist/run/cli/contribution.cjs +6 -32
  444. package/dist/run/cli/contribution.cjs.map +1 -1
  445. package/dist/run/host/runtime.cjs +1 -1
  446. package/dist/run/host/runtime.cjs.map +1 -1
  447. package/dist/run/storage/sqlite.cjs +7 -7
  448. package/dist/run/storage/sqlite.cjs.map +1 -1
  449. package/dist/runner/adapter-usage.cjs +5 -3
  450. package/dist/runner/adapter-usage.cjs.map +1 -1
  451. package/dist/runner/adapter-usage.d.cts +2 -2
  452. package/dist/runner/adapter-usage.d.mts +2 -2
  453. package/dist/runner/adapter-usage.d.ts +2 -2
  454. package/dist/runner/adoption.cjs +9 -12
  455. package/dist/runner/adoption.cjs.map +1 -1
  456. package/dist/runner/attempt-notes.cjs +8 -0
  457. package/dist/runner/attempt-notes.cjs.map +1 -0
  458. package/dist/runner/attempt-notes.d.cts +4 -0
  459. package/dist/runner/attempt-notes.d.mts +4 -0
  460. package/dist/runner/attempt-notes.d.ts +4 -0
  461. package/dist/runner/attempt-notes.js +8 -0
  462. package/dist/runner/attempt-notes.js.map +1 -0
  463. package/dist/runner/attempt.cjs +61 -73
  464. package/dist/runner/attempt.cjs.map +1 -1
  465. package/dist/runner/attempt.d.cts +3 -3
  466. package/dist/runner/attempt.d.mts +3 -3
  467. package/dist/runner/attempt.d.ts +3 -3
  468. package/dist/runner/command-plan.cjs +21 -26
  469. package/dist/runner/command-plan.cjs.map +1 -1
  470. package/dist/runner/command-plan.d.cts +4 -4
  471. package/dist/runner/command-plan.d.mts +4 -4
  472. package/dist/runner/command-plan.d.ts +4 -4
  473. package/dist/runner/command-plan.js +4 -4
  474. package/dist/runner/config-identity.cjs.map +1 -1
  475. package/dist/runner/config-identity.d.cts +2 -2
  476. package/dist/runner/config-identity.d.mts +2 -2
  477. package/dist/runner/config-identity.d.ts +2 -2
  478. package/dist/runner/discover.cjs +6 -6
  479. package/dist/runner/discover.cjs.map +1 -1
  480. package/dist/runner/eval-selection.cjs +2 -2
  481. package/dist/runner/eval-selection.cjs.map +1 -1
  482. package/dist/runner/eval-selection.d.cts +2 -2
  483. package/dist/runner/eval-selection.d.mts +2 -2
  484. package/dist/runner/eval-selection.d.ts +2 -2
  485. package/dist/runner/feedback/human.cjs +1 -1
  486. package/dist/runner/feedback/human.cjs.map +1 -1
  487. package/dist/runner/feedback/json.cjs +4 -2
  488. package/dist/runner/feedback/json.cjs.map +1 -1
  489. package/dist/runner/feedback/json.d.cts +1 -1
  490. package/dist/runner/feedback/json.d.mts +1 -1
  491. package/dist/runner/feedback/json.d.ts +1 -1
  492. package/dist/runner/feedback/sink.cjs +1 -1
  493. package/dist/runner/feedback/sink.cjs.map +1 -1
  494. package/dist/runner/feedback/sink.d.cts +1 -1
  495. package/dist/runner/feedback/sink.d.mts +1 -1
  496. package/dist/runner/feedback/sink.d.ts +1 -1
  497. package/dist/runner/fingerprint.cjs +1 -1
  498. package/dist/runner/fingerprint.cjs.map +1 -1
  499. package/dist/runner/project-target.cjs.map +1 -1
  500. package/dist/runner/project-target.d.cts +2 -2
  501. package/dist/runner/project-target.d.mts +2 -2
  502. package/dist/runner/project-target.d.ts +2 -2
  503. package/dist/runner/record/attachments.cjs +2 -2
  504. package/dist/runner/record/attachments.cjs.map +1 -1
  505. package/dist/runner/record/planning.cjs +8 -2
  506. package/dist/runner/record/planning.cjs.map +1 -1
  507. package/dist/runner/record.cjs +2 -0
  508. package/dist/runner/record.cjs.map +1 -1
  509. package/dist/runner/report.cjs +3 -3
  510. package/dist/runner/report.cjs.map +1 -1
  511. package/dist/runner/report.d.cts +1 -1
  512. package/dist/runner/report.d.mts +1 -1
  513. package/dist/runner/report.d.ts +1 -1
  514. package/dist/runner/reuse-plan.cjs +2 -2
  515. package/dist/runner/reuse-plan.cjs.map +1 -1
  516. package/dist/runner/run.cjs +10 -45
  517. package/dist/runner/run.cjs.map +1 -1
  518. package/dist/runner/sandbox-pool.cjs +1 -2
  519. package/dist/runner/sandbox-pool.cjs.map +1 -1
  520. package/dist/runner/setup-prefix-preparation.cjs +1 -1
  521. package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
  522. package/dist/runner/teardown-registry.cjs +2 -2
  523. package/dist/runner/teardown-registry.cjs.map +1 -1
  524. package/dist/runner/teardown-registry.d.cts +1 -1
  525. package/dist/runner/teardown-registry.d.mts +1 -1
  526. package/dist/runner/teardown-registry.d.ts +1 -1
  527. package/dist/runner/types.cjs +4 -4
  528. package/dist/runner/types.cjs.map +1 -1
  529. package/dist/runner/types.d.cts +64 -93
  530. package/dist/runner/types.d.mts +64 -93
  531. package/dist/runner/types.d.ts +64 -93
  532. package/dist/runner/types.js +2 -2
  533. package/dist/sandbox/action.cjs +1 -1
  534. package/dist/sandbox/action.cjs.map +1 -1
  535. package/dist/sandbox/cli/contribution.cjs +17 -14
  536. package/dist/sandbox/cli/contribution.cjs.map +1 -1
  537. package/dist/sandbox/cli/contribution.d.cts +1 -1
  538. package/dist/sandbox/cli/contribution.d.mts +1 -1
  539. package/dist/sandbox/cli/contribution.d.ts +1 -1
  540. package/dist/sandbox/commands.cjs +1 -1
  541. package/dist/sandbox/commands.cjs.map +1 -1
  542. package/dist/sandbox/commands.d.cts +1 -1
  543. package/dist/sandbox/commands.d.mts +1 -1
  544. package/dist/sandbox/commands.d.ts +1 -1
  545. package/dist/sandbox/compose.cjs +2 -2
  546. package/dist/sandbox/compose.cjs.map +1 -1
  547. package/dist/sandbox/docker-profile/registry.cjs +5 -9
  548. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  549. package/dist/sandbox/docker-profile/registry.d.cts +0 -3
  550. package/dist/sandbox/docker-profile/registry.d.mts +0 -3
  551. package/dist/sandbox/docker-profile/registry.d.ts +0 -3
  552. package/dist/sandbox/docker-profile/registry.js +6 -12
  553. package/dist/sandbox/docker-profile/runtime.cjs +1 -1
  554. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  555. package/dist/sandbox/docker-profile/schema.cjs +12 -16
  556. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  557. package/dist/sandbox/docker-profile/schema.d.cts +2 -6
  558. package/dist/sandbox/docker-profile/schema.d.mts +2 -6
  559. package/dist/sandbox/docker-profile/schema.d.ts +2 -6
  560. package/dist/sandbox/docker-profile/schema.js +24 -32
  561. package/dist/sandbox/incus.cjs +2 -2
  562. package/dist/sandbox/incus.cjs.map +1 -1
  563. package/dist/sandbox/index.cjs +4 -35
  564. package/dist/sandbox/index.cjs.map +1 -1
  565. package/dist/sandbox/index.d.cts +4 -8
  566. package/dist/sandbox/index.d.mts +4 -8
  567. package/dist/sandbox/index.d.ts +4 -8
  568. package/dist/sandbox/index.js +116 -172
  569. package/dist/sandbox/index.mjs +116 -172
  570. package/dist/sandbox/layer.cjs +3 -3
  571. package/dist/sandbox/layer.cjs.map +1 -1
  572. package/dist/sandbox/link.cjs +5 -0
  573. package/dist/sandbox/link.cjs.map +1 -1
  574. package/dist/sandbox/link.d.cts +3 -0
  575. package/dist/sandbox/link.d.mts +3 -0
  576. package/dist/sandbox/link.d.ts +3 -0
  577. package/dist/sandbox/runtime.cjs +9 -4
  578. package/dist/sandbox/runtime.cjs.map +1 -1
  579. package/dist/shared/failure-class.cjs +5 -5
  580. package/dist/shared/failure-class.cjs.map +1 -1
  581. package/dist/shared/failure-class.d.cts +4 -10
  582. package/dist/shared/failure-class.d.mts +4 -10
  583. package/dist/shared/failure-class.d.ts +4 -10
  584. package/dist/shared/types.cjs.map +1 -1
  585. package/dist/shared/types.d.cts +1 -1
  586. package/dist/shared/types.d.mts +1 -1
  587. package/dist/shared/types.d.ts +1 -1
  588. package/dist/show/contribution.cjs +17 -2
  589. package/dist/show/contribution.cjs.map +1 -1
  590. package/dist/show/contribution.d.cts +14 -0
  591. package/dist/show/contribution.d.mts +14 -0
  592. package/dist/show/contribution.d.ts +14 -0
  593. package/dist/show/model.cjs +8 -5
  594. package/dist/show/model.cjs.map +1 -1
  595. package/dist/show/model.d.cts +11 -8
  596. package/dist/show/model.d.mts +11 -8
  597. package/dist/show/model.d.ts +11 -8
  598. package/dist/show/render.cjs +34 -22
  599. package/dist/show/render.cjs.map +1 -1
  600. package/dist/sources/projector.cjs +1 -1
  601. package/dist/sources/projector.cjs.map +1 -1
  602. package/dist/types.cjs +1 -1
  603. package/dist/types.cjs.map +1 -1
  604. package/dist/types.d.cts +1 -1
  605. package/dist/types.d.mts +1 -1
  606. package/dist/types.d.ts +1 -1
  607. package/dist/types.js +2 -2
  608. package/dist/view/app-dist/.vite/manifest.json +2 -2
  609. package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
  610. package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
  611. package/dist/view/app-dist/index.html +1 -1
  612. package/dist/view/cli/contribution.cjs +1 -1
  613. package/dist/view/cli/contribution.cjs.map +1 -1
  614. package/dist/view/function-runtime.mjs +318 -121
  615. package/dist/view/http-protocol.d.cts +1 -1
  616. package/dist/view/http-protocol.d.mts +1 -1
  617. package/dist/view/http-protocol.d.ts +1 -1
  618. package/dist/view/inspection-host.cjs +2 -2
  619. package/dist/view/inspection-host.cjs.map +1 -1
  620. package/dist/view/inspection-host.d.cts +349 -331
  621. package/dist/view/inspection-host.d.mts +349 -331
  622. package/dist/view/inspection-host.d.ts +349 -331
  623. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
  624. package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
  625. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  626. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  627. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  628. package/docs-site/zh/explanation/adapter.mdx +6 -6
  629. package/docs-site/zh/explanation/assert.mdx +7 -7
  630. package/docs-site/zh/explanation/drive.mdx +4 -4
  631. package/docs-site/zh/explanation/hitl.mdx +2 -2
  632. package/docs-site/zh/explanation/judge.mdx +2 -2
  633. package/docs-site/zh/introduction.mdx +2 -2
  634. package/docs-site/zh/reference/builtin-agents.mdx +46 -49
  635. package/docs-site/zh/reference/cli.mdx +16 -14
  636. package/docs-site/zh/reference/define-agent.mdx +19 -19
  637. package/docs-site/zh/reference/define-config.mdx +7 -15
  638. package/docs-site/zh/reference/define-eval.mdx +20 -14
  639. package/docs-site/zh/reference/define-experiment.mdx +18 -39
  640. package/docs-site/zh/reference/events.mdx +1 -1
  641. package/docs-site/zh/reference/expect.mdx +21 -0
  642. package/docs-site/zh/reference/official-adapters.mdx +12 -5
  643. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  644. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
  645. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  646. package/docs-site/zh/tutorials/authoring.mdx +2 -2
  647. package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
  648. package/docs-site/zh/tutorials/concurrency.mdx +8 -8
  649. package/docs-site/zh/tutorials/configuration.mdx +5 -5
  650. package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
  651. package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
  652. package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
  653. package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
  654. package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
  655. package/docs-site/zh/tutorials/plugins.mdx +49 -143
  656. package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
  657. package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
  658. package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
  659. package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
  660. package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
  661. package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
  662. package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
  663. package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
  664. package/docs-site/zh/tutorials/write-send.mdx +13 -13
  665. package/package.json +1 -1
  666. package/dist/agents/effect-runtime.cjs.map +0 -1
  667. package/dist/agents/effect-runtime.d.cts +0 -29
  668. package/dist/agents/effect-runtime.d.mts +0 -29
  669. package/dist/agents/effect-runtime.d.ts +0 -29
  670. package/dist/agents/effect-runtime.js +0 -16
  671. package/dist/agents/effect-runtime.js.map +0 -1
  672. package/dist/agents/session-slot.cjs.map +0 -1
  673. package/dist/agents/session-slot.d.cts +0 -12
  674. package/dist/agents/session-slot.d.mts +0 -12
  675. package/dist/agents/session-slot.d.ts +0 -12
  676. package/dist/agents/session-slot.js +0 -6
  677. package/dist/agents/session-slot.js.map +0 -1
  678. package/dist/model-slots.js +0 -14
  679. package/dist/model-slots.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-eval-inspection-assertion-projection\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/assertions/README.md\nimport { Result, Schema } from \"effect\";\nimport { isRecordContentHandle } from \"../record/attachment/content.ts\";\nimport type { AssertionFactValue as RecordedAssertionFactValue, MatcherQueryArtifact as RecordedMatcherQueryArtifact, MatcherSourceSnapshot as RecordedMatcherSourceSnapshot, } from \"../assertions/record/model.ts\";\nimport { projectObservedSourceEvents, type ObservedEventLedgerRow, type ObservedToolOccurrenceLedgerRow, } from \"../o11y/derive.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/schema.ts\";\nimport type { SourceReceiptLimitation } from \"../record/family/source-receipt/index.ts\";\nimport type { PersistedContentMetadata } from \"../record/sqlite/index.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson } from \"./codec.ts\";\nimport { InspectionSha256, utf8ByteLength } from \"./bytes.ts\";\nimport type { InspectionAssertionsRead } from \"./facts.ts\";\nimport { INSPECTION_RESULT_BYTE_LIMIT, INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT } from \"./limits.ts\";\nimport { AssertionDetailResultSchema, type AssertionDetailResult } from \"./assertion-projection.ts\";\nimport { readJudgeMaterialV2 } from \"../assertions/judge-material.ts\";\nimport { readScoreMatchAudit } from \"../assertions/score-match-audit.ts\";\nimport type { ScoreMatchAuditImageContent } from \"../assertions/score-match-audit.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { InspectionAgentTurnsRead } from \"./trace.ts\";\nconst CONTENT_PAGE_SIZE = 64;\ntype AssertionsRead = {\n readonly state: \"not-recorded\";\n} | {\n readonly state: \"invalid\";\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"available\";\n readonly value: {\n readonly entries: readonly AssertionEntry[];\n readonly sourceSites: readonly AssertionSourceSite[];\n };\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n};\ntype AssertionEntry = AssertionsAttachment[\"entries\"][number];\ntype AssertionEvaluation = AssertionEntry[\"evaluation\"];\ntype AssertionSourceSite = AssertionsAttachment[\"sourceSites\"][number];\ntype MatcherAssertionEvaluation = Exclude<AssertionEvaluation, {\n readonly kind: \"ordinary\";\n}>;\ntype MatcherAssertionEntry = Omit<AssertionEntry, \"evaluation\"> & {\n readonly evaluation: MatcherAssertionEvaluation;\n};\n/** Compact, stable entry IDs and source positions for `attempt.get`. */\nexport function projectAttemptAssertionIndex(input: InspectionAssertionsRead): InspectionJson {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\") {\n return closeJson(Object.freeze({ state: assertions.state, entries: Object.freeze([]),\n ...(assertions.state === \"invalid\" ? { issues: assertions.issues } : {}),\n }));\n }\n return closeJson(Object.freeze({\n state: \"available\" as const,\n entries: Object.freeze(assertions.value.entries.map((entry) => Object.freeze({\n entryId: entry.entryId,\n display: entry.display,\n sourceSites: projectSourceSites(assertions.value.sourceSites, entry.entryId),\n }))),\n }));\n}\n/**\n * Projects one exact current Assertion revision. Undefined means the entry ID\n * does not exist in this sealed attachment; callers must surface selection\n * missing rather than selecting by ordinal, label, or source position.\n */\nexport function projectAttemptAssertionDetail(source: InspectionFactSource, input: InspectionAssertionsRead, agentTurns: InspectionAgentTurnsRead, entryId: string): AssertionDetailResult | undefined {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\") {\n return decodeAssertionDetail(closeJson(Object.freeze({\n entryId,\n state: assertions.state,\n ...(assertions.state === \"invalid\" ? { issues: assertions.issues } : {}),\n sourceSites: Object.freeze([]),\n check: missingCheck(entryId, assertions.state),\n matcher: missingMatcher(assertions.state),\n })));\n }\n const entry = assertions.value.entries.find((candidate) => candidate.entryId === entryId);\n if (entry === undefined)\n return undefined;\n const result = closeJson(Object.freeze({\n entryId: entry.entryId,\n display: entry.display,\n entry: projectEntry(source, entry, assertions.contents),\n sourceSites: projectSourceSites(assertions.value.sourceSites, entry.entryId),\n check: projectCheck(entry),\n matcher: projectMatcher(entry, agentTurns),\n }));\n if (jsonByteLength(result) > INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT) {\n throw new Error(\"Assertion detail exceeds its fixed result byte limit\");\n }\n return decodeAssertionDetail(result);\n}\nexport function projectAttemptAssertionImage(source: InspectionFactSource, input: InspectionAssertionsRead, entryId: string, imageId: string, offset = 0, limit = 256 * 1024): InspectionJson | undefined {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\")\n return closeJson({ state: assertions.state });\n const entry = assertions.value.entries.find((candidate) => candidate.entryId === entryId);\n if (entry === undefined)\n return undefined;\n try {\n if (!entry.materials.evidence.some((material) => material.kind === \"content\" && material.encoding === \"binary\"))\n return closeJson({ state: \"not-recorded\" });\n const auditMaterial = entry.materials.evidence.at(-1);\n if (auditMaterial?.kind !== \"content\" || auditMaterial.encoding !== \"json\" || !isRecordContentHandle(auditMaterial.content))\n return closeJson({ state: \"not-recorded\" });\n const auditMetadata = assertions.contents.get(auditMaterial.content);\n if (auditMetadata === undefined)\n return closeJson({ state: \"invalid\" });\n const rawAudit = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(readSealedBytes(source, auditMetadata)));\n const imageMaterials = entry.materials.evidence.slice(0, -1);\n const descriptors = JSON.parse(rawAudit.content.join(\"\"))?.images;\n const imageContent = imageMaterials.map((material, evidenceIndex): ScoreMatchAuditImageContent => {\n if (material.kind !== \"content\" || material.encoding !== \"binary\" || !isRecordContentHandle(material.content))\n throw new Error(\"Invalid Judge image material\");\n const metadata = assertions.contents.get(material.content);\n if (metadata === undefined || metadata.byteLength !== material.byteLength)\n throw new Error(\"Invalid Judge image metadata\");\n return { evidenceIndex, mediaType: descriptors?.[evidenceIndex]?.mediaType,\n bytes: readSealedBytes(source, metadata) } as ScoreMatchAuditImageContent;\n });\n const decoded = readScoreMatchAudit(rawAudit, undefined, observedMeasurement(entry.evaluation.observed), imageContent);\n if (decoded.state !== \"available\" || decoded.audit.schemaVersion !== 3)\n return closeJson({ state: \"invalid\" });\n const image = decoded.audit.images.find((candidate) => candidate.imageId === imageId);\n if (image === undefined)\n return undefined;\n const bytes = imageContent[image.evidenceIndex]!.bytes;\n if (!Number.isSafeInteger(offset) || offset < 0 || offset > bytes.length || !Number.isSafeInteger(limit) || limit < 1 || limit > 256 * 1024)\n return closeJson({ state: \"invalid\" });\n const nextOffset = Math.min(bytes.length, offset + limit);\n return closeJson({ state: \"available\", imageId, mediaType: image.mediaType, byteLength: image.byteLength, sha256: image.sha256,\n offset, base64: base64(bytes.subarray(offset, nextOffset)), nextOffset: nextOffset === bytes.length ? null : nextOffset });\n }\n catch {\n return closeJson({ state: \"invalid\" });\n }\n}\nfunction decodeAssertionDetail(input: unknown): AssertionDetailResult {\n const decoded = Schema.decodeUnknownResult(AssertionDetailResultSchema, {\n errors: \"all\", onExcessProperty: \"error\",\n })(input);\n if (Result.isFailure(decoded))\n throw new Error(`Assertion detail projection is invalid: ${String(decoded.failure)}`);\n return decoded.success;\n}\nfunction readCurrentAssertions(input: InspectionAssertionsRead): AssertionsRead {\n if (input.state === \"not-recorded\") {\n return Object.freeze({ state: \"not-recorded\" as const });\n }\n if (input.state !== \"available\") {\n return Object.freeze({ state: \"invalid\" as const, issues: input.issues });\n }\n return Object.freeze({\n state: \"available\" as const,\n value: input.value as unknown as {\n readonly entries: readonly AssertionEntry[];\n readonly sourceSites: readonly AssertionSourceSite[];\n },\n contents: input.contents,\n });\n}\nfunction projectSourceSites(sites: readonly AssertionSourceSite[], entryId: string): InspectionJson {\n return closeJson(Object.freeze(sites.filter((site) => site.entryId === entryId)\n .slice().sort((left, right) => left.sourceOrder - right.sourceOrder)\n .map((site) => Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: projectReferenceValue(site.source),\n start: Object.freeze({ line: site.start.line, column: site.start.column }),\n end: Object.freeze({ line: site.end.line, column: site.end.column }),\n }))));\n}\nfunction projectReferenceValue(reference: {\n readonly value: unknown;\n}): InspectionJson {\n return closeJson(reference.value);\n}\nfunction projectEntry(source: InspectionFactSource, entry: AssertionEntry, contentMetadata: WeakMap<object, PersistedContentMetadata>): InspectionJson {\n const currentJudge = entry.criterion.state === \"available\" && entry.criterion.value.kind === \"builtin\" && entry.criterion.value.id === \"judge-measurement/v2\";\n const currentScoreMatch = entry.criterion.state === \"available\" && entry.criterion.value.kind === \"builtin\" && entry.criterion.value.id === \"llm-measurement/v1\";\n if (currentScoreMatch) {\n const hasImages = entry.materials.evidence.some((material) => material.kind === \"content\" && material.encoding === \"binary\");\n const projected = projectSealedValue(source, entry, contentMetadata, hasImages) as Readonly<Record<string, InspectionJson>>;\n try {\n const criterionData = entry.criterion.value.data;\n const name = isRecord(criterionData) && typeof criterionData.name === \"string\" ? criterionData.name : undefined;\n const material = entry.materials.evidence.at(-1);\n if (name === undefined || material?.kind !== \"content\" || material.encoding !== \"json\" || !isRecordContentHandle(material.content)) {\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const metadata = contentMetadata.get(material.content);\n if (metadata === undefined)\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n const bytes = readSealedBytes(source, metadata);\n if (material.byteLength !== bytes.byteLength)\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n const decoded = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n return closeJson(Object.freeze({\n ...projected,\n scoreMatchAudit: readScoreMatchAudit(decoded, name, observedMeasurement(entry.evaluation.observed), hasImages\n ? entry.materials.evidence.slice(0, -1).map((image, evidenceIndex) => {\n if (image.kind !== \"content\" || image.encoding !== \"binary\" || !isRecordContentHandle(image.content))\n throw new Error(\"Invalid Judge image material\");\n const imageMetadata = contentMetadata.get(image.content);\n if (imageMetadata === undefined || imageMetadata.byteLength !== image.byteLength)\n throw new Error(\"Invalid Judge image metadata\");\n const imageDescriptor = JSON.parse(decoded.content.join(\"\"))?.images?.[evidenceIndex];\n return { evidenceIndex, mediaType: imageDescriptor?.mediaType, bytes: readSealedBytes(source, imageMetadata) } as ScoreMatchAuditImageContent;\n })\n : undefined),\n }));\n }\n catch {\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n }\n }\n if (!currentJudge)\n return projectSealedValue(source, entry, contentMetadata);\n const projected = projectSealedValue(source, entry, contentMetadata) as Readonly<Record<string, InspectionJson>>;\n try {\n const material = entry.materials.source;\n if (material.kind !== \"content\" || !isRecordContentHandle(material.content)) {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const metadata = contentMetadata.get(material.content);\n if (metadata === undefined)\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n const bytes = readSealedBytes(source, metadata);\n if (material.byteLength !== bytes.byteLength || material.encoding !== \"json\") {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const decoded = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n const criterionData = entry.criterion.value.data;\n const name = isRecord(criterionData) && typeof criterionData.name === \"string\"\n ? criterionData.name\n : undefined;\n return closeJson(Object.freeze({ ...projected, judgeMaterial: name === undefined\n ? Object.freeze({ state: \"invalid\" as const })\n : readJudgeMaterialV2(decoded, name) }));\n }\n catch {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n}\nfunction observedMeasurement(value: RecordedAssertionFactValue): number | undefined {\n if (value.kind !== \"fields\")\n return undefined;\n const fields = new Map(value.fields.map((field) => [field.label, field.value]));\n const kind = fields.get(\"kind\");\n const state = fields.get(\"state\");\n const measurement = fields.get(\"value\");\n return kind?.kind === \"value\" && kind.value === \"measurement\" &&\n state?.kind === \"value\" && state.value === \"available\" &&\n measurement?.kind === \"value\" && typeof measurement.value === \"number\"\n ? measurement.value\n : undefined;\n}\nfunction projectSealedValue(source: InspectionFactSource, value: unknown, contentMetadata: WeakMap<object, PersistedContentMetadata>, deferContent = false): InspectionJson {\n if (isRecordContentHandle(value)) {\n const metadata = contentMetadata.get(value);\n if (metadata === undefined)\n throw new Error(\"Assertion content metadata is invalid\");\n return closeJson(Object.freeze({\n state: \"available\" as const,\n byteLength: metadata.byteLength,\n sha256: metadata.digest,\n ...(deferContent ? {} : { base64: base64(readSealedBytes(source, metadata)) }),\n }));\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\" || typeof value === \"number\") {\n return closeJson(value);\n }\n if (Array.isArray(value))\n return closeJson(Object.freeze(value.map((item) => projectSealedValue(source, item, contentMetadata, deferContent))));\n if (typeof value !== \"object\")\n throw new Error(\"Assertion entry contains an unsupported value\");\n const output: Record<string, InspectionJson> = {};\n for (const key of Object.keys(value).sort()) {\n output[key] = projectSealedValue(source, Reflect.get(value, key), contentMetadata, deferContent);\n }\n return closeJson(Object.freeze(output));\n}\nfunction projectCheck(entry: AssertionEntry): InspectionJson {\n const expected = policyExpected(entry.policy);\n const observed = entry.evaluation.observed;\n return diagnosticNode(entry.display.label ?? entry.display.key ?? entry.entryId, entry.decision.result, expected, observed, entry.decision.reason, null, diagnosticChildren(entry));\n}\nfunction diagnosticChildren(entry: AssertionEntry): readonly InspectionJson[] {\n const retained = entry.explanationRetention as {\n readonly state?: string;\n readonly value?: unknown;\n };\n const legacy = entry.evaluation.kind === \"matcher-legacy\" ? entry.evaluation.legacyDiagnostic : undefined;\n const value = retained?.state === \"retained\" ? retained.value : legacy;\n return value === undefined ? Object.freeze([]) : Object.freeze([diagnosticValueNode(value, \"diagnostic\")]);\n}\nfunction diagnosticValueNode(value: unknown, label: string): InspectionJson {\n if (isRecord(value) && Array.isArray(value.children)) {\n return diagnosticNode(typeof value.label === \"string\" ? value.label : label, typeof value.state === \"string\" ? value.state : \"available\", value.expected ?? null, value.observed ?? value, typeof value.reason === \"string\" ? value.reason : null, value.anchor ?? null, Object.freeze(value.children.map((child) => diagnosticValueNode(child, \"diagnostic\"))));\n }\n if (isRecord(value) && Array.isArray(value.fields)) {\n return diagnosticNode(label, \"available\", null, value, null, null, Object.freeze(value.fields.map((field) => isRecord(field) ? diagnosticValueNode(field.value, typeof field.label === \"string\" ? field.label : \"diagnostic\") : diagnosticValueNode(field, \"diagnostic\"))));\n }\n return diagnosticNode(label, \"available\", null, value, null, null, Object.freeze([]));\n}\nfunction diagnosticNode(label: string, state: string, expected: unknown, observed: unknown, reason: string | null, anchor: unknown, children: readonly InspectionJson[]): InspectionJson {\n return closeJson(Object.freeze({\n label,\n state,\n expected: expected === undefined ? null : expected,\n observed: observed === undefined ? null : observed,\n reason,\n anchor: anchor === undefined ? null : anchor,\n children: Object.freeze([...children]),\n }));\n}\nfunction policyExpected(policy: unknown): unknown | null {\n if (!isRecord(policy) || !isRecord(policy.condition) || policy.condition.state !== \"available\")\n return null;\n return policy.condition.value ?? null;\n}\nfunction projectMatcher(entry: AssertionEntry, agentTurns: InspectionAgentTurnsRead): InspectionJson {\n const evaluation = entry.evaluation;\n if (evaluation.kind === \"ordinary\")\n return closeJson(Object.freeze({\n state: \"ordinary\" as const, sourceState: null, comparator: null, sourceLedger: evaluation.receipt ?? null,\n receipt: evaluation.receipt ?? null, result: null, targets: Object.freeze([]), debugger: null,\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n if (evaluation.kind === \"matcher-legacy\")\n return closeJson(Object.freeze({\n state: \"legacy\" as const, sourceState: \"unavailable\", comparator: null, sourceLedger: null,\n receipt: null, result: null, targets: Object.freeze([]), reason: evaluation.reason,\n debugger: projectMatcherDebugger(entry as MatcherAssertionEntry, agentTurns),\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n const artifact = evaluation.artifact;\n const comparator = artifact.kind === \"collection-filter\" ? artifact.query ?? null : artifact.querySteps ?? null;\n return closeJson(Object.freeze({\n state: \"available\" as const,\n sourceState: artifact.sourceSnapshot.collectionAtCut,\n comparator,\n sourceLedger: Object.freeze({ sourceSnapshot: artifact.sourceSnapshot, receipt: artifact.receipt }),\n receipt: artifact.receipt,\n result: artifact.kind === \"ordered-sequence\" ? artifact.result : null,\n debugger: projectMatcherDebugger(entry as MatcherAssertionEntry, agentTurns),\n targets: Object.freeze(artifact.retainedRows.map((row) => Object.freeze({\n state: row.result,\n anchor: row.locator.kind === \"tool-occurrence\"\n ? Object.freeze({ kind: \"tool-occurrence\" as const, toolOccurrenceId: row.locator.toolOccurrenceId })\n : Object.freeze({ kind: \"event\" as const, eventId: row.locator.eventId }),\n difference: row.difference ?? null,\n }))),\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n}\ntype MatcherConversationTarget = Readonly<{\n readonly state: \"exact\";\n readonly turnId: string;\n readonly eventId: string;\n readonly anchor: string;\n}> | Readonly<{\n readonly state: \"unavailable\";\n readonly reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\";\n}>;\ntype MatcherSourceLocator = Readonly<{\n readonly kind: \"tool-occurrence\";\n readonly toolOccurrenceId: string;\n}> | Readonly<{\n readonly kind: \"event\";\n readonly eventId: string;\n}>;\ninterface MatcherFilterRow {\n readonly kind: \"tool\" | \"event\" | \"legacy-source-row\";\n readonly rowId: string;\n readonly number: string;\n readonly phase: \"at-evaluation\" | \"outside-evaluation-snapshot\" | \"historical\";\n readonly summary: string;\n readonly detail: InspectionJson;\n readonly locator?: MatcherSourceLocator;\n readonly evaluation: Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\" | \"not-retained\" | \"outside-snapshot\" | \"legacy\";\n readonly difference?: InspectionJson;\n }>;\n readonly conversationTarget: MatcherConversationTarget;\n}\nfunction factValue(value: null | boolean | number | string): InspectionJson {\n return closeJson(Object.freeze({ kind: \"value\" as const, value }));\n}\nfunction factFields(fields: readonly {\n readonly label: string;\n readonly value: InspectionJson;\n}[]): InspectionJson {\n return closeJson(Object.freeze({\n kind: \"fields\" as const,\n fields: Object.freeze(fields.map((field) => Object.freeze(field))),\n }));\n}\nfunction closeRecordedAssertionFact(value: RecordedAssertionFactValue): InspectionJson {\n switch (value.kind) {\n case \"unavailable\":\n return closeJson(Object.freeze({ kind: value.kind, reason: value.reason }));\n case \"value\":\n return closeJson(Object.freeze({ kind: value.kind, value: value.value }));\n case \"text\":\n return closeJson(Object.freeze({ kind: value.kind, text: value.text }));\n case \"list\":\n return closeJson(Object.freeze({\n kind: value.kind,\n items: Object.freeze(value.items.map(closeRecordedAssertionFact)),\n }));\n case \"fields\":\n return closeJson(Object.freeze({\n kind: value.kind,\n fields: Object.freeze(value.fields.map((field) => Object.freeze({\n label: field.label,\n value: closeRecordedAssertionFact(field.value),\n }))),\n }));\n }\n}\nfunction sourceLimitationFact(limitation: SourceReceiptLimitation): InspectionJson {\n return factFields([\n { label: \"code\", value: factValue(limitation.code) },\n { label: \"target\", value: factValue(limitation.target) },\n ...(\"stage\" in limitation\n ? [{ label: \"stage\", value: factValue(limitation.stage) }]\n : \"omittedAtLeast\" in limitation\n ? [{ label: \"omittedAtLeast\", value: factValue(limitation.omittedAtLeast) }]\n : [{\n label: \"replacementOrOmittedCount\",\n value: factValue(limitation.replacementOrOmittedCount),\n }]),\n ]);\n}\nfunction matcherSubject(entry: MatcherAssertionEntry): \"tool\" | \"event\" | \"source-row\" {\n if (entry.criterion.state === \"available\") {\n const criterion = entry.criterion.value;\n if (criterion.kind === \"builtin\" &&\n (criterion.id === \"occurrence/v1\" || criterion.id === \"occurrence/v2\") &&\n isRecord(criterion.data)) {\n const occurrence = criterion.data.occurrence;\n if (occurrence === \"tool\" || occurrence === \"event\")\n return occurrence;\n }\n }\n if (entry.evaluation.kind === \"matcher-current\") {\n const artifact = entry.evaluation.artifact;\n const locator = artifact.kind === \"collection-filter\"\n ? artifact.retainedRows[0]?.locator\n : artifact.result.state === \"matched\"\n ? artifact.result.witnessPath[0]?.locator\n : artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestPossiblePrefix[0]?.locator\n : artifact.retainedRows[0]?.locator;\n if (locator?.kind === \"tool-occurrence\")\n return \"tool\";\n if (locator?.kind === \"event\")\n return \"event\";\n }\n return \"source-row\";\n}\nfunction unavailableMatcherTarget(reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\"): MatcherConversationTarget {\n return Object.freeze({ state: \"unavailable\" as const, reason });\n}\nfunction exactMatcherTarget(row: ObservedEventLedgerRow, anchor: string): MatcherConversationTarget {\n return Object.freeze({\n state: \"exact\" as const,\n turnId: row.turnId,\n eventId: row.eventId,\n anchor,\n });\n}\nfunction sourceUnavailableCollection(reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\"): InspectionJson {\n return closeJson(Object.freeze({\n state: \"unavailable\" as const,\n reason,\n rows: Object.freeze([]),\n limitations: Object.freeze([]),\n }));\n}\nfunction currentSourceCollection(state: \"complete\" | \"partial\", rows: readonly MatcherFilterRow[], limitations: readonly SourceReceiptLimitation[]): InspectionJson {\n return closeJson(Object.freeze({\n state,\n rows: Object.freeze([...rows]),\n limitations: Object.freeze(limitations.map(sourceLimitationFact)),\n }));\n}\nfunction matcherLocatorKey(locator: MatcherSourceLocator): string {\n return locator.kind === \"tool-occurrence\"\n ? `tool:${locator.toolOccurrenceId}`\n : `event:${locator.eventId}`;\n}\nfunction closeMatcherLocator(locator: RecordedMatcherQueryArtifact[\"retainedRows\"][number][\"locator\"]): MatcherSourceLocator {\n return locator.kind === \"tool-occurrence\"\n ? Object.freeze({ kind: locator.kind, toolOccurrenceId: locator.toolOccurrenceId })\n : Object.freeze({ kind: locator.kind, eventId: locator.eventId });\n}\nfunction eventSummary(row: ObservedEventLedgerRow): string {\n const event = row.event;\n switch (event.kind) {\n case \"message\": return `${event.role}: ${event.text}`;\n case \"tool-start\": return `${event.tool} started`;\n case \"tool-finish\": return `tool ${event.outcome}`;\n case \"thinking-summary\":\n case \"compaction\":\n case \"context-injection\": return event.summary;\n case \"subagent\": return `${event.label} ${event.state}`;\n case \"input-request\": return `${event.state}: ${event.promptSummary}`;\n case \"skill-load\":\n case \"conversation-error\": return `${event.code}: ${event.summary}`;\n }\n}\nfunction eventDetail(row: ObservedEventLedgerRow): InspectionJson {\n const event = row.event;\n const common = [\n { label: \"type\", value: factValue(event.kind) },\n { label: \"turn\", value: factValue(row.turnId) },\n { label: \"sessionSequence\", value: factValue(row.sessionSequence) },\n ];\n switch (event.kind) {\n case \"message\":\n return factFields([...common,\n { label: \"role\", value: factValue(event.role) },\n { label: \"text\", value: factValue(event.text) },\n ]);\n case \"tool-start\":\n return factFields([...common,\n { label: \"name\", value: factValue(event.tool) },\n { label: \"input\", value: factValue(event.inputSummary) },\n { label: \"toolOccurrenceId\", value: factValue(event.toolOccurrenceId) },\n ]);\n case \"tool-finish\":\n return factFields([...common,\n { label: \"status\", value: factValue(event.outcome) },\n { label: \"output\", value: factValue(event.outputSummary) },\n { label: \"relation\", value: factValue(event.occurrence.state === \"exact\"\n ? event.occurrence.toolOccurrenceId\n : event.occurrence.reason) },\n ]);\n case \"thinking-summary\":\n case \"compaction\":\n case \"context-injection\":\n return factFields([...common, { label: \"summary\", value: factValue(event.summary) }]);\n case \"subagent\":\n return factFields([...common,\n { label: \"name\", value: factValue(event.label) },\n { label: \"state\", value: factValue(event.state) },\n { label: \"summary\", value: factValue(event.summary) },\n ]);\n case \"input-request\":\n return factFields([...common,\n { label: \"state\", value: factValue(event.state) },\n { label: \"prompt\", value: factValue(event.promptSummary) },\n { label: \"response\", value: factValue(event.responseSummary) },\n ]);\n case \"skill-load\":\n case \"conversation-error\":\n return factFields([...common,\n { label: \"code\", value: factValue(event.code) },\n { label: \"summary\", value: factValue(event.summary) },\n ]);\n }\n}\nfunction toolDetail(occurrence: ObservedToolOccurrenceLedgerRow, eventsById: ReadonlyMap<string, ObservedEventLedgerRow>): Readonly<{\n readonly summary: string;\n readonly detail: InspectionJson;\n readonly target: MatcherConversationTarget;\n}> | undefined {\n const start = eventsById.get(occurrence.startEventId);\n if (start?.event.kind !== \"tool-start\")\n return undefined;\n const finish = occurrence.finish === null ? undefined : eventsById.get(occurrence.finish.eventId);\n return Object.freeze({\n summary: start.event.tool,\n detail: factFields([\n { label: \"name\", value: factValue(start.event.tool) },\n { label: \"input\", value: factValue(start.event.inputSummary) },\n { label: \"status\", value: factValue(finish?.event.kind === \"tool-finish\" ? finish.event.outcome : \"pending\") },\n { label: \"output\", value: factValue(finish?.event.kind === \"tool-finish\" ? finish.event.outputSummary : null) },\n { label: \"homeTurn\", value: factValue(occurrence.homeTurnId) },\n { label: \"finishTurn\", value: factValue(occurrence.finish?.turnId ?? null) },\n ]),\n target: exactMatcherTarget(start, `tool:${occurrence.toolOccurrenceId}`),\n });\n}\nfunction snapshotOwnsEvent(snapshot: RecordedMatcherSourceSnapshot, row: ObservedEventLedgerRow): boolean {\n if (snapshot.scope === \"turn\") {\n return row.sessionId === snapshot.sessionId && row.turnId === snapshot.turnId;\n }\n if (snapshot.scope === \"session\")\n return row.sessionId === snapshot.sessionId;\n return true;\n}\nfunction snapshotOwnsOccurrence(snapshot: RecordedMatcherSourceSnapshot, row: ObservedToolOccurrenceLedgerRow): boolean {\n if (snapshot.scope === \"turn\") {\n return row.sessionId === snapshot.sessionId && row.homeTurnId === snapshot.turnId;\n }\n if (snapshot.scope === \"session\")\n return row.sessionId === snapshot.sessionId;\n return true;\n}\nfunction snapshotContainsEvent(snapshot: RecordedMatcherSourceSnapshot, row: ObservedEventLedgerRow): boolean {\n if (snapshot.scope === \"turn\" || snapshot.scope === \"session\") {\n return snapshotOwnsEvent(snapshot, row) &&\n row.sessionSequence <= snapshot.throughSessionSequence;\n }\n const cut = snapshot.sessions.find((session) => session.sessionId === row.sessionId);\n return cut !== undefined && row.sessionSequence <= cut.throughSessionSequence;\n}\nfunction snapshotContainsOccurrence(snapshot: RecordedMatcherSourceSnapshot, row: ObservedToolOccurrenceLedgerRow): boolean {\n if (snapshot.scope === \"turn\" || snapshot.scope === \"session\") {\n return snapshotOwnsOccurrence(snapshot, row) &&\n row.startSessionSequence <= snapshot.throughSessionSequence;\n }\n const cut = snapshot.sessions.find((session) => session.sessionId === row.sessionId);\n return cut !== undefined && row.startSessionSequence <= cut.throughSessionSequence;\n}\nfunction currentMatcherRows(input: Readonly<{\n readonly subject: \"tool\" | \"event\";\n readonly events: readonly ObservedEventLedgerRow[];\n readonly occurrences: readonly ObservedToolOccurrenceLedgerRow[];\n readonly snapshot: RecordedMatcherSourceSnapshot;\n readonly overlays: ReadonlyMap<string, Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: InspectionJson;\n }>>;\n readonly examined: number;\n}>): Readonly<{\n readonly final: readonly MatcherFilterRow[];\n readonly atEvaluation: readonly MatcherFilterRow[];\n readonly exact: boolean;\n}> {\n const eventsById = new Map(input.events.map((row) => [row.eventId, row] as const));\n let exact = true;\n const sourceRows = input.subject === \"event\"\n ? input.events.filter((row) => snapshotOwnsEvent(input.snapshot, row) &&\n (row.event.kind === \"message\" || row.event.kind === \"tool-start\" || row.event.kind === \"tool-finish\")).map((row) => Object.freeze({\n locator: Object.freeze({ kind: \"event\" as const, eventId: row.eventId }),\n inSnapshot: snapshotContainsEvent(input.snapshot, row),\n summary: eventSummary(row),\n detail: eventDetail(row),\n target: exactMatcherTarget(row, `event:${row.eventId}`),\n }))\n : input.occurrences.flatMap((row) => {\n if (!snapshotOwnsOccurrence(input.snapshot, row))\n return [];\n const material = toolDetail(row, eventsById);\n if (material === undefined) {\n exact = false;\n return [];\n }\n return [Object.freeze({\n locator: Object.freeze({\n kind: \"tool-occurrence\" as const,\n toolOccurrenceId: row.toolOccurrenceId,\n }),\n inSnapshot: snapshotContainsOccurrence(input.snapshot, row),\n summary: material.summary,\n detail: material.detail,\n target: material.target,\n })];\n });\n let evaluatedOrdinal = 0;\n const final = sourceRows.map((row, index): MatcherFilterRow => {\n const overlay = input.overlays.get(matcherLocatorKey(row.locator));\n if (row.inSnapshot)\n evaluatedOrdinal += 1;\n const evaluation = !row.inSnapshot\n ? Object.freeze({ result: \"outside-snapshot\" as const })\n : overlay === undefined\n ? Object.freeze({\n result: evaluatedOrdinal <= input.examined\n ? \"not-retained\" as const\n : \"not-evaluated\" as const,\n })\n : Object.freeze({\n result: overlay.result,\n ...(overlay.difference === undefined ? {} : { difference: overlay.difference }),\n });\n return Object.freeze({\n kind: input.subject,\n rowId: matcherLocatorKey(row.locator),\n number: String(index + 1),\n phase: row.inSnapshot ? \"at-evaluation\" as const : \"outside-evaluation-snapshot\" as const,\n summary: row.summary,\n detail: row.detail,\n locator: row.locator,\n evaluation,\n conversationTarget: row.target,\n });\n });\n return Object.freeze({\n final: Object.freeze(final),\n atEvaluation: Object.freeze(final.filter((row) => row.phase === \"at-evaluation\")),\n exact,\n });\n}\nfunction retainedOverlay(artifact: RecordedMatcherQueryArtifact): ReadonlyMap<string, Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: InspectionJson;\n}>> {\n return new Map(artifact.retainedRows.map((row) => [\n matcherLocatorKey(closeMatcherLocator(row.locator)),\n Object.freeze({\n result: row.result,\n ...(row.difference === undefined\n ? {}\n : { difference: closeRecordedAssertionFact(row.difference) }),\n }),\n ] as const));\n}\nfunction orderSteps(artifact: RecordedMatcherQueryArtifact, rowsByLocator: ReadonlyMap<string, MatcherFilterRow>): readonly InspectionJson[] {\n if (artifact.kind !== \"ordered-sequence\")\n return Object.freeze([]);\n const definite = artifact.result.state === \"matched\"\n ? artifact.result.witnessPath\n : artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestDefinitePrefix\n : Object.freeze([]);\n const possible = artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestPossiblePrefix\n : Object.freeze([]);\n const nodes = new Map([...possible, ...definite].map((node) => [node.step, node] as const));\n const blocked = artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.firstBlockingStep\n : undefined;\n return Object.freeze(artifact.querySteps.map((query) => {\n const node = nodes.get(query.step);\n const sourceRow = node === undefined\n ? undefined\n : rowsByLocator.get(matcherLocatorKey(closeMatcherLocator(node.locator)));\n const state = query.step <= definite.length\n ? \"matched\" as const\n : query.step <= possible.length\n ? \"possible\" as const\n : query.step === blocked\n ? \"blocked\" as const\n : \"not-reached\" as const;\n return closeJson(Object.freeze({\n step: query.step,\n summary: closeRecordedAssertionFact(query.summary),\n state,\n ...(sourceRow === undefined ? {} : {\n sourceRow: sourceRow.rowId,\n conversationTarget: sourceRow.conversationTarget,\n }),\n }));\n }));\n}\nfunction closeLegacySourceRows(subject: \"tool\" | \"event\" | \"source-row\", source: InspectionAgentTurnsRead): InspectionJson {\n if (source.state !== \"available\")\n return sourceUnavailableCollection(\"source-unavailable\");\n const items = source.value.segments.flatMap((segment) => segment.items.map((item) => ({ segment, item })));\n const selected = items.filter(({ item }) => subject !== \"tool\" || item.kind === \"tool-call\" || item.kind === \"tool-start\");\n const rows = selected.map(({ segment, item }, index): MatcherFilterRow => {\n const summary = \"tool\" in item\n ? item.tool\n : \"summary\" in item\n ? item.summary\n : \"text\" in item\n ? item.text\n : item.kind;\n return Object.freeze({\n kind: \"legacy-source-row\" as const,\n rowId: `legacy:${item.itemId}`,\n number: String(index + 1),\n phase: \"historical\" as const,\n summary,\n detail: factFields([\n { label: \"type\", value: factValue(item.kind) },\n { label: \"turn\", value: factValue(segment.turnId) },\n ...(item.kind === \"tool-call\"\n ? [\n { label: \"name\", value: factValue(item.tool) },\n { label: \"input\", value: factValue(item.inputSummary) },\n { label: \"sourceLocalCallId\", value: factValue(item.callId) },\n ]\n : item.kind === \"tool-result\"\n ? [\n { label: \"status\", value: factValue(item.outcome) },\n { label: \"output\", value: factValue(item.outputSummary) },\n { label: \"sourceLocalCallId\", value: factValue(item.callId) },\n ]\n : item.kind === \"tool-start\"\n ? [\n { label: \"name\", value: factValue(item.tool) },\n { label: \"input\", value: factValue(item.inputSummary) },\n ]\n : item.kind === \"tool-finish\"\n ? [\n { label: \"status\", value: factValue(item.outcome) },\n { label: \"output\", value: factValue(item.outputSummary) },\n ]\n : \"summary\" in item\n ? [{ label: \"summary\", value: factValue(item.summary) }]\n : \"text\" in item\n ? [{ label: \"text\", value: factValue(item.text) }]\n : []),\n ]),\n evaluation: Object.freeze({ result: \"legacy\" as const }),\n conversationTarget: unavailableMatcherTarget(\"historical-not-recorded\"),\n });\n });\n return currentSourceCollection(source.value.collection.state, rows, source.value.collection.limitations);\n}\nfunction projectMatcherDebugger(entry: MatcherAssertionEntry, agentTurns: InspectionAgentTurnsRead): InspectionJson {\n const subject = matcherSubject(entry);\n if (entry.evaluation.kind === \"matcher-legacy\") {\n return closeJson(Object.freeze({\n state: \"legacy\" as const,\n subject,\n query: Object.freeze({\n state: \"unavailable\" as const,\n reason: \"historical-not-recorded\" as const,\n }),\n source: Object.freeze({\n final: closeLegacySourceRows(subject, agentTurns),\n atEvaluation: sourceUnavailableCollection(\"historical-not-recorded\"),\n }),\n identityRelation: Object.freeze({\n state: \"unavailable\" as const,\n reason: \"historical-not-recorded\" as const,\n }),\n overlayRetention: \"unavailable\" as const,\n steps: Object.freeze([]),\n ...(entry.evaluation.legacyDiagnostic === undefined\n ? {}\n : { legacyDiagnostic: closeRecordedAssertionFact(entry.evaluation.legacyDiagnostic) }),\n }));\n }\n const artifact = entry.evaluation.artifact;\n const query = artifact.kind === \"collection-filter\"\n ? Object.freeze({\n kind: artifact.kind,\n summary: closeRecordedAssertionFact(artifact.query.summary),\n })\n : Object.freeze({\n kind: artifact.kind,\n summaries: Object.freeze(artifact.querySteps.map((step) => closeRecordedAssertionFact(step.summary))),\n });\n const unavailableCurrent = (reason: \"source-unavailable\" | \"ambiguous\"): InspectionJson => closeJson(Object.freeze({\n state: \"current\" as const,\n subject: subject === \"source-row\" ? \"event\" as const : subject,\n query,\n receipt: artifact.receipt,\n source: Object.freeze({\n final: sourceUnavailableCollection(reason),\n atEvaluation: sourceUnavailableCollection(reason),\n }),\n identityRelation: Object.freeze({ state: \"unavailable\" as const, reason }),\n overlayRetention: \"unavailable\" as const,\n steps: Object.freeze([]),\n }));\n if (subject === \"source-row\" ||\n agentTurns.state !== \"available\" ||\n agentTurns.value.state !== \"current\" ||\n artifact.sourceSnapshot.source.schemaVersion !== 2)\n return unavailableCurrent(\"source-unavailable\");\n const projected = projectObservedSourceEvents(agentTurns.value.segments);\n if (projected.state === \"invalid\")\n return unavailableCurrent(\"ambiguous\");\n const overlays = retainedOverlay(artifact);\n const examined = artifact.kind === \"collection-filter\"\n ? artifact.receipt.examined\n : artifact.receipt.stepReceipts[0]?.comparisons ?? 0;\n const rows = currentMatcherRows({\n subject,\n events: projected.events,\n occurrences: projected.toolOccurrences,\n snapshot: artifact.sourceSnapshot,\n overlays,\n examined,\n });\n const rowsByLocator = new Map(rows.atEvaluation.map((row) => [row.rowId, row] as const));\n const exactRetainedIdentity = artifact.retainedRows.every((row) => row.locator.relation.state === \"exact\");\n const retainedInsideCut = overlays.size === artifact.retainedRows.length &&\n [...overlays.keys()].every((key) => rowsByLocator.has(key));\n const sourcePositions = new Map<string, Readonly<{\n readonly sessionId: string;\n readonly sessionSequence: number;\n }>>(subject === \"event\"\n ? projected.events.map((row) => [\n matcherLocatorKey({ kind: \"event\", eventId: row.eventId }),\n Object.freeze({ sessionId: row.sessionId, sessionSequence: row.sessionSequence }),\n ] as const)\n : projected.toolOccurrences.map((row) => [\n matcherLocatorKey({\n kind: \"tool-occurrence\",\n toolOccurrenceId: row.toolOccurrenceId,\n }),\n Object.freeze({\n sessionId: row.sessionId,\n sessionSequence: row.startSessionSequence,\n }),\n ] as const));\n const orderNodes = artifact.kind !== \"ordered-sequence\" || artifact.result.state === \"unavailable\"\n ? Object.freeze([])\n : artifact.result.state === \"matched\"\n ? artifact.result.witnessPath\n : Object.freeze([\n ...artifact.result.failureFrontier.longestDefinitePrefix,\n ...artifact.result.failureFrontier.longestPossiblePrefix,\n ]);\n const pathsInsideCut = orderNodes.every((node) => {\n if (node.locator.relation.state !== \"exact\")\n return false;\n const key = matcherLocatorKey(closeMatcherLocator(node.locator));\n const actual = sourcePositions.get(key);\n return actual !== undefined && actual.sessionId === node.sessionId &&\n actual.sessionSequence === node.sessionSequence && rowsByLocator.has(key);\n });\n const receiptCountMatches = artifact.kind === \"collection-filter\"\n ? artifact.receipt.knownTotal === rows.atEvaluation.length\n : artifact.receipt.sourceRows === rows.atEvaluation.length;\n if (!rows.exact ||\n !exactRetainedIdentity ||\n !retainedInsideCut ||\n !pathsInsideCut ||\n !receiptCountMatches)\n return unavailableCurrent(\"ambiguous\");\n const sourceState = agentTurns.value.collection.state === \"complete\" &&\n artifact.sourceSnapshot.collectionAtCut === \"complete\"\n ? \"complete\" as const\n : \"partial\" as const;\n const final = currentSourceCollection(agentTurns.value.collection.state, rows.final, agentTurns.value.collection.limitations);\n const atEvaluation = currentSourceCollection(sourceState, rows.atEvaluation, agentTurns.value.collection.limitations);\n const retainedCount = overlays.size;\n const overlayRetention = retainedCount >= Math.min(examined, rows.atEvaluation.length)\n ? \"complete\" as const\n : \"partial\" as const;\n return closeJson(Object.freeze({\n state: \"current\" as const,\n subject,\n query,\n receipt: artifact.receipt,\n source: Object.freeze({ final, atEvaluation }),\n identityRelation: Object.freeze({ state: \"exact\" as const }),\n overlayRetention,\n steps: orderSteps(artifact, rowsByLocator),\n }));\n}\nfunction missingCheck(entryId: string, state: string): InspectionJson {\n return diagnosticNode(entryId, state, null, null, \"not-recorded\", null, Object.freeze([]));\n}\nfunction missingMatcher(state: string): InspectionJson {\n return closeJson(Object.freeze({\n state: \"missing\" as const, sourceState: state, comparator: null, sourceLedger: null,\n receipt: null, result: null, targets: Object.freeze([]), debugger: null,\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n}\n/**\n * The Inspection source is already a validated sealed reader. This verifies\n * its pagination and byte accounting without depending on a Node hash API, so\n * the same selector can run in the browser SQLite worker.\n */\nfunction readSealedBytes(source: InspectionFactSource, metadata: PersistedContentMetadata): Uint8Array {\n const bytes = new Uint8Array(metadata.byteLength);\n const digest = new InspectionSha256();\n let offset = 0;\n let afterOrdinal = -1;\n let expectedOrdinal = 0;\n let observedChunks = 0;\n while (true) {\n const page = source.readContentPage(metadata.contentId, afterOrdinal, CONTENT_PAGE_SIZE);\n if (page.contentId !== metadata.contentId || page.afterOrdinal !== afterOrdinal ||\n page.chunks.length === 0 && page.nextOrdinal !== null)\n throw new Error(\"Assertion content page is invalid\");\n for (const chunk of page.chunks) {\n if (chunk.ordinal !== expectedOrdinal || offset + chunk.bytes.byteLength > bytes.byteLength) {\n throw new Error(\"Assertion content chunk sequence is invalid\");\n }\n bytes.set(chunk.bytes, offset);\n digest.update(chunk.bytes);\n offset += chunk.bytes.byteLength;\n expectedOrdinal += 1;\n observedChunks += 1;\n }\n if (page.nextOrdinal === null)\n break;\n if (page.nextOrdinal !== expectedOrdinal - 1 || observedChunks > metadata.chunkCount) {\n throw new Error(\"Assertion content continuation is invalid\");\n }\n afterOrdinal = page.nextOrdinal;\n }\n if (offset !== metadata.byteLength || observedChunks !== metadata.chunkCount ||\n digest.digestHex() !== metadata.digest) {\n throw new Error(\"Assertion content does not match its sealed metadata\");\n }\n return bytes;\n}\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction closeJson(value: unknown): InspectionJson {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed))\n throw closed;\n return closed as InspectionJson;\n}\nfunction jsonByteLength(value: unknown): number {\n return utf8ByteLength(JSON.stringify(value));\n}\nfunction base64(bytes: Uint8Array): string {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n let output = \"\";\n for (let index = 0; index < bytes.length; index += 3) {\n const first = bytes[index]!;\n const second = bytes[index + 1];\n const third = bytes[index + 2];\n output += alphabet[first >> 2]!;\n output += alphabet[(first & 3) << 4 | (second === undefined ? 0 : second >> 4)]!;\n output += second === undefined ? \"=\" : alphabet[(second & 15) << 2 | (third === undefined ? 0 : third >> 6)]!;\n output += third === undefined ? \"=\" : alphabet[third & 63]!;\n }\n return output;\n}\n"]}
1
+ {"version":3,"file":"assertions.js","sourceRoot":"","sources":["assertions.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/inspection/README.md\n// @concord-implements docs/feature/assertions/README.md\nimport { Result, Schema } from \"effect\";\nimport { isRecordContentHandle } from \"../record/attachment/content.ts\";\nimport type { AssertionFactValue as RecordedAssertionFactValue, MatcherQueryArtifact as RecordedMatcherQueryArtifact, MatcherSourceSnapshot as RecordedMatcherSourceSnapshot, } from \"../assertions/record/model.ts\";\nimport { projectObservedSourceEvents, type ObservedEventLedgerRow, type ObservedToolOccurrenceLedgerRow, } from \"../o11y/derive.ts\";\nimport type { AssertionsAttachment } from \"../record/family/assertions/schema.ts\";\nimport type { SourceReceiptLimitation } from \"../record/family/source-receipt/index.ts\";\nimport type { PersistedContentMetadata } from \"../record/sqlite/index.ts\";\nimport { closeInspectionJson, isInspectionCodecError, type InspectionJson } from \"./codec.ts\";\nimport { InspectionSha256, utf8ByteLength } from \"./bytes.ts\";\nimport type { InspectionAssertionsRead } from \"./facts.ts\";\nimport { INSPECTION_RESULT_BYTE_LIMIT, INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT } from \"./limits.ts\";\nimport { AssertionDetailResultSchema, type AssertionDetailResult } from \"./assertion-projection.ts\";\nimport { readJudgeMaterialV2 } from \"../assertions/judge-material.ts\";\nimport { readScoreMatchAudit } from \"../assertions/score-match-audit.ts\";\nimport type { ScoreMatchAuditImageContent } from \"../assertions/score-match-audit.ts\";\nimport type { InspectionFactSource } from \"./source.ts\";\nimport type { InspectionAgentTurnsRead } from \"./trace.ts\";\nconst CONTENT_PAGE_SIZE = 64;\ntype AssertionsRead = {\n readonly state: \"not-recorded\";\n} | {\n readonly state: \"invalid\";\n readonly issues: readonly InspectionJson[];\n} | {\n readonly state: \"available\";\n readonly value: {\n readonly entries: readonly AssertionEntry[];\n readonly sourceSites: readonly AssertionSourceSite[];\n };\n readonly contents: WeakMap<object, PersistedContentMetadata>;\n};\ntype AssertionEntry = AssertionsAttachment[\"entries\"][number];\ntype AssertionEvaluation = AssertionEntry[\"evaluation\"];\ntype AssertionSourceSite = AssertionsAttachment[\"sourceSites\"][number];\ntype MatcherAssertionEvaluation = Exclude<AssertionEvaluation, {\n readonly kind: \"ordinary\";\n}>;\ntype MatcherAssertionEntry = Omit<AssertionEntry, \"evaluation\"> & {\n readonly evaluation: MatcherAssertionEvaluation;\n};\n/** Compact, stable entry IDs and source positions for `attempt.get`. */\nexport function projectAttemptAssertionIndex(input: InspectionAssertionsRead): InspectionJson {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\") {\n return closeJson(Object.freeze({ state: assertions.state, entries: Object.freeze([]),\n ...(assertions.state === \"invalid\" ? { issues: assertions.issues } : {}),\n }));\n }\n return closeJson(Object.freeze({\n state: \"available\" as const,\n entries: Object.freeze(assertions.value.entries.map((entry) => Object.freeze({\n entryId: entry.entryId,\n display: entry.display,\n sourceSites: projectSourceSites(assertions.value.sourceSites, entry.entryId),\n }))),\n }));\n}\n/**\n * Projects one exact current Assertion revision. Undefined means the entry ID\n * does not exist in this sealed attachment; callers must surface selection\n * missing rather than selecting by ordinal, label, or source position.\n */\nexport function projectAttemptAssertionDetail(source: InspectionFactSource, input: InspectionAssertionsRead, agentTurns: InspectionAgentTurnsRead, entryId: string): AssertionDetailResult | undefined {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\") {\n return decodeAssertionDetail(closeJson(Object.freeze({\n entryId,\n state: assertions.state,\n ...(assertions.state === \"invalid\" ? { issues: assertions.issues } : {}),\n sourceSites: Object.freeze([]),\n check: missingCheck(entryId, assertions.state),\n matcher: missingMatcher(assertions.state),\n })));\n }\n const entry = assertions.value.entries.find((candidate) => candidate.entryId === entryId);\n if (entry === undefined)\n return undefined;\n const result = closeJson(Object.freeze({\n entryId: entry.entryId,\n display: entry.display,\n entry: projectEntry(source, entry, assertions.contents),\n sourceSites: projectSourceSites(assertions.value.sourceSites, entry.entryId),\n check: projectCheck(entry),\n matcher: projectMatcher(entry, agentTurns),\n }));\n if (jsonByteLength(result) > INSPECTION_ASSERTION_DETAIL_BYTE_LIMIT) {\n throw new Error(\"Assertion detail exceeds its fixed result byte limit\");\n }\n return decodeAssertionDetail(result);\n}\nexport function projectAttemptAssertionImage(source: InspectionFactSource, input: InspectionAssertionsRead, entryId: string, imageId: string, offset = 0, limit = 256 * 1024): InspectionJson | undefined {\n const assertions = readCurrentAssertions(input);\n if (assertions.state !== \"available\")\n return closeJson({ state: assertions.state });\n const entry = assertions.value.entries.find((candidate) => candidate.entryId === entryId);\n if (entry === undefined)\n return undefined;\n try {\n if (!entry.materials.evidence.some((material) => material.kind === \"content\" && material.encoding === \"binary\"))\n return closeJson({ state: \"not-recorded\" });\n const auditMaterial = entry.materials.evidence.at(-1);\n if (auditMaterial?.kind !== \"content\" || auditMaterial.encoding !== \"json\" || !isRecordContentHandle(auditMaterial.content))\n return closeJson({ state: \"not-recorded\" });\n const auditMetadata = assertions.contents.get(auditMaterial.content);\n if (auditMetadata === undefined)\n return closeJson({ state: \"invalid\" });\n const rawAudit = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(readSealedBytes(source, auditMetadata)));\n const imageMaterials = entry.materials.evidence.slice(0, -1);\n const descriptors = JSON.parse(rawAudit.content.join(\"\"))?.images;\n const imageContent = imageMaterials.map((material, evidenceIndex): ScoreMatchAuditImageContent => {\n if (material.kind !== \"content\" || material.encoding !== \"binary\" || !isRecordContentHandle(material.content))\n throw new Error(\"Invalid Judge image material\");\n const metadata = assertions.contents.get(material.content);\n if (metadata === undefined || metadata.byteLength !== material.byteLength)\n throw new Error(\"Invalid Judge image metadata\");\n return { evidenceIndex, mediaType: descriptors?.[evidenceIndex]?.mediaType,\n bytes: readSealedBytes(source, metadata) } as ScoreMatchAuditImageContent;\n });\n const decoded = readScoreMatchAudit(rawAudit, undefined, observedMeasurement(entry.evaluation.observed), imageContent);\n if (decoded.state !== \"available\" || decoded.audit.schemaVersion !== 3)\n return closeJson({ state: \"invalid\" });\n const image = decoded.audit.images.find((candidate) => candidate.imageId === imageId);\n if (image === undefined)\n return undefined;\n const bytes = imageContent[image.evidenceIndex]!.bytes;\n if (!Number.isSafeInteger(offset) || offset < 0 || offset > bytes.length || !Number.isSafeInteger(limit) || limit < 1 || limit > 256 * 1024)\n return closeJson({ state: \"invalid\" });\n const nextOffset = Math.min(bytes.length, offset + limit);\n return closeJson({ state: \"available\", imageId, mediaType: image.mediaType, byteLength: image.byteLength, sha256: image.sha256,\n offset, base64: base64(bytes.subarray(offset, nextOffset)), nextOffset: nextOffset === bytes.length ? null : nextOffset });\n }\n catch {\n return closeJson({ state: \"invalid\" });\n }\n}\nfunction decodeAssertionDetail(input: unknown): AssertionDetailResult {\n const decoded = Schema.decodeUnknownResult(AssertionDetailResultSchema, {\n errors: \"all\", onExcessProperty: \"error\",\n })(input);\n if (Result.isFailure(decoded))\n throw new Error(`Assertion detail projection is invalid: ${String(decoded.failure)}`);\n return decoded.success;\n}\nfunction readCurrentAssertions(input: InspectionAssertionsRead): AssertionsRead {\n if (input.state === \"not-recorded\") {\n return Object.freeze({ state: \"not-recorded\" as const });\n }\n if (input.state !== \"available\") {\n return Object.freeze({ state: \"invalid\" as const, issues: input.issues });\n }\n return Object.freeze({\n state: \"available\" as const,\n value: input.value as unknown as {\n readonly entries: readonly AssertionEntry[];\n readonly sourceSites: readonly AssertionSourceSite[];\n },\n contents: input.contents,\n });\n}\nfunction projectSourceSites(sites: readonly AssertionSourceSite[], entryId: string): InspectionJson {\n return closeJson(Object.freeze(sites.filter((site) => site.entryId === entryId)\n .slice().sort((left, right) => left.sourceOrder - right.sourceOrder)\n .map((site) => Object.freeze({\n entryId: site.entryId,\n sourceOrder: site.sourceOrder,\n role: site.role,\n source: projectReferenceValue(site.source),\n start: Object.freeze({ line: site.start.line, column: site.start.column }),\n end: Object.freeze({ line: site.end.line, column: site.end.column }),\n }))));\n}\nfunction projectReferenceValue(reference: {\n readonly value: unknown;\n}): InspectionJson {\n return closeJson(reference.value);\n}\nfunction projectEntry(source: InspectionFactSource, entry: AssertionEntry, contentMetadata: WeakMap<object, PersistedContentMetadata>): InspectionJson {\n const currentJudge = entry.criterion.state === \"available\" && entry.criterion.value.kind === \"builtin\" && entry.criterion.value.id === \"judge-measurement/v2\";\n const currentScoreMatch = entry.criterion.state === \"available\" && entry.criterion.value.kind === \"builtin\" && entry.criterion.value.id === \"llm-measurement/v1\";\n if (currentScoreMatch) {\n const hasImages = entry.materials.evidence.some((material) => material.kind === \"content\" && material.encoding === \"binary\");\n const projected = projectSealedValue(source, entry, contentMetadata, hasImages) as Readonly<Record<string, InspectionJson>>;\n try {\n const criterionData = entry.criterion.value.data;\n const name = isRecord(criterionData) && typeof criterionData.name === \"string\" ? criterionData.name : undefined;\n const material = entry.materials.evidence.at(-1);\n if (name === undefined || material?.kind !== \"content\" || material.encoding !== \"json\" || !isRecordContentHandle(material.content)) {\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const metadata = contentMetadata.get(material.content);\n if (metadata === undefined)\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n const bytes = readSealedBytes(source, metadata);\n if (material.byteLength !== bytes.byteLength)\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n const decoded = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n return closeJson(Object.freeze({\n ...projected,\n scoreMatchAudit: readScoreMatchAudit(decoded, name, observedMeasurement(entry.evaluation.observed), hasImages\n ? entry.materials.evidence.slice(0, -1).map((image, evidenceIndex) => {\n if (image.kind !== \"content\" || image.encoding !== \"binary\" || !isRecordContentHandle(image.content))\n throw new Error(\"Invalid Judge image material\");\n const imageMetadata = contentMetadata.get(image.content);\n if (imageMetadata === undefined || imageMetadata.byteLength !== image.byteLength)\n throw new Error(\"Invalid Judge image metadata\");\n const imageDescriptor = JSON.parse(decoded.content.join(\"\"))?.images?.[evidenceIndex];\n return { evidenceIndex, mediaType: imageDescriptor?.mediaType, bytes: readSealedBytes(source, imageMetadata) } as ScoreMatchAuditImageContent;\n })\n : undefined),\n }));\n }\n catch {\n return closeJson(Object.freeze({ ...projected, scoreMatchAudit: Object.freeze({ state: \"invalid\" as const }) }));\n }\n }\n if (!currentJudge)\n return projectSealedValue(source, entry, contentMetadata);\n const projected = projectSealedValue(source, entry, contentMetadata) as Readonly<Record<string, InspectionJson>>;\n try {\n const material = entry.materials.source;\n if (material.kind !== \"content\" || !isRecordContentHandle(material.content)) {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const metadata = contentMetadata.get(material.content);\n if (metadata === undefined)\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n const bytes = readSealedBytes(source, metadata);\n if (material.byteLength !== bytes.byteLength || material.encoding !== \"json\") {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n const decoded = JSON.parse(new TextDecoder(\"utf-8\", { fatal: true }).decode(bytes));\n const criterionData = entry.criterion.value.data;\n const name = isRecord(criterionData) && typeof criterionData.name === \"string\"\n ? criterionData.name\n : undefined;\n return closeJson(Object.freeze({ ...projected, judgeMaterial: name === undefined\n ? Object.freeze({ state: \"invalid\" as const })\n : readJudgeMaterialV2(decoded, name) }));\n }\n catch {\n return closeJson(Object.freeze({ ...projected, judgeMaterial: Object.freeze({ state: \"invalid\" as const }) }));\n }\n}\nfunction observedMeasurement(value: RecordedAssertionFactValue): number | undefined {\n if (value.kind !== \"fields\")\n return undefined;\n const fields = new Map(value.fields.map((field) => [field.label, field.value]));\n const kind = fields.get(\"kind\");\n const state = fields.get(\"state\");\n const measurement = fields.get(\"value\");\n return kind?.kind === \"value\" && kind.value === \"measurement\" &&\n state?.kind === \"value\" && state.value === \"available\" &&\n measurement?.kind === \"value\" && typeof measurement.value === \"number\"\n ? measurement.value\n : undefined;\n}\nfunction projectSealedValue(source: InspectionFactSource, value: unknown, contentMetadata: WeakMap<object, PersistedContentMetadata>, deferContent = false): InspectionJson {\n if (isRecordContentHandle(value)) {\n const metadata = contentMetadata.get(value);\n if (metadata === undefined)\n throw new Error(\"Assertion content metadata is invalid\");\n return closeJson(Object.freeze({\n state: \"available\" as const,\n byteLength: metadata.byteLength,\n sha256: metadata.digest,\n ...(deferContent ? {} : { base64: base64(readSealedBytes(source, metadata)) }),\n }));\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\" || typeof value === \"number\") {\n return closeJson(value);\n }\n if (Array.isArray(value))\n return closeJson(Object.freeze(value.map((item) => projectSealedValue(source, item, contentMetadata, deferContent))));\n if (typeof value !== \"object\")\n throw new Error(\"Assertion entry contains an unsupported value\");\n const output: Record<string, InspectionJson> = {};\n for (const key of Object.keys(value).sort()) {\n output[key] = projectSealedValue(source, Reflect.get(value, key), contentMetadata, deferContent);\n }\n return closeJson(Object.freeze(output));\n}\nfunction projectCheck(entry: AssertionEntry): InspectionJson {\n const expected = policyExpected(entry.policy);\n const observed = entry.evaluation.observed;\n return diagnosticNode(entry.display.label ?? entry.display.key ?? entry.entryId, entry.decision.result, expected, observed, entry.decision.reason, null, diagnosticChildren(entry));\n}\nfunction diagnosticChildren(entry: AssertionEntry): readonly InspectionJson[] {\n const retained = entry.explanationRetention as {\n readonly state?: string;\n readonly value?: unknown;\n };\n const legacy = entry.evaluation.kind === \"matcher-legacy\" ? entry.evaluation.legacyDiagnostic : undefined;\n const value = retained?.state === \"retained\" ? retained.value : legacy;\n return value === undefined ? Object.freeze([]) : Object.freeze([diagnosticValueNode(value, \"diagnostic\")]);\n}\nfunction diagnosticValueNode(value: unknown, label: string): InspectionJson {\n if (isRecord(value) && Array.isArray(value.children)) {\n return diagnosticNode(typeof value.label === \"string\" ? value.label : label, typeof value.state === \"string\" ? value.state : \"available\", value.expected ?? null, value.observed ?? value, typeof value.reason === \"string\" ? value.reason : null, value.anchor ?? null, Object.freeze(value.children.map((child) => diagnosticValueNode(child, \"diagnostic\"))));\n }\n if (isRecord(value) && Array.isArray(value.fields)) {\n return diagnosticNode(label, \"available\", null, value, null, null, Object.freeze(value.fields.map((field) => isRecord(field) ? diagnosticValueNode(field.value, typeof field.label === \"string\" ? field.label : \"diagnostic\") : diagnosticValueNode(field, \"diagnostic\"))));\n }\n return diagnosticNode(label, \"available\", null, value, null, null, Object.freeze([]));\n}\nfunction diagnosticNode(label: string, state: string, expected: unknown, observed: unknown, reason: string | null, anchor: unknown, children: readonly InspectionJson[]): InspectionJson {\n return closeJson(Object.freeze({\n label,\n state,\n expected: expected === undefined ? null : expected,\n observed: observed === undefined ? null : observed,\n reason,\n anchor: anchor === undefined ? null : anchor,\n children: Object.freeze([...children]),\n }));\n}\nfunction policyExpected(policy: unknown): unknown | null {\n if (!isRecord(policy) || !isRecord(policy.condition) || policy.condition.state !== \"available\")\n return null;\n return policy.condition.value ?? null;\n}\nfunction projectMatcher(entry: AssertionEntry, agentTurns: InspectionAgentTurnsRead): InspectionJson {\n const evaluation = entry.evaluation;\n if (evaluation.kind === \"ordinary\")\n return closeJson(Object.freeze({\n state: \"ordinary\" as const, sourceState: null, comparator: null, sourceLedger: evaluation.receipt ?? null,\n receipt: evaluation.receipt ?? null, result: null, targets: Object.freeze([]), debugger: null,\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n if (evaluation.kind === \"matcher-legacy\")\n return closeJson(Object.freeze({\n state: \"legacy\" as const, sourceState: \"unavailable\", comparator: null, sourceLedger: null,\n receipt: null, result: null, targets: Object.freeze([]), reason: evaluation.reason,\n debugger: projectMatcherDebugger(entry as MatcherAssertionEntry, agentTurns),\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n const artifact = evaluation.artifact;\n const comparator = artifact.kind === \"collection-filter\" ? artifact.query ?? null : artifact.querySteps ?? null;\n return closeJson(Object.freeze({\n state: \"available\" as const,\n sourceState: artifact.sourceSnapshot.collectionAtCut,\n comparator,\n sourceLedger: Object.freeze({ sourceSnapshot: artifact.sourceSnapshot, receipt: artifact.receipt }),\n receipt: artifact.receipt,\n result: artifact.kind === \"ordered-sequence\" ? artifact.result : null,\n debugger: projectMatcherDebugger(entry as MatcherAssertionEntry, agentTurns),\n targets: Object.freeze(artifact.retainedRows.map((row) => Object.freeze({\n state: row.result,\n anchor: row.locator.kind === \"tool-occurrence\"\n ? Object.freeze({ kind: \"tool-occurrence\" as const, toolOccurrenceId: row.locator.toolOccurrenceId })\n : Object.freeze({ kind: \"event\" as const, eventId: row.locator.eventId }),\n difference: row.difference ?? null,\n }))),\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n}\ntype MatcherConversationTarget = Readonly<{\n readonly state: \"exact\";\n readonly turnId: string;\n readonly eventId: string;\n readonly anchor: string;\n}> | Readonly<{\n readonly state: \"unavailable\";\n readonly reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\";\n}>;\ntype MatcherSourceLocator = Readonly<{\n readonly kind: \"tool-occurrence\";\n readonly toolOccurrenceId: string;\n}> | Readonly<{\n readonly kind: \"event\";\n readonly eventId: string;\n}>;\ninterface MatcherFilterRow {\n readonly kind: \"tool\" | \"event\" | \"legacy-source-row\";\n readonly rowId: string;\n readonly number: string;\n readonly phase: \"at-evaluation\" | \"outside-evaluation-snapshot\" | \"historical\";\n readonly summary: string;\n readonly detail: InspectionJson;\n readonly locator?: MatcherSourceLocator;\n readonly evaluation: Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\" | \"not-retained\" | \"outside-snapshot\" | \"legacy\";\n readonly difference?: InspectionJson;\n }>;\n readonly conversationTarget: MatcherConversationTarget;\n}\nfunction factValue(value: null | boolean | number | string): InspectionJson {\n return closeJson(Object.freeze({ kind: \"value\" as const, value }));\n}\nfunction factFields(fields: readonly {\n readonly label: string;\n readonly value: InspectionJson;\n}[]): InspectionJson {\n return closeJson(Object.freeze({\n kind: \"fields\" as const,\n fields: Object.freeze(fields.map((field) => Object.freeze(field))),\n }));\n}\nfunction closeRecordedAssertionFact(value: RecordedAssertionFactValue): InspectionJson {\n switch (value.kind) {\n case \"unavailable\":\n return closeJson(Object.freeze({ kind: value.kind, reason: value.reason }));\n case \"value\":\n return closeJson(Object.freeze({ kind: value.kind, value: value.value }));\n case \"text\":\n return closeJson(Object.freeze({ kind: value.kind, text: value.text }));\n case \"list\":\n return closeJson(Object.freeze({\n kind: value.kind,\n items: Object.freeze(value.items.map(closeRecordedAssertionFact)),\n }));\n case \"fields\":\n return closeJson(Object.freeze({\n kind: value.kind,\n fields: Object.freeze(value.fields.map((field) => Object.freeze({\n label: field.label,\n value: closeRecordedAssertionFact(field.value),\n }))),\n }));\n }\n}\nfunction sourceLimitationFact(limitation: SourceReceiptLimitation): InspectionJson {\n return factFields([\n { label: \"code\", value: factValue(limitation.code) },\n { label: \"target\", value: factValue(limitation.target) },\n ...(\"stage\" in limitation\n ? [{ label: \"stage\", value: factValue(limitation.stage) }]\n : \"omittedAtLeast\" in limitation\n ? [{ label: \"omittedAtLeast\", value: factValue(limitation.omittedAtLeast) }]\n : [{\n label: \"replacementOrOmittedCount\",\n value: factValue(limitation.replacementOrOmittedCount),\n }]),\n ]);\n}\nfunction matcherSubject(entry: MatcherAssertionEntry): \"tool\" | \"event\" | \"source-row\" {\n if (entry.criterion.state === \"available\") {\n const criterion = entry.criterion.value;\n if (criterion.kind === \"builtin\" &&\n (criterion.id === \"occurrence/v1\" || criterion.id === \"occurrence/v2\") &&\n isRecord(criterion.data)) {\n const occurrence = criterion.data.occurrence;\n if (occurrence === \"tool\" || occurrence === \"event\")\n return occurrence;\n }\n }\n if (entry.evaluation.kind === \"matcher-current\") {\n const artifact = entry.evaluation.artifact;\n const locator = artifact.kind === \"collection-filter\"\n ? artifact.retainedRows[0]?.locator\n : artifact.result.state === \"matched\"\n ? artifact.result.witnessPath[0]?.locator\n : artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestPossiblePrefix[0]?.locator\n : artifact.retainedRows[0]?.locator;\n if (locator?.kind === \"tool-occurrence\")\n return \"tool\";\n if (locator?.kind === \"event\")\n return \"event\";\n }\n return \"source-row\";\n}\nfunction unavailableMatcherTarget(reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\"): MatcherConversationTarget {\n return Object.freeze({ state: \"unavailable\" as const, reason });\n}\nfunction exactMatcherTarget(row: ObservedEventLedgerRow, anchor: string): MatcherConversationTarget {\n return Object.freeze({\n state: \"exact\" as const,\n turnId: row.turnId,\n eventId: row.eventId,\n anchor,\n });\n}\nfunction sourceUnavailableCollection(reason: \"historical-not-recorded\" | \"source-unavailable\" | \"ambiguous\"): InspectionJson {\n return closeJson(Object.freeze({\n state: \"unavailable\" as const,\n reason,\n rows: Object.freeze([]),\n limitations: Object.freeze([]),\n }));\n}\nfunction currentSourceCollection(state: \"complete\" | \"partial\", rows: readonly MatcherFilterRow[], limitations: readonly SourceReceiptLimitation[]): InspectionJson {\n return closeJson(Object.freeze({\n state,\n rows: Object.freeze([...rows]),\n limitations: Object.freeze(limitations.map(sourceLimitationFact)),\n }));\n}\nfunction matcherLocatorKey(locator: MatcherSourceLocator): string {\n return locator.kind === \"tool-occurrence\"\n ? `tool:${locator.toolOccurrenceId}`\n : `event:${locator.eventId}`;\n}\nfunction closeMatcherLocator(locator: RecordedMatcherQueryArtifact[\"retainedRows\"][number][\"locator\"]): MatcherSourceLocator {\n return locator.kind === \"tool-occurrence\"\n ? Object.freeze({ kind: locator.kind, toolOccurrenceId: locator.toolOccurrenceId })\n : Object.freeze({ kind: locator.kind, eventId: locator.eventId });\n}\nfunction eventSummary(row: ObservedEventLedgerRow): string {\n const event = row.event;\n switch (event.kind) {\n case \"message\": return `${event.role}: ${event.text}`;\n case \"tool-start\": return `${event.tool} started`;\n case \"tool-finish\": return `tool ${event.outcome}`;\n case \"thinking-summary\":\n case \"compaction\":\n case \"context-injection\": return event.summary;\n case \"subagent\": return `${event.label} ${event.state}`;\n case \"input-request\": return `${event.state}: ${event.promptSummary}`;\n case \"skill-load\":\n case \"conversation-error\": return `${event.code}: ${event.summary}`;\n }\n}\nfunction eventDetail(row: ObservedEventLedgerRow): InspectionJson {\n const event = row.event;\n const common = [\n { label: \"type\", value: factValue(event.kind) },\n { label: \"turn\", value: factValue(row.turnId) },\n { label: \"sessionSequence\", value: factValue(row.sessionSequence) },\n ];\n switch (event.kind) {\n case \"message\":\n return factFields([...common,\n { label: \"role\", value: factValue(event.role) },\n { label: \"text\", value: factValue(event.text) },\n ]);\n case \"tool-start\":\n return factFields([...common,\n { label: \"name\", value: factValue(event.tool) },\n { label: \"input\", value: factValue(event.inputSummary) },\n { label: \"toolOccurrenceId\", value: factValue(event.toolOccurrenceId) },\n ]);\n case \"tool-finish\":\n return factFields([...common,\n { label: \"status\", value: factValue(event.outcome) },\n { label: \"output\", value: factValue(event.outputSummary) },\n { label: \"relation\", value: factValue(event.occurrence.state === \"exact\"\n ? event.occurrence.toolOccurrenceId\n : event.occurrence.reason) },\n ]);\n case \"thinking-summary\":\n case \"compaction\":\n case \"context-injection\":\n return factFields([...common, { label: \"summary\", value: factValue(event.summary) }]);\n case \"subagent\":\n return factFields([...common,\n { label: \"name\", value: factValue(event.label) },\n { label: \"state\", value: factValue(event.state) },\n { label: \"summary\", value: factValue(event.summary) },\n ]);\n case \"input-request\":\n return factFields([...common,\n { label: \"state\", value: factValue(event.state) },\n { label: \"prompt\", value: factValue(event.promptSummary) },\n { label: \"response\", value: factValue(event.responseSummary) },\n ]);\n case \"skill-load\":\n case \"conversation-error\":\n return factFields([...common,\n { label: \"code\", value: factValue(event.code) },\n { label: \"summary\", value: factValue(event.summary) },\n ]);\n }\n}\nfunction toolDetail(occurrence: ObservedToolOccurrenceLedgerRow, eventsById: ReadonlyMap<string, ObservedEventLedgerRow>): Readonly<{\n readonly summary: string;\n readonly detail: InspectionJson;\n readonly target: MatcherConversationTarget;\n}> | undefined {\n const start = eventsById.get(occurrence.startEventId);\n if (start?.event.kind !== \"tool-start\")\n return undefined;\n const finish = occurrence.finish === null ? undefined : eventsById.get(occurrence.finish.eventId);\n return Object.freeze({\n summary: start.event.tool,\n detail: factFields([\n { label: \"name\", value: factValue(start.event.tool) },\n { label: \"input\", value: factValue(start.event.inputSummary) },\n { label: \"status\", value: factValue(finish?.event.kind === \"tool-finish\" ? finish.event.outcome : \"pending\") },\n { label: \"output\", value: factValue(finish?.event.kind === \"tool-finish\" ? finish.event.outputSummary : null) },\n { label: \"homeTurn\", value: factValue(occurrence.homeTurnId) },\n { label: \"finishTurn\", value: factValue(occurrence.finish?.turnId ?? null) },\n ]),\n target: exactMatcherTarget(start, `tool:${occurrence.toolOccurrenceId}`),\n });\n}\nfunction snapshotOwnsEvent(snapshot: RecordedMatcherSourceSnapshot, row: ObservedEventLedgerRow): boolean {\n if (snapshot.scope === \"turn\") {\n return row.sessionId === snapshot.sessionId && row.turnId === snapshot.turnId;\n }\n if (snapshot.scope === \"session\")\n return row.sessionId === snapshot.sessionId;\n return true;\n}\nfunction snapshotOwnsOccurrence(snapshot: RecordedMatcherSourceSnapshot, row: ObservedToolOccurrenceLedgerRow): boolean {\n if (snapshot.scope === \"turn\") {\n return row.sessionId === snapshot.sessionId && row.homeTurnId === snapshot.turnId;\n }\n if (snapshot.scope === \"session\")\n return row.sessionId === snapshot.sessionId;\n return true;\n}\nfunction snapshotContainsEvent(snapshot: RecordedMatcherSourceSnapshot, row: ObservedEventLedgerRow): boolean {\n if (snapshot.scope === \"turn\" || snapshot.scope === \"session\") {\n return snapshotOwnsEvent(snapshot, row) &&\n row.sessionSequence <= snapshot.throughSessionSequence;\n }\n const cut = snapshot.sessions.find((session) => session.sessionId === row.sessionId);\n return cut !== undefined && row.sessionSequence <= cut.throughSessionSequence;\n}\nfunction snapshotContainsOccurrence(snapshot: RecordedMatcherSourceSnapshot, row: ObservedToolOccurrenceLedgerRow): boolean {\n if (snapshot.scope === \"turn\" || snapshot.scope === \"session\") {\n return snapshotOwnsOccurrence(snapshot, row) &&\n row.startSessionSequence <= snapshot.throughSessionSequence;\n }\n const cut = snapshot.sessions.find((session) => session.sessionId === row.sessionId);\n return cut !== undefined && row.startSessionSequence <= cut.throughSessionSequence;\n}\nfunction currentMatcherRows(input: Readonly<{\n readonly subject: \"tool\" | \"event\";\n readonly events: readonly ObservedEventLedgerRow[];\n readonly occurrences: readonly ObservedToolOccurrenceLedgerRow[];\n readonly snapshot: RecordedMatcherSourceSnapshot;\n readonly overlays: ReadonlyMap<string, Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: InspectionJson;\n }>>;\n readonly examined: number;\n}>): Readonly<{\n readonly final: readonly MatcherFilterRow[];\n readonly atEvaluation: readonly MatcherFilterRow[];\n readonly exact: boolean;\n}> {\n const eventsById = new Map(input.events.map((row) => [row.eventId, row] as const));\n let exact = true;\n const sourceRows = input.subject === \"event\"\n ? input.events.filter((row) => snapshotOwnsEvent(input.snapshot, row) &&\n (row.event.kind === \"message\" || row.event.kind === \"tool-start\" || row.event.kind === \"tool-finish\")).map((row) => Object.freeze({\n locator: Object.freeze({ kind: \"event\" as const, eventId: row.eventId }),\n inSnapshot: snapshotContainsEvent(input.snapshot, row),\n summary: eventSummary(row),\n detail: eventDetail(row),\n target: exactMatcherTarget(row, `event:${row.eventId}`),\n }))\n : input.occurrences.flatMap((row) => {\n if (!snapshotOwnsOccurrence(input.snapshot, row))\n return [];\n const material = toolDetail(row, eventsById);\n if (material === undefined) {\n exact = false;\n return [];\n }\n return [Object.freeze({\n locator: Object.freeze({\n kind: \"tool-occurrence\" as const,\n toolOccurrenceId: row.toolOccurrenceId,\n }),\n inSnapshot: snapshotContainsOccurrence(input.snapshot, row),\n summary: material.summary,\n detail: material.detail,\n target: material.target,\n })];\n });\n let evaluatedOrdinal = 0;\n const final = sourceRows.map((row, index): MatcherFilterRow => {\n const overlay = input.overlays.get(matcherLocatorKey(row.locator));\n if (row.inSnapshot)\n evaluatedOrdinal += 1;\n const evaluation = !row.inSnapshot\n ? Object.freeze({ result: \"outside-snapshot\" as const })\n : overlay === undefined\n ? Object.freeze({\n result: evaluatedOrdinal <= input.examined\n ? \"not-retained\" as const\n : \"not-evaluated\" as const,\n })\n : Object.freeze({\n result: overlay.result,\n ...(overlay.difference === undefined ? {} : { difference: overlay.difference }),\n });\n return Object.freeze({\n kind: input.subject,\n rowId: matcherLocatorKey(row.locator),\n number: String(index + 1),\n phase: row.inSnapshot ? \"at-evaluation\" as const : \"outside-evaluation-snapshot\" as const,\n summary: row.summary,\n detail: row.detail,\n locator: row.locator,\n evaluation,\n conversationTarget: row.target,\n });\n });\n return Object.freeze({\n final: Object.freeze(final),\n atEvaluation: Object.freeze(final.filter((row) => row.phase === \"at-evaluation\")),\n exact,\n });\n}\nfunction retainedOverlay(artifact: RecordedMatcherQueryArtifact): ReadonlyMap<string, Readonly<{\n readonly result: \"matched\" | \"mismatched\" | \"unavailable\" | \"not-evaluated\";\n readonly difference?: InspectionJson;\n}>> {\n return new Map(artifact.retainedRows.map((row) => [\n matcherLocatorKey(closeMatcherLocator(row.locator)),\n Object.freeze({\n result: row.result,\n ...(row.difference === undefined\n ? {}\n : { difference: closeRecordedAssertionFact(row.difference) }),\n }),\n ] as const));\n}\nfunction orderSteps(artifact: RecordedMatcherQueryArtifact, rowsByLocator: ReadonlyMap<string, MatcherFilterRow>): readonly InspectionJson[] {\n if (artifact.kind !== \"ordered-sequence\")\n return Object.freeze([]);\n const definite = artifact.result.state === \"matched\"\n ? artifact.result.witnessPath\n : artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestDefinitePrefix\n : Object.freeze([]);\n const possible = artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.longestPossiblePrefix\n : Object.freeze([]);\n const nodes = new Map([...possible, ...definite].map((node) => [node.step, node] as const));\n const blocked = artifact.result.state === \"mismatched\"\n ? artifact.result.failureFrontier.firstBlockingStep\n : undefined;\n return Object.freeze(artifact.querySteps.map((query) => {\n const node = nodes.get(query.step);\n const sourceRow = node === undefined\n ? undefined\n : rowsByLocator.get(matcherLocatorKey(closeMatcherLocator(node.locator)));\n const state = query.step <= definite.length\n ? \"matched\" as const\n : query.step <= possible.length\n ? \"possible\" as const\n : query.step === blocked\n ? \"blocked\" as const\n : \"not-reached\" as const;\n return closeJson(Object.freeze({\n step: query.step,\n summary: closeRecordedAssertionFact(query.summary),\n state,\n ...(sourceRow === undefined ? {} : {\n sourceRow: sourceRow.rowId,\n conversationTarget: sourceRow.conversationTarget,\n }),\n }));\n }));\n}\nfunction closeLegacySourceRows(subject: \"tool\" | \"event\" | \"source-row\", source: InspectionAgentTurnsRead): InspectionJson {\n if (source.state !== \"available\")\n return sourceUnavailableCollection(\"source-unavailable\");\n const items = source.value.segments.flatMap((segment) => segment.items.map((item) => ({ segment, item })));\n const selected = items.filter(({ item }) => subject !== \"tool\" || item.kind === \"tool-call\" || item.kind === \"tool-start\");\n const rows = selected.map(({ segment, item }, index): MatcherFilterRow => {\n const summary = \"tool\" in item\n ? item.tool\n : \"summary\" in item\n ? item.summary\n : \"text\" in item\n ? item.text\n : item.kind;\n return Object.freeze({\n kind: \"legacy-source-row\" as const,\n rowId: `legacy:${item.itemId}`,\n number: String(index + 1),\n phase: \"historical\" as const,\n summary,\n detail: factFields([\n { label: \"type\", value: factValue(item.kind) },\n { label: \"turn\", value: factValue(segment.turnId) },\n ...(item.kind === \"tool-call\"\n ? [\n { label: \"name\", value: factValue(item.tool) },\n { label: \"input\", value: factValue(item.inputSummary) },\n { label: \"sourceLocalCallId\", value: factValue(item.callId) },\n ]\n : item.kind === \"tool-result\"\n ? [\n { label: \"status\", value: factValue(item.outcome) },\n { label: \"output\", value: factValue(item.outputSummary) },\n { label: \"sourceLocalCallId\", value: factValue(item.callId) },\n ]\n : item.kind === \"tool-start\"\n ? [\n { label: \"name\", value: factValue(item.tool) },\n { label: \"input\", value: factValue(item.inputSummary) },\n ]\n : item.kind === \"tool-finish\"\n ? [\n { label: \"status\", value: factValue(item.outcome) },\n { label: \"output\", value: factValue(item.outputSummary) },\n ]\n : \"summary\" in item\n ? [{ label: \"summary\", value: factValue(item.summary) }]\n : \"text\" in item\n ? [{ label: \"text\", value: factValue(item.text) }]\n : []),\n ]),\n evaluation: Object.freeze({ result: \"legacy\" as const }),\n conversationTarget: unavailableMatcherTarget(\"historical-not-recorded\"),\n });\n });\n return currentSourceCollection(source.value.collection.state, rows, source.value.collection.limitations);\n}\nfunction projectMatcherDebugger(entry: MatcherAssertionEntry, agentTurns: InspectionAgentTurnsRead): InspectionJson {\n const subject = matcherSubject(entry);\n if (entry.evaluation.kind === \"matcher-legacy\") {\n return closeJson(Object.freeze({\n state: \"legacy\" as const,\n subject,\n query: Object.freeze({\n state: \"unavailable\" as const,\n reason: \"historical-not-recorded\" as const,\n }),\n source: Object.freeze({\n final: closeLegacySourceRows(subject, agentTurns),\n atEvaluation: sourceUnavailableCollection(\"historical-not-recorded\"),\n }),\n identityRelation: Object.freeze({\n state: \"unavailable\" as const,\n reason: \"historical-not-recorded\" as const,\n }),\n overlayRetention: \"unavailable\" as const,\n steps: Object.freeze([]),\n ...(entry.evaluation.legacyDiagnostic === undefined\n ? {}\n : { legacyDiagnostic: closeRecordedAssertionFact(entry.evaluation.legacyDiagnostic) }),\n }));\n }\n const artifact = entry.evaluation.artifact;\n const query = artifact.kind === \"collection-filter\"\n ? Object.freeze({\n kind: artifact.kind,\n summary: closeRecordedAssertionFact(artifact.query.summary),\n })\n : Object.freeze({\n kind: artifact.kind,\n summaries: Object.freeze(artifact.querySteps.map((step) => closeRecordedAssertionFact(step.summary))),\n });\n const unavailableCurrent = (reason: \"source-unavailable\" | \"ambiguous\"): InspectionJson => closeJson(Object.freeze({\n state: \"current\" as const,\n subject: subject === \"source-row\" ? \"event\" as const : subject,\n query,\n receipt: artifact.receipt,\n source: Object.freeze({\n final: sourceUnavailableCollection(reason),\n atEvaluation: sourceUnavailableCollection(reason),\n }),\n identityRelation: Object.freeze({ state: \"unavailable\" as const, reason }),\n overlayRetention: \"unavailable\" as const,\n steps: Object.freeze([]),\n }));\n if (subject === \"source-row\" ||\n agentTurns.state !== \"available\" ||\n agentTurns.value.state !== \"current\" ||\n artifact.sourceSnapshot.source.schemaVersion !== 2)\n return unavailableCurrent(\"source-unavailable\");\n const projected = projectObservedSourceEvents(agentTurns.value.segments);\n if (projected.state === \"invalid\")\n return unavailableCurrent(\"ambiguous\");\n const overlays = retainedOverlay(artifact);\n const examined = artifact.kind === \"collection-filter\"\n ? artifact.receipt.examined\n : artifact.receipt.stepReceipts[0]?.comparisons ?? 0;\n const rows = currentMatcherRows({\n subject,\n events: projected.events,\n occurrences: projected.toolOccurrences,\n snapshot: artifact.sourceSnapshot,\n overlays,\n examined,\n });\n const rowsByLocator = new Map(rows.atEvaluation.map((row) => [row.rowId, row] as const));\n const exactRetainedIdentity = artifact.retainedRows.every((row) => row.locator.relation.state === \"exact\");\n const retainedInsideCut = overlays.size === artifact.retainedRows.length &&\n [...overlays.keys()].every((key) => rowsByLocator.has(key));\n const sourcePositions = new Map<string, Readonly<{\n readonly sessionId: string;\n readonly sessionSequence: number;\n }>>(subject === \"event\"\n ? projected.events.map((row) => [\n matcherLocatorKey({ kind: \"event\", eventId: row.eventId }),\n Object.freeze({ sessionId: row.sessionId, sessionSequence: row.sessionSequence }),\n ] as const)\n : projected.toolOccurrences.map((row) => [\n matcherLocatorKey({\n kind: \"tool-occurrence\",\n toolOccurrenceId: row.toolOccurrenceId,\n }),\n Object.freeze({\n sessionId: row.sessionId,\n sessionSequence: row.startSessionSequence,\n }),\n ] as const));\n const orderNodes = artifact.kind !== \"ordered-sequence\" || artifact.result.state === \"unavailable\"\n ? Object.freeze([])\n : artifact.result.state === \"matched\"\n ? artifact.result.witnessPath\n : Object.freeze([\n ...artifact.result.failureFrontier.longestDefinitePrefix,\n ...artifact.result.failureFrontier.longestPossiblePrefix,\n ]);\n const pathsInsideCut = orderNodes.every((node) => {\n if (node.locator.relation.state !== \"exact\")\n return false;\n const key = matcherLocatorKey(closeMatcherLocator(node.locator));\n const actual = sourcePositions.get(key);\n return actual !== undefined && actual.sessionId === node.sessionId &&\n actual.sessionSequence === node.sessionSequence && rowsByLocator.has(key);\n });\n const receiptCountMatches = artifact.kind === \"collection-filter\"\n ? artifact.receipt.knownTotal === rows.atEvaluation.length\n : artifact.receipt.sourceRows === rows.atEvaluation.length;\n if (!rows.exact ||\n !exactRetainedIdentity ||\n !retainedInsideCut ||\n !pathsInsideCut ||\n !receiptCountMatches)\n return unavailableCurrent(\"ambiguous\");\n const sourceState = agentTurns.value.collection.state === \"complete\" &&\n artifact.sourceSnapshot.collectionAtCut === \"complete\"\n ? \"complete\" as const\n : \"partial\" as const;\n const final = currentSourceCollection(agentTurns.value.collection.state, rows.final, agentTurns.value.collection.limitations);\n const atEvaluation = currentSourceCollection(sourceState, rows.atEvaluation, agentTurns.value.collection.limitations);\n const retainedCount = overlays.size;\n const overlayRetention = retainedCount >= Math.min(examined, rows.atEvaluation.length)\n ? \"complete\" as const\n : \"partial\" as const;\n return closeJson(Object.freeze({\n state: \"current\" as const,\n subject,\n query,\n receipt: artifact.receipt,\n source: Object.freeze({ final, atEvaluation }),\n identityRelation: Object.freeze({ state: \"exact\" as const }),\n overlayRetention,\n steps: orderSteps(artifact, rowsByLocator),\n }));\n}\nfunction missingCheck(entryId: string, state: string): InspectionJson {\n return diagnosticNode(entryId, state, null, null, \"not-recorded\", null, Object.freeze([]));\n}\nfunction missingMatcher(state: string): InspectionJson {\n return closeJson(Object.freeze({\n state: \"missing\" as const, sourceState: state, comparator: null, sourceLedger: null,\n receipt: null, result: null, targets: Object.freeze([]), debugger: null,\n sandboxCommandJoin: Object.freeze({ state: \"unavailable\" as const, reason: \"not-recorded\" as const }),\n }));\n}\n/**\n * The Inspection source is already a validated sealed reader. This verifies\n * its pagination and byte accounting without depending on a Node hash API, so\n * the same selector can run in the browser SQLite worker.\n */\nfunction readSealedBytes(source: InspectionFactSource, metadata: PersistedContentMetadata): Uint8Array {\n const bytes = new Uint8Array(metadata.byteLength);\n const digest = new InspectionSha256();\n let offset = 0;\n let afterOrdinal = -1;\n let expectedOrdinal = 0;\n let observedChunks = 0;\n while (true) {\n const page = source.readContentPage(metadata.contentId, afterOrdinal, CONTENT_PAGE_SIZE);\n if (page.contentId !== metadata.contentId || page.afterOrdinal !== afterOrdinal ||\n page.chunks.length === 0 && page.nextOrdinal !== null)\n throw new Error(\"Assertion content page is invalid\");\n for (const chunk of page.chunks) {\n if (chunk.ordinal !== expectedOrdinal || offset + chunk.bytes.byteLength > bytes.byteLength) {\n throw new Error(\"Assertion content chunk sequence is invalid\");\n }\n bytes.set(chunk.bytes, offset);\n digest.update(chunk.bytes);\n offset += chunk.bytes.byteLength;\n expectedOrdinal += 1;\n observedChunks += 1;\n }\n if (page.nextOrdinal === null)\n break;\n if (page.nextOrdinal !== expectedOrdinal - 1 || observedChunks > metadata.chunkCount) {\n throw new Error(\"Assertion content continuation is invalid\");\n }\n afterOrdinal = page.nextOrdinal;\n }\n if (offset !== metadata.byteLength || observedChunks !== metadata.chunkCount ||\n digest.digestHex() !== metadata.digest) {\n throw new Error(\"Assertion content does not match its sealed metadata\");\n }\n return bytes;\n}\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction closeJson(value: unknown): InspectionJson {\n const closed = closeInspectionJson(value);\n if (isInspectionCodecError(closed))\n throw closed;\n return closed as InspectionJson;\n}\nfunction jsonByteLength(value: unknown): number {\n return utf8ByteLength(JSON.stringify(value));\n}\nfunction base64(bytes: Uint8Array): string {\n const alphabet = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n let output = \"\";\n for (let index = 0; index < bytes.length; index += 3) {\n const first = bytes[index]!;\n const second = bytes[index + 1];\n const third = bytes[index + 2];\n output += alphabet[first >> 2]!;\n output += alphabet[(first & 3) << 4 | (second === undefined ? 0 : second >> 4)]!;\n output += second === undefined ? \"=\" : alphabet[(second & 15) << 2 | (third === undefined ? 0 : third >> 6)]!;\n output += third === undefined ? \"=\" : alphabet[third & 63]!;\n }\n return output;\n}\n"]}
@@ -7,6 +7,7 @@ const effect_1 = require("effect");
7
7
  const application_ts_1 = require("../../cli/application.cjs");
8
8
  const contribution_ts_1 = require("../../cli/contribution.cjs");
9
9
  const index_ts_1 = require("../index.cjs");
10
+ const canonical_ts_1 = require("../canonical.cjs");
10
11
  const select_ts_1 = require("../select.cjs");
11
12
  const errors_ts_1 = require("../../record/sqlite/errors.cjs");
12
13
  const project_configuration_ts_1 = require("../../cli/project-configuration.cjs");
@@ -15,7 +16,7 @@ const project_source_ts_1 = require("../project-source.cjs");
15
16
  const help = (summary) => Object.freeze({ summary, visibility: "public" });
16
17
  const option = (value) => Object.freeze(value);
17
18
  exports.QUERY_CLI_OPTIONS = Object.freeze({
18
- request: option({ type: "string", help: help("Read one niceeval.query/v1 request from a file or -.") }),
19
+ request: option({ type: "string", help: help("Read one niceeval.query/v2 request from a file or -.") }),
19
20
  record: option({ type: "string", help: help("Read an external canonical SQLite Record.") }),
20
21
  help: option({ type: "boolean", short: "h", help: help("Print query help.") }),
21
22
  });
@@ -59,7 +60,7 @@ function runQuery(argv) {
59
60
  return yield* usage("query discover does not accept --request.");
60
61
  if (parsed.values.record !== undefined)
61
62
  return yield* usage("query discover does not accept --record.");
62
- const encoded = (0, index_ts_1.canonicalJsonValue)(Object.freeze({
63
+ const encoded = (0, canonical_ts_1.canonicalJsonValue)(Object.freeze({
63
64
  protocol: index_ts_1.QUERY_PROTOCOL,
64
65
  outcome: "discovery",
65
66
  operations: index_ts_1.INSPECTION_OPERATION_IDS.map((id) => Object.freeze({ id })),
@@ -147,12 +148,12 @@ function readStandardInput() {
147
148
  });
148
149
  }
149
150
  function writeDocument(document) {
150
- const encoded = (0, index_ts_1.canonicalInspectionJson)(document);
151
+ const encoded = (0, canonical_ts_1.canonicalInspectionJson)(document);
151
152
  return effect_1.Result.isFailure(encoded) ? effect_1.Effect.fail(failure("encode result", encoded.failure)) : write("stdout", encoded.success);
152
153
  }
153
154
  function writeQueryFailure(error, operation) {
154
155
  const document = queryFailureDocument(error, operation);
155
- const encoded = (0, index_ts_1.canonicalJsonValue)(document);
156
+ const encoded = (0, canonical_ts_1.canonicalJsonValue)(document);
156
157
  if (effect_1.Result.isFailure(encoded))
157
158
  return effect_1.Effect.fail(failure("encode failure document", encoded.failure));
158
159
  return effect_1.Effect.gen(function* () {
@@ -164,7 +165,7 @@ function writeQueryFailure(error, operation) {
164
165
  function queryFailureDocument(error, operation) {
165
166
  const detail = queryFailureDetail(error);
166
167
  return Object.freeze({
167
- protocol: "niceeval.query/v1",
168
+ protocol: "niceeval.query/v2",
168
169
  outcome: "failure",
169
170
  operation: operation ?? null,
170
171
  failure: Object.freeze(detail),
@@ -246,7 +247,7 @@ function queryFailureDetail(error) {
246
247
  return Object.freeze({
247
248
  code: cause.code,
248
249
  reason: cause.code === "inspection-request-invalid"
249
- ? "The query request does not match niceeval.query/v1."
250
+ ? "The query request does not match niceeval.query/v2."
250
251
  : "NiceEval could not encode the fixed Inspection result.",
251
252
  correction: cause.code === "inspection-request-invalid"
252
253
  ? "fix-request"
@@ -257,7 +258,7 @@ function queryFailureDetail(error) {
257
258
  return requestFailure
258
259
  ? Object.freeze({
259
260
  code: "inspection-request-invalid",
260
- reason: "The query request could not be read as niceeval.query/v1.",
261
+ reason: "The query request could not be read as niceeval.query/v2.",
261
262
  correction: "fix-request",
262
263
  })
263
264
  : Object.freeze({