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":"judge.js","sourceRoot":"","sources":["judge.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-eval-assertions-judge\n// @concord-implements docs/feature/judge/README.md\n// @concord-implements docs/feature/judge/library.md\n// @concord-implements docs/feature/judge/use-case/verify-judge.md\n// @concord-implements docs/feature/eval/use-case/judge-quality.md\n// Native LLM-as-Judge evaluator. Definition and material capture are pure;\n// provider I/O, timeout, retry, and interruption stay in the owning Effect.\nimport { Effect, Predicate } from \"effect\";\nimport { defineScoreMatch, type ScoreMatch } from \"./match.ts\";\nimport type { JsonValue } from \"../shared/types.ts\";\nimport { isJudgeImage, readJudgeImage, type JudgeImage, type JudgeMaterial } from \"../judge/image.ts\";\nexport interface JudgeAnchor {\n readonly measurement: number;\n readonly description: string;\n}\nexport interface JudgeOptions {\n readonly name: string;\n readonly rubric: string;\n readonly anchors?: readonly JudgeAnchor[];\n readonly maxMaterialBytes?: number;\n readonly maxCalls?: number;\n readonly maxAuditBytes?: number;\n}\nexport type JudgeDefinition = ScoreMatch<unknown>;\nconst UTF8 = new TextEncoder();\nconst DEFAULT_ANCHORS = Object.freeze([\n Object.freeze({ measurement: 0, description: \"Does not satisfy the rubric.\" }),\n Object.freeze({ measurement: 1, description: \"Fully satisfies the rubric.\" }),\n]);\nfunction utf8Bytes(value: string): number { return UTF8.encode(value).byteLength; }\nfunction compareCodeUnits(left: string, right: string): number { return left < right ? -1 : left > right ? 1 : 0; }\nfunction exactDataObject(value: unknown, label: string, keys: readonly string[]): Readonly<Record<string, unknown>> {\n if (!Predicate.isObject(value) || Array.isArray(value))\n throw new TypeError(`${label} must be an object`);\n let ownKeys: readonly PropertyKey[];\n try {\n ownKeys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(`${label} cannot be reflected`);\n }\n const captured: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\" || !keys.includes(key))\n throw new TypeError(`${label} has unknown option ${String(key)}`);\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(`${label}.${key} cannot be reflected`);\n }\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`${label}.${key} must be a data property`);\n captured.push([key, descriptor.value]);\n }\n return Object.freeze(Object.fromEntries(captured));\n}\nfunction boundedText(value: unknown, label: string, maximumBytes: number, controlFree = false): string {\n if (typeof value !== \"string\" || value.trim().length === 0 || utf8Bytes(value) > maximumBytes || controlFree && /\\p{Cc}/u.test(value)) {\n throw new TypeError(`${label} must be non-empty and at most ${maximumBytes} UTF-8 bytes${controlFree ? \" without control characters\" : \"\"}`);\n }\n return value;\n}\nfunction positiveInteger(value: unknown, label: string, maximum: number): number {\n if (!Number.isInteger(value) || typeof value !== \"number\" || value <= 0 || value > maximum)\n throw new TypeError(`${label} must be a positive integer at most ${maximum}`);\n return value;\n}\n/** Defines one immutable scoring standard and returns the managed Match itself. */\nexport function defineJudge(options: JudgeOptions): JudgeDefinition {\n const input = exactDataObject(options, \"defineJudge() options\", [\"name\", \"rubric\", \"anchors\", \"maxMaterialBytes\", \"maxCalls\", \"maxAuditBytes\"]);\n const name = boundedText(input.name, \"Judge name\", 128, true);\n const rubric = boundedText(input.rubric, \"Judge rubric\", 8 * 1024);\n const rawAnchors = input.anchors ?? DEFAULT_ANCHORS;\n if (!Array.isArray(rawAnchors) || rawAnchors.length < 2 || rawAnchors.length > 32)\n throw new TypeError(\"Judge anchors must contain between 2 and 32 entries\");\n let previous = -1;\n const anchors: JudgeAnchor[] = [];\n const anchorKeys = Reflect.ownKeys(rawAnchors);\n if (anchorKeys.some((key) => key !== \"length\" && !(typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < rawAnchors.length))) {\n throw new TypeError(\"Judge anchors cannot contain custom properties\");\n }\n for (let index = 0; index < rawAnchors.length; index += 1) {\n const descriptor = Reflect.getOwnPropertyDescriptor(rawAnchors, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`Judge anchors[${index}] must be a data property`);\n const raw = descriptor.value;\n const anchor = exactDataObject(raw, `Judge anchors[${index}]`, [\"measurement\", \"description\"]);\n const measurement = anchor.measurement;\n if (typeof measurement !== \"number\" || !Number.isFinite(measurement) || measurement < 0 || measurement > 1 || measurement <= previous)\n throw new TypeError(\"Judge anchors must be strictly increasing finite measurements in [0, 1]\");\n previous = measurement;\n anchors.push(Object.freeze({ measurement, description: boundedText(anchor.description, `Judge anchors[${index}].description`, 1024) }));\n }\n if (anchors[0]?.measurement !== 0 || anchors.at(-1)?.measurement !== 1)\n throw new TypeError(\"Judge anchors must include 0 and 1\");\n const maxMaterialBytes = input.maxMaterialBytes === undefined ? 32 * 1024 : positiveInteger(input.maxMaterialBytes, \"Judge maxMaterialBytes\", 4 * 1024 * 1024);\n const definition = defineScoreMatch<unknown>({\n name,\n version: \"1\",\n config: { rubric, anchors: anchors.map((anchor) => ({ ...anchor })) },\n llm: {\n maxMaterialBytes,\n ...(input.maxCalls === undefined ? {} : { maxCalls: positiveInteger(input.maxCalls, \"Judge maxCalls\", 16) }),\n ...(input.maxAuditBytes === undefined ? {} : { maxAuditBytes: positiveInteger(input.maxAuditBytes, \"Judge maxAuditBytes\", 8 * 1024 * 1024) }),\n },\n score: (material, context) => context.llm.score({ rubric, anchors, material: material as JudgeMaterial })\n .pipe(Effect.map((result) => ({ state: \"measured\" as const, ...result }))),\n });\n return definition;\n}\nexport interface CapturedImageReference {\n readonly image: JudgeImage;\n readonly imageId: string;\n readonly evidenceIndex: number;\n readonly mediaType: \"image/png\" | \"image/jpeg\";\n readonly byteLength: number;\n readonly sha256: string;\n readonly paths: readonly string[];\n}\ninterface SnapshotState {\n nodes: number;\n readonly ancestors: WeakSet<object>;\n readonly images?: Map<JudgeImage, {\n imageId: string;\n evidenceIndex: number;\n paths: string[];\n }>;\n imageBytes?: number;\n imageReferences?: number;\n}\nfunction snapshotMaterial(value: unknown, state: SnapshotState, depth = 0, path = \"\"): unknown {\n state.nodes += 1;\n if (state.nodes > 2097152)\n throw new TypeError(\"Judge material exceeds 2,097,152 traversal nodes\");\n if (depth > 72)\n throw new TypeError(\"Judge material exceeds depth 72\");\n if (isJudgeImage(value)) {\n if (state.images === undefined)\n throw new TypeError(\"Judge image is only valid in material\");\n const image = readJudgeImage(value);\n state.imageReferences = (state.imageReferences ?? 0) + 1;\n state.imageBytes = (state.imageBytes ?? 0) + image.byteLength;\n if (state.imageReferences > 4 || state.imageBytes > 8 * 1024 * 1024)\n throw new TypeError(\"Judge material image budget exceeded\");\n const existing = state.images.get(value);\n if (existing === undefined)\n state.images.set(value, { imageId: `image-${state.images.size}`, evidenceIndex: state.images.size, paths: [path] });\n else\n existing.paths.push(path);\n return value;\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value))\n throw new TypeError(\"Judge material numbers must be finite\");\n return Object.is(value, -0) ? 0 : value;\n }\n if (typeof value !== \"object\" || value === null || value instanceof Date || value instanceof RegExp)\n throw new TypeError(`Judge material cannot contain ${typeof value}`);\n if (state.ancestors.has(value))\n throw new TypeError(\"Judge material cannot contain an ancestor cycle\");\n state.ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n for (const key of keys) {\n if (key === \"length\" || typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < value.length)\n continue;\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor?.enumerable)\n throw new TypeError(\"Judge material arrays cannot contain extra enumerable properties or toJSON\");\n }\n const entries: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, String(index));\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.value === undefined)\n throw new TypeError(\"Judge material arrays cannot contain holes, accessors, or undefined\");\n entries.push(snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${index}`));\n }\n return Object.freeze(entries);\n }\n let prototype: object | null;\n try {\n prototype = Reflect.getPrototypeOf(value);\n }\n catch {\n throw new TypeError(\"Judge material prototype reflection failed\");\n }\n if (prototype !== Object.prototype && prototype !== null)\n throw new TypeError(\"Judge material objects must be plain or null-prototype objects\");\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material key reflection failed\");\n }\n const entries: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of keys) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material property reflection failed\");\n }\n if (descriptor === undefined || !descriptor.enumerable)\n continue;\n if (typeof key !== \"string\" || !(\"value\" in descriptor))\n throw new TypeError(\"Judge material enumerable properties must be string data properties\");\n if (descriptor.value !== undefined)\n entries.push([key, snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${key.replace(/~/gu, \"~0\").replace(/\\//gu, \"~1\")}`)]);\n }\n return Object.freeze(Object.fromEntries(entries.sort(([left], [right]) => compareCodeUnits(left, right))));\n }\n finally {\n state.ancestors.delete(value);\n }\n}\n/** @internal Shared strict call-time capture for all managed Match material. */\nexport function snapshotScoreMatchMaterial(value: unknown): JsonValue {\n return snapshotMaterial(value, { nodes: 0, ancestors: new WeakSet() }) as JsonValue;\n}\nexport function snapshotJudgeMaterial(value: JudgeMaterial): {\n readonly material: JudgeMaterial;\n readonly images: readonly CapturedImageReference[];\n readonly imageByValue: ReadonlyMap<JudgeImage, CapturedImageReference>;\n} {\n const state: SnapshotState = { nodes: 0, ancestors: new WeakSet(), images: new Map(), imageBytes: 0, imageReferences: 0 };\n const material = snapshotMaterial(value, state) as JudgeMaterial;\n const images = [...state.images!.entries()].map(([image, identity]): CapturedImageReference => Object.freeze({ image, ...identity, ...((({ mediaType, byteLength, sha256 }) => ({ mediaType, byteLength, sha256 }))(readJudgeImage(image))), paths: Object.freeze([...identity.paths]) }));\n return Object.freeze({ material, images: Object.freeze(images), imageByValue: new Map(images.map((item) => [item.image, item])) });\n}\nexport function projectJudgeMaterial(value: JudgeMaterial, images: ReadonlyMap<JudgeImage, CapturedImageReference>): {\n readonly json: JsonValue;\n readonly parts: readonly CapturedImageReference[];\n} {\n const parts: CapturedImageReference[] = [];\n const visit = (item: JudgeMaterial): JsonValue => {\n if (isJudgeImage(item)) {\n const image = images.get(item);\n if (image === undefined)\n throw new TypeError(\"LLM material contains an image not captured by this Assertion\");\n parts.push(image);\n return `niceeval-image:${image.imageId}`;\n }\n if (Array.isArray(item))\n return item.map(visit);\n if (item !== null && typeof item === \"object\")\n return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child)]));\n return item as JsonValue;\n };\n const json = visit(value);\n if (parts.length > 4 || parts.reduce((sum, image) => sum + image.byteLength, 0) > 8 * 1024 * 1024)\n throw new TypeError(\"LLM step image budget exceeded\");\n return { json, parts };\n}\nexport function chunkUtf8(value: string): readonly string[] {\n const chunks: string[] = [];\n let current = \"\";\n let bytes = 0;\n for (const point of value) {\n const size = utf8Bytes(point);\n if (bytes + size > 4 * 1024) {\n chunks.push(current);\n current = \"\";\n bytes = 0;\n }\n current += point;\n bytes += size;\n }\n if (current !== \"\" || value === \"\")\n chunks.push(current);\n return Object.freeze(chunks);\n}\nconst RESPONSE_BYTES_PER_TOKEN = 8;\nexport function errorSummary(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return message.replace(/\\s+/g, \" \").slice(0, 300);\n}\nfunction objectField(value: unknown, key: string): unknown {\n if (typeof value !== \"object\" || value === null)\n return undefined;\n try {\n return Reflect.get(value, key);\n }\n catch {\n return undefined;\n }\n}\nfunction judgeStatus(error: unknown): number | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const status = objectField(current, \"status\");\n if (typeof status === \"number\" && Number.isInteger(status))\n return status;\n const nested = objectField(current, \"error\");\n const nestedStatus = objectField(nested, \"status\");\n if (typeof nestedStatus === \"number\" && Number.isInteger(nestedStatus))\n return nestedStatus;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction judgeCode(error: unknown): string | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const code = objectField(current, \"code\");\n if (typeof code === \"string\" && code !== \"\")\n return code;\n const nestedCode = objectField(objectField(current, \"error\"), \"code\");\n if (typeof nestedCode === \"string\" && nestedCode !== \"\")\n return nestedCode;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction headerValue(headers: unknown, name: string): string | undefined {\n if (headers instanceof Headers)\n return headers.get(name) ?? undefined;\n if (typeof headers !== \"object\" || headers === null)\n return undefined;\n const lower = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lower && typeof value === \"string\")\n return value;\n }\n return undefined;\n}\nexport function retryAfterMs(headers: unknown, nowMs: number): number | undefined {\n const raw = headerValue(headers, \"retry-after\")?.trim();\n if (!raw)\n return undefined;\n const seconds = Number(raw);\n if (Number.isFinite(seconds) && seconds >= 0)\n return Math.round(seconds * 1000);\n const timestamp = Date.parse(raw);\n return Number.isFinite(timestamp) ? Math.max(0, timestamp - nowMs) : undefined;\n}\nfunction isTransientJudgeStatus(status: number | undefined): boolean {\n return status === 408 || status === 429 || (status !== undefined && status >= 500 && status <= 599);\n}\nfunction isConnectionFailure(error: unknown): boolean {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const name = objectField(current, \"name\");\n const code = objectField(current, \"code\");\n if (name === \"APIUserAbortError\")\n return false;\n if (name === \"APIConnectionError\" || name === \"APIConnectionTimeoutError\")\n return true;\n if (typeof code === \"string\" && /^(?:ECONN|ENOTFOUND|EAI_AGAIN|ENETUNREACH|EHOSTUNREACH|ETIMEDOUT|ERR_TLS)/i.test(code))\n return true;\n if (/fetch failed|socket hang up|connection (?:reset|closed|refused)|network error|other side closed|timed? out|timeout|\\b(?:ECONNRESET|ECONNREFUSED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT)\\b/i.test(errorSummary(current))) {\n return true;\n }\n current = objectField(current, \"cause\");\n }\n return false;\n}\nexport function isTransportFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isConnectionFailure(error) || isTransientJudgeStatus(status);\n}\nexport function isTransientJudgeFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isTransientJudgeStatus(status) || (status === undefined && isConnectionFailure(error));\n}\n/**\n * An author-facing AbortSignal is external to this fiber. It must interrupt\n * the owning Effect instead of being reclassified as a Judge result.\n */\nfunction interruptWhenAborted(signal: AbortSignal): Effect.Effect<never> {\n return Effect.callback<never>((resume) => {\n let completed = false;\n const interrupted = () => {\n if (completed)\n return;\n completed = true;\n resume(Effect.interrupt);\n };\n signal.addEventListener(\"abort\", interrupted, { once: true });\n // Register first, then inspect state so an abort cannot fall between the\n // initial check and listener installation.\n if (signal.aborted)\n interrupted();\n return Effect.sync(() => {\n completed = true;\n signal.removeEventListener(\"abort\", interrupted);\n });\n });\n}\nexport function interruptibleByCaller<A, E, R>(effect: Effect.Effect<A, E, R>, signal: AbortSignal | undefined): Effect.Effect<A, E, R> {\n if (signal === undefined)\n return effect;\n return Effect.suspend(() => signal.aborted\n ? Effect.interrupt\n : Effect.raceFirst(effect, interruptWhenAborted(signal)));\n}\nclass JudgeResponseTooLarge extends Error {\n}\nexport function responseByteCap(maxOutputTokens: number): number {\n return Math.max(1024, maxOutputTokens * RESPONSE_BYTES_PER_TOKEN);\n}\n/** @internal transport seam: cap bytes before any JSON parser observes them. */\nexport async function readJudgeResponseCapped(response: Response, maxBytes: number): Promise<Response> {\n const body = await readJudgeResponseText(response, maxBytes);\n return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers });\n}\nasync function readJudgeResponseText(response: Response, maxBytes: number, signal?: AbortSignal, usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission, deadlineAt = Infinity): Promise<string> {\n const advertised = response.headers.get(\"content-length\");\n if (advertised !== null && Number(advertised) > maxBytes) {\n const cancellation = response.body?.cancel();\n if (cancellation !== undefined) {\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n }\n if (response.body === null)\n return \"\";\n const reader = response.body.getReader();\n let bytes = 0;\n let complete = false;\n let rejectAbort: (reason: unknown) => void = () => undefined;\n const interrupted = new Promise<never>((_, reject) => { rejectAbort = reject; });\n const abort = () => rejectAbort(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted)\n abort();\n const chunks: Uint8Array[] = [];\n try {\n for (;;) {\n const next = await Promise.race([reader.read(), interrupted]);\n if (next.done) {\n complete = true;\n break;\n }\n bytes += next.value.byteLength;\n if (bytes > maxBytes)\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n chunks.push(next.value);\n }\n const joined = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n joined.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(joined);\n }\n finally {\n signal?.removeEventListener(\"abort\", abort);\n if (complete)\n reader.releaseLock();\n else {\n const cancellation = reader.cancel().finally(() => reader.releaseLock());\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n }\n}\nfunction abortWait(signal: AbortSignal): {\n promise: Promise<never>;\n dispose: () => void;\n} {\n let abort: () => void = () => undefined;\n const promise = new Promise<never>((_, reject) => {\n abort = () => reject(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n if (signal.aborted)\n abort();\n });\n return { promise, dispose: () => signal.removeEventListener(\"abort\", abort) };\n}\n/** The single bounded HTTP adapter used by every managed LLM primitive. */\nexport async function requestScoreMatchProvider(input: {\n readonly baseUrl: string;\n readonly endpoint: \"chat/completions\" | \"systemone\";\n readonly apiKey: string;\n readonly body: string;\n readonly maxBytes: number;\n readonly signal: AbortSignal;\n readonly usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission;\n readonly deadlineAt?: number;\n}): Promise<{\n readonly status: number;\n readonly headers: Headers;\n readonly body: string;\n}> {\n const deadlineAt = input.deadlineAt ?? Infinity;\n let resolveSettled: () => void = () => undefined;\n const settled = new Promise<void>((resolve) => { resolveSettled = resolve; });\n const cancel = () => { input.usage?.cancel(); input.usage?.trackCleanup(settled, deadlineAt); };\n input.signal.addEventListener(\"abort\", cancel, { once: true });\n const interrupted = abortWait(input.signal);\n let request: Promise<Response> | undefined;\n let received = false;\n try {\n request = fetch(`${input.baseUrl.replace(/\\/$/u, \"\")}/${input.endpoint}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${input.apiKey}` },\n body: input.body, signal: input.signal,\n });\n const response = await Promise.race([request, interrupted.promise]);\n received = true;\n input.usage?.headers(response.status);\n const body = await readJudgeResponseText(response, input.maxBytes, input.signal, input.usage, deadlineAt);\n input.usage?.body(body);\n return { status: response.status, headers: response.headers, body };\n }\n catch (error) {\n if (input.signal.aborted)\n input.usage?.cancel();\n else\n input.usage?.fail(error instanceof JudgeResponseTooLarge ? \"response-too-large\" : \"response-unavailable\");\n if (!received && request !== undefined) {\n const cleanup = request.then((response) => response.body?.cancel(), () => undefined);\n input.usage?.trackCleanup(cleanup, deadlineAt);\n void cleanup.catch(() => undefined);\n }\n throw error;\n }\n finally {\n interrupted.dispose();\n input.signal.removeEventListener(\"abort\", cancel);\n resolveSettled();\n }\n}\n"]}
1
+ {"version":3,"file":"judge.js","sourceRoot":"","sources":["judge.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/judge/README.md\n// @concord-implements docs/feature/judge/library.md\n// @concord-implements docs/feature/judge/use-case/verify-judge.md\n// @concord-implements docs/feature/eval/use-case/judge-quality.md\n// Native LLM-as-Judge evaluator. Definition and material capture are pure;\n// provider I/O, timeout, retry, and interruption stay in the owning Effect.\nimport { Effect, Predicate } from \"effect\";\nimport { defineScoreMatch, type ScoreMatch } from \"./match.ts\";\nimport type { JsonValue } from \"../shared/types.ts\";\nimport { isJudgeImage, readJudgeImage, type JudgeImage, type JudgeMaterial } from \"../judge/image.ts\";\nexport interface JudgeAnchor {\n readonly measurement: number;\n readonly description: string;\n}\nexport interface JudgeOptions {\n readonly name: string;\n readonly rubric: string;\n readonly anchors?: readonly JudgeAnchor[];\n readonly maxMaterialBytes?: number;\n readonly maxCalls?: number;\n readonly maxAuditBytes?: number;\n}\nexport type JudgeDefinition = ScoreMatch<unknown>;\nconst UTF8 = new TextEncoder();\nconst DEFAULT_ANCHORS = Object.freeze([\n Object.freeze({ measurement: 0, description: \"Does not satisfy the rubric.\" }),\n Object.freeze({ measurement: 1, description: \"Fully satisfies the rubric.\" }),\n]);\nfunction utf8Bytes(value: string): number { return UTF8.encode(value).byteLength; }\nfunction compareCodeUnits(left: string, right: string): number { return left < right ? -1 : left > right ? 1 : 0; }\nfunction exactDataObject(value: unknown, label: string, keys: readonly string[]): Readonly<Record<string, unknown>> {\n if (!Predicate.isObject(value) || Array.isArray(value))\n throw new TypeError(`${label} must be an object`);\n let ownKeys: readonly PropertyKey[];\n try {\n ownKeys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(`${label} cannot be reflected`);\n }\n const captured: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of ownKeys) {\n if (typeof key !== \"string\" || !keys.includes(key))\n throw new TypeError(`${label} has unknown option ${String(key)}`);\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(`${label}.${key} cannot be reflected`);\n }\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`${label}.${key} must be a data property`);\n captured.push([key, descriptor.value]);\n }\n return Object.freeze(Object.fromEntries(captured));\n}\nfunction boundedText(value: unknown, label: string, maximumBytes: number, controlFree = false): string {\n if (typeof value !== \"string\" || value.trim().length === 0 || utf8Bytes(value) > maximumBytes || controlFree && /\\p{Cc}/u.test(value)) {\n throw new TypeError(`${label} must be non-empty and at most ${maximumBytes} UTF-8 bytes${controlFree ? \" without control characters\" : \"\"}`);\n }\n return value;\n}\nfunction positiveInteger(value: unknown, label: string, maximum: number): number {\n if (!Number.isInteger(value) || typeof value !== \"number\" || value <= 0 || value > maximum)\n throw new TypeError(`${label} must be a positive integer at most ${maximum}`);\n return value;\n}\n/** Defines one immutable scoring standard and returns the managed Match itself. */\nexport function defineJudge(options: JudgeOptions): JudgeDefinition {\n const input = exactDataObject(options, \"defineJudge() options\", [\"name\", \"rubric\", \"anchors\", \"maxMaterialBytes\", \"maxCalls\", \"maxAuditBytes\"]);\n const name = boundedText(input.name, \"Judge name\", 128, true);\n const rubric = boundedText(input.rubric, \"Judge rubric\", 8 * 1024);\n const rawAnchors = input.anchors ?? DEFAULT_ANCHORS;\n if (!Array.isArray(rawAnchors) || rawAnchors.length < 2 || rawAnchors.length > 32)\n throw new TypeError(\"Judge anchors must contain between 2 and 32 entries\");\n let previous = -1;\n const anchors: JudgeAnchor[] = [];\n const anchorKeys = Reflect.ownKeys(rawAnchors);\n if (anchorKeys.some((key) => key !== \"length\" && !(typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < rawAnchors.length))) {\n throw new TypeError(\"Judge anchors cannot contain custom properties\");\n }\n for (let index = 0; index < rawAnchors.length; index += 1) {\n const descriptor = Reflect.getOwnPropertyDescriptor(rawAnchors, String(index));\n if (descriptor === undefined || !(\"value\" in descriptor))\n throw new TypeError(`Judge anchors[${index}] must be a data property`);\n const raw = descriptor.value;\n const anchor = exactDataObject(raw, `Judge anchors[${index}]`, [\"measurement\", \"description\"]);\n const measurement = anchor.measurement;\n if (typeof measurement !== \"number\" || !Number.isFinite(measurement) || measurement < 0 || measurement > 1 || measurement <= previous)\n throw new TypeError(\"Judge anchors must be strictly increasing finite measurements in [0, 1]\");\n previous = measurement;\n anchors.push(Object.freeze({ measurement, description: boundedText(anchor.description, `Judge anchors[${index}].description`, 1024) }));\n }\n if (anchors[0]?.measurement !== 0 || anchors.at(-1)?.measurement !== 1)\n throw new TypeError(\"Judge anchors must include 0 and 1\");\n const maxMaterialBytes = input.maxMaterialBytes === undefined ? 32 * 1024 : positiveInteger(input.maxMaterialBytes, \"Judge maxMaterialBytes\", 4 * 1024 * 1024);\n const definition = defineScoreMatch<unknown>({\n name,\n version: \"1\",\n config: { rubric, anchors: anchors.map((anchor) => ({ ...anchor })) },\n llm: {\n maxMaterialBytes,\n ...(input.maxCalls === undefined ? {} : { maxCalls: positiveInteger(input.maxCalls, \"Judge maxCalls\", 16) }),\n ...(input.maxAuditBytes === undefined ? {} : { maxAuditBytes: positiveInteger(input.maxAuditBytes, \"Judge maxAuditBytes\", 8 * 1024 * 1024) }),\n },\n score: (material, context) => context.llm.score({ rubric, anchors, material: material as JudgeMaterial })\n .pipe(Effect.map((result) => ({ state: \"measured\" as const, ...result }))),\n });\n return definition;\n}\nexport interface CapturedImageReference {\n readonly image: JudgeImage;\n readonly imageId: string;\n readonly evidenceIndex: number;\n readonly mediaType: \"image/png\" | \"image/jpeg\";\n readonly byteLength: number;\n readonly sha256: string;\n readonly paths: readonly string[];\n}\ninterface SnapshotState {\n nodes: number;\n readonly ancestors: WeakSet<object>;\n readonly images?: Map<JudgeImage, {\n imageId: string;\n evidenceIndex: number;\n paths: string[];\n }>;\n imageBytes?: number;\n imageReferences?: number;\n}\nfunction snapshotMaterial(value: unknown, state: SnapshotState, depth = 0, path = \"\"): unknown {\n state.nodes += 1;\n if (state.nodes > 2097152)\n throw new TypeError(\"Judge material exceeds 2,097,152 traversal nodes\");\n if (depth > 72)\n throw new TypeError(\"Judge material exceeds depth 72\");\n if (isJudgeImage(value)) {\n if (state.images === undefined)\n throw new TypeError(\"Judge image is only valid in material\");\n const image = readJudgeImage(value);\n state.imageReferences = (state.imageReferences ?? 0) + 1;\n state.imageBytes = (state.imageBytes ?? 0) + image.byteLength;\n if (state.imageReferences > 4 || state.imageBytes > 8 * 1024 * 1024)\n throw new TypeError(\"Judge material image budget exceeded\");\n const existing = state.images.get(value);\n if (existing === undefined)\n state.images.set(value, { imageId: `image-${state.images.size}`, evidenceIndex: state.images.size, paths: [path] });\n else\n existing.paths.push(path);\n return value;\n }\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return value;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value))\n throw new TypeError(\"Judge material numbers must be finite\");\n return Object.is(value, -0) ? 0 : value;\n }\n if (typeof value !== \"object\" || value === null || value instanceof Date || value instanceof RegExp)\n throw new TypeError(`Judge material cannot contain ${typeof value}`);\n if (state.ancestors.has(value))\n throw new TypeError(\"Judge material cannot contain an ancestor cycle\");\n state.ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n for (const key of keys) {\n if (key === \"length\" || typeof key === \"string\" && /^(?:0|[1-9][0-9]*)$/u.test(key) && Number(key) < value.length)\n continue;\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor?.enumerable)\n throw new TypeError(\"Judge material arrays cannot contain extra enumerable properties or toJSON\");\n }\n const entries: unknown[] = [];\n for (let index = 0; index < value.length; index += 1) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, String(index));\n }\n catch {\n throw new TypeError(\"Judge material array reflection failed\");\n }\n if (descriptor === undefined || !(\"value\" in descriptor) || descriptor.value === undefined)\n throw new TypeError(\"Judge material arrays cannot contain holes, accessors, or undefined\");\n entries.push(snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${index}`));\n }\n return Object.freeze(entries);\n }\n let prototype: object | null;\n try {\n prototype = Reflect.getPrototypeOf(value);\n }\n catch {\n throw new TypeError(\"Judge material prototype reflection failed\");\n }\n if (prototype !== Object.prototype && prototype !== null)\n throw new TypeError(\"Judge material objects must be plain or null-prototype objects\");\n let keys: readonly PropertyKey[];\n try {\n keys = Reflect.ownKeys(value);\n }\n catch {\n throw new TypeError(\"Judge material key reflection failed\");\n }\n const entries: Array<readonly [\n string,\n unknown\n ]> = [];\n for (const key of keys) {\n let descriptor: PropertyDescriptor | undefined;\n try {\n descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n }\n catch {\n throw new TypeError(\"Judge material property reflection failed\");\n }\n if (descriptor === undefined || !descriptor.enumerable)\n continue;\n if (typeof key !== \"string\" || !(\"value\" in descriptor))\n throw new TypeError(\"Judge material enumerable properties must be string data properties\");\n if (descriptor.value !== undefined)\n entries.push([key, snapshotMaterial(descriptor.value, state, depth + 1, `${path}/${key.replace(/~/gu, \"~0\").replace(/\\//gu, \"~1\")}`)]);\n }\n return Object.freeze(Object.fromEntries(entries.sort(([left], [right]) => compareCodeUnits(left, right))));\n }\n finally {\n state.ancestors.delete(value);\n }\n}\n/** @internal Shared strict call-time capture for all managed Match material. */\nexport function snapshotScoreMatchMaterial(value: unknown): JsonValue {\n return snapshotMaterial(value, { nodes: 0, ancestors: new WeakSet() }) as JsonValue;\n}\nexport function snapshotJudgeMaterial(value: JudgeMaterial): {\n readonly material: JudgeMaterial;\n readonly images: readonly CapturedImageReference[];\n readonly imageByValue: ReadonlyMap<JudgeImage, CapturedImageReference>;\n} {\n const state: SnapshotState = { nodes: 0, ancestors: new WeakSet(), images: new Map(), imageBytes: 0, imageReferences: 0 };\n const material = snapshotMaterial(value, state) as JudgeMaterial;\n const images = [...state.images!.entries()].map(([image, identity]): CapturedImageReference => Object.freeze({ image, ...identity, ...((({ mediaType, byteLength, sha256 }) => ({ mediaType, byteLength, sha256 }))(readJudgeImage(image))), paths: Object.freeze([...identity.paths]) }));\n return Object.freeze({ material, images: Object.freeze(images), imageByValue: new Map(images.map((item) => [item.image, item])) });\n}\nexport function projectJudgeMaterial(value: JudgeMaterial, images: ReadonlyMap<JudgeImage, CapturedImageReference>): {\n readonly json: JsonValue;\n readonly parts: readonly CapturedImageReference[];\n} {\n const parts: CapturedImageReference[] = [];\n const visit = (item: JudgeMaterial): JsonValue => {\n if (isJudgeImage(item)) {\n const image = images.get(item);\n if (image === undefined)\n throw new TypeError(\"LLM material contains an image not captured by this Assertion\");\n parts.push(image);\n return `niceeval-image:${image.imageId}`;\n }\n if (Array.isArray(item))\n return item.map(visit);\n if (item !== null && typeof item === \"object\")\n return Object.fromEntries(Object.entries(item).map(([key, child]) => [key, visit(child)]));\n return item as JsonValue;\n };\n const json = visit(value);\n if (parts.length > 4 || parts.reduce((sum, image) => sum + image.byteLength, 0) > 8 * 1024 * 1024)\n throw new TypeError(\"LLM step image budget exceeded\");\n return { json, parts };\n}\nexport function chunkUtf8(value: string): readonly string[] {\n const chunks: string[] = [];\n let current = \"\";\n let bytes = 0;\n for (const point of value) {\n const size = utf8Bytes(point);\n if (bytes + size > 4 * 1024) {\n chunks.push(current);\n current = \"\";\n bytes = 0;\n }\n current += point;\n bytes += size;\n }\n if (current !== \"\" || value === \"\")\n chunks.push(current);\n return Object.freeze(chunks);\n}\nconst RESPONSE_BYTES_PER_TOKEN = 8;\nexport function errorSummary(error: unknown): string {\n const message = error instanceof Error ? error.message : String(error);\n return message.replace(/\\s+/g, \" \").slice(0, 300);\n}\nfunction objectField(value: unknown, key: string): unknown {\n if (typeof value !== \"object\" || value === null)\n return undefined;\n try {\n return Reflect.get(value, key);\n }\n catch {\n return undefined;\n }\n}\nfunction judgeStatus(error: unknown): number | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const status = objectField(current, \"status\");\n if (typeof status === \"number\" && Number.isInteger(status))\n return status;\n const nested = objectField(current, \"error\");\n const nestedStatus = objectField(nested, \"status\");\n if (typeof nestedStatus === \"number\" && Number.isInteger(nestedStatus))\n return nestedStatus;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction judgeCode(error: unknown): string | undefined {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const code = objectField(current, \"code\");\n if (typeof code === \"string\" && code !== \"\")\n return code;\n const nestedCode = objectField(objectField(current, \"error\"), \"code\");\n if (typeof nestedCode === \"string\" && nestedCode !== \"\")\n return nestedCode;\n current = objectField(current, \"cause\");\n }\n return undefined;\n}\nfunction headerValue(headers: unknown, name: string): string | undefined {\n if (headers instanceof Headers)\n return headers.get(name) ?? undefined;\n if (typeof headers !== \"object\" || headers === null)\n return undefined;\n const lower = name.toLowerCase();\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === lower && typeof value === \"string\")\n return value;\n }\n return undefined;\n}\nexport function retryAfterMs(headers: unknown, nowMs: number): number | undefined {\n const raw = headerValue(headers, \"retry-after\")?.trim();\n if (!raw)\n return undefined;\n const seconds = Number(raw);\n if (Number.isFinite(seconds) && seconds >= 0)\n return Math.round(seconds * 1000);\n const timestamp = Date.parse(raw);\n return Number.isFinite(timestamp) ? Math.max(0, timestamp - nowMs) : undefined;\n}\nfunction isTransientJudgeStatus(status: number | undefined): boolean {\n return status === 408 || status === 429 || (status !== undefined && status >= 500 && status <= 599);\n}\nfunction isConnectionFailure(error: unknown): boolean {\n let current: unknown = error;\n for (let depth = 0; current !== undefined && depth < 5; depth++) {\n const name = objectField(current, \"name\");\n const code = objectField(current, \"code\");\n if (name === \"APIUserAbortError\")\n return false;\n if (name === \"APIConnectionError\" || name === \"APIConnectionTimeoutError\")\n return true;\n if (typeof code === \"string\" && /^(?:ECONN|ENOTFOUND|EAI_AGAIN|ENETUNREACH|EHOSTUNREACH|ETIMEDOUT|ERR_TLS)/i.test(code))\n return true;\n if (/fetch failed|socket hang up|connection (?:reset|closed|refused)|network error|other side closed|timed? out|timeout|\\b(?:ECONNRESET|ECONNREFUSED|ENOTFOUND|EAI_AGAIN|ETIMEDOUT)\\b/i.test(errorSummary(current))) {\n return true;\n }\n current = objectField(current, \"cause\");\n }\n return false;\n}\nexport function isTransportFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isConnectionFailure(error) || isTransientJudgeStatus(status);\n}\nexport function isTransientJudgeFailure(error: unknown): boolean {\n const status = judgeStatus(error);\n return isTransientJudgeStatus(status) || (status === undefined && isConnectionFailure(error));\n}\n/**\n * An author-facing AbortSignal is external to this fiber. It must interrupt\n * the owning Effect instead of being reclassified as a Judge result.\n */\nfunction interruptWhenAborted(signal: AbortSignal): Effect.Effect<never> {\n return Effect.callback<never>((resume) => {\n let completed = false;\n const interrupted = () => {\n if (completed)\n return;\n completed = true;\n resume(Effect.interrupt);\n };\n signal.addEventListener(\"abort\", interrupted, { once: true });\n // Register first, then inspect state so an abort cannot fall between the\n // initial check and listener installation.\n if (signal.aborted)\n interrupted();\n return Effect.sync(() => {\n completed = true;\n signal.removeEventListener(\"abort\", interrupted);\n });\n });\n}\nexport function interruptibleByCaller<A, E, R>(effect: Effect.Effect<A, E, R>, signal: AbortSignal | undefined): Effect.Effect<A, E, R> {\n if (signal === undefined)\n return effect;\n return Effect.suspend(() => signal.aborted\n ? Effect.interrupt\n : Effect.raceFirst(effect, interruptWhenAborted(signal)));\n}\nclass JudgeResponseTooLarge extends Error {\n}\nexport function responseByteCap(maxOutputTokens: number): number {\n return Math.max(1024, maxOutputTokens * RESPONSE_BYTES_PER_TOKEN);\n}\n/** @internal transport seam: cap bytes before any JSON parser observes them. */\nexport async function readJudgeResponseCapped(response: Response, maxBytes: number): Promise<Response> {\n const body = await readJudgeResponseText(response, maxBytes);\n return new Response(body, { status: response.status, statusText: response.statusText, headers: response.headers });\n}\nasync function readJudgeResponseText(response: Response, maxBytes: number, signal?: AbortSignal, usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission, deadlineAt = Infinity): Promise<string> {\n const advertised = response.headers.get(\"content-length\");\n if (advertised !== null && Number(advertised) > maxBytes) {\n const cancellation = response.body?.cancel();\n if (cancellation !== undefined) {\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n }\n if (response.body === null)\n return \"\";\n const reader = response.body.getReader();\n let bytes = 0;\n let complete = false;\n let rejectAbort: (reason: unknown) => void = () => undefined;\n const interrupted = new Promise<never>((_, reject) => { rejectAbort = reject; });\n const abort = () => rejectAbort(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal?.addEventListener(\"abort\", abort, { once: true });\n if (signal?.aborted)\n abort();\n const chunks: Uint8Array[] = [];\n try {\n for (;;) {\n const next = await Promise.race([reader.read(), interrupted]);\n if (next.done) {\n complete = true;\n break;\n }\n bytes += next.value.byteLength;\n if (bytes > maxBytes)\n throw new JudgeResponseTooLarge(\"judge response exceeds the byte cap\");\n chunks.push(next.value);\n }\n const joined = new Uint8Array(bytes);\n let offset = 0;\n for (const chunk of chunks) {\n joined.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return new TextDecoder().decode(joined);\n }\n finally {\n signal?.removeEventListener(\"abort\", abort);\n if (complete)\n reader.releaseLock();\n else {\n const cancellation = reader.cancel().finally(() => reader.releaseLock());\n usage?.trackCleanup(cancellation, deadlineAt);\n void cancellation.catch(() => undefined);\n }\n }\n}\nfunction abortWait(signal: AbortSignal): {\n promise: Promise<never>;\n dispose: () => void;\n} {\n let abort: () => void = () => undefined;\n const promise = new Promise<never>((_, reject) => {\n abort = () => reject(new DOMException(\"Judge request cancelled\", \"AbortError\"));\n signal.addEventListener(\"abort\", abort, { once: true });\n if (signal.aborted)\n abort();\n });\n return { promise, dispose: () => signal.removeEventListener(\"abort\", abort) };\n}\n/** The single bounded HTTP adapter used by every managed LLM primitive. */\nexport async function requestScoreMatchProvider(input: {\n readonly baseUrl: string;\n readonly endpoint: \"chat/completions\" | \"systemone\";\n readonly apiKey: string;\n readonly body: string;\n readonly maxBytes: number;\n readonly signal: AbortSignal;\n readonly usage?: import(\"../o11y/judge-usage.ts\").JudgeUsageTransmission;\n readonly deadlineAt?: number;\n}): Promise<{\n readonly status: number;\n readonly headers: Headers;\n readonly body: string;\n}> {\n const deadlineAt = input.deadlineAt ?? Infinity;\n let resolveSettled: () => void = () => undefined;\n const settled = new Promise<void>((resolve) => { resolveSettled = resolve; });\n const cancel = () => { input.usage?.cancel(); input.usage?.trackCleanup(settled, deadlineAt); };\n input.signal.addEventListener(\"abort\", cancel, { once: true });\n const interrupted = abortWait(input.signal);\n let request: Promise<Response> | undefined;\n let received = false;\n try {\n request = fetch(`${input.baseUrl.replace(/\\/$/u, \"\")}/${input.endpoint}`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", Authorization: `Bearer ${input.apiKey}` },\n body: input.body, signal: input.signal,\n });\n const response = await Promise.race([request, interrupted.promise]);\n received = true;\n input.usage?.headers(response.status);\n const body = await readJudgeResponseText(response, input.maxBytes, input.signal, input.usage, deadlineAt);\n input.usage?.body(body);\n return { status: response.status, headers: response.headers, body };\n }\n catch (error) {\n if (input.signal.aborted)\n input.usage?.cancel();\n else\n input.usage?.fail(error instanceof JudgeResponseTooLarge ? \"response-too-large\" : \"response-unavailable\");\n if (!received && request !== undefined) {\n const cleanup = request.then((response) => response.body?.cancel(), () => undefined);\n input.usage?.trackCleanup(cleanup, deadlineAt);\n void cleanup.catch(() => undefined);\n }\n throw error;\n }\n finally {\n interrupted.dispose();\n input.signal.removeEventListener(\"abort\", cancel);\n resolveSettled();\n }\n}\n"]}
@@ -12,6 +12,7 @@ exports.lessThan = lessThan;
12
12
  exports.atMost = atMost;
