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":"sqlite.js","sourceRoot":"","sources":["sqlite.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-run-storage-sqlite\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\n// @concord-implements docs/feature/run-inspection/README.md\nimport { createHash, randomUUID } from \"node:crypto\";\nimport type { SQLOutputValue } from \"node:sqlite\";\nimport { Effect } from \"effect\";\nimport { decodeAttemptLocator } from \"../../record/locator.ts\";\nimport { recordStatement, type RecordDatabase, } from \"../../record/sqlite/database.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { SqliteRecordError, sqliteError } from \"../../record/sqlite/errors.ts\";\nimport { withImmediateTransaction } from \"../../record/sqlite/transaction.ts\";\nimport { RECORD_SQLITE_MAX_ROW_BYTES } from \"../../record/sqlite/types.ts\";\nimport { RunStorageError, type RunStorageErrorCode } from \"./errors.ts\";\nimport { RUN_ABSENCE_REASONS, RUN_TERMINAL_STATES, type AttemptPublicationIdentity, type AttemptPublicationReceipt, type BindAttemptReferenceInput, type CloseRunResourceInput, type CreateRunResourceInput, type DeleteRunReceipt, type DeleteRunResourceInput, type ExpectedRunSlot, type PublicationCutoff, type PublishedAttempt, type PublishOriginAttemptInput, type ReadableRunResource, type RecoverRunReceipt, type RecoverRunResourceInput, type ReferenceBindingReceipt, type RunAbsenceReason, type RunMutationReceipt, type RunReferenceDependency, type RunResourcePage, type RunSlotPublication, type RunState, type RunTerminalState, } from \"./types.ts\";\ntype Row = Readonly<Record<string, SQLOutputValue>>;\nfunction text(row: Row, field: string): string {\n const value = row[field];\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not text`);\n return value;\n}\nfunction optionalText(row: Row, field: string): string | undefined {\n const value = row[field];\n if (value === null || value === undefined)\n return undefined;\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not nullable text`);\n return value;\n}\nfunction integer(row: Row, field: string): number {\n const value = row[field];\n const number = typeof value === \"bigint\" ? Number(value) : value;\n if (typeof number !== \"number\" || !Number.isSafeInteger(number)) {\n throw invalid(`SQLite field ${field} is not a safe integer`);\n }\n return number;\n}\nfunction bytes(row: Row, field: string): Uint8Array {\n const value = row[field];\n if (!(value instanceof Uint8Array))\n throw invalid(`SQLite field ${field} is not bytes`);\n return new Uint8Array(value);\n}\nfunction invalid(message: string): RunStorageError {\n return new RunStorageError(\"run-storage-invalid\", message);\n}\nfunction requireIdentity(value: string, field: string): void {\n if (value.length === 0 || value.length > 1024 || /[\\u0000-\\u001f\\u007f]/u.test(value)) {\n throw invalid(`${field} is not a bounded domain identity`);\n }\n}\nfunction requireIsoInstant(value: string, field: string): void {\n requireIdentity(value, field);\n if (!Number.isFinite(Date.parse(value)))\n throw invalid(`${field} is not an ISO instant`);\n}\nfunction requireDigest(value: string, field: string): void {\n if (!/^[a-f0-9]{64}$/u.test(value))\n throw invalid(`${field} is not a lowercase SHA-256 digest`);\n}\nfunction requireTerminalState(value: string): asserts value is RunTerminalState {\n if (!(RUN_TERMINAL_STATES as readonly string[]).includes(value))\n throw invalid(`Run state ${value} is not terminal`);\n}\nfunction requireAbsenceReason(value: string): asserts value is RunAbsenceReason {\n if (!(RUN_ABSENCE_REASONS as readonly string[]).includes(value))\n throw invalid(`Run absence reason ${value} is invalid`);\n}\nfunction requireClosure(bytes: Uint8Array, digest: string): void {\n requireDigest(digest, \"closureDigest\");\n if (bytes.byteLength > RECORD_SQLITE_MAX_ROW_BYTES) {\n throw invalid(`Attempt closure exceeds the ${RECORD_SQLITE_MAX_ROW_BYTES} byte row ceiling`);\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== digest) {\n throw invalid(\"Attempt closure bytes do not match closureDigest\");\n }\n}\nfunction metadataGeneration(connection: RecordDatabase): string {\n const row = recordStatement(connection, \"SELECT storage_generation FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"ProjectDatabase storage generation is missing\");\n return text(row, \"storage_generation\");\n}\nfunction currentRevision(connection: RecordDatabase): number {\n const row = recordStatement(connection, \"SELECT revision FROM ne19_run_publication_clock WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"Run publication clock is missing\");\n return integer(row, \"revision\");\n}\nfunction cutoffAt(connection: RecordDatabase, revision: number): PublicationCutoff {\n return Object.freeze({ storeGeneration: metadataGeneration(connection), revision });\n}\nfunction nextRevision(connection: RecordDatabase): number {\n const changed = recordStatement(connection, \"UPDATE ne19_run_publication_clock SET revision=revision+1 WHERE singleton=1\").run();\n if (Number(changed.changes) !== 1)\n throw invalid(\"Run publication clock could not advance\");\n return currentRevision(connection);\n}\nfunction requireCutoff(connection: RecordDatabase, requested?: PublicationCutoff): PublicationCutoff {\n const latest = cutoffAt(connection, currentRevision(connection));\n if (requested === undefined)\n return latest;\n if (requested.storeGeneration !== latest.storeGeneration || requested.revision < 0 ||\n !Number.isSafeInteger(requested.revision) || requested.revision > latest.revision) {\n throw new RunStorageError(\"publication-cutoff-restart-required\", \"PublicationCutoff cannot be continued in the current store generation\");\n }\n return Object.freeze({ ...requested });\n}\ninterface RunHeader {\n readonly runId: string;\n readonly writerGeneration: string;\n readonly terminalState?: RunTerminalState;\n readonly createdRevision: number;\n readonly closeRevision?: number;\n}\nfunction runHeader(connection: RecordDatabase, runId: string): RunHeader | undefined {\n const row = recordStatement(connection, `SELECT run_id,current_writer_generation,terminal_state,created_revision,close_revision\n FROM ne19_run_resources WHERE run_id=?`).get(runId) as Row | undefined;\n if (row === undefined)\n return undefined;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n return Object.freeze({\n runId: text(row, \"run_id\"),\n writerGeneration: text(row, \"current_writer_generation\"),\n ...(terminalState === undefined ? {} : { terminalState }),\n createdRevision: integer(row, \"created_revision\"),\n ...(row.close_revision === null ? {} : { closeRevision: integer(row, \"close_revision\") }),\n });\n}\nfunction requireActiveWriter(connection: RecordDatabase, runId: string, writerGeneration: string): RunHeader {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n const run = runHeader(connection, runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${runId} does not exist`);\n if (run.terminalState !== undefined)\n throw new RunStorageError(\"run-not-active\", `Run ${runId} is already ${run.terminalState}`);\n if (run.writerGeneration !== writerGeneration) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${runId} writer generation is fenced`);\n }\n return run;\n}\nfunction slotExists(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_expected_slots WHERE run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction slotBound(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_slot_bindings WHERE target_run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction sourceDeleted(connection: RecordDatabase, runId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_deletion_tombstones WHERE run_id=?\").get(runId) !== undefined;\n}\nfunction validateExpectedSlots(slots: readonly ExpectedRunSlot[]): void {\n if (slots.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(\"Run expected slot plan exceeds its bounded publication inventory\");\n }\n const ids = new Set<string>();\n slots.forEach((slot) => {\n requireIdentity(slot.slotId, \"expectedSlots.slotId\");\n requireIdentity(slot.evalId, \"expectedSlots.evalId\");\n if (!Number.isSafeInteger(slot.attemptOrdinal) || slot.attemptOrdinal < 0) {\n throw invalid(\"expectedSlots.attemptOrdinal is not a non-negative safe integer\");\n }\n requireDigest(slot.executionIdentityDigest, \"expectedSlots.executionIdentityDigest\");\n if (ids.has(slot.slotId))\n throw invalid(`expected slot ${slot.slotId} is duplicated`);\n ids.add(slot.slotId);\n });\n}\nexport function currentPublicationCutoffOnConnection(connection: RecordDatabase): PublicationCutoff {\n return requireCutoff(connection);\n}\n// @concord-code ne-run-create-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function createRunResourceOnConnection(connection: RecordDatabase, input: CreateRunResourceInput): RunMutationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.invocationId, \"invocationId\");\n requireIdentity(input.experimentId, \"experimentId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIsoInstant(input.startedAt, \"startedAt\");\n validateExpectedSlots(input.expectedSlots);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"create-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (runHeader(connection, input.runId) !== undefined) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} already exists`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_resources(run_id,invocation_id,experiment_id,started_at,\n initial_writer_generation,current_writer_generation,terminal_state,completed_at,created_revision,close_revision)\n VALUES (?,?,?,?,?,?,NULL,NULL,?,NULL)`).run(input.runId, input.invocationId, input.experimentId, input.startedAt, input.writerGeneration, input.writerGeneration, revision);\n const insertSlot = recordStatement(connection, `INSERT INTO ne19_run_expected_slots(run_id,slot_id,ordinal,eval_id,\n attempt_ordinal,execution_identity_digest) VALUES (?,?,?,?,?,?)`);\n input.expectedSlots.forEach((slot, ordinal) => insertSlot.run(input.runId, slot.slotId, ordinal, slot.evalId, slot.attemptOrdinal, slot.executionIdentityDigest));\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code ne-run-publish-origin-attempt\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function publishOriginAttemptOnConnection(connection: RecordDatabase, input: PublishOriginAttemptInput): AttemptPublicationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.attemptId, \"attemptId\");\n if (!decodeAttemptLocator(input.attemptLocator).valid)\n throw invalid(\"attemptLocator is malformed\");\n requireClosure(input.closureBytes, input.closureDigest);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"publish-origin-attempt\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n if (recordStatement(connection, \"SELECT 1 AS present FROM ne19_attempt_publications WHERE attempt_id=?\").get(input.attemptId) !== undefined) {\n throw new RunStorageError(\"attempt-already-published\", `Attempt ${input.attemptId} is already published`);\n }\n const aggregate = recordStatement(connection, `SELECT r.status,r.writer_generation,a.attempt_locator,a.publication_state,a.core_payload,a.core_digest,\n m.slot_id AS member_slot FROM ne19_runs r\n JOIN ne19_attempts a ON a.origin_run_id=r.run_id AND a.attempt_id=?\n JOIN ne19_members m ON m.target_run_id=r.run_id AND m.slot_id=? AND m.origin_run_id=r.run_id AND m.attempt_id=a.attempt_id\n WHERE r.run_id=?`).get(input.attemptId, input.slotId, input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"writer_generation\") !== input.writerGeneration ||\n (text(aggregate, \"status\") !== \"open\" && text(aggregate, \"status\") !== \"sealing\") ||\n text(aggregate, \"publication_state\") !== \"sealing\" ||\n text(aggregate, \"attempt_locator\") !== input.attemptLocator || !(aggregate.core_payload instanceof Uint8Array) ||\n typeof aggregate.core_digest !== \"string\") {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt aggregate is not complete at its publication fence\");\n }\n const incomplete = recordStatement(connection, `SELECT count(*) AS count FROM ne19_attachments a\n LEFT JOIN ne19_contents c ON c.attachment_id=a.attachment_id\n WHERE a.owner_run_id=? AND a.owner_attempt_id=? AND\n (a.logical_identity IS NULL OR a.canonical_payload IS NULL OR a.canonical_digest IS NULL OR\n a.logical_inventory IS NULL OR a.inventory_digest IS NULL OR\n (c.content_id IS NOT NULL AND (c.byte_length IS NULL OR c.overall_digest IS NULL OR c.chunk_count IS NULL)))`)\n .get(input.runId, input.attemptId) as unknown as Row;\n if (integer(incomplete, \"count\") !== 0) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt attachment closure is incomplete at its publication fence\");\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_attempt_publications(attempt_id,attempt_locator,origin_run_id,origin_slot_id,\n closure_payload,closure_digest,published_revision) VALUES (?,?,?,?,?,?,?)`).run(input.attemptId, input.attemptLocator, input.runId, input.slotId, input.closureBytes, input.closureDigest, revision);\n recordStatement(connection, `INSERT INTO ne19_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,'executed',?)`).run(input.runId, input.slotId, input.attemptId, input.runId, input.slotId, revision, revision);\n const publicationIdentity = Object.freeze({ originRunId: input.runId, attemptId: input.attemptId, revision });\n const frozen = recordStatement(connection, `UPDATE ne19_attempts SET publication_state='published'\n WHERE origin_run_id=? AND attempt_id=? AND publication_state='sealing'`).run(input.runId, input.attemptId);\n if (Number(frozen.changes) !== 1) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt publication fence changed before freeze\");\n }\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity,\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\n// @concord-code ne-run-bind-attempt-reference\n// @concord-implements docs/feature/run/architecture.md\nexport function bindAttemptReferenceOnConnection(connection: RecordDatabase, input: BindAttemptReferenceInput): ReferenceBindingReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.publicationIdentity.originRunId, \"publicationIdentity.originRunId\");\n requireIdentity(input.publicationIdentity.attemptId, \"publicationIdentity.attemptId\");\n if (!Number.isSafeInteger(input.publicationIdentity.revision) || input.publicationIdentity.revision <= 0) {\n throw invalid(\"publicationIdentity.revision is invalid\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"bind-attempt-reference\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n const source = recordStatement(connection, `SELECT origin_run_id,origin_slot_id,published_revision FROM ne19_attempt_publications\n WHERE attempt_id=?`).get(input.publicationIdentity.attemptId) as Row | undefined;\n if (source === undefined || text(source, \"origin_run_id\") !== input.publicationIdentity.originRunId ||\n integer(source, \"published_revision\") !== input.publicationIdentity.revision) {\n throw new RunStorageError(\"attempt-not-published\", `Attempt ${input.publicationIdentity.attemptId} is not published at the supplied identity`);\n }\n if (sourceDeleted(connection, input.publicationIdentity.originRunId)) {\n throw new RunStorageError(\"source-run-deleted\", `Origin Run ${input.publicationIdentity.originRunId} is deleted`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,?,?)`).run(input.runId, input.slotId, input.publicationIdentity.attemptId, input.publicationIdentity.originRunId, text(source, \"origin_slot_id\"), input.publicationIdentity.revision, input.action, revision);\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity: Object.freeze({ ...input.publicationIdentity }),\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction pendingSlotIds(connection: RecordDatabase, runId: string): readonly string[] {\n const rows = recordStatement(connection, `SELECT s.slot_id FROM ne19_run_expected_slots s\n LEFT JOIN ne19_run_slot_bindings b ON b.target_run_id=s.run_id AND b.slot_id=s.slot_id\n WHERE s.run_id=? AND b.slot_id IS NULL ORDER BY s.ordinal`).all(runId) as readonly Row[];\n return Object.freeze(rows.map((row) => text(row, \"slot_id\")));\n}\nfunction validateAbsenceClosure(connection: RecordDatabase, runId: string, absences: CloseRunResourceInput[\"absences\"]): void {\n const expected = pendingSlotIds(connection, runId);\n const supplied = new Map<string, RunAbsenceReason>();\n for (const absence of absences) {\n requireIdentity(absence.slotId, \"absences.slotId\");\n requireAbsenceReason(absence.reason);\n if (supplied.has(absence.slotId)) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence repeats slot ${absence.slotId}`);\n }\n supplied.set(absence.slotId, absence.reason);\n }\n if (expected.length !== supplied.size || expected.some((slotId) => !supplied.has(slotId))) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence closure does not exactly cover pending slots`);\n }\n}\nfunction insertAbsences(connection: RecordDatabase, runId: string, revision: number, absences: CloseRunResourceInput[\"absences\"]): void {\n const insert = recordStatement(connection, `INSERT INTO ne19_run_slot_absences(run_id,slot_id,reason,absence_revision)\n VALUES (?,?,?,?)`);\n for (const absence of absences)\n insert.run(runId, absence.slotId, absence.reason, revision);\n}\n// @concord-code ne-run-close-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function closeRunResourceOnConnection(connection: RecordDatabase, input: CloseRunResourceInput): RunMutationReceipt {\n requireTerminalState(input.state);\n requireIsoInstant(input.completedAt, \"completedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"close-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n validateAbsenceClosure(connection, input.runId, input.absences);\n const aggregate = recordStatement(connection, \"SELECT status,writer_generation FROM ne19_runs WHERE run_id=?\")\n .get(input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"status\") !== \"sealed\" ||\n text(aggregate, \"writer_generation\") !== input.writerGeneration) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} aggregate is not sealed at close`);\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, input.absences);\n const changed = recordStatement(connection, `UPDATE ne19_run_resources SET terminal_state=?,completed_at=?,close_revision=?\n WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.state, input.completedAt, revision, input.runId, input.writerGeneration);\n if (Number(changed.changes) !== 1)\n throw new RunStorageError(\"run-not-active\", `Run ${input.runId} changed before close`);\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code ne-run-recover-resource\n// @concord-implements docs/feature/run/lifecycle.md\nexport function recoverRunResourceOnConnection(connection: RecordDatabase, input: RecoverRunResourceInput): RecoverRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.expectedWriterGeneration, \"expectedWriterGeneration\");\n requireIdentity(input.recoveryWriterGeneration, \"recoveryWriterGeneration\");\n requireIsoInstant(input.completedAt, \"completedAt\");\n requireIdentity(input.evidence.kind, \"evidence.kind\");\n requireIdentity(input.evidence.identity, \"evidence.identity\");\n requireIsoInstant(input.evidence.observedAt, \"evidence.observedAt\");\n if (input.expectedWriterGeneration === input.recoveryWriterGeneration) {\n throw new RunStorageError(\"recovery-evidence-required\", \"Recovery must advance to a distinct writer generation\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"recover-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.expectedWriterGeneration);\n const absences = pendingSlotIds(connection, input.runId).map((slotId) => Object.freeze({\n slotId,\n reason: \"interrupted-before-publication\" as const,\n }));\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, absences);\n const changed = recordStatement(connection, `UPDATE ne19_run_resources SET current_writer_generation=?,terminal_state='interrupted',\n completed_at=?,close_revision=? WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.recoveryWriterGeneration, input.completedAt, revision, input.runId, input.expectedWriterGeneration);\n if (Number(changed.changes) !== 1) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${input.runId} changed before recovery fence`);\n }\n recordStatement(connection, `DELETE FROM ne19_attachments WHERE owner_run_id=? AND\n (owner_kind='run' OR owner_attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne19_members WHERE target_run_id=? AND\n (attempt_id IS NULL OR attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne19_attempts WHERE origin_run_id=? AND\n attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?)`).run(input.runId, input.runId);\n recordStatement(connection, `INSERT INTO ne19_run_recoveries(run_id,previous_writer_generation,recovery_writer_generation,\n evidence_kind,evidence_identity,evidence_observed_at,recovery_revision) VALUES (?,?,?,?,?,?,?)`).run(input.runId, input.expectedWriterGeneration, input.recoveryWriterGeneration, input.evidence.kind, input.evidence.identity, input.evidence.observedAt, revision);\n return Object.freeze({\n runId: input.runId,\n previousWriterGeneration: input.expectedWriterGeneration,\n writerGeneration: input.recoveryWriterGeneration,\n state: \"interrupted\",\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction incomingReferences(connection: RecordDatabase, originRunId: string): readonly RunReferenceDependency[] {\n const rows = recordStatement(connection, `SELECT b.target_run_id,b.slot_id,b.attempt_id,a.attempt_locator\n FROM ne19_run_slot_bindings b JOIN ne19_attempt_publications a ON a.attempt_id=b.attempt_id\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=b.target_run_id\n WHERE b.origin_run_id=? AND b.target_run_id<>? AND d.run_id IS NULL\n ORDER BY b.target_run_id,b.slot_id,b.attempt_id LIMIT ?`).all(originRunId, originRunId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (rows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${originRunId} incoming reference inventory exceeds its bounded delete receipt`);\n }\n return Object.freeze(rows.map((row) => Object.freeze({\n dependentRunId: text(row, \"target_run_id\"),\n dependentSlotId: text(row, \"slot_id\"),\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n })));\n}\n// @concord-code ne-run-delete-resource\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function deleteRunResourceOnConnection(connection: RecordDatabase, input: DeleteRunResourceInput): DeleteRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireTerminalState(input.expectedState);\n requireIsoInstant(input.deletedAt, \"deletedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"delete-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") === \"draining\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (text(barrier, \"barrier_state\") === \"portable\") {\n const generation = randomUUID();\n recordStatement(connection, `UPDATE ne19_record_metadata SET barrier_state='open',storage_generation=?,portable_generation=NULL,\n portable_revision=NULL,portable_gate_id=NULL WHERE singleton=1 AND barrier_state='portable'`).run(generation);\n recordStatement(connection, \"UPDATE ne19_coordination_state SET operational_generation=?,revision=revision+1 WHERE singleton=1\")\n .run(generation);\n }\n const run = runHeader(connection, input.runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${input.runId} does not exist`);\n if (run.terminalState !== input.expectedState) {\n throw new RunStorageError(\"run-state-mismatch\", `Run ${input.runId} is ${run.terminalState ?? \"active\"}, not ${input.expectedState}`);\n }\n const tombstone = recordStatement(connection, \"SELECT deletion_revision FROM ne19_run_deletion_tombstones WHERE run_id=?\")\n .get(input.runId) as Row | undefined;\n if (tombstone !== undefined) {\n const revision = integer(tombstone, \"deletion_revision\");\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n }\n const dependencies = incomingReferences(connection, input.runId);\n if (dependencies.length > 0) {\n throw new RunStorageError(\"run-delete-reference-conflict\", `Run ${input.runId} has incoming Attempt references`, dependencies);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_deletion_tombstones(run_id,terminal_state,deleted_at,deletion_revision)\n VALUES (?,?,?,?)`).run(input.runId, input.expectedState, input.deletedAt, revision);\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n });\n}\nfunction publicationIdentity(row: Row): AttemptPublicationIdentity {\n return Object.freeze({\n originRunId: text(row, \"origin_run_id\"),\n attemptId: text(row, \"attempt_id\"),\n revision: integer(row, \"attempt_publication_revision\"),\n });\n}\nfunction readSlotPublication(connection: RecordDatabase, runId: string, slotId: string, cutoff: PublicationCutoff): RunSlotPublication {\n const binding = recordStatement(connection, `SELECT b.action,b.binding_revision,b.attempt_id,b.origin_run_id,b.origin_slot_id,\n b.attempt_publication_revision,a.attempt_locator FROM ne19_run_slot_bindings b\n JOIN ne19_attempt_publications a ON a.attempt_id=b.attempt_id\n WHERE b.target_run_id=? AND b.slot_id=? AND b.binding_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (binding !== undefined) {\n const action = text(binding, \"action\");\n if (action !== \"executed\" && action !== \"carried\" && action !== \"accepted\") {\n throw invalid(`Run ${runId} slot ${slotId} has an invalid binding action`);\n }\n return Object.freeze({\n state: \"published\",\n action,\n attemptId: text(binding, \"attempt_id\"),\n attemptLocator: text(binding, \"attempt_locator\"),\n originRunId: text(binding, \"origin_run_id\"),\n originSlotId: text(binding, \"origin_slot_id\"),\n publicationIdentity: publicationIdentity(binding),\n bindingRevision: integer(binding, \"binding_revision\"),\n });\n }\n const absence = recordStatement(connection, `SELECT reason,absence_revision FROM ne19_run_slot_absences\n WHERE run_id=? AND slot_id=? AND absence_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (absence !== undefined) {\n const reason = text(absence, \"reason\");\n requireAbsenceReason(reason);\n return Object.freeze({ state: \"absent\", reason, absenceRevision: integer(absence, \"absence_revision\") });\n }\n return Object.freeze({ state: \"pending\" });\n}\nfunction readRunAtCutoff(connection: RecordDatabase, runId: string, cutoff: PublicationCutoff): ReadableRunResource | undefined {\n const row = recordStatement(connection, `SELECT r.run_id,r.invocation_id,r.experiment_id,r.started_at,r.initial_writer_generation,r.current_writer_generation,\n r.terminal_state,r.completed_at,r.created_revision,r.close_revision,d.deletion_revision\n FROM ne19_run_resources r LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id WHERE r.run_id=?`).get(runId) as Row | undefined;\n if (row === undefined || integer(row, \"created_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const closeRevision = row.close_revision === null ? undefined : integer(row, \"close_revision\");\n const closeVisible = closeRevision !== undefined && closeRevision <= cutoff.revision;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n const state: RunState = closeVisible\n ? terminalState ?? (() => { throw invalid(`Run ${runId} close revision lacks terminal state`); })()\n : \"active\";\n const slotRows = recordStatement(connection, `SELECT slot_id,eval_id,attempt_ordinal,execution_identity_digest\n FROM ne19_run_expected_slots WHERE run_id=? ORDER BY ordinal LIMIT ?`).all(runId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (slotRows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${runId} expected slot inventory exceeds its bounded read`);\n }\n const slots = slotRows.map((slot): ReadableRunResource[\"slots\"][number] => Object.freeze({\n slotId: text(slot, \"slot_id\"),\n evalId: text(slot, \"eval_id\"),\n attemptOrdinal: integer(slot, \"attempt_ordinal\"),\n executionIdentityDigest: text(slot, \"execution_identity_digest\"),\n publication: readSlotPublication(connection, runId, text(slot, \"slot_id\"), cutoff),\n }));\n const published = slots.filter((slot) => slot.publication.state === \"published\").length;\n return Object.freeze({\n runId: text(row, \"run_id\"),\n invocationId: text(row, \"invocation_id\"),\n experimentId: text(row, \"experiment_id\"),\n startedAt: text(row, \"started_at\"),\n ...(closeVisible ? { completedAt: text(row, \"completed_at\") } : {}),\n state,\n writerGeneration: text(row, closeVisible ? \"current_writer_generation\" : \"initial_writer_generation\"),\n createdRevision: integer(row, \"created_revision\"),\n ...(closeVisible && closeRevision !== undefined ? { closeRevision } : {}),\n expected: slots.length,\n published,\n missing: slots.length - published,\n slots: Object.freeze(slots),\n });\n}\nexport function readRunResourceOnConnection(connection: RecordDatabase, runId: string, requestedCutoff?: PublicationCutoff): ReadableRunResource | undefined {\n requireIdentity(runId, \"runId\");\n return readRunAtCutoff(connection, runId, requireCutoff(connection, requestedCutoff));\n}\nexport function listRunResourcesOnConnection(connection: RecordDatabase, input: {\n readonly cutoff?: PublicationCutoff;\n readonly invocationId?: string;\n readonly afterRunId?: string;\n readonly pageSize?: number;\n} = {}): RunResourcePage {\n const cutoff = requireCutoff(connection, input.cutoff);\n const afterRunId = input.afterRunId ?? \"\";\n const pageSize = input.pageSize ?? 100;\n if (input.invocationId !== undefined)\n requireIdentity(input.invocationId, \"invocationId\");\n if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > 256)\n throw invalid(\"Run page size must be between 1 and 256\");\n const rows = (input.invocationId === undefined\n ? recordStatement(connection, `SELECT r.run_id FROM ne19_run_resources r\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, afterRunId, pageSize + 1)\n : recordStatement(connection, `SELECT r.run_id FROM ne19_run_resources r\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.invocation_id=? AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, input.invocationId, afterRunId, pageSize + 1)) as readonly Row[];\n const selected = rows.slice(0, pageSize);\n const runs = selected.map((row) => readRunAtCutoff(connection, text(row, \"run_id\"), cutoff)).filter((run): run is ReadableRunResource => run !== undefined);\n return Object.freeze({\n cutoff,\n runs: Object.freeze(runs),\n nextAfterRunId: rows.length > pageSize && selected.length > 0 ? text(selected.at(-1)!, \"run_id\") : null,\n });\n}\nexport function readPublishedAttemptOnConnection(connection: RecordDatabase, attemptId: string, requestedCutoff?: PublicationCutoff): PublishedAttempt | undefined {\n requireIdentity(attemptId, \"attemptId\");\n const cutoff = requireCutoff(connection, requestedCutoff);\n const row = recordStatement(connection, `SELECT a.attempt_id,a.attempt_locator,a.origin_run_id,a.origin_slot_id,a.closure_payload,\n a.closure_digest,a.published_revision,d.deletion_revision FROM ne19_attempt_publications a\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=a.origin_run_id WHERE a.attempt_id=?`).get(attemptId) as Row | undefined;\n if (row === undefined || integer(row, \"published_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const revision = integer(row, \"published_revision\");\n const originRunId = text(row, \"origin_run_id\");\n return Object.freeze({\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n originRunId,\n originSlotId: text(row, \"origin_slot_id\"),\n publicationIdentity: Object.freeze({ originRunId, attemptId: text(row, \"attempt_id\"), revision }),\n closureBytes: bytes(row, \"closure_payload\"),\n closureDigest: text(row, \"closure_digest\"),\n });\n}\nconst runStorageErrorCodes = new Set<RunStorageErrorCode>([\n \"run-not-found\", \"run-not-active\", \"writer-generation-mismatch\", \"slot-not-found\", \"slot-already-bound\",\n \"attempt-already-published\", \"attempt-not-published\", \"source-run-deleted\", \"absence-coverage-invalid\",\n \"run-state-mismatch\", \"run-delete-reference-conflict\", \"recovery-evidence-required\",\n \"publication-cutoff-restart-required\", \"run-storage-invalid\",\n]);\nfunction decodeWorkerRunError(cause: unknown): unknown {\n if (!(cause instanceof SqliteRecordError) || !(cause.cause instanceof Error) ||\n !runStorageErrorCodes.has(cause.cause.name as RunStorageErrorCode))\n return cause;\n const details = Reflect.get(cause.cause, \"details\");\n return new RunStorageError(cause.cause.name as RunStorageErrorCode, cause.cause.message, Array.isArray(details) ? details : []);\n}\nfunction runCommand<A extends import(\"../../record/sqlite/worker-protocol.ts\").StorageWorkerResult>(recordStorageRoot: string, command: import(\"../../record/sqlite/worker-protocol.ts\").RunCommand): Effect.Effect<A, unknown, ProjectStateDatabase> {\n return Effect.flatMap(ProjectStateDatabase, (database) => Effect.flatMap(database.bind(recordStorageRoot), (facets) => Effect.tryPromise({ try: () => facets.run.execute<A>(command), catch: decodeWorkerRunError })));\n}\nexport function currentPublicationCutoff(recordStorageRoot: string) { return runCommand<PublicationCutoff>(recordStorageRoot, { _tag: \"run-cutoff\" }); }\nexport function createRunResource(recordStorageRoot: string, input: CreateRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-create\", input }); }\nexport function publishOriginAttempt(recordStorageRoot: string, input: PublishOriginAttemptInput) { return runCommand<AttemptPublicationReceipt>(recordStorageRoot, { _tag: \"run-publish-attempt\", input }); }\nexport function bindAttemptReference(recordStorageRoot: string, input: BindAttemptReferenceInput) { return runCommand<ReferenceBindingReceipt>(recordStorageRoot, { _tag: \"run-bind-reference\", input }); }\nexport function closeRunResource(recordStorageRoot: string, input: CloseRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-close\", input }); }\nexport function recoverRunResource(recordStorageRoot: string, input: RecoverRunResourceInput) { return runCommand<RecoverRunReceipt>(recordStorageRoot, { _tag: \"run-recover\", input }); }\nexport function deleteRunResource(recordStorageRoot: string, input: DeleteRunResourceInput) { return runCommand<DeleteRunReceipt>(recordStorageRoot, { _tag: \"run-delete\", input }); }\nexport function readRunResource(recordStorageRoot: string, runId: string, cutoff?: PublicationCutoff) {\n return runCommand<ReadableRunResource | undefined>(recordStorageRoot, { _tag: \"run-read\", runId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\nexport function listRunResources(recordStorageRoot: string, input?: Parameters<typeof listRunResourcesOnConnection>[1]) {\n return runCommand<RunResourcePage>(recordStorageRoot, { _tag: \"run-list\", ...(input === undefined ? {} : { input }) });\n}\nexport function readPublishedAttempt(recordStorageRoot: string, attemptId: string, cutoff?: PublicationCutoff) {\n return runCommand<PublishedAttempt | undefined>(recordStorageRoot, { _tag: \"run-read-attempt\", attemptId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\n/** Convert unexpected SQLite constraint failures into the internal storage vocabulary. */\nexport function asRunStorageError(cause: unknown): RunStorageError {\n if (cause instanceof RunStorageError)\n return cause;\n if (cause instanceof Error)\n return invalid(cause.message);\n throw sqliteError(\"record-sqlite-error\", \"run-storage\", \"Run storage failed with a non-Error defect\", cause);\n}\n"]}
1
+ {"version":3,"file":"sqlite.js","sourceRoot":"","sources":["sqlite.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\n// @concord-implements docs/feature/run-inspection/README.md\nimport { createHash, randomUUID } from \"node:crypto\";\nimport type { SQLOutputValue } from \"node:sqlite\";\nimport { Effect } from \"effect\";\nimport { decodeAttemptLocator } from \"../../record/locator.ts\";\nimport { recordStatement, type RecordDatabase, } from \"../../record/sqlite/database.ts\";\nimport { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { SqliteRecordError, sqliteError } from \"../../record/sqlite/errors.ts\";\nimport { withImmediateTransaction } from \"../../record/sqlite/transaction.ts\";\nimport { RECORD_SQLITE_MAX_ROW_BYTES } from \"../../record/sqlite/types.ts\";\nimport { RunStorageError, type RunStorageErrorCode } from \"./errors.ts\";\nimport { RUN_ABSENCE_REASONS, RUN_TERMINAL_STATES, type AttemptPublicationIdentity, type AttemptPublicationReceipt, type BindAttemptReferenceInput, type CloseRunResourceInput, type CreateRunResourceInput, type DeleteRunReceipt, type DeleteRunResourceInput, type ExpectedRunSlot, type PublicationCutoff, type PublishedAttempt, type PublishOriginAttemptInput, type ReadableRunResource, type RecoverRunReceipt, type RecoverRunResourceInput, type ReferenceBindingReceipt, type RunAbsenceReason, type RunMutationReceipt, type RunReferenceDependency, type RunResourcePage, type RunSlotPublication, type RunState, type RunTerminalState, } from \"./types.ts\";\ntype Row = Readonly<Record<string, SQLOutputValue>>;\nfunction text(row: Row, field: string): string {\n const value = row[field];\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not text`);\n return value;\n}\nfunction optionalText(row: Row, field: string): string | undefined {\n const value = row[field];\n if (value === null || value === undefined)\n return undefined;\n if (typeof value !== \"string\")\n throw invalid(`SQLite field ${field} is not nullable text`);\n return value;\n}\nfunction integer(row: Row, field: string): number {\n const value = row[field];\n const number = typeof value === \"bigint\" ? Number(value) : value;\n if (typeof number !== \"number\" || !Number.isSafeInteger(number)) {\n throw invalid(`SQLite field ${field} is not a safe integer`);\n }\n return number;\n}\nfunction bytes(row: Row, field: string): Uint8Array {\n const value = row[field];\n if (!(value instanceof Uint8Array))\n throw invalid(`SQLite field ${field} is not bytes`);\n return new Uint8Array(value);\n}\nfunction invalid(message: string): RunStorageError {\n return new RunStorageError(\"run-storage-invalid\", message);\n}\nfunction requireIdentity(value: string, field: string): void {\n if (value.length === 0 || value.length > 1024 || /[\\u0000-\\u001f\\u007f]/u.test(value)) {\n throw invalid(`${field} is not a bounded domain identity`);\n }\n}\nfunction requireIsoInstant(value: string, field: string): void {\n requireIdentity(value, field);\n if (!Number.isFinite(Date.parse(value)))\n throw invalid(`${field} is not an ISO instant`);\n}\nfunction requireDigest(value: string, field: string): void {\n if (!/^[a-f0-9]{64}$/u.test(value))\n throw invalid(`${field} is not a lowercase SHA-256 digest`);\n}\nfunction requireTerminalState(value: string): asserts value is RunTerminalState {\n if (!(RUN_TERMINAL_STATES as readonly string[]).includes(value))\n throw invalid(`Run state ${value} is not terminal`);\n}\nfunction requireAbsenceReason(value: string): asserts value is RunAbsenceReason {\n if (!(RUN_ABSENCE_REASONS as readonly string[]).includes(value))\n throw invalid(`Run absence reason ${value} is invalid`);\n}\nfunction requireClosure(bytes: Uint8Array, digest: string): void {\n requireDigest(digest, \"closureDigest\");\n if (bytes.byteLength > RECORD_SQLITE_MAX_ROW_BYTES) {\n throw invalid(`Attempt closure exceeds the ${RECORD_SQLITE_MAX_ROW_BYTES} byte row ceiling`);\n }\n if (createHash(\"sha256\").update(bytes).digest(\"hex\") !== digest) {\n throw invalid(\"Attempt closure bytes do not match closureDigest\");\n }\n}\nfunction metadataGeneration(connection: RecordDatabase): string {\n const row = recordStatement(connection, \"SELECT storage_generation FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"ProjectDatabase storage generation is missing\");\n return text(row, \"storage_generation\");\n}\nfunction currentRevision(connection: RecordDatabase): number {\n const row = recordStatement(connection, \"SELECT revision FROM ne19_run_publication_clock WHERE singleton=1\").get() as Row | undefined;\n if (row === undefined)\n throw invalid(\"Run publication clock is missing\");\n return integer(row, \"revision\");\n}\nfunction cutoffAt(connection: RecordDatabase, revision: number): PublicationCutoff {\n return Object.freeze({ storeGeneration: metadataGeneration(connection), revision });\n}\nfunction nextRevision(connection: RecordDatabase): number {\n const changed = recordStatement(connection, \"UPDATE ne19_run_publication_clock SET revision=revision+1 WHERE singleton=1\").run();\n if (Number(changed.changes) !== 1)\n throw invalid(\"Run publication clock could not advance\");\n return currentRevision(connection);\n}\nfunction requireCutoff(connection: RecordDatabase, requested?: PublicationCutoff): PublicationCutoff {\n const latest = cutoffAt(connection, currentRevision(connection));\n if (requested === undefined)\n return latest;\n if (requested.storeGeneration !== latest.storeGeneration || requested.revision < 0 ||\n !Number.isSafeInteger(requested.revision) || requested.revision > latest.revision) {\n throw new RunStorageError(\"publication-cutoff-restart-required\", \"PublicationCutoff cannot be continued in the current store generation\");\n }\n return Object.freeze({ ...requested });\n}\ninterface RunHeader {\n readonly runId: string;\n readonly writerGeneration: string;\n readonly terminalState?: RunTerminalState;\n readonly createdRevision: number;\n readonly closeRevision?: number;\n}\nfunction runHeader(connection: RecordDatabase, runId: string): RunHeader | undefined {\n const row = recordStatement(connection, `SELECT run_id,current_writer_generation,terminal_state,created_revision,close_revision\n FROM ne19_run_resources WHERE run_id=?`).get(runId) as Row | undefined;\n if (row === undefined)\n return undefined;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n return Object.freeze({\n runId: text(row, \"run_id\"),\n writerGeneration: text(row, \"current_writer_generation\"),\n ...(terminalState === undefined ? {} : { terminalState }),\n createdRevision: integer(row, \"created_revision\"),\n ...(row.close_revision === null ? {} : { closeRevision: integer(row, \"close_revision\") }),\n });\n}\nfunction requireActiveWriter(connection: RecordDatabase, runId: string, writerGeneration: string): RunHeader {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n const run = runHeader(connection, runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${runId} does not exist`);\n if (run.terminalState !== undefined)\n throw new RunStorageError(\"run-not-active\", `Run ${runId} is already ${run.terminalState}`);\n if (run.writerGeneration !== writerGeneration) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${runId} writer generation is fenced`);\n }\n return run;\n}\nfunction slotExists(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_expected_slots WHERE run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction slotBound(connection: RecordDatabase, runId: string, slotId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_slot_bindings WHERE target_run_id=? AND slot_id=?\")\n .get(runId, slotId) !== undefined;\n}\nfunction sourceDeleted(connection: RecordDatabase, runId: string): boolean {\n return recordStatement(connection, \"SELECT 1 AS present FROM ne19_run_deletion_tombstones WHERE run_id=?\").get(runId) !== undefined;\n}\nfunction validateExpectedSlots(slots: readonly ExpectedRunSlot[]): void {\n if (slots.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(\"Run expected slot plan exceeds its bounded publication inventory\");\n }\n const ids = new Set<string>();\n slots.forEach((slot) => {\n requireIdentity(slot.slotId, \"expectedSlots.slotId\");\n requireIdentity(slot.evalId, \"expectedSlots.evalId\");\n if (!Number.isSafeInteger(slot.attemptOrdinal) || slot.attemptOrdinal < 0) {\n throw invalid(\"expectedSlots.attemptOrdinal is not a non-negative safe integer\");\n }\n requireDigest(slot.executionIdentityDigest, \"expectedSlots.executionIdentityDigest\");\n if (ids.has(slot.slotId))\n throw invalid(`expected slot ${slot.slotId} is duplicated`);\n ids.add(slot.slotId);\n });\n}\nexport function currentPublicationCutoffOnConnection(connection: RecordDatabase): PublicationCutoff {\n return requireCutoff(connection);\n}\n// @concord-code\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function createRunResourceOnConnection(connection: RecordDatabase, input: CreateRunResourceInput): RunMutationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.invocationId, \"invocationId\");\n requireIdentity(input.experimentId, \"experimentId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIsoInstant(input.startedAt, \"startedAt\");\n validateExpectedSlots(input.expectedSlots);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"create-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (runHeader(connection, input.runId) !== undefined) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} already exists`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_resources(run_id,invocation_id,experiment_id,started_at,\n initial_writer_generation,current_writer_generation,terminal_state,completed_at,created_revision,close_revision)\n VALUES (?,?,?,?,?,?,NULL,NULL,?,NULL)`).run(input.runId, input.invocationId, input.experimentId, input.startedAt, input.writerGeneration, input.writerGeneration, revision);\n const insertSlot = recordStatement(connection, `INSERT INTO ne19_run_expected_slots(run_id,slot_id,ordinal,eval_id,\n attempt_ordinal,execution_identity_digest) VALUES (?,?,?,?,?,?)`);\n input.expectedSlots.forEach((slot, ordinal) => insertSlot.run(input.runId, slot.slotId, ordinal, slot.evalId, slot.attemptOrdinal, slot.executionIdentityDigest));\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function publishOriginAttemptOnConnection(connection: RecordDatabase, input: PublishOriginAttemptInput): AttemptPublicationReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.attemptId, \"attemptId\");\n if (!decodeAttemptLocator(input.attemptLocator).valid)\n throw invalid(\"attemptLocator is malformed\");\n requireClosure(input.closureBytes, input.closureDigest);\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"publish-origin-attempt\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n if (recordStatement(connection, \"SELECT 1 AS present FROM ne19_attempt_publications WHERE attempt_id=?\").get(input.attemptId) !== undefined) {\n throw new RunStorageError(\"attempt-already-published\", `Attempt ${input.attemptId} is already published`);\n }\n const aggregate = recordStatement(connection, `SELECT r.status,r.writer_generation,a.attempt_locator,a.publication_state,a.core_payload,a.core_digest,\n m.slot_id AS member_slot FROM ne19_runs r\n JOIN ne19_attempts a ON a.origin_run_id=r.run_id AND a.attempt_id=?\n JOIN ne19_members m ON m.target_run_id=r.run_id AND m.slot_id=? AND m.origin_run_id=r.run_id AND m.attempt_id=a.attempt_id\n WHERE r.run_id=?`).get(input.attemptId, input.slotId, input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"writer_generation\") !== input.writerGeneration ||\n (text(aggregate, \"status\") !== \"open\" && text(aggregate, \"status\") !== \"sealing\") ||\n text(aggregate, \"publication_state\") !== \"sealing\" ||\n text(aggregate, \"attempt_locator\") !== input.attemptLocator || !(aggregate.core_payload instanceof Uint8Array) ||\n typeof aggregate.core_digest !== \"string\") {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt aggregate is not complete at its publication fence\");\n }\n const incomplete = recordStatement(connection, `SELECT count(*) AS count FROM ne19_attachments a\n LEFT JOIN ne19_contents c ON c.attachment_id=a.attachment_id\n WHERE a.owner_run_id=? AND a.owner_attempt_id=? AND\n (a.logical_identity IS NULL OR a.canonical_payload IS NULL OR a.canonical_digest IS NULL OR\n a.logical_inventory IS NULL OR a.inventory_digest IS NULL OR\n (c.content_id IS NOT NULL AND (c.byte_length IS NULL OR c.overall_digest IS NULL OR c.chunk_count IS NULL)))`)\n .get(input.runId, input.attemptId) as unknown as Row;\n if (integer(incomplete, \"count\") !== 0) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt attachment closure is incomplete at its publication fence\");\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_attempt_publications(attempt_id,attempt_locator,origin_run_id,origin_slot_id,\n closure_payload,closure_digest,published_revision) VALUES (?,?,?,?,?,?,?)`).run(input.attemptId, input.attemptLocator, input.runId, input.slotId, input.closureBytes, input.closureDigest, revision);\n recordStatement(connection, `INSERT INTO ne19_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,'executed',?)`).run(input.runId, input.slotId, input.attemptId, input.runId, input.slotId, revision, revision);\n const publicationIdentity = Object.freeze({ originRunId: input.runId, attemptId: input.attemptId, revision });\n const frozen = recordStatement(connection, `UPDATE ne19_attempts SET publication_state='published'\n WHERE origin_run_id=? AND attempt_id=? AND publication_state='sealing'`).run(input.runId, input.attemptId);\n if (Number(frozen.changes) !== 1) {\n throw new RunStorageError(\"run-storage-invalid\", \"Attempt publication fence changed before freeze\");\n }\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity,\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\n// @concord-code\n// @concord-implements docs/feature/run/architecture.md\nexport function bindAttemptReferenceOnConnection(connection: RecordDatabase, input: BindAttemptReferenceInput): ReferenceBindingReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.writerGeneration, \"writerGeneration\");\n requireIdentity(input.slotId, \"slotId\");\n requireIdentity(input.publicationIdentity.originRunId, \"publicationIdentity.originRunId\");\n requireIdentity(input.publicationIdentity.attemptId, \"publicationIdentity.attemptId\");\n if (!Number.isSafeInteger(input.publicationIdentity.revision) || input.publicationIdentity.revision <= 0) {\n throw invalid(\"publicationIdentity.revision is invalid\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"bind-attempt-reference\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n if (!slotExists(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-not-found\", `Run ${input.runId} does not expect slot ${input.slotId}`);\n }\n if (slotBound(connection, input.runId, input.slotId)) {\n throw new RunStorageError(\"slot-already-bound\", `Run ${input.runId} slot ${input.slotId} is already bound`);\n }\n const source = recordStatement(connection, `SELECT origin_run_id,origin_slot_id,published_revision FROM ne19_attempt_publications\n WHERE attempt_id=?`).get(input.publicationIdentity.attemptId) as Row | undefined;\n if (source === undefined || text(source, \"origin_run_id\") !== input.publicationIdentity.originRunId ||\n integer(source, \"published_revision\") !== input.publicationIdentity.revision) {\n throw new RunStorageError(\"attempt-not-published\", `Attempt ${input.publicationIdentity.attemptId} is not published at the supplied identity`);\n }\n if (sourceDeleted(connection, input.publicationIdentity.originRunId)) {\n throw new RunStorageError(\"source-run-deleted\", `Origin Run ${input.publicationIdentity.originRunId} is deleted`);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_slot_bindings(target_run_id,slot_id,attempt_id,origin_run_id,\n origin_slot_id,attempt_publication_revision,action,binding_revision) VALUES (?,?,?,?,?,?,?,?)`).run(input.runId, input.slotId, input.publicationIdentity.attemptId, input.publicationIdentity.originRunId, text(source, \"origin_slot_id\"), input.publicationIdentity.revision, input.action, revision);\n return Object.freeze({\n runId: input.runId,\n slotId: input.slotId,\n publicationIdentity: Object.freeze({ ...input.publicationIdentity }),\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction pendingSlotIds(connection: RecordDatabase, runId: string): readonly string[] {\n const rows = recordStatement(connection, `SELECT s.slot_id FROM ne19_run_expected_slots s\n LEFT JOIN ne19_run_slot_bindings b ON b.target_run_id=s.run_id AND b.slot_id=s.slot_id\n WHERE s.run_id=? AND b.slot_id IS NULL ORDER BY s.ordinal`).all(runId) as readonly Row[];\n return Object.freeze(rows.map((row) => text(row, \"slot_id\")));\n}\nfunction validateAbsenceClosure(connection: RecordDatabase, runId: string, absences: CloseRunResourceInput[\"absences\"]): void {\n const expected = pendingSlotIds(connection, runId);\n const supplied = new Map<string, RunAbsenceReason>();\n for (const absence of absences) {\n requireIdentity(absence.slotId, \"absences.slotId\");\n requireAbsenceReason(absence.reason);\n if (supplied.has(absence.slotId)) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence repeats slot ${absence.slotId}`);\n }\n supplied.set(absence.slotId, absence.reason);\n }\n if (expected.length !== supplied.size || expected.some((slotId) => !supplied.has(slotId))) {\n throw new RunStorageError(\"absence-coverage-invalid\", `Run ${runId} absence closure does not exactly cover pending slots`);\n }\n}\nfunction insertAbsences(connection: RecordDatabase, runId: string, revision: number, absences: CloseRunResourceInput[\"absences\"]): void {\n const insert = recordStatement(connection, `INSERT INTO ne19_run_slot_absences(run_id,slot_id,reason,absence_revision)\n VALUES (?,?,?,?)`);\n for (const absence of absences)\n insert.run(runId, absence.slotId, absence.reason, revision);\n}\n// @concord-code\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function closeRunResourceOnConnection(connection: RecordDatabase, input: CloseRunResourceInput): RunMutationReceipt {\n requireTerminalState(input.state);\n requireIsoInstant(input.completedAt, \"completedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"close-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.writerGeneration);\n validateAbsenceClosure(connection, input.runId, input.absences);\n const aggregate = recordStatement(connection, \"SELECT status,writer_generation FROM ne19_runs WHERE run_id=?\")\n .get(input.runId) as unknown as Row | undefined;\n if (aggregate === undefined || text(aggregate, \"status\") !== \"sealed\" ||\n text(aggregate, \"writer_generation\") !== input.writerGeneration) {\n throw new RunStorageError(\"run-storage-invalid\", `Run ${input.runId} aggregate is not sealed at close`);\n }\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") !== \"open\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase portable barrier is not open\");\n }\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, input.absences);\n const changed = recordStatement(connection, `UPDATE ne19_run_resources SET terminal_state=?,completed_at=?,close_revision=?\n WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.state, input.completedAt, revision, input.runId, input.writerGeneration);\n if (Number(changed.changes) !== 1)\n throw new RunStorageError(\"run-not-active\", `Run ${input.runId} changed before close`);\n return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });\n });\n}\n// @concord-code\n// @concord-implements docs/feature/run/lifecycle.md\nexport function recoverRunResourceOnConnection(connection: RecordDatabase, input: RecoverRunResourceInput): RecoverRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireIdentity(input.expectedWriterGeneration, \"expectedWriterGeneration\");\n requireIdentity(input.recoveryWriterGeneration, \"recoveryWriterGeneration\");\n requireIsoInstant(input.completedAt, \"completedAt\");\n requireIdentity(input.evidence.kind, \"evidence.kind\");\n requireIdentity(input.evidence.identity, \"evidence.identity\");\n requireIsoInstant(input.evidence.observedAt, \"evidence.observedAt\");\n if (input.expectedWriterGeneration === input.recoveryWriterGeneration) {\n throw new RunStorageError(\"recovery-evidence-required\", \"Recovery must advance to a distinct writer generation\");\n }\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"recover-run-resource\", () => {\n requireActiveWriter(connection, input.runId, input.expectedWriterGeneration);\n const absences = pendingSlotIds(connection, input.runId).map((slotId) => Object.freeze({\n slotId,\n reason: \"interrupted-before-publication\" as const,\n }));\n const revision = nextRevision(connection);\n insertAbsences(connection, input.runId, revision, absences);\n const changed = recordStatement(connection, `UPDATE ne19_run_resources SET current_writer_generation=?,terminal_state='interrupted',\n completed_at=?,close_revision=? WHERE run_id=? AND terminal_state IS NULL AND current_writer_generation=?`).run(input.recoveryWriterGeneration, input.completedAt, revision, input.runId, input.expectedWriterGeneration);\n if (Number(changed.changes) !== 1) {\n throw new RunStorageError(\"writer-generation-mismatch\", `Run ${input.runId} changed before recovery fence`);\n }\n recordStatement(connection, `DELETE FROM ne19_attachments WHERE owner_run_id=? AND\n (owner_kind='run' OR owner_attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne19_members WHERE target_run_id=? AND\n (attempt_id IS NULL OR attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?))`)\n .run(input.runId, input.runId);\n recordStatement(connection, `DELETE FROM ne19_attempts WHERE origin_run_id=? AND\n attempt_id NOT IN (SELECT attempt_id FROM ne19_attempt_publications WHERE origin_run_id=?)`).run(input.runId, input.runId);\n recordStatement(connection, `INSERT INTO ne19_run_recoveries(run_id,previous_writer_generation,recovery_writer_generation,\n evidence_kind,evidence_identity,evidence_observed_at,recovery_revision) VALUES (?,?,?,?,?,?,?)`).run(input.runId, input.expectedWriterGeneration, input.recoveryWriterGeneration, input.evidence.kind, input.evidence.identity, input.evidence.observedAt, revision);\n return Object.freeze({\n runId: input.runId,\n previousWriterGeneration: input.expectedWriterGeneration,\n writerGeneration: input.recoveryWriterGeneration,\n state: \"interrupted\",\n cutoff: cutoffAt(connection, revision),\n });\n });\n}\nfunction incomingReferences(connection: RecordDatabase, originRunId: string): readonly RunReferenceDependency[] {\n const rows = recordStatement(connection, `SELECT b.target_run_id,b.slot_id,b.attempt_id,a.attempt_locator\n FROM ne19_run_slot_bindings b JOIN ne19_attempt_publications a ON a.attempt_id=b.attempt_id\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=b.target_run_id\n WHERE b.origin_run_id=? AND b.target_run_id<>? AND d.run_id IS NULL\n ORDER BY b.target_run_id,b.slot_id,b.attempt_id LIMIT ?`).all(originRunId, originRunId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (rows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${originRunId} incoming reference inventory exceeds its bounded delete receipt`);\n }\n return Object.freeze(rows.map((row) => Object.freeze({\n dependentRunId: text(row, \"target_run_id\"),\n dependentSlotId: text(row, \"slot_id\"),\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n })));\n}\n// @concord-code\n// @concord-implements docs/feature/run/architecture.md\n// @concord-implements docs/feature/run/lifecycle.md\nexport function deleteRunResourceOnConnection(connection: RecordDatabase, input: DeleteRunResourceInput): DeleteRunReceipt {\n requireIdentity(input.runId, \"runId\");\n requireTerminalState(input.expectedState);\n requireIsoInstant(input.deletedAt, \"deletedAt\");\n return withImmediateTransaction(connection, input.deadlineEpochMs, \"delete-run-resource\", () => {\n const barrier = recordStatement(connection, \"SELECT barrier_state FROM ne19_record_metadata WHERE singleton=1\").get() as Row | undefined;\n if (barrier === undefined || text(barrier, \"barrier_state\") === \"draining\") {\n throw new RunStorageError(\"run-not-active\", \"ProjectDatabase writer barrier is not open\");\n }\n if (text(barrier, \"barrier_state\") === \"portable\") {\n const generation = randomUUID();\n recordStatement(connection, `UPDATE ne19_record_metadata SET barrier_state='open',storage_generation=?,portable_generation=NULL,\n portable_revision=NULL,portable_gate_id=NULL WHERE singleton=1 AND barrier_state='portable'`).run(generation);\n recordStatement(connection, \"UPDATE ne19_coordination_state SET operational_generation=?,revision=revision+1 WHERE singleton=1\")\n .run(generation);\n }\n const run = runHeader(connection, input.runId);\n if (run === undefined)\n throw new RunStorageError(\"run-not-found\", `Run ${input.runId} does not exist`);\n if (run.terminalState !== input.expectedState) {\n throw new RunStorageError(\"run-state-mismatch\", `Run ${input.runId} is ${run.terminalState ?? \"active\"}, not ${input.expectedState}`);\n }\n const tombstone = recordStatement(connection, \"SELECT deletion_revision FROM ne19_run_deletion_tombstones WHERE run_id=?\")\n .get(input.runId) as Row | undefined;\n if (tombstone !== undefined) {\n const revision = integer(tombstone, \"deletion_revision\");\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n }\n const dependencies = incomingReferences(connection, input.runId);\n if (dependencies.length > 0) {\n throw new RunStorageError(\"run-delete-reference-conflict\", `Run ${input.runId} has incoming Attempt references`, dependencies);\n }\n const revision = nextRevision(connection);\n recordStatement(connection, `INSERT INTO ne19_run_deletion_tombstones(run_id,terminal_state,deleted_at,deletion_revision)\n VALUES (?,?,?,?)`).run(input.runId, input.expectedState, input.deletedAt, revision);\n return Object.freeze({ runId: input.runId, state: input.expectedState, cutoff: cutoffAt(connection, revision) });\n });\n}\nfunction publicationIdentity(row: Row): AttemptPublicationIdentity {\n return Object.freeze({\n originRunId: text(row, \"origin_run_id\"),\n attemptId: text(row, \"attempt_id\"),\n revision: integer(row, \"attempt_publication_revision\"),\n });\n}\nfunction readSlotPublication(connection: RecordDatabase, runId: string, slotId: string, cutoff: PublicationCutoff): RunSlotPublication {\n const binding = recordStatement(connection, `SELECT b.action,b.binding_revision,b.attempt_id,b.origin_run_id,b.origin_slot_id,\n b.attempt_publication_revision,a.attempt_locator FROM ne19_run_slot_bindings b\n JOIN ne19_attempt_publications a ON a.attempt_id=b.attempt_id\n WHERE b.target_run_id=? AND b.slot_id=? AND b.binding_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (binding !== undefined) {\n const action = text(binding, \"action\");\n if (action !== \"executed\" && action !== \"carried\" && action !== \"accepted\") {\n throw invalid(`Run ${runId} slot ${slotId} has an invalid binding action`);\n }\n return Object.freeze({\n state: \"published\",\n action,\n attemptId: text(binding, \"attempt_id\"),\n attemptLocator: text(binding, \"attempt_locator\"),\n originRunId: text(binding, \"origin_run_id\"),\n originSlotId: text(binding, \"origin_slot_id\"),\n publicationIdentity: publicationIdentity(binding),\n bindingRevision: integer(binding, \"binding_revision\"),\n });\n }\n const absence = recordStatement(connection, `SELECT reason,absence_revision FROM ne19_run_slot_absences\n WHERE run_id=? AND slot_id=? AND absence_revision<=?`).get(runId, slotId, cutoff.revision) as Row | undefined;\n if (absence !== undefined) {\n const reason = text(absence, \"reason\");\n requireAbsenceReason(reason);\n return Object.freeze({ state: \"absent\", reason, absenceRevision: integer(absence, \"absence_revision\") });\n }\n return Object.freeze({ state: \"pending\" });\n}\nfunction readRunAtCutoff(connection: RecordDatabase, runId: string, cutoff: PublicationCutoff): ReadableRunResource | undefined {\n const row = recordStatement(connection, `SELECT r.run_id,r.invocation_id,r.experiment_id,r.started_at,r.initial_writer_generation,r.current_writer_generation,\n r.terminal_state,r.completed_at,r.created_revision,r.close_revision,d.deletion_revision\n FROM ne19_run_resources r LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id WHERE r.run_id=?`).get(runId) as Row | undefined;\n if (row === undefined || integer(row, \"created_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const closeRevision = row.close_revision === null ? undefined : integer(row, \"close_revision\");\n const closeVisible = closeRevision !== undefined && closeRevision <= cutoff.revision;\n const terminalState = optionalText(row, \"terminal_state\");\n if (terminalState !== undefined)\n requireTerminalState(terminalState);\n const state: RunState = closeVisible\n ? terminalState ?? (() => { throw invalid(`Run ${runId} close revision lacks terminal state`); })()\n : \"active\";\n const slotRows = recordStatement(connection, `SELECT slot_id,eval_id,attempt_ordinal,execution_identity_digest\n FROM ne19_run_expected_slots WHERE run_id=? ORDER BY ordinal LIMIT ?`).all(runId, Math.trunc(RECORD_SQLITE_MAX_ROW_BYTES / 256) + 1) as readonly Row[];\n if (slotRows.length > RECORD_SQLITE_MAX_ROW_BYTES / 256) {\n throw invalid(`Run ${runId} expected slot inventory exceeds its bounded read`);\n }\n const slots = slotRows.map((slot): ReadableRunResource[\"slots\"][number] => Object.freeze({\n slotId: text(slot, \"slot_id\"),\n evalId: text(slot, \"eval_id\"),\n attemptOrdinal: integer(slot, \"attempt_ordinal\"),\n executionIdentityDigest: text(slot, \"execution_identity_digest\"),\n publication: readSlotPublication(connection, runId, text(slot, \"slot_id\"), cutoff),\n }));\n const published = slots.filter((slot) => slot.publication.state === \"published\").length;\n return Object.freeze({\n runId: text(row, \"run_id\"),\n invocationId: text(row, \"invocation_id\"),\n experimentId: text(row, \"experiment_id\"),\n startedAt: text(row, \"started_at\"),\n ...(closeVisible ? { completedAt: text(row, \"completed_at\") } : {}),\n state,\n writerGeneration: text(row, closeVisible ? \"current_writer_generation\" : \"initial_writer_generation\"),\n createdRevision: integer(row, \"created_revision\"),\n ...(closeVisible && closeRevision !== undefined ? { closeRevision } : {}),\n expected: slots.length,\n published,\n missing: slots.length - published,\n slots: Object.freeze(slots),\n });\n}\nexport function readRunResourceOnConnection(connection: RecordDatabase, runId: string, requestedCutoff?: PublicationCutoff): ReadableRunResource | undefined {\n requireIdentity(runId, \"runId\");\n return readRunAtCutoff(connection, runId, requireCutoff(connection, requestedCutoff));\n}\nexport function listRunResourcesOnConnection(connection: RecordDatabase, input: {\n readonly cutoff?: PublicationCutoff;\n readonly invocationId?: string;\n readonly afterRunId?: string;\n readonly pageSize?: number;\n} = {}): RunResourcePage {\n const cutoff = requireCutoff(connection, input.cutoff);\n const afterRunId = input.afterRunId ?? \"\";\n const pageSize = input.pageSize ?? 100;\n if (input.invocationId !== undefined)\n requireIdentity(input.invocationId, \"invocationId\");\n if (!Number.isSafeInteger(pageSize) || pageSize < 1 || pageSize > 256)\n throw invalid(\"Run page size must be between 1 and 256\");\n const rows = (input.invocationId === undefined\n ? recordStatement(connection, `SELECT r.run_id FROM ne19_run_resources r\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, afterRunId, pageSize + 1)\n : recordStatement(connection, `SELECT r.run_id FROM ne19_run_resources r\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=r.run_id\n WHERE r.created_revision<=? AND (d.deletion_revision IS NULL OR d.deletion_revision>?) AND r.invocation_id=? AND r.run_id>?\n ORDER BY r.run_id LIMIT ?`).all(cutoff.revision, cutoff.revision, input.invocationId, afterRunId, pageSize + 1)) as readonly Row[];\n const selected = rows.slice(0, pageSize);\n const runs = selected.map((row) => readRunAtCutoff(connection, text(row, \"run_id\"), cutoff)).filter((run): run is ReadableRunResource => run !== undefined);\n return Object.freeze({\n cutoff,\n runs: Object.freeze(runs),\n nextAfterRunId: rows.length > pageSize && selected.length > 0 ? text(selected.at(-1)!, \"run_id\") : null,\n });\n}\nexport function readPublishedAttemptOnConnection(connection: RecordDatabase, attemptId: string, requestedCutoff?: PublicationCutoff): PublishedAttempt | undefined {\n requireIdentity(attemptId, \"attemptId\");\n const cutoff = requireCutoff(connection, requestedCutoff);\n const row = recordStatement(connection, `SELECT a.attempt_id,a.attempt_locator,a.origin_run_id,a.origin_slot_id,a.closure_payload,\n a.closure_digest,a.published_revision,d.deletion_revision FROM ne19_attempt_publications a\n LEFT JOIN ne19_run_deletion_tombstones d ON d.run_id=a.origin_run_id WHERE a.attempt_id=?`).get(attemptId) as Row | undefined;\n if (row === undefined || integer(row, \"published_revision\") > cutoff.revision ||\n row.deletion_revision !== null && row.deletion_revision !== undefined && integer(row, \"deletion_revision\") <= cutoff.revision) {\n return undefined;\n }\n const revision = integer(row, \"published_revision\");\n const originRunId = text(row, \"origin_run_id\");\n return Object.freeze({\n attemptId: text(row, \"attempt_id\"),\n attemptLocator: text(row, \"attempt_locator\"),\n originRunId,\n originSlotId: text(row, \"origin_slot_id\"),\n publicationIdentity: Object.freeze({ originRunId, attemptId: text(row, \"attempt_id\"), revision }),\n closureBytes: bytes(row, \"closure_payload\"),\n closureDigest: text(row, \"closure_digest\"),\n });\n}\nconst runStorageErrorCodes = new Set<RunStorageErrorCode>([\n \"run-not-found\", \"run-not-active\", \"writer-generation-mismatch\", \"slot-not-found\", \"slot-already-bound\",\n \"attempt-already-published\", \"attempt-not-published\", \"source-run-deleted\", \"absence-coverage-invalid\",\n \"run-state-mismatch\", \"run-delete-reference-conflict\", \"recovery-evidence-required\",\n \"publication-cutoff-restart-required\", \"run-storage-invalid\",\n]);\nfunction decodeWorkerRunError(cause: unknown): unknown {\n if (!(cause instanceof SqliteRecordError) || !(cause.cause instanceof Error) ||\n !runStorageErrorCodes.has(cause.cause.name as RunStorageErrorCode))\n return cause;\n const details = Reflect.get(cause.cause, \"details\");\n return new RunStorageError(cause.cause.name as RunStorageErrorCode, cause.cause.message, Array.isArray(details) ? details : []);\n}\nfunction runCommand<A extends import(\"../../record/sqlite/worker-protocol.ts\").StorageWorkerResult>(recordStorageRoot: string, command: import(\"../../record/sqlite/worker-protocol.ts\").RunCommand): Effect.Effect<A, unknown, ProjectStateDatabase> {\n return Effect.flatMap(ProjectStateDatabase, (database) => Effect.flatMap(database.bind(recordStorageRoot), (facets) => Effect.tryPromise({ try: () => facets.run.execute<A>(command), catch: decodeWorkerRunError })));\n}\nexport function currentPublicationCutoff(recordStorageRoot: string) { return runCommand<PublicationCutoff>(recordStorageRoot, { _tag: \"run-cutoff\" }); }\nexport function createRunResource(recordStorageRoot: string, input: CreateRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-create\", input }); }\nexport function publishOriginAttempt(recordStorageRoot: string, input: PublishOriginAttemptInput) { return runCommand<AttemptPublicationReceipt>(recordStorageRoot, { _tag: \"run-publish-attempt\", input }); }\nexport function bindAttemptReference(recordStorageRoot: string, input: BindAttemptReferenceInput) { return runCommand<ReferenceBindingReceipt>(recordStorageRoot, { _tag: \"run-bind-reference\", input }); }\nexport function closeRunResource(recordStorageRoot: string, input: CloseRunResourceInput) { return runCommand<RunMutationReceipt>(recordStorageRoot, { _tag: \"run-close\", input }); }\nexport function recoverRunResource(recordStorageRoot: string, input: RecoverRunResourceInput) { return runCommand<RecoverRunReceipt>(recordStorageRoot, { _tag: \"run-recover\", input }); }\nexport function deleteRunResource(recordStorageRoot: string, input: DeleteRunResourceInput) { return runCommand<DeleteRunReceipt>(recordStorageRoot, { _tag: \"run-delete\", input }); }\nexport function readRunResource(recordStorageRoot: string, runId: string, cutoff?: PublicationCutoff) {\n return runCommand<ReadableRunResource | undefined>(recordStorageRoot, { _tag: \"run-read\", runId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\nexport function listRunResources(recordStorageRoot: string, input?: Parameters<typeof listRunResourcesOnConnection>[1]) {\n return runCommand<RunResourcePage>(recordStorageRoot, { _tag: \"run-list\", ...(input === undefined ? {} : { input }) });\n}\nexport function readPublishedAttempt(recordStorageRoot: string, attemptId: string, cutoff?: PublicationCutoff) {\n return runCommand<PublishedAttempt | undefined>(recordStorageRoot, { _tag: \"run-read-attempt\", attemptId, ...(cutoff === undefined ? {} : { cutoff }) });\n}\n/** Convert unexpected SQLite constraint failures into the internal storage vocabulary. */\nexport function asRunStorageError(cause: unknown): RunStorageError {\n if (cause instanceof RunStorageError)\n return cause;\n if (cause instanceof Error)\n return invalid(cause.message);\n throw sqliteError(\"record-sqlite-error\", \"run-storage\", \"Run storage failed with a non-Error defect\", cause);\n}\n"]}
@@ -39,12 +39,14 @@ class AdapterUsageCollector {
39
39
  throw new Error("Adapter usage capture is closed");
40
40
  this.assertOpen();
41
41
  try {
42
+ if (Object.hasOwn(input, "modelSlot"))
43
+ throw new Error("Adapter usage modelSlot is no longer supported; use modelRole");
42
44
  if (this.sealed !== undefined)
43
45
  throw new Error("Adapter usage is already sealed");
44
46
  const decoded = effect_1.Schema.decodeUnknownResult(schema_ts_1.AdapterUsageCallSchema, core_ts_1.RecordExactParseOptions)({
45
- ...input,
47
+ ...Object.fromEntries(Object.entries(input).filter(([key]) => key !== "modelRole")),
46
48
  retryOf: input.retryOf ?? null,
47
- modelSlot: input.modelSlot ?? null,
49
+ modelSlot: input.modelRole ?? null,
48
50
  route: input.route ?? { transportProvider: null, endpointId: null },
49
51
  cost: input.cost ?? null,
50
52
  inputTotalTokens: input.inputTotalTokens ?? null,
@@ -55,7 +57,7 @@ class AdapterUsageCollector {
55
57
  throw new Error("Invalid Adapter usage snapshot");
56
58
  const call = deepFreeze(structuredClone(decoded.success));
57
59
  if (call.modelSlot !== null && !Object.hasOwn(this.models, call.modelSlot)) {
58
- throw new Error("Adapter usage modelSlot must reference a configured model purpose in this Attempt");
60
+ throw new Error("Adapter usage modelRole must reference a configured model purpose in this Attempt");
59
61
  }
60
62
  const prior = this.calls.get(call.callId);
61
63
  if (prior !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-usage.js","sourceRoot":"","sources":["adapter-usage.ts"],"names":[],"mappings":"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","sourcesContent":["import { projectAdapterEvalUsage, type EvalUsage } from \"../o11y/eval-usage.ts\";\nimport { Result, Schema } from \"effect\";\nimport type { AdapterUsageInput, AdapterUsageSeal } from \"../adapter-usage.ts\";\nimport { SafeIdentifierSchema } from \"../record/family/common.ts\";\nimport type { ResolvedModelSlots } from \"../model-slots.ts\";\nimport { createAdapterCallPriceReceipts } from \"../o11y/adapter-call-price.ts\";\nimport { RecordExactParseOptions } from \"../record/codec/core.ts\";\nimport { AdapterUsageCallSchema, AdapterUsageLimits, validateAdapterUsageCalls, type AdapterUsageCall, type AdapterUsageAttachment } from \"../record/family/adapter-usage/schema.ts\";\nimport type { PriceOverride } from \"./types.ts\";\nimport type { EvalResult } from \"./types.ts\";\nconst captures = new WeakMap<EvalResult, AdapterUsageAttachment>();\nconst UsageSealSchema = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"complete\") }),\n Schema.Struct({ state: Schema.Literal(\"partial\"),\n reason: SafeIdentifierSchema.check(Schema.makeFilter((value) => value.length <= 128)) }),\n]);\nexport function retainAdapterUsage(result: EvalResult, value: AdapterUsageAttachment): void {\n captures.set(result, value);\n}\nexport function adapterUsageForResult(result: EvalResult): AdapterUsageAttachment | undefined { return captures.get(result); }\n/** Snapshot-only capture remains writable during the independent cleanup window. */\nexport class AdapterUsageCollector {\n private readonly calls = new Map<string, AdapterUsageCall>();\n private closed = false;\n private failed: Error | undefined;\n private sealed: AdapterUsageSeal | undefined;\n get failure(): Error | undefined { return this.failed; }\n constructor(private readonly assertOpen: () => void, private readonly pricing: Readonly<Record<string, PriceOverride>> | undefined, private readonly models: ResolvedModelSlots = {}) { }\n record = (input: AdapterUsageInput): void => {\n if (this.closed)\n throw new Error(\"Adapter usage capture is closed\");\n this.assertOpen();\n try {\n if (this.sealed !== undefined)\n throw new Error(\"Adapter usage is already sealed\");\n const decoded = Schema.decodeUnknownResult(AdapterUsageCallSchema, RecordExactParseOptions)({\n ...input,\n retryOf: input.retryOf ?? null,\n modelSlot: input.modelSlot ?? null,\n route: input.route ?? { transportProvider: null, endpointId: null },\n cost: input.cost ?? null,\n inputTotalTokens: input.inputTotalTokens ?? null,\n cacheReadTokens: input.cacheReadTokens ?? null,\n cacheWriteTokens: input.cacheWriteTokens ?? null,\n });\n if (Result.isFailure(decoded))\n throw new Error(\"Invalid Adapter usage snapshot\");\n const call = deepFreeze(structuredClone(decoded.success));\n if (call.modelSlot !== null && !Object.hasOwn(this.models, call.modelSlot)) {\n throw new Error(\"Adapter usage modelSlot must reference a configured model purpose in this Attempt\");\n }\n const prior = this.calls.get(call.callId);\n if (prior !== undefined) {\n if (JSON.stringify(prior) !== JSON.stringify(call))\n throw new Error(\"Conflicting Adapter usage snapshot for callId\");\n return;\n }\n if (call.retryOf !== null && !this.calls.has(call.retryOf))\n throw new Error(\"Adapter usage retryOf must reference an earlier call in this Attempt\");\n if (this.calls.size >= AdapterUsageLimits.maximumCalls)\n throw new Error(\"Adapter usage exceeds 4000 calls per Attempt\");\n if (validateAdapterUsageCalls([...this.calls.values(), call]).length > 0) {\n throw new Error(\"Adapter input token observations are inconsistent or exceed safe integer limits\");\n }\n this.calls.set(call.callId, call);\n }\n catch (cause) {\n this.failed ??= cause instanceof Error ? cause : new Error(\"Adapter usage capture failed\");\n throw cause;\n }\n };\n seal = (input: AdapterUsageSeal): void => {\n if (this.closed)\n throw new Error(\"Adapter usage capture is closed\");\n this.assertOpen();\n try {\n if (this.sealed !== undefined)\n throw new Error(\"Adapter usage is already sealed\");\n const decoded = Schema.decodeUnknownResult(UsageSealSchema, RecordExactParseOptions)(input);\n if (Result.isFailure(decoded))\n throw new Error(\"Invalid Adapter usage seal: sealUsage partial reason must be 1-128 ASCII characters, start with a letter or digit, and contain only letters, digits, dot, underscore, colon, or hyphen; complete seals accept only state\");\n this.sealed = Object.freeze({ ...decoded.success });\n }\n catch (cause) {\n this.failed ??= cause instanceof Error ? cause : new Error(\"Adapter usage capture failed\");\n throw cause;\n }\n };\n snapshot(): EvalUsage { return projectAdapterEvalUsage(deepFreeze(structuredClone(this.capture())), this.models); }\n close(): AdapterUsageAttachment {\n this.closed = true;\n return this.capture();\n }\n private capture(): AdapterUsageAttachment {\n const calls = Object.freeze([...this.calls.values()]);\n return Object.freeze({\n collection: this.failed !== undefined\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-failed\" as const, stage: \"adapter-usage\" }] as const }\n : this.sealed === undefined\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-interrupted\" as const, stage: \"adapter-usage-unsealed\" }] as const }\n : this.sealed.state === \"partial\"\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-failed\" as const, stage: this.sealed.reason }] as const }\n : { state: \"complete\" as const, limitations: [] as const },\n calls,\n priceReceipts: createAdapterCallPriceReceipts(calls, this.pricing),\n });\n }\n}\nfunction deepFreeze<T>(value: T): T {\n if (value !== null && typeof value === \"object\") {\n for (const child of Object.values(value))\n deepFreeze(child);\n Object.freeze(value);\n }\n return value;\n}\n"]}
1
+ {"version":3,"file":"adapter-usage.js","sourceRoot":"","sources":["adapter-usage.ts"],"names":[],"mappings":";;;AAgBA,gDAEC;AACD,sDAA8H;AAnB9H,yDAAgF;AAChF,mCAAwC;AAExC,0DAAkE;AAElE,yEAA+E;AAC/E,qDAAkE;AAClE,wEAAqL;AAGrL,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAsC,CAAC;AACnE,MAAM,eAAe,GAAG,eAAM,CAAC,KAAK,CAAC;IACjC,eAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,eAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;IACpD,eAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,eAAM,CAAC,OAAO,CAAC,SAAS,CAAC;QAC5C,MAAM,EAAE,gCAAoB,CAAC,KAAK,CAAC,eAAM,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;CAC/F,CAAC,CAAC;AACH,SAAgB,kBAAkB,CAAC,MAAkB,EAAE,KAA6B;IAChF,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAChC,CAAC;AACD,SAAgB,qBAAqB,CAAC,MAAkB,IAAwC,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9H,oFAAoF;AACpF,MAAa,qBAAqB;IAMD;IAAyC;IAA+E;IALpI,KAAK,GAAG,IAAI,GAAG,EAA4B,CAAC;IACrD,MAAM,GAAG,KAAK,CAAC;IACf,MAAM,CAAoB;IAC1B,MAAM,CAA+B;IAC7C,IAAI,OAAO,KAAwB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACxD,YAA6B,UAAsB,EAAmB,OAA4D,EAAmB,SAA6B,EAAE;QAAvJ,eAAU,GAAV,UAAU,CAAY;QAAmB,YAAO,GAAP,OAAO,CAAqD;QAAmB,WAAM,GAAN,MAAM,CAAyB;IAAI,CAAC;IACzL,MAAM,GAAG,CAAC,KAAwB,EAAQ,EAAE;QACxC,IAAI,IAAI,CAAC,MAAM;YACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YACrF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,kCAAsB,EAAE,iCAAuB,CAAC,CAAC;gBACxF,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,WAAW,CAAC,CAAC;gBACnF,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,IAAI;gBAC9B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,IAAI;gBAClC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE;gBACnE,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;gBACxB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;gBAChD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI;gBAC9C,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,IAAI,IAAI;aACnD,CAAC,CAAC;YACH,IAAI,eAAM,CAAC,SAAS,CAAC,OAAO,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACtD,MAAM,IAAI,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzE,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;YACzG,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;oBAC9C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;gBACrE,OAAO;YACX,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBACtD,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC5F,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,8BAAkB,CAAC,YAAY;gBAClD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACpE,IAAI,IAAA,qCAAyB,EAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvE,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;YACvG,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC3F,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IACF,IAAI,GAAG,CAAC,KAAuB,EAAQ,EAAE;QACrC,IAAI,IAAI,CAAC,MAAM;YACX,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBACzB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,eAAM,CAAC,mBAAmB,CAAC,eAAe,EAAE,iCAAuB,CAAC,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,eAAM,CAAC,SAAS,CAAC,OAAO,CAAC;gBACzB,MAAM,IAAI,KAAK,CAAC,0NAA0N,CAAC,CAAC;YAChP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC3F,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC,CAAC;IACF,QAAQ,KAAgB,OAAO,IAAA,uCAAuB,EAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnH,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC;IACO,OAAO;QACX,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC,MAAM,CAAC;YACjB,UAAU,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS;gBACjC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE,CAAU,EAAE;gBACpH,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS;oBACvB,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,qBAA8B,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAU,EAAE;oBAClI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;wBAC7B,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,WAAW,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAyB,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAU,EAAE;wBACvH,CAAC,CAAC,EAAE,KAAK,EAAE,UAAmB,EAAE,WAAW,EAAE,EAAW,EAAE;YACtE,KAAK;YACL,aAAa,EAAE,IAAA,sDAA8B,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;SACrE,CAAC,CAAC;IACP,CAAC;CACJ;AAxFD,sDAwFC;AACD,SAAS,UAAU,CAAI,KAAQ;IAC3B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,UAAU,CAAC,KAAK,CAAC,CAAC;QACtB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC","sourcesContent":["import { projectAdapterEvalUsage, type EvalUsage } from \"../o11y/eval-usage.ts\";\nimport { Result, Schema } from \"effect\";\nimport type { AdapterUsageInput, AdapterUsageSeal } from \"../adapter-usage.ts\";\nimport { SafeIdentifierSchema } from \"../record/family/common.ts\";\nimport type { ResolvedModelRoles } from \"../model-roles.ts\";\nimport { createAdapterCallPriceReceipts } from \"../o11y/adapter-call-price.ts\";\nimport { RecordExactParseOptions } from \"../record/codec/core.ts\";\nimport { AdapterUsageCallSchema, AdapterUsageLimits, validateAdapterUsageCalls, type AdapterUsageCall, type AdapterUsageAttachment } from \"../record/family/adapter-usage/schema.ts\";\nimport type { PriceOverride } from \"./types.ts\";\nimport type { EvalResult } from \"./types.ts\";\nconst captures = new WeakMap<EvalResult, AdapterUsageAttachment>();\nconst UsageSealSchema = Schema.Union([\n Schema.Struct({ state: Schema.Literal(\"complete\") }),\n Schema.Struct({ state: Schema.Literal(\"partial\"),\n reason: SafeIdentifierSchema.check(Schema.makeFilter((value) => value.length <= 128)) }),\n]);\nexport function retainAdapterUsage(result: EvalResult, value: AdapterUsageAttachment): void {\n captures.set(result, value);\n}\nexport function adapterUsageForResult(result: EvalResult): AdapterUsageAttachment | undefined { return captures.get(result); }\n/** Snapshot-only capture remains writable during the independent cleanup window. */\nexport class AdapterUsageCollector {\n private readonly calls = new Map<string, AdapterUsageCall>();\n private closed = false;\n private failed: Error | undefined;\n private sealed: AdapterUsageSeal | undefined;\n get failure(): Error | undefined { return this.failed; }\n constructor(private readonly assertOpen: () => void, private readonly pricing: Readonly<Record<string, PriceOverride>> | undefined, private readonly models: ResolvedModelRoles = {}) { }\n record = (input: AdapterUsageInput): void => {\n if (this.closed)\n throw new Error(\"Adapter usage capture is closed\");\n this.assertOpen();\n try {\n if (Object.hasOwn(input, \"modelSlot\"))\n throw new Error(\"Adapter usage modelSlot is no longer supported; use modelRole\");\n if (this.sealed !== undefined)\n throw new Error(\"Adapter usage is already sealed\");\n const decoded = Schema.decodeUnknownResult(AdapterUsageCallSchema, RecordExactParseOptions)({\n ...Object.fromEntries(Object.entries(input).filter(([key]) => key !== \"modelRole\")),\n retryOf: input.retryOf ?? null,\n modelSlot: input.modelRole ?? null,\n route: input.route ?? { transportProvider: null, endpointId: null },\n cost: input.cost ?? null,\n inputTotalTokens: input.inputTotalTokens ?? null,\n cacheReadTokens: input.cacheReadTokens ?? null,\n cacheWriteTokens: input.cacheWriteTokens ?? null,\n });\n if (Result.isFailure(decoded))\n throw new Error(\"Invalid Adapter usage snapshot\");\n const call = deepFreeze(structuredClone(decoded.success));\n if (call.modelSlot !== null && !Object.hasOwn(this.models, call.modelSlot)) {\n throw new Error(\"Adapter usage modelRole must reference a configured model purpose in this Attempt\");\n }\n const prior = this.calls.get(call.callId);\n if (prior !== undefined) {\n if (JSON.stringify(prior) !== JSON.stringify(call))\n throw new Error(\"Conflicting Adapter usage snapshot for callId\");\n return;\n }\n if (call.retryOf !== null && !this.calls.has(call.retryOf))\n throw new Error(\"Adapter usage retryOf must reference an earlier call in this Attempt\");\n if (this.calls.size >= AdapterUsageLimits.maximumCalls)\n throw new Error(\"Adapter usage exceeds 4000 calls per Attempt\");\n if (validateAdapterUsageCalls([...this.calls.values(), call]).length > 0) {\n throw new Error(\"Adapter input token observations are inconsistent or exceed safe integer limits\");\n }\n this.calls.set(call.callId, call);\n }\n catch (cause) {\n this.failed ??= cause instanceof Error ? cause : new Error(\"Adapter usage capture failed\");\n throw cause;\n }\n };\n seal = (input: AdapterUsageSeal): void => {\n if (this.closed)\n throw new Error(\"Adapter usage capture is closed\");\n this.assertOpen();\n try {\n if (this.sealed !== undefined)\n throw new Error(\"Adapter usage is already sealed\");\n const decoded = Schema.decodeUnknownResult(UsageSealSchema, RecordExactParseOptions)(input);\n if (Result.isFailure(decoded))\n throw new Error(\"Invalid Adapter usage seal: sealUsage partial reason must be 1-128 ASCII characters, start with a letter or digit, and contain only letters, digits, dot, underscore, colon, or hyphen; complete seals accept only state\");\n this.sealed = Object.freeze({ ...decoded.success });\n }\n catch (cause) {\n this.failed ??= cause instanceof Error ? cause : new Error(\"Adapter usage capture failed\");\n throw cause;\n }\n };\n snapshot(): EvalUsage { return projectAdapterEvalUsage(deepFreeze(structuredClone(this.capture())), this.models); }\n close(): AdapterUsageAttachment {\n this.closed = true;\n return this.capture();\n }\n private capture(): AdapterUsageAttachment {\n const calls = Object.freeze([...this.calls.values()]);\n return Object.freeze({\n collection: this.failed !== undefined\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-failed\" as const, stage: \"adapter-usage\" }] as const }\n : this.sealed === undefined\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-interrupted\" as const, stage: \"adapter-usage-unsealed\" }] as const }\n : this.sealed.state === \"partial\"\n ? { state: \"partial\" as const, limitations: [{ code: \"capture-failed\" as const, stage: this.sealed.reason }] as const }\n : { state: \"complete\" as const, limitations: [] as const },\n calls,\n priceReceipts: createAdapterCallPriceReceipts(calls, this.pricing),\n });\n }\n}\nfunction deepFreeze<T>(value: T): T {\n if (value !== null && typeof value === \"object\") {\n for (const child of Object.values(value))\n deepFreeze(child);\n Object.freeze(value);\n }\n return value;\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { type EvalUsage } from "../o11y/eval-usage.cjs";
2
2
  import type { AdapterUsageInput, AdapterUsageSeal } from "../adapter-usage.cjs";
3
- import type { ResolvedModelSlots } from "../model-slots.cjs";
3
+ import type { ResolvedModelRoles } from "../model-roles.cjs";
4
4
  import { type AdapterUsageAttachment } from "../record/family/adapter-usage/schema.cjs";
5
5
  import type { PriceOverride } from "./types.cjs";
6
6
  import type { EvalResult } from "./types.cjs";
@@ -16,7 +16,7 @@ export declare class AdapterUsageCollector {
16
16
  private failed;
17
17
  private sealed;
18
18
  get failure(): Error | undefined;
19
- constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelSlots);
19
+ constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelRoles);
20
20
  record: (input: AdapterUsageInput) => void;
21
21
  seal: (input: AdapterUsageSeal) => void;
22
22
  snapshot(): EvalUsage;
@@ -1,6 +1,6 @@
1
1
  import { type EvalUsage } from "../o11y/eval-usage.mjs";
2
2
  import type { AdapterUsageInput, AdapterUsageSeal } from "../adapter-usage.mjs";
3
- import type { ResolvedModelSlots } from "../model-slots.mjs";
3
+ import type { ResolvedModelRoles } from "../model-roles.mjs";
4
4
  import { type AdapterUsageAttachment } from "../record/family/adapter-usage/schema.mjs";
5
5
  import type { PriceOverride } from "./types.mjs";
6
6
  import type { EvalResult } from "./types.mjs";
@@ -16,7 +16,7 @@ export declare class AdapterUsageCollector {
16
16
  private failed;
17
17
  private sealed;
18
18
  get failure(): Error | undefined;
19
- constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelSlots);
19
+ constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelRoles);
20
20
  record: (input: AdapterUsageInput) => void;
21
21
  seal: (input: AdapterUsageSeal) => void;
22
22
  snapshot(): EvalUsage;
@@ -1,6 +1,6 @@
1
1
  import { type EvalUsage } from "../o11y/eval-usage.js";
2
2
  import type { AdapterUsageInput, AdapterUsageSeal } from "../adapter-usage.js";
3
- import type { ResolvedModelSlots } from "../model-slots.js";
3
+ import type { ResolvedModelRoles } from "../model-roles.js";
4
4
  import { type AdapterUsageAttachment } from "../record/family/adapter-usage/schema.js";
5
5
  import type { PriceOverride } from "./types.js";
6
6
  import type { EvalResult } from "./types.js";
@@ -16,7 +16,7 @@ export declare class AdapterUsageCollector {
16
16
  private failed;
17
17
  private sealed;
18
18
  get failure(): Error | undefined;
19
- constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelSlots);
19
+ constructor(assertOpen: () => void, pricing: Readonly<Record<string, PriceOverride>> | undefined, models?: ResolvedModelRoles);
20
20
  record: (input: AdapterUsageInput) => void;
21
21
  seal: (input: AdapterUsageSeal) => void;
22
22
  snapshot(): EvalUsage;
@@ -18,7 +18,7 @@ exports.adoptionStartedAt = adoptionStartedAt;
18
18
  exports.withAdoptionReader = withAdoptionReader;
19
19
  exports.resolveExactAdoptionSourceRun = resolveExactAdoptionSourceRun;
20
20
  exports.prepareWholeRunAdoptionMembers = prepareWholeRunAdoptionMembers;
21
- // @concord-file ne-runner-adoption
21
+ // @concord-file
22
22
  // @concord-implements docs/feature/experiments/cache.md
23
23
  // @concord-implements docs/feature/experiments/library.md
24
24
  const score_ts_1 = require("../eval/record/score.cjs");
@@ -130,7 +130,7 @@ function loadAdoptionProject(input) {
130
130
  function runForExperiment(experiment, selectedEvalIds, config) {
131
131
  return Object.freeze({
132
132
  adapter: experiment.adapter,
133
- ...(experiment.agent === undefined ? {} : { agent: experiment.agent }),
133
+ ...(experiment.adapter.kind === "custom" ? {} : { agent: experiment.adapter }),
134
134
  ...(experiment.models === undefined ? {} : { models: experiment.models }),
135
135
  ...(experiment.model === undefined ? {} : { model: experiment.model }),
136
136
  ...(experiment.reasoningEffort === undefined
@@ -140,11 +140,11 @@ function runForExperiment(experiment, selectedEvalIds, config) {
140
140
  plugins: experiment.plugins,
141
141
  attempts: experiment.attempts,
142
142
  earlyExit: experiment.earlyExit,
143
- sandboxSetupCache: (0, types_ts_1.resolveSandboxSetupCache)(undefined, experiment.sandboxCache, config.sandboxCache),
143
+ sandboxBeforeCache: (0, types_ts_1.resolveSandboxBeforeCache)(undefined, experiment.sandboxCache, config.sandboxCache),
144
144
  ...(experiment.sandbox === undefined ? {} : { sandbox: experiment.sandbox }),
145
145
  sandboxReuse: experiment.sandboxReuse,
146
146
  ...(experiment.sharedState === undefined ? {} : { sharedState: experiment.sharedState }),
147
- ...(experiment.judgeRuntime === undefined ? {} : { judgeRuntime: experiment.judgeRuntime }),
147
+ ...(experiment.judge === undefined ? {} : { judge: experiment.judge }),
148
148
  ...(0, timeout_ts_1.resolveRunTimeout)(undefined, experiment.timeoutMs),
149
149
  ...(experiment.budget === undefined ? {} : { budget: experiment.budget }),
150
150
  experimentId: experiment.id,
@@ -160,11 +160,8 @@ function runForExperiment(experiment, selectedEvalIds, config) {
160
160
  ...(experiment.maxConcurrency === undefined
161
161
  ? {}
162
162
  : { maxConcurrency: experiment.maxConcurrency }),
163
- ...(experiment.setup === undefined ? {} : { setup: experiment.setup }),
164
- ...(experiment.teardown === undefined ? {} : { teardown: experiment.teardown }),
165
- ...(experiment.classifyFailure === undefined
166
- ? {}
167
- : { classifyFailure: experiment.classifyFailure }),
163
+ ...(experiment.before === undefined ? {} : { setup: experiment.before }),
164
+ ...(experiment.after === undefined ? {} : { teardown: experiment.after }),
168
165
  });
169
166
  }
170
167
  function adoptionRunContext(run) {
@@ -213,7 +210,7 @@ function currentTargetSlotIdentity(input) {
213
210
  * a produced Run has the complete current denominator rather than only the
214
211
  * manually adopted Members.
215
212
  */
216
- // @concord-code ne-runner-prepare-adoption-target
213
+ // @concord-code
217
214
  // @concord-implements docs/feature/experiments/cache.md
218
215
  function prepareCurrentAdoptionTarget(input) {
219
216
  return effect_1.Effect.gen(function* () {
@@ -244,7 +241,7 @@ function prepareCurrentAdoptionTarget(input) {
244
241
  ? yield* effect_1.Effect.fail(contextResult.failure)
245
242
  : contextResult.success;
246
243
  const projectPlan = yield* (0, fingerprint_ts_1.planPreparedProjectTarget)(pairs, {
247
- configJudge: input.project.config.judgeRuntime,
244
+ configJudge: input.project.config.judgeProvider,
248
245
  }).pipe(effect_1.Effect.mapError((cause) => adoptionError("adoption-target-planning-failed", `Current identity planning for "${experiment.id}" failed: ${safeMessage(cause)}`)));
249
246
  const plannedPairs = [];
250
247
  for (const pair of pairs) {
@@ -523,7 +520,7 @@ function durationComparison(input) {
523
520
  * is compared exactly, but an explicit operator decision may accept a mismatch.
524
521
  * The folded Verdict and complete Runner Activity timing remain hard gates.
525
522
  */
526
- // @concord-code ne-runner-prepare-adoption-member
523
+ // @concord-code
527
524
  // @concord-implements docs/feature/experiments/cache.md
528
525
  function prepareExplicitAdoptionMember(input) {
529
526
  return effect_1.Effect.gen(function* () {