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,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RunContextSchema = exports.AdapterIdentitySchema = exports.RunContextLimits = void 0;
3
+ exports.RunContextSchema = exports.RunPluginIdentitySchema = exports.AdapterIdentitySchema = exports.RunContextLimits = void 0;
4
4
  exports.canonicalizeRunContext = canonicalizeRunContext;
5
5
  exports.validateRunContext = validateRunContext;
6
6
  exports.runContextCanonicalJson = runContextCanonicalJson;
7
- const model_slots_ts_1 = require("../../model-slots.cjs");
7
+ const model_roles_ts_1 = require("../../model-roles.cjs");
8
8
  const adapter_cleanup_ts_1 = require("../../shared/adapter-cleanup.cjs");
9
9
  const effect_1 = require("effect");
10
10
  const index_ts_1 = require("../definition/index.cjs");
@@ -40,8 +40,14 @@ exports.AdapterIdentitySchema = effect_1.Schema.Struct({
40
40
  behaviorRevision: effect_1.Schema.NullOr(NonEmptyStringSchema),
41
41
  cleanupTimeoutMs: effect_1.Schema.optionalKey(adapter_cleanup_ts_1.AdapterCleanupTimeoutMsSchema),
42
42
  });
43
+ exports.RunPluginIdentitySchema = effect_1.Schema.Struct({
44
+ name: NonEmptyStringSchema,
45
+ key: NonEmptyStringSchema,
46
+ identity: RunContextJsonObjectSchema,
47
+ });
43
48
  const RunExecutionContextSchema = effect_1.Schema.Struct({
44
- models: effect_1.Schema.optionalKey(model_slots_ts_1.ResolvedModelSlotsSchema),
49
+ plugins: effect_1.Schema.optionalKey(effect_1.Schema.Array(exports.RunPluginIdentitySchema)),
50
+ models: effect_1.Schema.optionalKey(model_roles_ts_1.ResolvedModelRolesSchema),
45
51
  adapter: exports.AdapterIdentitySchema,
46
52
  model: effect_1.Schema.NullOr(effect_1.Schema.String),
47
53
  reasoningEffort: effect_1.Schema.NullOr(effect_1.Schema.String),
@@ -1 +1 @@
1
- {"version":3,"file":"run-context.js","sourceRoot":"","sources":["run-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { ResolvedModelSlotsSchema, type ResolvedModelSlots } from \"../../model-slots.ts\";\nimport { AdapterCleanupTimeoutMsSchema } from \"../../shared/adapter-cleanup.ts\";\nimport { Result, Schema } from \"effect\";\nimport { canonicalRecordJsonText, defineRecordCore, type RecordJson, type RecordJsonObject, type RecordSchemaLimits, } from \"../definition/index.ts\";\nimport type { RecordSchemaFailure } from \"../definition/schema-codec.ts\";\nimport { ExperimentIdSchema } from \"../codec/identifiers.ts\";\nimport { nonEmptyRecordIssues, recordIssue, type NonEmptyRecordIssues, type RecordIssue, } from \"../errors/record-errors.ts\";\nimport type { ExperimentId } from \"./identifiers.ts\";\n/** The complete budget for one immutable, self-explaining Run context. */\nexport const RunContextLimits: RecordSchemaLimits = Object.freeze({\n maximumJsonBytes: 256 * 1024,\n maximumDepth: 8,\n maximumNodes: 4096,\n maximumObjectKeys: 64,\n maximumArrayItems: 256,\n maximumKeyUtf8Bytes: 256,\n maximumStringUtf8Bytes: 8 * 1024,\n});\nexport type RunContextJsonValue = RecordJson;\nexport type RunContextJsonObject = RecordJsonObject;\n/** Credential-free, presentation-neutral identity of the Adapter evaluated by a Run. */\nexport type AdapterIdentity = {\n readonly name: string;\n /** Descriptive contract name; pairing and capabilities use runtime construction evidence. */\n readonly contract: string;\n /** `null` means the author did not claim a stable behavior revision. */\n readonly behaviorRevision: string | null;\n /** Custom Adapter cleanup budget; absent when not applicable or not recorded. */\n readonly cleanupTimeoutMs?: number;\n};\nexport interface RunExecutionContext {\n readonly models?: ResolvedModelSlots;\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n /** Secret-free author-declared JSON. Its meaning is deliberately not inferred. */\n readonly flags: RunContextJsonObject;\n /** Declared execution inputs; omission in historical data means unknown. */\n readonly experimentHooks?: {\n readonly version: 1;\n readonly setup: \"absent\" | \"opaque\";\n readonly teardown: \"absent\" | \"opaque\";\n };\n}\n/** Core history required to interpret the sealed Run without current configuration. */\nexport interface RunContext {\n readonly experimentId: ExperimentId;\n readonly execution: RunExecutionContext;\n readonly labels: Readonly<Record<string, string>>;\n}\n/**\n * `flags` is intentionally an open v1 JSON object. Keep its recursive exact\n * JSON shape in Schema rather than reducing it to an opaque runtime guard.\n */\nconst RunContextJsonValueSchema: Schema.Codec<RunContextJsonValue> = Schema.suspend(() => Schema.Union([\n Schema.Null,\n Schema.Boolean,\n Schema.Number,\n Schema.String,\n Schema.Array(RunContextJsonValueSchema),\n Schema.Record(Schema.String, RunContextJsonValueSchema),\n]));\nconst RunContextJsonObjectSchema: Schema.Codec<RunContextJsonObject> = Schema.Record(Schema.String, RunContextJsonValueSchema);\nconst NonEmptyStringSchema = Schema.String.pipe(Schema.check(Schema.isMinLength(1)));\nexport const AdapterIdentitySchema: Schema.Codec<AdapterIdentity> = Schema.Struct({\n name: NonEmptyStringSchema,\n contract: NonEmptyStringSchema,\n behaviorRevision: Schema.NullOr(NonEmptyStringSchema),\n cleanupTimeoutMs: Schema.optionalKey(AdapterCleanupTimeoutMsSchema),\n});\nconst RunExecutionContextSchema: Schema.Codec<RunExecutionContext> = Schema.Struct({\n models: Schema.optionalKey(ResolvedModelSlotsSchema),\n adapter: AdapterIdentitySchema,\n model: Schema.NullOr(Schema.String),\n reasoningEffort: Schema.NullOr(Schema.String),\n flags: RunContextJsonObjectSchema,\n experimentHooks: Schema.optionalKey(Schema.Struct({\n version: Schema.Literal(1),\n setup: Schema.Literals([\"absent\", \"opaque\"]),\n teardown: Schema.Literals([\"absent\", \"opaque\"]),\n })),\n}).check(Schema.makeFilter((value) => value.models === undefined ||\n (value.model === (value.models.default?.model ?? null) &&\n value.reasoningEffort === (value.models.default?.reasoningEffort ?? null))));\nconst RunLabelsSchema: Schema.Codec<Readonly<Record<string, string>>> = Schema.Record(Schema.String, Schema.String);\nconst RunContextCurrentSchema = Schema.Struct({\n experimentId: ExperimentIdSchema,\n execution: RunExecutionContextSchema,\n labels: RunLabelsSchema,\n});\n/** Run Context is Core, not an Attachment. */\nconst RunContextDefinition = defineRecordCore({\n schema: RunContextCurrentSchema,\n limits: RunContextLimits,\n});\nexport const RunContextSchema = RunContextDefinition.schema;\nfunction issuesFromFailure(failure: RecordSchemaFailure): NonEmptyRecordIssues {\n const issue: RecordIssue = failure.kind === \"canonical\"\n ? recordIssue(failure.failure.code === \"record-json-limit-exceeded\"\n ? \"record-run-context-size-exceeded\"\n : \"record-run-context-invalid\", failure.failure.path)\n : recordIssue(\"record-run-context-invalid\");\n const issues = nonEmptyRecordIssues([issue]);\n if (issues === undefined)\n throw new Error(\"Run context failure must contain one issue\");\n return issues;\n}\n/** Decode, canonicalize, validate exactly, and deep-freeze the current Context. */\nexport function canonicalizeRunContext(input: unknown): Result.Result<RunContext, NonEmptyRecordIssues> {\n const decoded = RunContextDefinition.decode(input);\n return Result.isFailure(decoded)\n ? Result.fail(issuesFromFailure(decoded.failure))\n : Result.succeed(decoded.success);\n}\nexport function validateRunContext(input: unknown): readonly RecordIssue[] {\n const decoded = canonicalizeRunContext(input);\n return Result.isFailure(decoded) ? decoded.failure : Object.freeze([]);\n}\nexport function runContextCanonicalJson(context: RunContext): string {\n const encoded = RunContextDefinition.encode(context);\n if (Result.isFailure(encoded)) {\n throw new Error(\"A RunContext value must be valid before serialization\");\n }\n return canonicalRecordJsonText(encoded.success);\n}\n"]}
1
+ {"version":3,"file":"run-context.js","sourceRoot":"","sources":["run-context.ts"],"names":[],"mappings":"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","sourcesContent":["import { ResolvedModelRolesSchema, type ResolvedModelRoles } from \"../../model-roles.ts\";\nimport { AdapterCleanupTimeoutMsSchema } from \"../../shared/adapter-cleanup.ts\";\nimport { Result, Schema } from \"effect\";\nimport { canonicalRecordJsonText, defineRecordCore, type RecordJson, type RecordJsonObject, type RecordSchemaLimits, } from \"../definition/index.ts\";\nimport type { RecordSchemaFailure } from \"../definition/schema-codec.ts\";\nimport { ExperimentIdSchema } from \"../codec/identifiers.ts\";\nimport { nonEmptyRecordIssues, recordIssue, type NonEmptyRecordIssues, type RecordIssue, } from \"../errors/record-errors.ts\";\nimport type { ExperimentId } from \"./identifiers.ts\";\n/** The complete budget for one immutable, self-explaining Run context. */\nexport const RunContextLimits: RecordSchemaLimits = Object.freeze({\n maximumJsonBytes: 256 * 1024,\n maximumDepth: 8,\n maximumNodes: 4096,\n maximumObjectKeys: 64,\n maximumArrayItems: 256,\n maximumKeyUtf8Bytes: 256,\n maximumStringUtf8Bytes: 8 * 1024,\n});\nexport type RunContextJsonValue = RecordJson;\nexport type RunContextJsonObject = RecordJsonObject;\n/** Credential-free, presentation-neutral identity of the Adapter evaluated by a Run. */\nexport type AdapterIdentity = {\n readonly name: string;\n /** Descriptive contract name; pairing and capabilities use runtime construction evidence. */\n readonly contract: string;\n /** `null` means the author did not claim a stable behavior revision. */\n readonly behaviorRevision: string | null;\n /** Custom Adapter cleanup budget; absent when not applicable or not recorded. */\n readonly cleanupTimeoutMs?: number;\n};\nexport interface RunPluginIdentity {\n readonly name: string;\n readonly key: string;\n readonly identity: RunContextJsonObject;\n}\nexport interface RunExecutionContext {\n readonly plugins?: readonly RunPluginIdentity[];\n readonly models?: ResolvedModelRoles;\n readonly adapter: AdapterIdentity;\n readonly model: string | null;\n readonly reasoningEffort: string | null;\n /** Secret-free author-declared JSON. Its meaning is deliberately not inferred. */\n readonly flags: RunContextJsonObject;\n /** Declared execution inputs; omission in historical data means unknown. */\n readonly experimentHooks?: {\n readonly version: 1;\n readonly setup: \"absent\" | \"opaque\";\n readonly teardown: \"absent\" | \"opaque\";\n };\n}\n/** Core history required to interpret the sealed Run without current configuration. */\nexport interface RunContext {\n readonly experimentId: ExperimentId;\n readonly execution: RunExecutionContext;\n readonly labels: Readonly<Record<string, string>>;\n}\n/**\n * `flags` is intentionally an open v1 JSON object. Keep its recursive exact\n * JSON shape in Schema rather than reducing it to an opaque runtime guard.\n */\nconst RunContextJsonValueSchema: Schema.Codec<RunContextJsonValue> = Schema.suspend(() => Schema.Union([\n Schema.Null,\n Schema.Boolean,\n Schema.Number,\n Schema.String,\n Schema.Array(RunContextJsonValueSchema),\n Schema.Record(Schema.String, RunContextJsonValueSchema),\n]));\nconst RunContextJsonObjectSchema: Schema.Codec<RunContextJsonObject> = Schema.Record(Schema.String, RunContextJsonValueSchema);\nconst NonEmptyStringSchema = Schema.String.pipe(Schema.check(Schema.isMinLength(1)));\nexport const AdapterIdentitySchema: Schema.Codec<AdapterIdentity> = Schema.Struct({\n name: NonEmptyStringSchema,\n contract: NonEmptyStringSchema,\n behaviorRevision: Schema.NullOr(NonEmptyStringSchema),\n cleanupTimeoutMs: Schema.optionalKey(AdapterCleanupTimeoutMsSchema),\n});\nexport const RunPluginIdentitySchema: Schema.Codec<RunPluginIdentity> = Schema.Struct({\n name: NonEmptyStringSchema,\n key: NonEmptyStringSchema,\n identity: RunContextJsonObjectSchema,\n});\nconst RunExecutionContextSchema: Schema.Codec<RunExecutionContext> = Schema.Struct({\n plugins: Schema.optionalKey(Schema.Array(RunPluginIdentitySchema)),\n models: Schema.optionalKey(ResolvedModelRolesSchema),\n adapter: AdapterIdentitySchema,\n model: Schema.NullOr(Schema.String),\n reasoningEffort: Schema.NullOr(Schema.String),\n flags: RunContextJsonObjectSchema,\n experimentHooks: Schema.optionalKey(Schema.Struct({\n version: Schema.Literal(1),\n setup: Schema.Literals([\"absent\", \"opaque\"]),\n teardown: Schema.Literals([\"absent\", \"opaque\"]),\n })),\n}).check(Schema.makeFilter((value) => value.models === undefined ||\n (value.model === (value.models.default?.model ?? null) &&\n value.reasoningEffort === (value.models.default?.reasoningEffort ?? null))));\nconst RunLabelsSchema: Schema.Codec<Readonly<Record<string, string>>> = Schema.Record(Schema.String, Schema.String);\nconst RunContextCurrentSchema = Schema.Struct({\n experimentId: ExperimentIdSchema,\n execution: RunExecutionContextSchema,\n labels: RunLabelsSchema,\n});\n/** Run Context is Core, not an Attachment. */\nconst RunContextDefinition = defineRecordCore({\n schema: RunContextCurrentSchema,\n limits: RunContextLimits,\n});\nexport const RunContextSchema = RunContextDefinition.schema;\nfunction issuesFromFailure(failure: RecordSchemaFailure): NonEmptyRecordIssues {\n const issue: RecordIssue = failure.kind === \"canonical\"\n ? recordIssue(failure.failure.code === \"record-json-limit-exceeded\"\n ? \"record-run-context-size-exceeded\"\n : \"record-run-context-invalid\", failure.failure.path)\n : recordIssue(\"record-run-context-invalid\");\n const issues = nonEmptyRecordIssues([issue]);\n if (issues === undefined)\n throw new Error(\"Run context failure must contain one issue\");\n return issues;\n}\n/** Decode, canonicalize, validate exactly, and deep-freeze the current Context. */\nexport function canonicalizeRunContext(input: unknown): Result.Result<RunContext, NonEmptyRecordIssues> {\n const decoded = RunContextDefinition.decode(input);\n return Result.isFailure(decoded)\n ? Result.fail(issuesFromFailure(decoded.failure))\n : Result.succeed(decoded.success);\n}\nexport function validateRunContext(input: unknown): readonly RecordIssue[] {\n const decoded = canonicalizeRunContext(input);\n return Result.isFailure(decoded) ? decoded.failure : Object.freeze([]);\n}\nexport function runContextCanonicalJson(context: RunContext): string {\n const encoded = RunContextDefinition.encode(context);\n if (Result.isFailure(encoded)) {\n throw new Error(\"A RunContext value must be valid before serialization\");\n }\n return canonicalRecordJsonText(encoded.success);\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { type ResolvedModelSlots } from "../../model-slots.cjs";
1
+ import { type ResolvedModelRoles } from "../../model-roles.cjs";
2
2
  import { Result, Schema } from "effect";
3
3
  import { type RecordJson, type RecordJsonObject, type RecordSchemaLimits } from "../definition/index.cjs";
4
4
  import { type NonEmptyRecordIssues, type RecordIssue } from "../errors/record-errors.cjs";
@@ -17,8 +17,14 @@ export type AdapterIdentity = {
17
17
  /** Custom Adapter cleanup budget; absent when not applicable or not recorded. */
18
18
  readonly cleanupTimeoutMs?: number;
19
19
  };
20
+ export interface RunPluginIdentity {
21
+ readonly name: string;
22
+ readonly key: string;
23
+ readonly identity: RunContextJsonObject;
24
+ }
20
25
  export interface RunExecutionContext {
21
- readonly models?: ResolvedModelSlots;
26
+ readonly plugins?: readonly RunPluginIdentity[];
27
+ readonly models?: ResolvedModelRoles;
22
28
  readonly adapter: AdapterIdentity;
23
29
  readonly model: string | null;
24
30
  readonly reasoningEffort: string | null;
@@ -38,6 +44,7 @@ export interface RunContext {
38
44
  readonly labels: Readonly<Record<string, string>>;
39
45
  }
40
46
  export declare const AdapterIdentitySchema: Schema.Codec<AdapterIdentity>;
47
+ export declare const RunPluginIdentitySchema: Schema.Codec<RunPluginIdentity>;
41
48
  export declare const RunContextSchema: Schema.Struct<{
42
49
  readonly experimentId: Schema.Codec<ExperimentId, string, never, never>;
43
50
  readonly execution: Schema.Codec<RunExecutionContext, RunExecutionContext, never, never>;
@@ -1,4 +1,4 @@
1
- import { type ResolvedModelSlots } from "../../model-slots.mjs";
1
+ import { type ResolvedModelRoles } from "../../model-roles.mjs";
2
2
  import { Result, Schema } from "effect";
3
3
  import { type RecordJson, type RecordJsonObject, type RecordSchemaLimits } from "../definition/index.mjs";
4
4
  import { type NonEmptyRecordIssues, type RecordIssue } from "../errors/record-errors.mjs";
@@ -17,8 +17,14 @@ export type AdapterIdentity = {
17
17
  /** Custom Adapter cleanup budget; absent when not applicable or not recorded. */
18
18
  readonly cleanupTimeoutMs?: number;
19
19
  };
20
+ export interface RunPluginIdentity {
21
+ readonly name: string;
22
+ readonly key: string;
23
+ readonly identity: RunContextJsonObject;
24
+ }
20
25
  export interface RunExecutionContext {
21
- readonly models?: ResolvedModelSlots;
26
+ readonly plugins?: readonly RunPluginIdentity[];
27
+ readonly models?: ResolvedModelRoles;
22
28
  readonly adapter: AdapterIdentity;
23
29
  readonly model: string | null;
24
30
  readonly reasoningEffort: string | null;
@@ -38,6 +44,7 @@ export interface RunContext {
38
44
  readonly labels: Readonly<Record<string, string>>;
39
45
  }
40
46
  export declare const AdapterIdentitySchema: Schema.Codec<AdapterIdentity>;
47
+ export declare const RunPluginIdentitySchema: Schema.Codec<RunPluginIdentity>;
41
48
  export declare const RunContextSchema: Schema.Struct<{
42
49
  readonly experimentId: Schema.Codec<ExperimentId, string, never, never>;
43
50
  readonly execution: Schema.Codec<RunExecutionContext, RunExecutionContext, never, never>;
@@ -1,4 +1,4 @@
1
- import { type ResolvedModelSlots } from "../../model-slots.js";
1
+ import { type ResolvedModelRoles } from "../../model-roles.js";
2
2
  import { Result, Schema } from "effect";
3
3
  import { type RecordJson, type RecordJsonObject, type RecordSchemaLimits } from "../definition/index.js";
4
4
  import { type NonEmptyRecordIssues, type RecordIssue } from "../errors/record-errors.js";
@@ -17,8 +17,14 @@ export type AdapterIdentity = {
17
17
  /** Custom Adapter cleanup budget; absent when not applicable or not recorded. */
18
18
  readonly cleanupTimeoutMs?: number;
19
19
  };
20
+ export interface RunPluginIdentity {
21
+ readonly name: string;
22
+ readonly key: string;
23
+ readonly identity: RunContextJsonObject;
24
+ }
20
25
  export interface RunExecutionContext {
21
- readonly models?: ResolvedModelSlots;
26
+ readonly plugins?: readonly RunPluginIdentity[];
27
+ readonly models?: ResolvedModelRoles;
22
28
  readonly adapter: AdapterIdentity;
23
29
  readonly model: string | null;
24
30
  readonly reasoningEffort: string | null;
@@ -38,6 +44,7 @@ export interface RunContext {
38
44
  readonly labels: Readonly<Record<string, string>>;
39
45
  }
40
46
  export declare const AdapterIdentitySchema: Schema.Codec<AdapterIdentity>;
47
+ export declare const RunPluginIdentitySchema: Schema.Codec<RunPluginIdentity>;
41
48
  export declare const RunContextSchema: Schema.Struct<{
42
49
  readonly experimentId: Schema.Codec<ExperimentId, string, never, never>;
43
50
  readonly execution: Schema.Codec<RunExecutionContext, RunExecutionContext, never, never>;
@@ -7,10 +7,12 @@ const __niceevalExport1 = __niceevalCanonical["RunContextLimits"];
7
7
  export { __niceevalExport1 as RunContextLimits };
8
8
  const __niceevalExport2 = __niceevalCanonical["RunContextSchema"];
9
9
  export { __niceevalExport2 as RunContextSchema };
10
- const __niceevalExport3 = __niceevalCanonical["canonicalizeRunContext"];
11
- export { __niceevalExport3 as canonicalizeRunContext };
12
- const __niceevalExport4 = __niceevalCanonical["runContextCanonicalJson"];
13
- export { __niceevalExport4 as runContextCanonicalJson };
14
- const __niceevalExport5 = __niceevalCanonical["validateRunContext"];
15
- export { __niceevalExport5 as validateRunContext };
10
+ const __niceevalExport3 = __niceevalCanonical["RunPluginIdentitySchema"];
11
+ export { __niceevalExport3 as RunPluginIdentitySchema };
12
+ const __niceevalExport4 = __niceevalCanonical["canonicalizeRunContext"];
13
+ export { __niceevalExport4 as canonicalizeRunContext };
14
+ const __niceevalExport5 = __niceevalCanonical["runContextCanonicalJson"];
15
+ export { __niceevalExport5 as runContextCanonicalJson };
16
+ const __niceevalExport6 = __niceevalCanonical["validateRunContext"];
17
+ export { __niceevalExport6 as validateRunContext };
16
18
  //# sourceMappingURL=run-context.js.map
@@ -2,7 +2,7 @@ import type { AttemptId, CanonicalRunRelativePath, RecordId, RunId, Sha256Digest
2
2
  export declare const SEAL_MANIFEST_FORMAT: "niceeval.seal-manifest";
3
3
  export declare const PUBLISH_RECOVERY_FORMAT: "niceeval.publish-recovery";
4
4
  /** Compatibility alias derived from the official branded definition catalog. */
5
- export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
5
+ export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.attempt-note", "niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
6
6
  export type FixedRecordFamily = (typeof FIXED_RECORD_FAMILIES)[number];
7
7
  export interface RecordByteIdentity {
8
8
  readonly byteLength: number;
@@ -2,7 +2,7 @@ import type { AttemptId, CanonicalRunRelativePath, RecordId, RunId, Sha256Digest
2
2
  export declare const SEAL_MANIFEST_FORMAT: "niceeval.seal-manifest";
3
3
  export declare const PUBLISH_RECOVERY_FORMAT: "niceeval.publish-recovery";
4
4
  /** Compatibility alias derived from the official branded definition catalog. */
5
- export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
5
+ export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.attempt-note", "niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
6
6
  export type FixedRecordFamily = (typeof FIXED_RECORD_FAMILIES)[number];
7
7
  export interface RecordByteIdentity {
8
8
  readonly byteLength: number;
@@ -2,7 +2,7 @@ import type { AttemptId, CanonicalRunRelativePath, RecordId, RunId, Sha256Digest
2
2
  export declare const SEAL_MANIFEST_FORMAT: "niceeval.seal-manifest";
3
3
  export declare const PUBLISH_RECOVERY_FORMAT: "niceeval.publish-recovery";
4
4
  /** Compatibility alias derived from the official branded definition catalog. */
5
- export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
5
+ export declare const FIXED_RECORD_FAMILIES: readonly ["niceeval.attempt-note", "niceeval.adapter-usage", "niceeval.judge-usage", "niceeval.assertions", "niceeval.attempt-cost", "niceeval.agent-turns", "niceeval.turn-contexts", "niceeval.sandbox-commands", "niceeval.runner-activities", "niceeval.runner-diagnostics", "niceeval.file-changes", "niceeval.execution-traces", "niceeval.sources", "niceeval.artifacts"];
6
6
  export type FixedRecordFamily = (typeof FIXED_RECORD_FAMILIES)[number];
7
7
  export interface RecordByteIdentity {
8
8
  readonly byteLength: number;
@@ -4,9 +4,7 @@ exports.runCliCommand = exports.RUN_CLI_OPTIONS = void 0;
4
4
  const effect_1 = require("effect");
5
5
  const application_ts_1 = require("../../cli/application.cjs");
6
6
  const contribution_ts_1 = require("../../cli/contribution.cjs");
7
- const index_ts_1 = require("../../inspection/index.cjs");
8
- const model_ts_1 = require("../../show/model.cjs");
9
- const render_ts_1 = require("../../show/render.cjs");
7
+ const canonical_ts_1 = require("../../inspection/canonical.cjs");
10
8
  const runtime_ts_1 = require("../host/runtime.cjs");
11
9
  const protocol_ts_1 = require("../protocol.cjs");
12
10
  const help = (summary) => Object.freeze({ summary, visibility: "public" });
@@ -43,7 +41,7 @@ function invocationFacts() {
43
41
  return effect_1.Effect.flatMap(application_ts_1.CliInvocationFacts, ({ facts }) => facts).pipe(effect_1.Effect.mapError((cause) => failure("read invocation facts", cause)));
44
42
  }
45
43
  function writeJson(value) {
46
- const encoded = (0, index_ts_1.canonicalJsonValue)(value);
44
+ const encoded = (0, canonical_ts_1.canonicalJsonValue)(value);
47
45
  return effect_1.Result.isFailure(encoded)
48
46
  ? effect_1.Effect.fail(failure("encode JSON", encoded.failure))
49
47
  : write("stdout", encoded.success);
@@ -62,20 +60,21 @@ function runCommand(argv) {
62
60
  try: () => parser.parse(argv, exports.RUN_CLI_OPTIONS),
63
61
  catch: (cause) => failure("parse arguments", cause),
64
62
  });
63
+ if (parsed.positionals[0] === "show")
64
+ return yield* usage("run show is no longer supported. Use niceeval show --run <run-id>.");
65
65
  if (parsed.values.help === true) {
66
66
  yield* write("stdout", `niceeval run — inspect and manage Run lifecycle
67
67
 
68
68
  Usage:
69
69
  niceeval run list [--invocation <invocation-id>] [--json]
70
- niceeval run show <run-id> [--json]
71
70
  niceeval run delete <run-id> [--yes] [--json]
72
71
  niceeval run recover <run-id> [--yes] [--json]
73
72
  `);
74
73
  return 0;
75
74
  }
76
75
  const action = parsed.positionals[0];
77
- if (action === undefined || !["list", "show", "delete", "recover"].includes(action)) {
78
- return yield* usage(`niceeval run expects exactly one of list, show, delete, or recover.
76
+ if (action === undefined || !["list", "delete", "recover"].includes(action)) {
77
+ return yield* usage(`niceeval run expects exactly one of list, delete, or recover.
79
78
  `.trimEnd());
80
79
  }
81
80
  const facts = yield* invocationFacts();
@@ -116,31 +115,6 @@ Usage:
116
115
  return yield* usage(`niceeval run ${action} requires one exact Run ID.`);
117
116
  }
118
117
  const runId = parsed.positionals[1];
119
- if (action === "show") {
120
- const unsupported = unsupportedOption(parsed, ["json"]);
121
- if (unsupported !== undefined)
122
- return yield* usage(`--${unsupported} is not valid with niceeval run show.`);
123
- const decoded = (0, index_ts_1.decodeInspectionOperation)({ kind: "run.get", runId });
124
- if (effect_1.Result.isFailure(decoded))
125
- return yield* effect_1.Effect.fail(failure("show", decoded.failure));
126
- const operation = decoded.success;
127
- if (operation.kind !== "run.get")
128
- return yield* effect_1.Effect.fail(failure("show", new Error("Invalid Run operation.")));
129
- const shown = yield* effect_1.Effect.scoped(effect_1.Effect.gen(function* () {
130
- const source = yield* (0, index_ts_1.openInspectionSource)((0, index_ts_1.operationalInspectionSource)(facts.cwd));
131
- return yield* effect_1.Effect.try({
132
- try: () => (0, index_ts_1.selectInspectionOperation)(source, operation),
133
- catch: (cause) => cause,
134
- });
135
- })).pipe(effect_1.Effect.mapError((cause) => failure("show", cause)));
136
- if (json) {
137
- yield* writeJson(shown);
138
- }
139
- else {
140
- yield* write("stdout", (0, render_ts_1.renderRun)((0, model_ts_1.projectRun)(shown)));
141
- }
142
- return 0;
143
- }
144
118
  const unsupported = unsupportedOption(parsed, ["json", "yes"]);
145
119
  if (unsupported !== undefined)
146
120
  return yield* usage(`--${unsupported} is not valid with niceeval run ${action}.`);
@@ -1 +1 @@
1
- {"version":3,"file":"contribution.js","sourceRoot":"","sources":["contribution.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Result } from \"effect\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { CliArguments, CliInvocationFacts, CliOutput, type CliOptionDefinition, type CliParsedTokens, } from \"../../cli/application.ts\";\nimport { CliFeatureError, type CliCommandContribution, } from \"../../cli/contribution.ts\";\nimport { canonicalJsonValue, decodeInspectionOperation, openInspectionSource, operationalInspectionSource, selectInspectionOperation, } from \"../../inspection/index.ts\";\nimport { projectRun } from \"../../show/model.ts\";\nimport { renderRun } from \"../../show/render.ts\";\nimport { rawRunHost } from \"../host/runtime.ts\";\nimport { RUN_PROTOCOL, type RunListDocument, } from \"../protocol.ts\";\nimport type { RunDeleteError, RunReadError, RunRecoverError, } from \"../host/index.ts\";\nconst help = (summary: string) => Object.freeze({ summary, visibility: \"public\" as const });\nconst option = (value: CliOptionDefinition): CliOptionDefinition => Object.freeze(value);\nexport const RUN_CLI_OPTIONS = Object.freeze({\n invocation: option({\n type: \"string\",\n help: help(\"Filter Run discovery by one exact Invocation ID.\"),\n }),\n json: option({ type: \"boolean\", help: help(\"Print machine-readable JSON.\") }),\n yes: option({ type: \"boolean\", help: help(\"Confirm delete or recover.\") }),\n help: option({ type: \"boolean\", short: \"h\", help: help(\"Print Run help.\") }),\n} satisfies Readonly<Record<string, CliOptionDefinition>>);\ntype Requirements = CliArguments | CliInvocationFacts | CliOutput | ProjectStateDatabase;\ntype Error = CliFeatureError;\ntype HostFailure = RunReadError | RunDeleteError | RunRecoverError;\nfunction failure(operation: string, cause: unknown): Error {\n const hostFailure = isHostFailure(cause) ? cause : undefined;\n return new CliFeatureError({\n feature: \"run\",\n operation,\n cause,\n exitCode: 1,\n ...(hostFailure === undefined\n ? {}\n : { display: `${hostFailure.code}: ${hostFailure.message}\\n` }),\n });\n}\nfunction isHostFailure(value: unknown): value is HostFailure {\n return typeof value === \"object\" && value !== null &&\n [\"RunReadError\", \"RunDeleteError\", \"RunRecoverError\"].includes(String(Reflect.get(value, \"_tag\")));\n}\nfunction write(channel: \"stdout\" | \"stderr\", text: string) {\n return Effect.flatMap(CliOutput, (output) => channel === \"stdout\" ? output.writeStdout(text) : output.writeStderr(text)).pipe(Effect.mapError((cause) => failure(`write ${channel}`, cause)));\n}\nfunction invocationFacts() {\n return Effect.flatMap(CliInvocationFacts, ({ facts }) => facts).pipe(Effect.mapError((cause) => failure(\"read invocation facts\", cause)));\n}\nfunction writeJson(value: unknown) {\n const encoded = canonicalJsonValue(value);\n return Result.isFailure(encoded)\n ? Effect.fail(failure(\"encode JSON\", encoded.failure))\n : write(\"stdout\", encoded.success);\n}\nfunction usage(message: string) {\n return write(\"stderr\", `${message}\\n`).pipe(Effect.as(1));\n}\nfunction unsupportedOption(parsed: CliParsedTokens, allowed: readonly string[]): string | undefined {\n const permitted = new Set([...allowed, \"help\"]);\n return Object.entries(parsed.values).find(([name, value]) => value !== undefined && !permitted.has(name))?.[0];\n}\nfunction runCommand(argv: readonly string[]): Effect.Effect<number, Error, Requirements> {\n return Effect.gen(function* () {\n const parser = yield* CliArguments;\n const parsed = yield* Effect.try({\n try: () => parser.parse(argv, RUN_CLI_OPTIONS),\n catch: (cause) => failure(\"parse arguments\", cause),\n });\n if (parsed.values.help === true) {\n yield* write(\"stdout\", `niceeval run — inspect and manage Run lifecycle\n\nUsage:\n niceeval run list [--invocation <invocation-id>] [--json]\n niceeval run show <run-id> [--json]\n niceeval run delete <run-id> [--yes] [--json]\n niceeval run recover <run-id> [--yes] [--json]\n`);\n return 0;\n }\n const action = parsed.positionals[0];\n if (action === undefined || ![\"list\", \"show\", \"delete\", \"recover\"].includes(action)) {\n return yield* usage(`niceeval run expects exactly one of list, show, delete, or recover.\n`.trimEnd());\n }\n const facts = yield* invocationFacts();\n const json = parsed.values.json === true;\n if (action === \"list\") {\n if (parsed.positionals.length !== 1) {\n return yield* usage(\"niceeval run list does not accept positional selectors.\");\n }\n const unsupported = unsupportedOption(parsed, [\"invocation\", \"json\"]);\n if (unsupported !== undefined)\n return yield* usage(`--${unsupported} is not valid with niceeval run list.`);\n const listed = yield* rawRunHost.list({\n cwd: facts.cwd,\n ...(typeof parsed.values.invocation === \"string\"\n ? { invocationId: parsed.values.invocation }\n : {}),\n }).pipe(Effect.mapError((cause) => failure(\"list\", cause)));\n if (json) {\n yield* writeJson(Object.freeze({\n protocol: RUN_PROTOCOL,\n operation: \"run.list\",\n runs: listed.runs,\n ...(listed.continuation === undefined\n ? {}\n : { continuation: listed.continuation }),\n }) satisfies RunListDocument);\n return 0;\n }\n if (listed.runs.length === 0) {\n yield* write(\"stdout\", `No Runs found.\n`);\n return 0;\n }\n yield* write(\"stdout\", `${listed.runs.map((run) => `${run.runId} ${run.state} ${run.experimentId} ${run.coverage.published}/${run.coverage.expected} ${new Date(run.startedAt).toISOString()}`).join(\"\\n\")}\\n`);\n return 0;\n }\n if (parsed.positionals.length !== 2) {\n return yield* usage(`niceeval run ${action} requires one exact Run ID.`);\n }\n const runId = parsed.positionals[1]!;\n if (action === \"show\") {\n const unsupported = unsupportedOption(parsed, [\"json\"]);\n if (unsupported !== undefined)\n return yield* usage(`--${unsupported} is not valid with niceeval run show.`);\n const decoded = decodeInspectionOperation({ kind: \"run.get\", runId });\n if (Result.isFailure(decoded))\n return yield* Effect.fail(failure(\"show\", decoded.failure));\n const operation = decoded.success;\n if (operation.kind !== \"run.get\")\n return yield* Effect.fail(failure(\"show\", new Error(\"Invalid Run operation.\")));\n const shown = yield* Effect.scoped(Effect.gen(function* () {\n const source = yield* openInspectionSource(operationalInspectionSource(facts.cwd));\n return yield* Effect.try({\n try: () => selectInspectionOperation(source, operation),\n catch: (cause) => cause,\n });\n })).pipe(Effect.mapError((cause) => failure(\"show\", cause)));\n if (json) {\n yield* writeJson(shown);\n }\n else {\n yield* write(\"stdout\", renderRun(projectRun(shown)));\n }\n return 0;\n }\n const unsupported = unsupportedOption(parsed, [\"json\", \"yes\"]);\n if (unsupported !== undefined)\n return yield* usage(`--${unsupported} is not valid with niceeval run ${action}.`);\n if (parsed.values.yes !== true) {\n if (json) {\n yield* writeJson(Object.freeze({\n protocol: RUN_PROTOCOL,\n operation: `run.${action}`,\n outcome: \"confirmation-required\",\n runId,\n }));\n }\n else {\n yield* write(\"stderr\", `Run ${runId} is selected for ${action}. Review it, then rerun with --yes.\n`);\n }\n return 1;\n }\n if (action === \"delete\") {\n const receipt = yield* rawRunHost.delete({ cwd: facts.cwd, runId }).pipe(Effect.mapError((cause) => failure(\"delete\", cause)));\n if (json)\n yield* writeJson(Object.freeze({ protocol: RUN_PROTOCOL, operation: \"run.delete\", ...receipt }));\n else\n yield* write(\"stdout\", `Deleted Run ${receipt.runId}.\n`);\n return 0;\n }\n const receipt = yield* rawRunHost.recover({ cwd: facts.cwd, runId }).pipe(Effect.mapError((cause) => failure(\"recover\", cause)));\n if (json)\n yield* writeJson(Object.freeze({ protocol: RUN_PROTOCOL, operation: \"run.recover\", ...receipt }));\n else\n yield* write(\"stdout\", `Recovered Run ${receipt.runId} as interrupted.\n`);\n return 0;\n });\n}\nexport const runCliCommand: CliCommandContribution<Requirements, Error> = Object.freeze({\n name: \"run\",\n summary: \"inspect and manage Run lifecycle\",\n options: RUN_CLI_OPTIONS,\n run: runCommand,\n});\n"]}
1
+ {"version":3,"file":"contribution.js","sourceRoot":"","sources":["contribution.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect, Result } from \"effect\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { CliArguments, CliInvocationFacts, CliOutput, type CliOptionDefinition, type CliParsedTokens, } from \"../../cli/application.ts\";\nimport { CliFeatureError, type CliCommandContribution, } from \"../../cli/contribution.ts\";\nimport { decodeInspectionOperation, openInspectionSource, operationalInspectionSource, selectInspectionOperation, } from \"../../inspection/index.ts\";\nimport { canonicalJsonValue } from \"../../inspection/canonical.ts\";\nimport { projectRun } from \"../../show/model.ts\";\nimport { renderRun } from \"../../show/render.ts\";\nimport { rawRunHost } from \"../host/runtime.ts\";\nimport { RUN_PROTOCOL, type RunListDocument, } from \"../protocol.ts\";\nimport type { RunDeleteError, RunReadError, RunRecoverError, } from \"../host/index.ts\";\nconst help = (summary: string) => Object.freeze({ summary, visibility: \"public\" as const });\nconst option = (value: CliOptionDefinition): CliOptionDefinition => Object.freeze(value);\nexport const RUN_CLI_OPTIONS = Object.freeze({\n invocation: option({\n type: \"string\",\n help: help(\"Filter Run discovery by one exact Invocation ID.\"),\n }),\n json: option({ type: \"boolean\", help: help(\"Print machine-readable JSON.\") }),\n yes: option({ type: \"boolean\", help: help(\"Confirm delete or recover.\") }),\n help: option({ type: \"boolean\", short: \"h\", help: help(\"Print Run help.\") }),\n} satisfies Readonly<Record<string, CliOptionDefinition>>);\ntype Requirements = CliArguments | CliInvocationFacts | CliOutput | ProjectStateDatabase;\ntype Error = CliFeatureError;\ntype HostFailure = RunReadError | RunDeleteError | RunRecoverError;\nfunction failure(operation: string, cause: unknown): Error {\n const hostFailure = isHostFailure(cause) ? cause : undefined;\n return new CliFeatureError({\n feature: \"run\",\n operation,\n cause,\n exitCode: 1,\n ...(hostFailure === undefined\n ? {}\n : { display: `${hostFailure.code}: ${hostFailure.message}\\n` }),\n });\n}\nfunction isHostFailure(value: unknown): value is HostFailure {\n return typeof value === \"object\" && value !== null &&\n [\"RunReadError\", \"RunDeleteError\", \"RunRecoverError\"].includes(String(Reflect.get(value, \"_tag\")));\n}\nfunction write(channel: \"stdout\" | \"stderr\", text: string) {\n return Effect.flatMap(CliOutput, (output) => channel === \"stdout\" ? output.writeStdout(text) : output.writeStderr(text)).pipe(Effect.mapError((cause) => failure(`write ${channel}`, cause)));\n}\nfunction invocationFacts() {\n return Effect.flatMap(CliInvocationFacts, ({ facts }) => facts).pipe(Effect.mapError((cause) => failure(\"read invocation facts\", cause)));\n}\nfunction writeJson(value: unknown) {\n const encoded = canonicalJsonValue(value);\n return Result.isFailure(encoded)\n ? Effect.fail(failure(\"encode JSON\", encoded.failure))\n : write(\"stdout\", encoded.success);\n}\nfunction usage(message: string) {\n return write(\"stderr\", `${message}\\n`).pipe(Effect.as(1));\n}\nfunction unsupportedOption(parsed: CliParsedTokens, allowed: readonly string[]): string | undefined {\n const permitted = new Set([...allowed, \"help\"]);\n return Object.entries(parsed.values).find(([name, value]) => value !== undefined && !permitted.has(name))?.[0];\n}\nfunction runCommand(argv: readonly string[]): Effect.Effect<number, Error, Requirements> {\n return Effect.gen(function* () {\n const parser = yield* CliArguments;\n const parsed = yield* Effect.try({\n try: () => parser.parse(argv, RUN_CLI_OPTIONS),\n catch: (cause) => failure(\"parse arguments\", cause),\n });\n if (parsed.positionals[0] === \"show\")\n return yield* usage(\"run show is no longer supported. Use niceeval show --run <run-id>.\");\n if (parsed.values.help === true) {\n yield* write(\"stdout\", `niceeval run — inspect and manage Run lifecycle\n\nUsage:\n niceeval run list [--invocation <invocation-id>] [--json]\n niceeval run delete <run-id> [--yes] [--json]\n niceeval run recover <run-id> [--yes] [--json]\n`);\n return 0;\n }\n const action = parsed.positionals[0];\n if (action === undefined || ![\"list\", \"delete\", \"recover\"].includes(action)) {\n return yield* usage(`niceeval run expects exactly one of list, delete, or recover.\n`.trimEnd());\n }\n const facts = yield* invocationFacts();\n const json = parsed.values.json === true;\n if (action === \"list\") {\n if (parsed.positionals.length !== 1) {\n return yield* usage(\"niceeval run list does not accept positional selectors.\");\n }\n const unsupported = unsupportedOption(parsed, [\"invocation\", \"json\"]);\n if (unsupported !== undefined)\n return yield* usage(`--${unsupported} is not valid with niceeval run list.`);\n const listed = yield* rawRunHost.list({\n cwd: facts.cwd,\n ...(typeof parsed.values.invocation === \"string\"\n ? { invocationId: parsed.values.invocation }\n : {}),\n }).pipe(Effect.mapError((cause) => failure(\"list\", cause)));\n if (json) {\n yield* writeJson(Object.freeze({\n protocol: RUN_PROTOCOL,\n operation: \"run.list\",\n runs: listed.runs,\n ...(listed.continuation === undefined\n ? {}\n : { continuation: listed.continuation }),\n }) satisfies RunListDocument);\n return 0;\n }\n if (listed.runs.length === 0) {\n yield* write(\"stdout\", `No Runs found.\n`);\n return 0;\n }\n yield* write(\"stdout\", `${listed.runs.map((run) => `${run.runId} ${run.state} ${run.experimentId} ${run.coverage.published}/${run.coverage.expected} ${new Date(run.startedAt).toISOString()}`).join(\"\\n\")}\\n`);\n return 0;\n }\n if (parsed.positionals.length !== 2) {\n return yield* usage(`niceeval run ${action} requires one exact Run ID.`);\n }\n const runId = parsed.positionals[1]!;\n const unsupported = unsupportedOption(parsed, [\"json\", \"yes\"]);\n if (unsupported !== undefined)\n return yield* usage(`--${unsupported} is not valid with niceeval run ${action}.`);\n if (parsed.values.yes !== true) {\n if (json) {\n yield* writeJson(Object.freeze({\n protocol: RUN_PROTOCOL,\n operation: `run.${action}`,\n outcome: \"confirmation-required\",\n runId,\n }));\n }\n else {\n yield* write(\"stderr\", `Run ${runId} is selected for ${action}. Review it, then rerun with --yes.\n`);\n }\n return 1;\n }\n if (action === \"delete\") {\n const receipt = yield* rawRunHost.delete({ cwd: facts.cwd, runId }).pipe(Effect.mapError((cause) => failure(\"delete\", cause)));\n if (json)\n yield* writeJson(Object.freeze({ protocol: RUN_PROTOCOL, operation: \"run.delete\", ...receipt }));\n else\n yield* write(\"stdout\", `Deleted Run ${receipt.runId}.\n`);\n return 0;\n }\n const receipt = yield* rawRunHost.recover({ cwd: facts.cwd, runId }).pipe(Effect.mapError((cause) => failure(\"recover\", cause)));\n if (json)\n yield* writeJson(Object.freeze({ protocol: RUN_PROTOCOL, operation: \"run.recover\", ...receipt }));\n else\n yield* write(\"stdout\", `Recovered Run ${receipt.runId} as interrupted.\n`);\n return 0;\n });\n}\nexport const runCliCommand: CliCommandContribution<Requirements, Error> = Object.freeze({\n name: \"run\",\n summary: \"inspect and manage Run lifecycle\",\n options: RUN_CLI_OPTIONS,\n run: runCommand,\n});\n"]}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.rawRunHost = void 0;
4
- // @concord-file ne-run-host-runtime
4
+ // @concord-file
5
5
  // @concord-implements docs/feature/run/library.md
6
6
  // @concord-implements docs/feature/run/cli.md
7
7
  // @concord-implements docs/feature/inspection/architecture.md
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-run-host-runtime\n// @concord-implements docs/feature/run/library.md\n// @concord-implements docs/feature/run/cli.md\n// @concord-implements docs/feature/inspection/architecture.md\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { RunIdSchema } from \"../../record/codec/identifiers.ts\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acquireProjectRecordReadSession } from \"../../record/sqlite/index.ts\";\nimport { EMPTY_PUBLICATION_CUTOFF_IDENTITY } from \"../protocol.ts\";\nimport { publicationCutoffIdentity, type PublicationCutoff, type ReadableRunResource, } from \"../storage/index.ts\";\nimport { sqliteRunLifecycleAdapter, type RunLifecycleAdapter, } from \"./lifecycle-adapter.ts\";\nimport { RunDeleteError, RunReadError, RunRecoverError, type RunDeleteReceipt, type RunDetail, type RunDeleteRequest, type RunGetRequest, type RunListRequest, type RunListResult, type RunRecoverReceipt, type RunRecoverRequest, type RunResult, type RunSummary, } from \"./types.ts\";\nconst CONTINUATION_PROTOCOL = \"niceeval.run-continuation/v1\";\nconst EMPTY_CUTOFF = Object.freeze({\n identity: EMPTY_PUBLICATION_CUTOFF_IDENTITY,\n revision: 0,\n});\nfunction readFailure(operation: \"list\" | \"get\", cause: unknown): RunReadError {\n const message = cause instanceof Error\n ? cause.message\n : `Run ${operation} failed.`;\n return new RunReadError({\n operation,\n code: \"run-read-failed\",\n message,\n cause,\n });\n}\nfunction recordStorageRoot(cwd: string): string {\n return resolve(cwd, \".niceeval\");\n}\nfunction recordDatabaseExists(cwd: string): boolean {\n return existsSync(resolve(recordStorageRoot(cwd), \"record.sqlite\"));\n}\ninterface RawRunHost {\n readonly list: (request: RunListRequest) => Effect.Effect<RunListResult, RunReadError, ProjectStateDatabase>;\n readonly get: (request: RunGetRequest) => Effect.Effect<RunResult, RunReadError, ProjectStateDatabase>;\n readonly delete: (request: RunDeleteRequest) => Effect.Effect<RunDeleteReceipt, RunDeleteError, ProjectStateDatabase>;\n readonly recover: (request: RunRecoverRequest) => Effect.Effect<RunRecoverReceipt, RunRecoverError, ProjectStateDatabase>;\n}\nfunction publicCutoff(cutoff: PublicationCutoff) {\n return Object.freeze({\n identity: publicationCutoffIdentity(cutoff),\n revision: cutoff.revision,\n });\n}\nfunction projectSummary(run: ReadableRunResource): RunSummary {\n return Object.freeze({\n runId: run.runId,\n invocationId: run.invocationId,\n experimentId: run.experimentId,\n state: run.state,\n startedAt: run.startedAt,\n ...(run.completedAt === undefined ? {} : { completedAt: run.completedAt }),\n coverage: Object.freeze({\n published: run.published,\n expected: run.expected,\n missing: run.missing,\n }),\n });\n}\nfunction projectDetail(run: ReadableRunResource): RunDetail {\n return Object.freeze({\n ...projectSummary(run),\n slots: Object.freeze(run.slots.map((slot) => Object.freeze({\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: slot.executionIdentityDigest,\n publication: slot.publication.state === \"published\"\n ? Object.freeze({\n state: \"published\" as const,\n action: slot.publication.action,\n attemptId: slot.publication.attemptId,\n attemptLocator: slot.publication.attemptLocator,\n originRunId: slot.publication.originRunId,\n originSlotId: slot.publication.originSlotId,\n })\n : slot.publication.state === \"absent\"\n ? Object.freeze({ state: \"absent\" as const, reason: slot.publication.reason })\n : Object.freeze({ state: \"pending\" as const }),\n }))),\n });\n}\nfunction encodeContinuation(cutoff: PublicationCutoff, afterRunId: string, invocationId: string | undefined): string {\n return Buffer.from(JSON.stringify([\n CONTINUATION_PROTOCOL,\n cutoff.storeGeneration,\n cutoff.revision,\n afterRunId,\n invocationId ?? null,\n ]), \"utf8\").toString(\"base64url\");\n}\nfunction decodeContinuation(token: string, invocationId: string | undefined): Effect.Effect<{\n readonly cutoff: PublicationCutoff;\n readonly afterRunId: string;\n}, RunReadError> {\n return Effect.try({\n try: () => {\n const value = JSON.parse(Buffer.from(token, \"base64url\").toString(\"utf8\")) as unknown;\n if (!Array.isArray(value) || value.length !== 5 || value[0] !== CONTINUATION_PROTOCOL ||\n typeof value[1] !== \"string\" || !Number.isSafeInteger(value[2]) || Number(value[2]) < 0 ||\n typeof value[3] !== \"string\" || (value[4] !== null && typeof value[4] !== \"string\") ||\n value[4] !== (invocationId ?? null)) {\n throw new Error(\"Run continuation binding is invalid.\");\n }\n return Object.freeze({\n cutoff: Object.freeze({ storeGeneration: value[1], revision: Number(value[2]) }),\n afterRunId: value[3],\n });\n },\n catch: (cause) => new RunReadError({\n operation: \"list\",\n code: \"run-continuation-invalid\",\n message: \"Run continuation is invalid or belongs to a different filter.\",\n cause,\n }),\n });\n}\nfunction decodeRunId(value: string): Result.Result<Schema.Schema.Type<typeof RunIdSchema>, string> {\n const decoded = Schema.decodeUnknownResult(RunIdSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(`Invalid exact Run ID ${JSON.stringify(value)}.`)\n : Result.succeed(decoded.success);\n}\nfunction makeRunHost(lifecycle: RunLifecycleAdapter): RawRunHost {\n const list: RawRunHost[\"list\"] = (request) => {\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.succeed(Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: EMPTY_CUTOFF,\n runs: Object.freeze([]),\n }));\n }\n return Effect.gen(function* () {\n const continuation = request.continuation === undefined\n ? undefined\n : yield* decodeContinuation(request.continuation, request.invocationId);\n const session = yield* acquireProjectRecordReadSession(recordStorageRoot(request.cwd));\n const page = yield* Effect.try({ try: () => session.listRunResources({\n ...(continuation === undefined ? {} : {\n cutoff: continuation.cutoff,\n afterRunId: continuation.afterRunId,\n }),\n ...(request.invocationId === undefined ? {} : { invocationId: request.invocationId }),\n }), catch: (cause) => cause });\n return Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: publicCutoff(page.cutoff),\n runs: Object.freeze(page.runs.map(projectSummary)),\n ...(page.nextAfterRunId === null ? {} : {\n continuation: encodeContinuation(page.cutoff, page.nextAfterRunId, request.invocationId),\n }),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"list\", cause)));\n };\n const get: RawRunHost[\"get\"] = (request) => {\n const runId = decodeRunId(request.runId);\n if (Result.isFailure(runId)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }));\n }\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Effect.gen(function* () {\n const root = recordStorageRoot(request.cwd);\n const session = yield* acquireProjectRecordReadSession(root);\n const cutoff = yield* Effect.try({ try: () => session.publicationCutoff(), catch: (cause) => cause });\n const run = yield* Effect.try({ try: () => session.readRunResource(runId.success), catch: (cause) => cause });\n if (run === undefined) {\n return yield* Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Object.freeze({\n operation: \"run.get\" as const,\n publicationCutoff: publicCutoff(cutoff),\n run: projectDetail(run),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"get\", cause)));\n };\n const deleteRun: RawRunHost[\"delete\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunDeleteError({\n operation: \"delete\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.delete({ cwd: request.cwd, runId: runId.success });\n };\n const recover: RawRunHost[\"recover\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunRecoverError({\n operation: \"recover\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.recover({ cwd: request.cwd, runId: runId.success });\n };\n return Object.freeze({ list, get, delete: deleteRun, recover });\n}\nexport const rawRunHost: RawRunHost = makeRunHost(sqliteRunLifecycleAdapter);\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["runtime.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/run/library.md\n// @concord-implements docs/feature/run/cli.md\n// @concord-implements docs/feature/inspection/architecture.md\nimport { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { Effect, Result, Schema } from \"effect\";\nimport { RunIdSchema } from \"../../record/codec/identifiers.ts\";\nimport type { ProjectStateDatabase } from \"../../record/sqlite/project-state-database.ts\";\nimport { acquireProjectRecordReadSession } from \"../../record/sqlite/index.ts\";\nimport { EMPTY_PUBLICATION_CUTOFF_IDENTITY } from \"../protocol.ts\";\nimport { publicationCutoffIdentity, type PublicationCutoff, type ReadableRunResource, } from \"../storage/index.ts\";\nimport { sqliteRunLifecycleAdapter, type RunLifecycleAdapter, } from \"./lifecycle-adapter.ts\";\nimport { RunDeleteError, RunReadError, RunRecoverError, type RunDeleteReceipt, type RunDetail, type RunDeleteRequest, type RunGetRequest, type RunListRequest, type RunListResult, type RunRecoverReceipt, type RunRecoverRequest, type RunResult, type RunSummary, } from \"./types.ts\";\nconst CONTINUATION_PROTOCOL = \"niceeval.run-continuation/v1\";\nconst EMPTY_CUTOFF = Object.freeze({\n identity: EMPTY_PUBLICATION_CUTOFF_IDENTITY,\n revision: 0,\n});\nfunction readFailure(operation: \"list\" | \"get\", cause: unknown): RunReadError {\n const message = cause instanceof Error\n ? cause.message\n : `Run ${operation} failed.`;\n return new RunReadError({\n operation,\n code: \"run-read-failed\",\n message,\n cause,\n });\n}\nfunction recordStorageRoot(cwd: string): string {\n return resolve(cwd, \".niceeval\");\n}\nfunction recordDatabaseExists(cwd: string): boolean {\n return existsSync(resolve(recordStorageRoot(cwd), \"record.sqlite\"));\n}\ninterface RawRunHost {\n readonly list: (request: RunListRequest) => Effect.Effect<RunListResult, RunReadError, ProjectStateDatabase>;\n readonly get: (request: RunGetRequest) => Effect.Effect<RunResult, RunReadError, ProjectStateDatabase>;\n readonly delete: (request: RunDeleteRequest) => Effect.Effect<RunDeleteReceipt, RunDeleteError, ProjectStateDatabase>;\n readonly recover: (request: RunRecoverRequest) => Effect.Effect<RunRecoverReceipt, RunRecoverError, ProjectStateDatabase>;\n}\nfunction publicCutoff(cutoff: PublicationCutoff) {\n return Object.freeze({\n identity: publicationCutoffIdentity(cutoff),\n revision: cutoff.revision,\n });\n}\nfunction projectSummary(run: ReadableRunResource): RunSummary {\n return Object.freeze({\n runId: run.runId,\n invocationId: run.invocationId,\n experimentId: run.experimentId,\n state: run.state,\n startedAt: run.startedAt,\n ...(run.completedAt === undefined ? {} : { completedAt: run.completedAt }),\n coverage: Object.freeze({\n published: run.published,\n expected: run.expected,\n missing: run.missing,\n }),\n });\n}\nfunction projectDetail(run: ReadableRunResource): RunDetail {\n return Object.freeze({\n ...projectSummary(run),\n slots: Object.freeze(run.slots.map((slot) => Object.freeze({\n slotId: slot.slotId,\n evalId: slot.evalId,\n attemptOrdinal: slot.attemptOrdinal,\n executionIdentityDigest: slot.executionIdentityDigest,\n publication: slot.publication.state === \"published\"\n ? Object.freeze({\n state: \"published\" as const,\n action: slot.publication.action,\n attemptId: slot.publication.attemptId,\n attemptLocator: slot.publication.attemptLocator,\n originRunId: slot.publication.originRunId,\n originSlotId: slot.publication.originSlotId,\n })\n : slot.publication.state === \"absent\"\n ? Object.freeze({ state: \"absent\" as const, reason: slot.publication.reason })\n : Object.freeze({ state: \"pending\" as const }),\n }))),\n });\n}\nfunction encodeContinuation(cutoff: PublicationCutoff, afterRunId: string, invocationId: string | undefined): string {\n return Buffer.from(JSON.stringify([\n CONTINUATION_PROTOCOL,\n cutoff.storeGeneration,\n cutoff.revision,\n afterRunId,\n invocationId ?? null,\n ]), \"utf8\").toString(\"base64url\");\n}\nfunction decodeContinuation(token: string, invocationId: string | undefined): Effect.Effect<{\n readonly cutoff: PublicationCutoff;\n readonly afterRunId: string;\n}, RunReadError> {\n return Effect.try({\n try: () => {\n const value = JSON.parse(Buffer.from(token, \"base64url\").toString(\"utf8\")) as unknown;\n if (!Array.isArray(value) || value.length !== 5 || value[0] !== CONTINUATION_PROTOCOL ||\n typeof value[1] !== \"string\" || !Number.isSafeInteger(value[2]) || Number(value[2]) < 0 ||\n typeof value[3] !== \"string\" || (value[4] !== null && typeof value[4] !== \"string\") ||\n value[4] !== (invocationId ?? null)) {\n throw new Error(\"Run continuation binding is invalid.\");\n }\n return Object.freeze({\n cutoff: Object.freeze({ storeGeneration: value[1], revision: Number(value[2]) }),\n afterRunId: value[3],\n });\n },\n catch: (cause) => new RunReadError({\n operation: \"list\",\n code: \"run-continuation-invalid\",\n message: \"Run continuation is invalid or belongs to a different filter.\",\n cause,\n }),\n });\n}\nfunction decodeRunId(value: string): Result.Result<Schema.Schema.Type<typeof RunIdSchema>, string> {\n const decoded = Schema.decodeUnknownResult(RunIdSchema)(value);\n return Result.isFailure(decoded)\n ? Result.fail(`Invalid exact Run ID ${JSON.stringify(value)}.`)\n : Result.succeed(decoded.success);\n}\nfunction makeRunHost(lifecycle: RunLifecycleAdapter): RawRunHost {\n const list: RawRunHost[\"list\"] = (request) => {\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.succeed(Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: EMPTY_CUTOFF,\n runs: Object.freeze([]),\n }));\n }\n return Effect.gen(function* () {\n const continuation = request.continuation === undefined\n ? undefined\n : yield* decodeContinuation(request.continuation, request.invocationId);\n const session = yield* acquireProjectRecordReadSession(recordStorageRoot(request.cwd));\n const page = yield* Effect.try({ try: () => session.listRunResources({\n ...(continuation === undefined ? {} : {\n cutoff: continuation.cutoff,\n afterRunId: continuation.afterRunId,\n }),\n ...(request.invocationId === undefined ? {} : { invocationId: request.invocationId }),\n }), catch: (cause) => cause });\n return Object.freeze({\n operation: \"run.list\" as const,\n publicationCutoff: publicCutoff(page.cutoff),\n runs: Object.freeze(page.runs.map(projectSummary)),\n ...(page.nextAfterRunId === null ? {} : {\n continuation: encodeContinuation(page.cutoff, page.nextAfterRunId, request.invocationId),\n }),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"list\", cause)));\n };\n const get: RawRunHost[\"get\"] = (request) => {\n const runId = decodeRunId(request.runId);\n if (Result.isFailure(runId)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }));\n }\n if (!recordDatabaseExists(request.cwd)) {\n return Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Effect.gen(function* () {\n const root = recordStorageRoot(request.cwd);\n const session = yield* acquireProjectRecordReadSession(root);\n const cutoff = yield* Effect.try({ try: () => session.publicationCutoff(), catch: (cause) => cause });\n const run = yield* Effect.try({ try: () => session.readRunResource(runId.success), catch: (cause) => cause });\n if (run === undefined) {\n return yield* Effect.fail(new RunReadError({\n operation: \"get\",\n code: \"run-not-found\",\n message: `Run ${runId.success} was not found.`,\n }));\n }\n return Object.freeze({\n operation: \"run.get\" as const,\n publicationCutoff: publicCutoff(cutoff),\n run: projectDetail(run),\n });\n }).pipe(Effect.scoped, Effect.mapError((cause) => cause instanceof RunReadError ? cause : readFailure(\"get\", cause)));\n };\n const deleteRun: RawRunHost[\"delete\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunDeleteError({\n operation: \"delete\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.delete({ cwd: request.cwd, runId: runId.success });\n };\n const recover: RawRunHost[\"recover\"] = (request) => {\n const runId = decodeRunId(request.runId);\n return Result.isFailure(runId)\n ? Effect.fail(new RunRecoverError({\n operation: \"recover\",\n code: \"run-id-invalid\",\n message: runId.failure,\n }))\n : lifecycle.recover({ cwd: request.cwd, runId: runId.success });\n };\n return Object.freeze({ list, get, delete: deleteRun, recover });\n}\nexport const rawRunHost: RawRunHost = makeRunHost(sqliteRunLifecycleAdapter);\n"]}
@@ -21,7 +21,7 @@ exports.readRunResource = readRunResource;
21
21
  exports.listRunResources = listRunResources;
22
22
  exports.readPublishedAttempt = readPublishedAttempt;
23
23
  exports.asRunStorageError = asRunStorageError;
24
- // @concord-file ne-run-storage-sqlite
24
+ // @concord-file
25
25
  // @concord-implements docs/feature/run/architecture.md
26
26
  // @concord-implements docs/feature/run/lifecycle.md
27
27
  // @concord-implements docs/feature/run-inspection/README.md
@@ -190,7 +190,7 @@ function validateExpectedSlots(slots) {
190
190
  function currentPublicationCutoffOnConnection(connection) {
191
191
  return requireCutoff(connection);
192
192
  }
193
- // @concord-code ne-run-create-resource
193
+ // @concord-code
194
194
  // @concord-implements docs/feature/run/architecture.md
195
195
  // @concord-implements docs/feature/run/lifecycle.md
196
196
  function createRunResourceOnConnection(connection, input) {
@@ -218,7 +218,7 @@ function createRunResourceOnConnection(connection, input) {
218
218
  return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });
219
219
  });
220
220
  }
221
- // @concord-code ne-run-publish-origin-attempt
221
+ // @concord-code
222
222
  // @concord-implements docs/feature/run/architecture.md
223
223
  // @concord-implements docs/feature/run/lifecycle.md
224
224
  function publishOriginAttemptOnConnection(connection, input) {
@@ -285,7 +285,7 @@ function publishOriginAttemptOnConnection(connection, input) {
285
285
  });
286
286
  });
287
287
  }
288
- // @concord-code ne-run-bind-attempt-reference
288
+ // @concord-code
289
289
  // @concord-implements docs/feature/run/architecture.md
290
290
  function bindAttemptReferenceOnConnection(connection, input) {
291
291
  requireIdentity(input.runId, "runId");
@@ -351,7 +351,7 @@ function insertAbsences(connection, runId, revision, absences) {
351
351
  for (const absence of absences)
352
352
  insert.run(runId, absence.slotId, absence.reason, revision);
353
353
  }
354
- // @concord-code ne-run-close-resource
354
+ // @concord-code
355
355
  // @concord-implements docs/feature/run/architecture.md
356
356
  // @concord-implements docs/feature/run/lifecycle.md
357
357
  function closeRunResourceOnConnection(connection, input) {
@@ -379,7 +379,7 @@ function closeRunResourceOnConnection(connection, input) {
379
379
  return Object.freeze({ runId: input.runId, cutoff: cutoffAt(connection, revision) });
380
380
  });
381
381
  }
382
- // @concord-code ne-run-recover-resource
382
+ // @concord-code
383
383
  // @concord-implements docs/feature/run/lifecycle.md
384
384
  function recoverRunResourceOnConnection(connection, input) {
385
385
  requireIdentity(input.runId, "runId");
@@ -440,7 +440,7 @@ function incomingReferences(connection, originRunId) {
440
440
  attemptLocator: text(row, "attempt_locator"),
441
441
  })));
442
442
  }
443
- // @concord-code ne-run-delete-resource
443
+ // @concord-code
444
444
  // @concord-implements docs/feature/run/architecture.md
445
445
  // @concord-implements docs/feature/run/lifecycle.md
446
446
  function deleteRunResourceOnConnection(connection, input) {