13
13
  exports.greaterThan = greaterThan;
14
14
  exports.atLeast = atLeast;
15
+ exports.between = between;
15
16
  exports.makeAssertionMessageEvent = makeAssertionMessageEvent;
16
17
  exports.makeAssertionToolEvent = makeAssertionToolEvent;
17
18
  exports.assertionEventOccurrence = assertionEventOccurrence;
@@ -55,6 +56,11 @@ exports.mapValue = mapValue;
55
56
  exports.mapEach = mapEach;
56
57
  exports.filterWhere = filterWhere;
57
58
  exports.countWhere = countWhere;
59
+ // @concord-file
60
+ // @concord-implements docs/feature/assertions/library/value-assertions.md
61
+ // @concord-implements docs/feature/assertions/library/scoped-assertions.md
62
+ // @concord-implements docs/feature/judge/library.md
63
+ const quantity_ts_1 = require("./quantity.cjs");
58
64
  const effect_1 = require("effect");
59
65
  const json_match_ts_1 = require("../shared/json-match.cjs");
60
66
  const util_ts_1 = require("../util.cjs");
@@ -71,7 +77,7 @@ const assertionEventPositionBrand = Symbol("niceeval.assertionEventPosition");
71
77
  const toolOccurrenceIdentityBrand = Symbol("niceeval.toolOccurrenceIdentity");
72
78
  const matchBrands = new WeakSet();
73
79
  const numericComparisons = new WeakMap();
74
- exports.NUMERIC_COMPARATORS = ["less-than", "at-most", "greater-than", "at-least"];
80
+ exports.NUMERIC_COMPARATORS = ["less-than", "at-most", "greater-than", "at-least", "between"];
75
81
  const managedScoreMatches = new WeakMap();
76
82
  const scoreEvaluators = new WeakMap();
77
83
  function managedScoreMatchOf(value) {
@@ -204,8 +210,8 @@ function createBooleanMatch(domain, name, evaluate, options = {}) {
204
210
  }
205
211
  function numericDiagnostic(comparison, material, code, message) {
206
212
  return diagnostic(code, message, {
207
- expected: `${comparison.comparator} ${comparison.threshold}`,
208
- received: material.state === "unavailable" ? material.reason : String(material.value),
213
+ expected: `${comparison.comparator} ${(0, quantity_ts_1.formatNumericUnit)(comparison.threshold, comparison.unit)}${comparison.upperThreshold === undefined ? "" : ` … ${(0, quantity_ts_1.formatNumericUnit)(comparison.upperThreshold, comparison.unit)}`}`,
214
+ received: material.state === "unavailable" ? material.reason : (0, quantity_ts_1.formatNumericUnit)(material.value, material.unit),
209
215
  ...(material.state === "unavailable" ? { reason: material.reason } : {}),
210
216
  });
211
217
  }
@@ -219,6 +225,8 @@ function compareExact(value, comparison) {
219
225
  return value > comparison.threshold;
220
226
  case "at-least":
221
227
  return value >= comparison.threshold;
228
+ case "between":
229
+ return value >= comparison.threshold && value <= comparison.upperThreshold;
222
230
  }
223
231
  }
224
232
  /**
@@ -229,6 +237,9 @@ function evaluateNumericComparison(material, comparison) {
229
237
  if (material.state === "unavailable") {
230
238
  return unavailable(material.reason, numericDiagnostic(comparison, material, "numeric-value-unavailable", "the numeric value is unavailable"));
231
239
  }
240
+ if (material.unit !== comparison.unit) {
241
+ return unavailable("numeric-unit-mismatch", numericDiagnostic(comparison, material, "numeric-unit-mismatch", `numeric units differ: ${material.unit ?? "unitless"} and ${comparison.unit ?? "unitless"}`));
242
+ }
232
243
  if (!Number.isFinite(material.value)) {
233
244
  const unavailableMaterial = Object.freeze({
234
245
  state: "unavailable",
@@ -241,21 +252,23 @@ function evaluateNumericComparison(material, comparison) {
241
252
  ? matched(material.value)
242
253
  : mismatched(numericDiagnostic(comparison, material, "numeric-comparison-failed", "the numeric comparison did not match"));
243
254
  }
244
- const decided = comparison.comparator === "at-most"
245
- ? material.value > comparison.threshold
246
- ? "mismatched"
247
- : undefined
248
- : comparison.comparator === "less-than"
249
- ? material.value >= comparison.threshold
255
+ const decided = comparison.comparator === "between"
256
+ ? material.value > comparison.upperThreshold ? "mismatched" : undefined
257
+ : comparison.comparator === "at-most"
258
+ ? material.value > comparison.threshold
250
259
  ? "mismatched"
251
260
  : undefined
252
- : comparison.comparator === "at-least"
261
+ : comparison.comparator === "less-than"
253
262
  ? material.value >= comparison.threshold
254
- ? "matched"
263
+ ? "mismatched"
255
264
  : undefined
256
- : material.value > comparison.threshold
257
- ? "matched"
258
- : undefined;
265
+ : comparison.comparator === "at-least"
266
+ ? material.value >= comparison.threshold
267
+ ? "matched"
268
+ : undefined
269
+ : material.value > comparison.threshold
270
+ ? "matched"
271
+ : undefined;
259
272
  if (decided === "matched")
260
273
  return matched(material.value);
261
274
  if (decided === "mismatched") {
@@ -263,14 +276,29 @@ function evaluateNumericComparison(material, comparison) {
263
276
  }
264
277
  return unavailable("partial-numeric-material", numericDiagnostic(comparison, material, "numeric-lower-bound-inconclusive", "the known lower bound cannot decide the numeric comparison"));
265
278
  }
266
- function numericMatch(comparator, threshold) {
279
+ function numericMatch(comparator, input, upper) {
280
+ const threshold = (0, quantity_ts_1.isQuantity)(input) ? input.value : input;
281
+ const unit = (0, quantity_ts_1.isQuantity)(input) ? input.unit : undefined;
267
282
  if (typeof threshold !== "number" || !Number.isFinite(threshold)) {
268
283
  throw new TypeError(`${comparator} threshold must be a finite number`);
269
284
  }
270
- const comparison = Object.freeze({ comparator, threshold });
271
- const match = createBooleanMatch("value", `${comparator}(${threshold})`, (candidate) => evaluateNumericComparison(Number.isFinite(candidate)
272
- ? Object.freeze({ state: "exact", value: candidate })
273
- : Object.freeze({ state: "unavailable", reason: "non-finite-number" }), comparison));
285
+ const upperThreshold = (0, quantity_ts_1.isQuantity)(upper) ? upper.value : upper;
286
+ if (comparator === "between") {
287
+ if (((0, quantity_ts_1.isQuantity)(upper) ? upper.unit : undefined) !== unit)
288
+ throw new TypeError("between() bounds must have the same unit.");
289
+ if (typeof upperThreshold !== "number" || !Number.isFinite(upperThreshold) || upperThreshold < threshold) {
290
+ throw new RangeError("between() requires finite, ordered inclusive bounds.");
291
+ }
292
+ }
293
+ const comparison = Object.freeze({ comparator, threshold, ...(upperThreshold === undefined ? {} : { upperThreshold }), ...(unit === undefined ? {} : { unit }) });
294
+ const match = createBooleanMatch("value", `${comparator}(${(0, quantity_ts_1.formatNumericUnit)(threshold, unit)}${upperThreshold === undefined ? "" : `, ${(0, quantity_ts_1.formatNumericUnit)(upperThreshold, unit)}`})`, (candidate) => {
295
+ const result = evaluateNumericComparison((0, quantity_ts_1.isQuantity)(candidate)
296
+ ? Object.freeze({ state: "exact", value: candidate.value, unit: candidate.unit })
297
+ : typeof candidate === "number" && Number.isFinite(candidate)
298
+ ? Object.freeze({ state: "exact", value: candidate })
299
+ : Object.freeze({ state: "unavailable", reason: "non-finite-number" }), comparison);
300
+ return result.state === "matched" ? matched(candidate) : result;
301
+ });
274
302
  numericComparisons.set(match, comparison);
275
303
  return match;
276
304
  }
@@ -286,6 +314,9 @@ function greaterThan(threshold) {
286
314
  function atLeast(threshold) {
287
315
  return numericMatch("at-least", threshold);
288
316
  }
317
+ function between(minimum, maximum) {
318
+ return numericMatch("between", minimum, maximum);
319
+ }
289
320
  function createScoreMatch(name, evaluate) {
290
321
  const result = {
291
322
  domain: "value",
@@ -544,7 +575,7 @@ function textCandidate(value, options) {
544
575
  return undefined;
545
576
  return options.stripComments === true ? (0, util_ts_1.stripComments)(value) : value;
546
577
  }
547
- // @concord-code ne-eval-assertions-includes-match
578
+ // @concord-code
548
579
  // @concord-implements docs/feature/assertions/library/value-assertions.md
549
580
  // @concord-implements docs/feature/eval/use-case/first-single-turn.md
550
581
  function includes(text, options) {
@@ -827,7 +858,7 @@ function satisfies(label, predicate) {
827
858
  return mismatched(diagnostic("value-mismatch", `satisfies(${label}) did not match`));
828
859
  });
829
860
  }
830
- // @concord-code ne-eval-assertions-define-value-match
861
+ // @concord-code
831
862
  // @concord-implements docs/feature/assertions/library/value-assertions.md
832
863
  function defineValueMatch(spec) {
833
864
  if (!isRecord(spec))