niceeval 0.17.1 → 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 (692) hide show
  1. package/INDEX.md +5 -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 -3
  7. package/dist/adapter.cjs.map +1 -1
  8. package/dist/adapter.d.cts +26 -15
  9. package/dist/adapter.d.mts +26 -15
  10. package/dist/adapter.d.ts +26 -15
  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 +61 -0
  121. package/dist/assertions/measurements.cjs.map +1 -0
  122. package/dist/assertions/measurements.d.cts +24 -0
  123. package/dist/assertions/measurements.d.mts +24 -0
  124. package/dist/assertions/measurements.d.ts +24 -0
  125. package/dist/assertions/measurements.js +8 -0
  126. package/dist/assertions/measurements.js.map +1 -0
  127. package/dist/assertions/numeric.cjs +2 -0
  128. package/dist/assertions/numeric.cjs.map +1 -1
  129. package/dist/assertions/numeric.d.cts +1 -1
  130. package/dist/assertions/numeric.d.mts +1 -1
  131. package/dist/assertions/numeric.d.ts +1 -1
  132. package/dist/assertions/quantity.cjs +42 -0
  133. package/dist/assertions/quantity.cjs.map +1 -0
  134. package/dist/assertions/quantity.d.cts +18 -0
  135. package/dist/assertions/quantity.d.mts +18 -0
  136. package/dist/assertions/quantity.d.ts +18 -0
  137. package/dist/assertions/quantity.js +22 -0
  138. package/dist/assertions/quantity.js.map +1 -0
  139. package/dist/assertions/record/attachment.cjs +2 -0
  140. package/dist/assertions/record/attachment.cjs.map +1 -1
  141. package/dist/assertions/record/codec.cjs +5 -1
  142. package/dist/assertions/record/codec.cjs.map +1 -1
  143. package/dist/assertions/record/model.cjs.map +1 -1
  144. package/dist/assertions/record/model.d.cts +3 -1
  145. package/dist/assertions/record/model.d.mts +3 -1
  146. package/dist/assertions/record/model.d.ts +3 -1
  147. package/dist/assertions/runtime.cjs +11 -6
  148. package/dist/assertions/runtime.cjs.map +1 -1
  149. package/dist/cli/program.cjs +3 -0
  150. package/dist/cli/program.cjs.map +1 -1
  151. package/dist/context/assert-first.cjs +6 -4
  152. package/dist/context/assert-first.cjs.map +1 -1
  153. package/dist/context/assert-first.d.cts +9 -3
  154. package/dist/context/assert-first.d.mts +9 -3
  155. package/dist/context/assert-first.d.ts +9 -3
  156. package/dist/context/notes.cjs +47 -0
  157. package/dist/context/notes.cjs.map +1 -0
  158. package/dist/context/notes.d.cts +10 -0
  159. package/dist/context/notes.d.mts +10 -0
  160. package/dist/context/notes.d.ts +10 -0
  161. package/dist/context/notes.js +6 -0
  162. package/dist/context/notes.js.map +1 -0
  163. package/dist/context/send-failures.cjs +1 -7
  164. package/dist/context/send-failures.cjs.map +1 -1
  165. package/dist/context/send-failures.d.cts +2 -3
  166. package/dist/context/send-failures.d.mts +2 -3
  167. package/dist/context/send-failures.d.ts +2 -3
  168. package/dist/context/send-retry.cjs +0 -1
  169. package/dist/context/send-retry.cjs.map +1 -1
  170. package/dist/context/send-retry.d.cts +1 -2
  171. package/dist/context/send-retry.d.mts +1 -2
  172. package/dist/context/send-retry.d.ts +1 -2
  173. package/dist/context/session.cjs +10 -17
  174. package/dist/context/session.cjs.map +1 -1
  175. package/dist/context/session.d.cts +4 -10
  176. package/dist/context/session.d.mts +4 -10
  177. package/dist/context/session.d.ts +4 -10
  178. package/dist/define.cjs +89 -64
  179. package/dist/define.cjs.map +1 -1
  180. package/dist/define.d.cts +3 -3
  181. package/dist/define.d.mts +3 -3
  182. package/dist/define.d.ts +3 -3
  183. package/dist/eval/cli/contribution.cjs +1 -1
  184. package/dist/eval/cli/contribution.cjs.map +1 -1
  185. package/dist/eval/host/index.cjs +1 -1
  186. package/dist/eval/host/index.cjs.map +1 -1
  187. package/dist/eval/record/evaluation.cjs +1 -1
  188. package/dist/eval/record/evaluation.cjs.map +1 -1
  189. package/dist/eval/record/membership-provenance.d.cts +3 -3
  190. package/dist/eval/record/membership-provenance.d.mts +3 -3
  191. package/dist/eval/record/membership-provenance.d.ts +3 -3
  192. package/dist/eval/record/score.cjs +2 -2
  193. package/dist/eval/record/score.cjs.map +1 -1
  194. package/dist/eval/record/sealed-assertion.cjs +1 -1
  195. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  196. package/dist/eval/record/verdict.cjs +2 -2
  197. package/dist/eval/record/verdict.cjs.map +1 -1
  198. package/dist/expect/index.cjs +13 -1
  199. package/dist/expect/index.cjs.map +1 -1
  200. package/dist/expect/index.d.cts +5 -1
  201. package/dist/expect/index.d.mts +5 -1
  202. package/dist/expect/index.d.ts +5 -1
  203. package/dist/expect/index.js +92 -72
  204. package/dist/expect/index.mjs +92 -72
  205. package/dist/experiment/host/cli/contribution.cjs +52 -39
  206. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  207. package/dist/experiment/host/cli/contribution.d.cts +18 -4
  208. package/dist/experiment/host/cli/contribution.d.mts +18 -4
  209. package/dist/experiment/host/cli/contribution.d.ts +18 -4
  210. package/dist/experiment/host/cli/contribution.js +2 -2
  211. package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
  212. package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
  213. package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
  214. package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
  215. package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
  216. package/dist/experiment/host/cli/output-protocol.cjs +1 -1
  217. package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
  218. package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
  219. package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
  220. package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
  221. package/dist/experiment/host/current.cjs +2 -2
  222. package/dist/experiment/host/current.cjs.map +1 -1
  223. package/dist/experiment/host/index.cjs +1 -1
  224. package/dist/experiment/host/index.cjs.map +1 -1
  225. package/dist/experiment/host/operations.cjs +24 -23
  226. package/dist/experiment/host/operations.cjs.map +1 -1
  227. package/dist/experiment/host/runtime.cjs +11 -10
  228. package/dist/experiment/host/runtime.cjs.map +1 -1
  229. package/dist/experiment/host/runtime.d.cts +3 -3
  230. package/dist/experiment/host/runtime.d.mts +3 -3
  231. package/dist/experiment/host/runtime.d.ts +3 -3
  232. package/dist/experiment/host/teardown.cjs +4 -3
  233. package/dist/experiment/host/teardown.cjs.map +1 -1
  234. package/dist/experiment/host/teardown.d.cts +3 -3
  235. package/dist/experiment/host/teardown.d.mts +3 -3
  236. package/dist/experiment/host/teardown.d.ts +3 -3
  237. package/dist/experiment/host/types.cjs.map +1 -1
  238. package/dist/experiment/host/types.d.cts +19 -19
  239. package/dist/experiment/host/types.d.mts +19 -19
  240. package/dist/experiment/host/types.d.ts +19 -19
  241. package/dist/index.cjs +3 -19
  242. package/dist/index.cjs.map +1 -1
  243. package/dist/index.d.cts +4 -8
  244. package/dist/index.d.mts +4 -8
  245. package/dist/index.d.ts +4 -8
  246. package/dist/index.js +12 -34
  247. package/dist/index.mjs +12 -34
  248. package/dist/inspection/assertions.cjs +1 -1
  249. package/dist/inspection/assertions.cjs.map +1 -1
  250. package/dist/inspection/cli/contribution.cjs +8 -7
  251. package/dist/inspection/cli/contribution.cjs.map +1 -1
  252. package/dist/inspection/facts.cjs +4 -4
  253. package/dist/inspection/facts.cjs.map +1 -1
  254. package/dist/inspection/index.cjs +1 -5
  255. package/dist/inspection/index.cjs.map +1 -1
  256. package/dist/inspection/index.d.cts +1 -2
  257. package/dist/inspection/index.d.mts +1 -2
  258. package/dist/inspection/index.d.ts +1 -2
  259. package/dist/inspection/index.js +20 -26
  260. package/dist/inspection/lifecycle.cjs +7 -0
  261. package/dist/inspection/lifecycle.cjs.map +1 -0
  262. package/dist/inspection/lifecycle.d.cts +4 -0
  263. package/dist/inspection/lifecycle.d.mts +4 -0
  264. package/dist/inspection/lifecycle.d.ts +4 -0
  265. package/dist/inspection/lifecycle.js +6 -0
  266. package/dist/inspection/lifecycle.js.map +1 -0
  267. package/dist/inspection/notes.cjs +40 -0
  268. package/dist/inspection/notes.cjs.map +1 -0
  269. package/dist/inspection/notes.d.cts +12 -0
  270. package/dist/inspection/notes.d.mts +12 -0
  271. package/dist/inspection/notes.d.ts +12 -0
  272. package/dist/inspection/notes.js +8 -0
  273. package/dist/inspection/notes.js.map +1 -0
  274. package/dist/inspection/overview.cjs +12 -15
  275. package/dist/inspection/overview.cjs.map +1 -1
  276. package/dist/inspection/overview.d.cts +8 -6
  277. package/dist/inspection/overview.d.mts +8 -6
  278. package/dist/inspection/overview.d.ts +8 -6
  279. package/dist/inspection/planned-attempt.cjs +45 -0
  280. package/dist/inspection/planned-attempt.cjs.map +1 -0
  281. package/dist/inspection/planned-attempt.d.cts +109 -0
  282. package/dist/inspection/planned-attempt.d.mts +109 -0
  283. package/dist/inspection/planned-attempt.d.ts +109 -0
  284. package/dist/inspection/planned-attempt.js +24 -0
  285. package/dist/inspection/planned-attempt.js.map +1 -0
  286. package/dist/inspection/project-result.cjs +5 -5
  287. package/dist/inspection/project-result.cjs.map +1 -1
  288. package/dist/inspection/project-result.d.cts +58 -57
  289. package/dist/inspection/project-result.d.mts +58 -57
  290. package/dist/inspection/project-result.d.ts +58 -57
  291. package/dist/inspection/project-result.js +4 -4
  292. package/dist/inspection/project.cjs +3 -3
  293. package/dist/inspection/project.cjs.map +1 -1
  294. package/dist/inspection/protocol-values.cjs +1 -1
  295. package/dist/inspection/protocol-values.cjs.map +1 -1
  296. package/dist/inspection/protocol-values.d.cts +1 -1
  297. package/dist/inspection/protocol-values.d.mts +1 -1
  298. package/dist/inspection/protocol-values.d.ts +1 -1
  299. package/dist/inspection/protocol.cjs +8 -8
  300. package/dist/inspection/protocol.cjs.map +1 -1
  301. package/dist/inspection/protocol.d.cts +237 -219
  302. package/dist/inspection/protocol.d.mts +237 -219
  303. package/dist/inspection/protocol.d.ts +237 -219
  304. package/dist/inspection/public.cjs +1 -5
  305. package/dist/inspection/public.cjs.map +1 -1
  306. package/dist/inspection/public.d.cts +1 -2
  307. package/dist/inspection/public.d.mts +1 -2
  308. package/dist/inspection/public.d.ts +1 -2
  309. package/dist/inspection/public.js +14 -20
  310. package/dist/inspection/public.mjs +166 -129
  311. package/dist/inspection/query.cjs +1 -1
  312. package/dist/inspection/query.cjs.map +1 -1
  313. package/dist/inspection/results.cjs +61 -52
  314. package/dist/inspection/results.cjs.map +1 -1
  315. package/dist/inspection/results.d.cts +157 -140
  316. package/dist/inspection/results.d.mts +157 -140
  317. package/dist/inspection/results.d.ts +157 -140
  318. package/dist/inspection/select.cjs +33 -28
  319. package/dist/inspection/select.cjs.map +1 -1
  320. package/dist/inspection/source.cjs +1 -1
  321. package/dist/inspection/source.cjs.map +1 -1
  322. package/dist/inspection/sources.cjs +2 -2
  323. package/dist/inspection/sources.cjs.map +1 -1
  324. package/dist/inspection/trace.cjs +9 -8
  325. package/dist/inspection/trace.cjs.map +1 -1
  326. package/dist/inspection/trace.d.cts +4 -4
  327. package/dist/inspection/trace.d.mts +4 -4
  328. package/dist/inspection/trace.d.ts +4 -4
  329. package/dist/loaders/index.cjs +7 -279
  330. package/dist/loaders/index.cjs.map +1 -1
  331. package/dist/loaders/index.d.cts +2 -95
  332. package/dist/loaders/index.d.mts +2 -95
  333. package/dist/loaders/index.d.ts +2 -95
  334. package/dist/loaders/index.js +10 -12
  335. package/dist/loaders/index.mjs +10 -12
  336. package/dist/loaders/runtime.cjs +283 -0
  337. package/dist/loaders/runtime.cjs.map +1 -0
  338. package/dist/loaders/runtime.d.cts +95 -0
  339. package/dist/loaders/runtime.d.mts +95 -0
  340. package/dist/loaders/runtime.d.ts +95 -0
  341. package/dist/loaders/runtime.js +16 -0
  342. package/dist/loaders/runtime.js.map +1 -0
  343. package/dist/migrations/judge-provider.md +6 -6
  344. package/dist/{model-slots.cjs → model-roles.cjs} +26 -7
  345. package/dist/model-roles.cjs.map +1 -0
  346. package/dist/model-roles.d.cts +26 -0
  347. package/dist/model-roles.d.mts +26 -0
  348. package/dist/model-roles.d.ts +26 -0
  349. package/dist/model-roles.js +14 -0
  350. package/dist/model-roles.js.map +1 -0
  351. package/dist/o11y/adapter-usage-projection.cjs +9 -8
  352. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  353. package/dist/o11y/adapter-usage-projection.d.cts +23 -15
  354. package/dist/o11y/adapter-usage-projection.d.mts +23 -15
  355. package/dist/o11y/adapter-usage-projection.d.ts +23 -15
  356. package/dist/o11y/cache-read.cjs +14 -14
  357. package/dist/o11y/cache-read.cjs.map +1 -1
  358. package/dist/o11y/cache-read.d.cts +5 -5
  359. package/dist/o11y/cache-read.d.mts +5 -5
  360. package/dist/o11y/cache-read.d.ts +5 -5
  361. package/dist/o11y/derive.cjs.map +1 -1
  362. package/dist/o11y/derive.d.cts +2 -2
  363. package/dist/o11y/derive.d.mts +2 -2
  364. package/dist/o11y/derive.d.ts +2 -2
  365. package/dist/o11y/eval-usage.cjs +9 -9
  366. package/dist/o11y/eval-usage.cjs.map +1 -1
  367. package/dist/o11y/eval-usage.d.cts +7 -7
  368. package/dist/o11y/eval-usage.d.mts +7 -7
  369. package/dist/o11y/eval-usage.d.ts +7 -7
  370. package/dist/o11y/parsers/bub.cjs +57 -81
  371. package/dist/o11y/parsers/bub.cjs.map +1 -1
  372. package/dist/o11y/parsers/index.cjs.map +1 -1
  373. package/dist/o11y/parsers/index.d.cts +2 -0
  374. package/dist/o11y/parsers/index.d.mts +2 -0
  375. package/dist/o11y/parsers/index.d.ts +2 -0
  376. package/dist/o11y/parsers/opencode.cjs +129 -217
  377. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  378. package/dist/o11y/parsers/opencode.d.cts +2 -5
  379. package/dist/o11y/parsers/opencode.d.mts +2 -5
  380. package/dist/o11y/parsers/opencode.d.ts +2 -5
  381. package/dist/o11y/types.cjs.map +1 -1
  382. package/dist/o11y/types.d.cts +1 -1
  383. package/dist/o11y/types.d.mts +1 -1
  384. package/dist/o11y/types.d.ts +1 -1
  385. package/dist/plugin/contracts.cjs +170 -120
  386. package/dist/plugin/contracts.cjs.map +1 -1
  387. package/dist/plugin/contracts.d.cts +102 -90
  388. package/dist/plugin/contracts.d.mts +102 -90
  389. package/dist/plugin/contracts.d.ts +102 -90
  390. package/dist/plugin/contracts.js +16 -12
  391. package/dist/plugin/index.cjs.map +1 -1
  392. package/dist/plugin/index.d.cts +1 -1
  393. package/dist/plugin/index.d.mts +1 -1
  394. package/dist/plugin/index.d.ts +1 -1
  395. package/dist/plugin/link.cjs +69 -64
  396. package/dist/plugin/link.cjs.map +1 -1
  397. package/dist/plugin/link.d.cts +5 -3
  398. package/dist/plugin/link.d.mts +5 -3
  399. package/dist/plugin/link.d.ts +5 -3
  400. package/dist/plugin/link.js +12 -8
  401. package/dist/record/codec/seal-manifest.d.cts +3 -3
  402. package/dist/record/codec/seal-manifest.d.mts +3 -3
  403. package/dist/record/codec/seal-manifest.d.ts +3 -3
  404. package/dist/record/family/attempt-note/definition.cjs +12 -0
  405. package/dist/record/family/attempt-note/definition.cjs.map +1 -0
  406. package/dist/record/family/attempt-note/definition.d.cts +6 -0
  407. package/dist/record/family/attempt-note/definition.d.mts +6 -0
  408. package/dist/record/family/attempt-note/definition.d.ts +6 -0
  409. package/dist/record/family/attempt-note/definition.js +6 -0
  410. package/dist/record/family/attempt-note/definition.js.map +1 -0
  411. package/dist/record/family/attempt-note/persistence.cjs +10 -0
  412. package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
  413. package/dist/record/family/attempt-note/persistence.d.cts +6 -0
  414. package/dist/record/family/attempt-note/persistence.d.mts +6 -0
  415. package/dist/record/family/attempt-note/persistence.d.ts +6 -0
  416. package/dist/record/family/attempt-note/persistence.js +6 -0
  417. package/dist/record/family/attempt-note/persistence.js.map +1 -0
  418. package/dist/record/family/attempt-note/schema.cjs +20 -0
  419. package/dist/record/family/attempt-note/schema.cjs.map +1 -0
  420. package/dist/record/family/attempt-note/schema.d.cts +21 -0
  421. package/dist/record/family/attempt-note/schema.d.mts +21 -0
  422. package/dist/record/family/attempt-note/schema.d.ts +21 -0
  423. package/dist/record/family/attempt-note/schema.js +10 -0
  424. package/dist/record/family/attempt-note/schema.js.map +1 -0
  425. package/dist/record/family/catalog.cjs +32 -29
  426. package/dist/record/family/catalog.cjs.map +1 -1
  427. package/dist/record/family/catalog.d.cts +7 -2
  428. package/dist/record/family/catalog.d.mts +7 -2
  429. package/dist/record/family/catalog.d.ts +7 -2
  430. package/dist/record/family/current.cjs +48 -45
  431. package/dist/record/family/current.cjs.map +1 -1
  432. package/dist/record/family/current.d.cts +15 -0
  433. package/dist/record/family/current.d.mts +15 -0
  434. package/dist/record/family/current.d.ts +15 -0
  435. package/dist/record/model/index.js +66 -64
  436. package/dist/record/model/run-context.cjs +9 -3
  437. package/dist/record/model/run-context.cjs.map +1 -1
  438. package/dist/record/model/run-context.d.cts +9 -2
  439. package/dist/record/model/run-context.d.mts +9 -2
  440. package/dist/record/model/run-context.d.ts +9 -2
  441. package/dist/record/model/run-context.js +8 -6
  442. package/dist/record/model/seal-manifest.d.cts +1 -1
  443. package/dist/record/model/seal-manifest.d.mts +1 -1
  444. package/dist/record/model/seal-manifest.d.ts +1 -1
  445. package/dist/run/cli/contribution.cjs +6 -32
  446. package/dist/run/cli/contribution.cjs.map +1 -1
  447. package/dist/run/host/runtime.cjs +1 -1
  448. package/dist/run/host/runtime.cjs.map +1 -1
  449. package/dist/run/storage/sqlite.cjs +7 -7
  450. package/dist/run/storage/sqlite.cjs.map +1 -1
  451. package/dist/runner/adapter-usage.cjs +5 -3
  452. package/dist/runner/adapter-usage.cjs.map +1 -1
  453. package/dist/runner/adapter-usage.d.cts +2 -2
  454. package/dist/runner/adapter-usage.d.mts +2 -2
  455. package/dist/runner/adapter-usage.d.ts +2 -2
  456. package/dist/runner/adoption.cjs +10 -12
  457. package/dist/runner/adoption.cjs.map +1 -1
  458. package/dist/runner/attempt-notes.cjs +8 -0
  459. package/dist/runner/attempt-notes.cjs.map +1 -0
  460. package/dist/runner/attempt-notes.d.cts +4 -0
  461. package/dist/runner/attempt-notes.d.mts +4 -0
  462. package/dist/runner/attempt-notes.d.ts +4 -0
  463. package/dist/runner/attempt-notes.js +8 -0
  464. package/dist/runner/attempt-notes.js.map +1 -0
  465. package/dist/runner/attempt.cjs +61 -73
  466. package/dist/runner/attempt.cjs.map +1 -1
  467. package/dist/runner/attempt.d.cts +3 -3
  468. package/dist/runner/attempt.d.mts +3 -3
  469. package/dist/runner/attempt.d.ts +3 -3
  470. package/dist/runner/command-plan.cjs +21 -26
  471. package/dist/runner/command-plan.cjs.map +1 -1
  472. package/dist/runner/command-plan.d.cts +4 -4
  473. package/dist/runner/command-plan.d.mts +4 -4
  474. package/dist/runner/command-plan.d.ts +4 -4
  475. package/dist/runner/command-plan.js +4 -4
  476. package/dist/runner/config-identity.cjs.map +1 -1
  477. package/dist/runner/config-identity.d.cts +2 -2
  478. package/dist/runner/config-identity.d.mts +2 -2
  479. package/dist/runner/config-identity.d.ts +2 -2
  480. package/dist/runner/discover.cjs +6 -6
  481. package/dist/runner/discover.cjs.map +1 -1
  482. package/dist/runner/eval-selection.cjs +15 -1
  483. package/dist/runner/eval-selection.cjs.map +1 -1
  484. package/dist/runner/eval-selection.d.cts +4 -0
  485. package/dist/runner/eval-selection.d.mts +4 -0
  486. package/dist/runner/eval-selection.d.ts +4 -0
  487. package/dist/runner/feedback/human.cjs +1 -1
  488. package/dist/runner/feedback/human.cjs.map +1 -1
  489. package/dist/runner/feedback/json.cjs +4 -2
  490. package/dist/runner/feedback/json.cjs.map +1 -1
  491. package/dist/runner/feedback/json.d.cts +1 -1
  492. package/dist/runner/feedback/json.d.mts +1 -1
  493. package/dist/runner/feedback/json.d.ts +1 -1
  494. package/dist/runner/feedback/sink.cjs +1 -1
  495. package/dist/runner/feedback/sink.cjs.map +1 -1
  496. package/dist/runner/feedback/sink.d.cts +1 -1
  497. package/dist/runner/feedback/sink.d.mts +1 -1
  498. package/dist/runner/feedback/sink.d.ts +1 -1
  499. package/dist/runner/fingerprint.cjs +1 -1
  500. package/dist/runner/fingerprint.cjs.map +1 -1
  501. package/dist/runner/lock.cjs +1 -3
  502. package/dist/runner/lock.cjs.map +1 -1
  503. package/dist/runner/lock.d.cts +0 -2
  504. package/dist/runner/lock.d.mts +0 -2
  505. package/dist/runner/lock.d.ts +0 -2
  506. package/dist/runner/lock.js +14 -16
  507. package/dist/runner/project-target.cjs.map +1 -1
  508. package/dist/runner/project-target.d.cts +2 -2
  509. package/dist/runner/project-target.d.mts +2 -2
  510. package/dist/runner/project-target.d.ts +2 -2
  511. package/dist/runner/record/attachments.cjs +2 -2
  512. package/dist/runner/record/attachments.cjs.map +1 -1
  513. package/dist/runner/record/planning.cjs +8 -2
  514. package/dist/runner/record/planning.cjs.map +1 -1
  515. package/dist/runner/record.cjs +2 -0
  516. package/dist/runner/record.cjs.map +1 -1
  517. package/dist/runner/report.cjs +3 -3
  518. package/dist/runner/report.cjs.map +1 -1
  519. package/dist/runner/report.d.cts +1 -1
  520. package/dist/runner/report.d.mts +1 -1
  521. package/dist/runner/report.d.ts +1 -1
  522. package/dist/runner/reuse-plan.cjs +2 -2
  523. package/dist/runner/reuse-plan.cjs.map +1 -1
  524. package/dist/runner/run.cjs +10 -45
  525. package/dist/runner/run.cjs.map +1 -1
  526. package/dist/runner/sandbox-pool.cjs +1 -2
  527. package/dist/runner/sandbox-pool.cjs.map +1 -1
  528. package/dist/runner/setup-prefix-preparation.cjs +1 -1
  529. package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
  530. package/dist/runner/teardown-registry.cjs +2 -2
  531. package/dist/runner/teardown-registry.cjs.map +1 -1
  532. package/dist/runner/teardown-registry.d.cts +1 -1
  533. package/dist/runner/teardown-registry.d.mts +1 -1
  534. package/dist/runner/teardown-registry.d.ts +1 -1
  535. package/dist/runner/types.cjs +4 -4
  536. package/dist/runner/types.cjs.map +1 -1
  537. package/dist/runner/types.d.cts +64 -92
  538. package/dist/runner/types.d.mts +64 -92
  539. package/dist/runner/types.d.ts +64 -92
  540. package/dist/runner/types.js +2 -2
  541. package/dist/sandbox/action.cjs +1 -1
  542. package/dist/sandbox/action.cjs.map +1 -1
  543. package/dist/sandbox/cli/contribution.cjs +17 -14
  544. package/dist/sandbox/cli/contribution.cjs.map +1 -1
  545. package/dist/sandbox/cli/contribution.d.cts +1 -1
  546. package/dist/sandbox/cli/contribution.d.mts +1 -1
  547. package/dist/sandbox/cli/contribution.d.ts +1 -1
  548. package/dist/sandbox/commands.cjs +1 -1
  549. package/dist/sandbox/commands.cjs.map +1 -1
  550. package/dist/sandbox/commands.d.cts +1 -1
  551. package/dist/sandbox/commands.d.mts +1 -1
  552. package/dist/sandbox/commands.d.ts +1 -1
  553. package/dist/sandbox/compose.cjs +2 -2
  554. package/dist/sandbox/compose.cjs.map +1 -1
  555. package/dist/sandbox/docker-profile/registry.cjs +5 -10
  556. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  557. package/dist/sandbox/docker-profile/registry.d.cts +0 -4
  558. package/dist/sandbox/docker-profile/registry.d.mts +0 -4
  559. package/dist/sandbox/docker-profile/registry.d.ts +0 -4
  560. package/dist/sandbox/docker-profile/registry.js +6 -14
  561. package/dist/sandbox/docker-profile/runtime.cjs +1 -1
  562. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  563. package/dist/sandbox/docker-profile/schema.cjs +12 -16
  564. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  565. package/dist/sandbox/docker-profile/schema.d.cts +2 -6
  566. package/dist/sandbox/docker-profile/schema.d.mts +2 -6
  567. package/dist/sandbox/docker-profile/schema.d.ts +2 -6
  568. package/dist/sandbox/docker-profile/schema.js +24 -32
  569. package/dist/sandbox/incus.cjs +2 -2
  570. package/dist/sandbox/incus.cjs.map +1 -1
  571. package/dist/sandbox/index.cjs +4 -36
  572. package/dist/sandbox/index.cjs.map +1 -1
  573. package/dist/sandbox/index.d.cts +4 -8
  574. package/dist/sandbox/index.d.mts +4 -8
  575. package/dist/sandbox/index.d.ts +4 -8
  576. package/dist/sandbox/index.js +116 -174
  577. package/dist/sandbox/index.mjs +116 -174
  578. package/dist/sandbox/layer.cjs +3 -3
  579. package/dist/sandbox/layer.cjs.map +1 -1
  580. package/dist/sandbox/link.cjs +5 -0
  581. package/dist/sandbox/link.cjs.map +1 -1
  582. package/dist/sandbox/link.d.cts +3 -0
  583. package/dist/sandbox/link.d.mts +3 -0
  584. package/dist/sandbox/link.d.ts +3 -0
  585. package/dist/sandbox/runtime.cjs +9 -4
  586. package/dist/sandbox/runtime.cjs.map +1 -1
  587. package/dist/shared/failure-class.cjs +5 -5
  588. package/dist/shared/failure-class.cjs.map +1 -1
  589. package/dist/shared/failure-class.d.cts +4 -10
  590. package/dist/shared/failure-class.d.mts +4 -10
  591. package/dist/shared/failure-class.d.ts +4 -10
  592. package/dist/shared/types.cjs.map +1 -1
  593. package/dist/shared/types.d.cts +1 -1
  594. package/dist/shared/types.d.mts +1 -1
  595. package/dist/shared/types.d.ts +1 -1
  596. package/dist/show/contribution.cjs +17 -2
  597. package/dist/show/contribution.cjs.map +1 -1
  598. package/dist/show/contribution.d.cts +14 -0
  599. package/dist/show/contribution.d.mts +14 -0
  600. package/dist/show/contribution.d.ts +14 -0
  601. package/dist/show/model.cjs +8 -5
  602. package/dist/show/model.cjs.map +1 -1
  603. package/dist/show/model.d.cts +11 -8
  604. package/dist/show/model.d.mts +11 -8
  605. package/dist/show/model.d.ts +11 -8
  606. package/dist/show/render.cjs +34 -22
  607. package/dist/show/render.cjs.map +1 -1
  608. package/dist/sources/projector.cjs +1 -1
  609. package/dist/sources/projector.cjs.map +1 -1
  610. package/dist/types.cjs +1 -1
  611. package/dist/types.cjs.map +1 -1
  612. package/dist/types.d.cts +1 -1
  613. package/dist/types.d.mts +1 -1
  614. package/dist/types.d.ts +1 -1
  615. package/dist/types.js +2 -2
  616. package/dist/view/app-dist/.vite/manifest.json +2 -2
  617. package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
  618. package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
  619. package/dist/view/app-dist/index.html +1 -1
  620. package/dist/view/cli/contribution.cjs +1 -1
  621. package/dist/view/cli/contribution.cjs.map +1 -1
  622. package/dist/view/function-runtime.mjs +318 -121
  623. package/dist/view/http-protocol.d.cts +1 -1
  624. package/dist/view/http-protocol.d.mts +1 -1
  625. package/dist/view/http-protocol.d.ts +1 -1
  626. package/dist/view/inspection-host.cjs +2 -2
  627. package/dist/view/inspection-host.cjs.map +1 -1
  628. package/dist/view/inspection-host.d.cts +349 -331
  629. package/dist/view/inspection-host.d.mts +349 -331
  630. package/dist/view/inspection-host.d.ts +349 -331
  631. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +9 -9
  632. package/docs-site/zh/examples/integrations/claude-sdk.mdx +8 -8
  633. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  634. package/docs-site/zh/examples/integrations/langgraph.mdx +6 -6
  635. package/docs-site/zh/examples/integrations/pi-sdk.mdx +8 -8
  636. package/docs-site/zh/explanation/adapter.mdx +6 -6
  637. package/docs-site/zh/explanation/assert.mdx +7 -7
  638. package/docs-site/zh/explanation/drive.mdx +4 -4
  639. package/docs-site/zh/explanation/hitl.mdx +2 -2
  640. package/docs-site/zh/explanation/judge.mdx +3 -3
  641. package/docs-site/zh/index.mdx +18 -0
  642. package/docs-site/zh/introduction.mdx +4 -3
  643. package/docs-site/zh/reference/builtin-agents.mdx +46 -49
  644. package/docs-site/zh/reference/cli.mdx +16 -14
  645. package/docs-site/zh/reference/define-agent.mdx +19 -19
  646. package/docs-site/zh/reference/define-config.mdx +7 -15
  647. package/docs-site/zh/reference/define-eval.mdx +20 -14
  648. package/docs-site/zh/reference/define-experiment.mdx +18 -39
  649. package/docs-site/zh/reference/events.mdx +1 -1
  650. package/docs-site/zh/reference/expect.mdx +21 -0
  651. package/docs-site/zh/reference/official-adapters.mdx +12 -5
  652. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  653. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
  654. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  655. package/docs-site/zh/tutorials/authoring.mdx +4 -3
  656. package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
  657. package/docs-site/zh/tutorials/concurrency.mdx +8 -8
  658. package/docs-site/zh/tutorials/configuration.mdx +5 -5
  659. package/docs-site/zh/tutorials/control-run-cost.mdx +49 -9
  660. package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
  661. package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
  662. package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
  663. package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
  664. package/docs-site/zh/tutorials/plugins.mdx +49 -143
  665. package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
  666. package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
  667. package/docs-site/zh/tutorials/upgrade-0-18.mdx +64 -0
  668. package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
  669. package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
  670. package/docs-site/zh/tutorials/verify-judge.mdx +4 -3
  671. package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
  672. package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
  673. package/docs-site/zh/tutorials/write-send.mdx +13 -13
  674. package/package.json +1 -1
  675. package/dist/agents/effect-runtime.cjs.map +0 -1
  676. package/dist/agents/effect-runtime.d.cts +0 -29
  677. package/dist/agents/effect-runtime.d.mts +0 -29
  678. package/dist/agents/effect-runtime.d.ts +0 -29
  679. package/dist/agents/effect-runtime.js +0 -16
  680. package/dist/agents/effect-runtime.js.map +0 -1
  681. package/dist/agents/session-slot.cjs.map +0 -1
  682. package/dist/agents/session-slot.d.cts +0 -12
  683. package/dist/agents/session-slot.d.mts +0 -12
  684. package/dist/agents/session-slot.d.ts +0 -12
  685. package/dist/agents/session-slot.js +0 -6
  686. package/dist/agents/session-slot.js.map +0 -1
  687. package/dist/model-slots.cjs.map +0 -1
  688. package/dist/model-slots.d.cts +0 -19
  689. package/dist/model-slots.d.mts +0 -19
  690. package/dist/model-slots.d.ts +0 -19
  691. package/dist/model-slots.js +0 -8
  692. package/dist/model-slots.js.map +0 -1
@@ -6,6 +6,7 @@ exports.scoreFactOutcomeForAttemptError = scoreFactOutcomeForAttemptError;
6
6
  exports.errorFromThrown = errorFromThrown;
7
7
  exports.executeSandboxAction = executeSandboxAction;
8
8
  exports.experimentRunInfo = experimentRunInfo;
9
+ const attempt_notes_ts_1 = require("./attempt-notes.cjs");
9
10
  const attempt_cancellation_ts_1 = require("./attempt-cancellation.cjs");
10
11
  // 单个 attempt 的完整生命周期:资源(沙箱 / OTLP 接收器)经 Effect.Sample 的
11
12
  // acquireRelease 接管,无论 body 成功 / 抛错 / 被中断,stop() / close() 都保证执行。
@@ -36,7 +37,7 @@ const keep_registry_ts_1 = require("../sandbox/keep-registry.cjs");
36
37
  const project_state_database_ts_1 = require("../record/sqlite/project-state-database.cjs");
37
38
  const provisioner_ts_1 = require("../agents/provisioner.cjs");
38
39
  const callback_context_ts_1 = require("../agents/callback-context.cjs");
39
- const effect_runtime_ts_1 = require("../agents/effect-runtime.cjs");
40
+ const agent_effects_ts_1 = require("../agents/agent-effects.cjs");
40
41
  const receiver_ts_1 = require("../o11y/otlp/receiver.cjs");
41
42
  const sandbox_receiver_ts_1 = require("../o11y/otlp/sandbox-receiver.cjs");
42
43
  const turn_otel_ts_1 = require("../o11y/otlp/turn-otel.cjs");
@@ -68,7 +69,7 @@ const redaction_ts_1 = require("../sandbox/redaction.cjs");
68
69
  const link_ts_1 = require("../sandbox/link.cjs");
69
70
  const config_identity_ts_1 = require("./config-identity.cjs");
70
71
  const setup_prefix_plan_ts_1 = require("./setup-prefix-plan.cjs");
71
- const contracts_ts_1 = require("../plugin/contracts.cjs");
72
+ const link_ts_2 = require("../plugin/link.cjs");
72
73
  const source_loc_ts_1 = require("../source-loc.cjs");
73
74
  const source_producer_ts_1 = require("./source-producer.cjs");
74
75
  const sandbox_record_producer_ts_1 = require("./sandbox-record-producer.cjs");
@@ -126,7 +127,7 @@ function reportJudgeErrorAssistance(a, sealed) {
126
127
  }), identity: { experimentId: a.run.experimentId, evalId: a.evalDef.id, attempt: a.attempt } });
127
128
  }
128
129
  /**
129
- * 一次终局失败的空间轴决议:走三道链(抛出点声明 → 实验分类器 → 缺省不可重试,见
130
+ * 一次终局失败的空间轴决议:读取抛出点声明,否则缺省不可重试(见
130
131
  * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`),缺省档(`scope` 省略或
131
132
  * `"attempt"`)返回 undefined —— 死因只属于本次执行,没有闸可落。
132
133
  *
@@ -135,9 +136,9 @@ function reportJudgeErrorAssistance(a, sealed) {
135
136
  * attempt 内的失败(本文件的 `declareFailure`)与 attempt 开跑前的资源获取失败
136
137
  * (run.ts 的复用池租借)共用这一份决议,两处不各写一遍链。
137
138
  */
138
- function attemptFailureDeclaration(classify, phase, e) {
139
+ function attemptFailureDeclaration(phase, e) {
139
140
  const info = (0, failure_class_ts_2.attemptFailureInfo)(phase, e);
140
- const cls = (0, failure_class_ts_2.resolveAttemptFailureClass)(info, classify);
141
+ const cls = (0, failure_class_ts_2.resolveAttemptFailureClass)(info);
141
142
  if (cls.scope !== "eval" && cls.scope !== "experiment")
142
143
  return undefined;
143
144
  return { class: cls, phase, text: info.text };
@@ -253,6 +254,7 @@ function runAttemptEffect(a, opts, sandboxSem, { attachmentScope, buildLocators,
253
254
  // Assert-first state becomes visible only after the real TestContext has
254
255
  // been constructed. Scope finalization owns the interruption seal so an
255
256
  // aborted Attempt cannot leave declared entries unsealed.
257
+ let liveNotes;
256
258
  let liveAssertions;
257
259
  let liveAssertionState;
258
260
  let adapterResources;
@@ -306,7 +308,7 @@ function runAttemptEffect(a, opts, sandboxSem, { attachmentScope, buildLocators,
306
308
  /**
307
309
  * 终局失败的分类与回执 —— **必须在把错误折成纯数据 `AttemptError` 之前调**:折完之后原错误
308
310
  * 对象(连同它携带的 `_tag`/`class` 与 cause 链)就不再是任何人的引用,空间轴声明再也读不出来。
309
- * 走生命周期链的三道决议(抛出点声明 → 实验分类器 → 缺省不可重试,见
311
+ * 读取抛出点声明,否则缺省不可重试(见
310
312
  * src/shared/failure-class.ts 的 `resolveAttemptFailureClass`);send 失败的时间轴已由 send 重试
311
313
  * 执行体在 context 层消费完,浮出到这里的一定是终局失败,这里只读空间轴。
312
314
  * 缺省档(`scope` 省略或 `"attempt"`)不回执:那是「死因只属于本次执行」,没有闸可落。
@@ -314,7 +316,7 @@ function runAttemptEffect(a, opts, sandboxSem, { attachmentScope, buildLocators,
314
316
  const declareFailure = (phase, e) => {
315
317
  if (!onFailureClass)
316
318
  return;
317
- const declaration = attemptFailureDeclaration(run.classifyFailure, phase, e);
319
+ const declaration = attemptFailureDeclaration(phase, e);
318
320
  if (declaration) {
319
321
  // 空间轴回执会先于 Attempt 结果封口进入 run.ts,并立即生成运行期反馈与 run.json 的
320
322
  // dispatch-halted 诊断。它不能依赖下面的 EvalResult 最终扫描补救,否则同一条错误在
@@ -570,6 +572,21 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
570
572
  yield* effect_1.Effect.addFinalizer(() => effect_1.Effect.promise(() => judgeUsage.closeAndDrain()));
571
573
  const assertFirst = yield* (0, assert_first_bridge_ts_1.makeAssertFirstAttemptBridge)();
572
574
  if (adapter.kind === "custom") {
575
+ const pluginHooks = (0, link_ts_2.attemptPluginLifecycles)(evalDef, run);
576
+ let activated = 0;
577
+ const pluginContext = {
578
+ experimentId: run.experimentId, evalId: evalDef.id, attempt: a.attempt,
579
+ ...(evalDef.evalGroup === undefined ? {} : { evalGroup: { id: evalDef.evalGroup.id, definitionHash: evalDef.evalGroup.definitionHash } }),
580
+ signal, progress: scopedFeedback.progress, diagnostic: scopedFeedback.diagnostic,
581
+ };
582
+ yield* effect_1.Effect.addFinalizer(() => effect_1.Effect.forEach(pluginHooks.slice(0, activated).reverse(), (entry) => entry.teardown === undefined ? effect_1.Effect.void : (0, cleanup_timeout_ts_1.cleanupCallback)((cleanupSignal) => entry.teardown({ ...pluginContext, signal: cleanupSignal })).pipe(effect_1.Effect.catchCause((cause) => effect_1.Effect.sync(() => scopedFeedback.diagnostic({
583
+ code: "plugin-after-failed", level: "warning", message: String(effect_1.Cause.squash(cause)),
584
+ })))), { concurrency: 1, discard: true }));
585
+ for (const entry of pluginHooks) {
586
+ activated += 1;
587
+ if (entry.setup !== undefined)
588
+ yield* effect_1.Effect.tryPromise({ try: () => Promise.resolve(entry.setup(pluginContext)), catch: (cause) => cause });
589
+ }
573
590
  const resources = new attempt_resources_ts_1.AdapterAttemptResources(() => {
574
591
  adapterUsageSnapshot = adapterUsage.close();
575
592
  adapterExecutionTraces.close();
@@ -624,7 +641,8 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
624
641
  feedback: scopedFeedback,
625
642
  log,
626
643
  declareFailure,
627
- registerAssertions: (runtime) => {
644
+ registerAssertions: (runtime, state) => {
645
+ liveNotes = state.notes;
628
646
  if (liveAssertions !== undefined && liveAssertions !== runtime) {
629
647
  throw new Error("Attempt tried to register a second Assertions runtime");
630
648
  }
@@ -788,7 +806,8 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
788
806
  // forkIn() interrupts new children immediately even before the executor's own finalizer flips
789
807
  // its closed flag. Cleanup therefore uses the provider-owned resource facade; before/Agent/test
790
808
  // continue to use the interruptible author facade above.
791
- const cleanupCommandTarget = (0, operations_ts_1.createSandboxCommandTarget)(reusedSandbox?.resourceSandbox ?? materializedCase?.sandbox ?? sandbox);
809
+ const cleanupSandbox = reusedSandbox?.resourceSandbox ?? materializedCase?.sandbox ?? sandbox;
810
+ const cleanupCommandTarget = (0, operations_ts_1.createSandboxCommandTarget)(cleanupSandbox);
792
811
  // ── tracing ──────────────────────────────────────────────────────────────────
793
812
  // sandbox.otlpHost:
794
813
  // string → provider 承诺该 hostname 可访问宿主 receiver
@@ -996,10 +1015,15 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
996
1015
  }));
997
1016
  if (node)
998
1017
  recorder.pushParent(node);
999
- return (0, cleanup_timeout_ts_1.cleanupCallback)((cleanupSignal) => cleanup.command(cleanupCommandTarget, {
1000
- ...cleanup.context,
1001
- signal: cleanupSignal,
1002
- })).pipe(effect_1.Effect.catch((error) => effect_1.Effect.sync(() => {
1018
+ return (0, cleanup_timeout_ts_1.cleanupCallback)((cleanupSignal) => {
1019
+ // The forward Attempt may have exhausted its deadline. Each cleanup
1020
+ // owns a fresh bounded command window, including on reused instances.
1021
+ (0, deadline_ts_1.applyCommandDeadline)(cleanupSandbox, clock.currentTimeMillisUnsafe() + cleanup_timeout_ts_1.CLEANUP_TIMEOUT_MS);
1022
+ return cleanup.command(cleanupCommandTarget, {
1023
+ ...cleanup.context,
1024
+ signal: cleanupSignal,
1025
+ });
1026
+ }).pipe(effect_1.Effect.catch((error) => effect_1.Effect.sync(() => {
1003
1027
  if (node)
1004
1028
  node.failed = true;
1005
1029
  declareFailure("sandbox.cleanup", error);
@@ -1084,6 +1108,7 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
1084
1108
  },
1085
1109
  assertFirst,
1086
1110
  registerAssertions: (runtime, state) => {
1111
+ liveNotes = state.notes;
1087
1112
  if (liveAssertions !== undefined && liveAssertions !== runtime) {
1088
1113
  throw new Error("Attempt tried to register a second Assertions runtime");
1089
1114
  }
@@ -1340,6 +1365,7 @@ ${recentLogs.map((l) => ` · ${l}`).join("\n")}`;
1340
1365
  if (capture !== undefined) {
1341
1366
  (0, sandbox_record_producer_ts_1.retainRunnerAttemptFileChangesCapture)(finalResult, capture);
1342
1367
  }
1368
+ (0, attempt_notes_ts_1.retainAttemptNotes)(finalResult, liveNotes?.snapshot() ?? []);
1343
1369
  (0, judge_usage_ts_2.retainJudgeUsage)(finalResult, judgeUsage.snapshot());
1344
1370
  if (adapterUsageSnapshot !== undefined)
1345
1371
  (0, adapter_usage_ts_1.retainAdapterUsage)(finalResult, adapterUsageSnapshot);
@@ -1389,7 +1415,7 @@ function runAdapterAttemptBody(input) {
1389
1415
  judge: a.judge,
1390
1416
  executeStop: assertFirst.requestAssertion,
1391
1417
  });
1392
- registerAssertions(state.assertions);
1418
+ registerAssertions(state.assertions, state);
1393
1419
  sourceCapture.attachAssertions(state.assertions);
1394
1420
  let error;
1395
1421
  let skipReason;
@@ -1921,15 +1947,15 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
1921
1947
  const managedProcess = managedProcessSupport?._tag === "Supported"
1922
1948
  ? managedProcessSupport.value
1923
1949
  : undefined;
1924
- /** agent.setup 时点已走到(未声明 setup 也置位)——agent.teardown 的触发条件(成对触发规则)。 */
1950
+ /** agent.before 时点已走到(未声明 setup 也置位)——agent.after 的触发条件(成对触发规则)。 */
1925
1951
  let agentSetupReached = false;
1926
- const evalPluginLifecycles = (0, contracts_ts_1.linkPluginLifecycles)(evalDef.plugins, "eval");
1952
+ const evalPluginLifecycles = (0, link_ts_2.attemptPluginLifecycles)(evalDef, run);
1927
1953
  let activatedEvalPlugins = 0;
1928
1954
  const evalPluginContext = {
1929
1955
  experimentId: run.experimentId,
1930
1956
  evalId: evalDef.id,
1931
1957
  attempt,
1932
- ...(evalDef.evalGroup === undefined ? {} : { evalGroupId: evalDef.evalGroup.id }),
1958
+ ...(evalDef.evalGroup === undefined ? {} : { evalGroup: { id: evalDef.evalGroup.id, definitionHash: evalDef.evalGroup.definitionHash } }),
1933
1959
  signal,
1934
1960
  progress: feedback.progress,
1935
1961
  diagnostic: feedback.diagnostic,
@@ -1937,10 +1963,10 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
1937
1963
  // Only the Assert-first runtime is registered with the outer Scope. The
1938
1964
  // body requests its single seal after gathering non-authoring evidence.
1939
1965
  let assertionState;
1940
- /** adapter 在 agent.setup 里经 `ctx.reportSetup()` 交回的安装清单(宿主侧内存对象,不经沙箱磁盘;
1966
+ /** adapter 在 agent.before 里经 `ctx.reportInstallation()` 交回的安装清单(宿主侧内存对象,不经沙箱磁盘;
1941
1967
  * 装了 Skill / plugin / MCP 的沙箱型 adapter 才有)。运行器只把它抬成 attempt artifact,
1942
1968
  * 不解释内容、不按 agent 名字分支;什么都没装的 adapter 不调用 → undefined,不生成空 artifact。 */
1943
- let agentSetup;
1969
+ let agentInstallation;
1944
1970
  // 变更分类账(仅沙箱型;workspace.baseline 阶段建立)。
1945
1971
  let ledger;
1946
1972
  const linked = usesSandbox && a.plan._tag === "Sandbox" ? a.plan.pair : undefined;
@@ -2071,7 +2097,7 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2071
2097
  structurallyEligibleCount += 1;
2072
2098
  }
2073
2099
  }
2074
- if (run.sandboxSetupCache === "bypass") {
2100
+ if (run.sandboxBeforeCache === "bypass") {
2075
2101
  await replayAllBefore(linked.before, "replay(bypass)");
2076
2102
  return;
2077
2103
  }
@@ -2443,30 +2469,16 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2443
2469
  }
2444
2470
  }
2445
2471
  // agent 自己的 lifecycle:装 CLI、写 config(每个沙箱一次,不在每轮 send 里)。
2446
- // 时点在此走到(未声明 setup 也算)——agent.teardown 据此触发。
2472
+ // 时点在此走到(未声明 setup 也算)——agent.after 据此触发。
2447
2473
  agentSetupReached = true;
2448
- if (agent.setup) {
2474
+ if (agent.before) {
2449
2475
  enterPhase("agent.setup");
2450
2476
  log(`agent setup (install CLI / write config)...`);
2451
- const setupContext = agent.kind === "sandbox"
2452
- ? { ...sandboxAttemptCtx, reportSetup: (manifest) => (agentSetup = manifest) }
2453
- : attemptCtx;
2454
- let returned;
2455
- if (agent.kind === "sandbox") {
2456
- const setup = agent.setup;
2457
- const context = setupContext;
2458
- const native = (0, effect_runtime_ts_1.agentSetupEffect)(agent, sandbox, context);
2459
- returned = await assertFirst.requestEffect(native === undefined
2460
- ? (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.authorCallbackEffect)(() => setup(sandbox, callbackContext)))
2461
- : (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.agentSetupEffect)(agent, sandbox, callbackContext)));
2462
- }
2463
- else {
2464
- const setup = agent.setup;
2465
- const native = (0, effect_runtime_ts_1.agentSetupEffect)(agent, sandbox, attemptCtx);
2466
- returned = await assertFirst.requestEffect(native === undefined
2467
- ? (0, callback_context_ts_1.withAgentCallbackContext)(attemptCtx, (callbackContext) => (0, effect_runtime_ts_1.authorCallbackEffect)(() => setup(callbackContext)))
2468
- : (0, callback_context_ts_1.withAgentCallbackContext)(attemptCtx, (callbackContext) => (0, effect_runtime_ts_1.agentSetupEffect)(agent, sandbox, callbackContext)));
2469
- }
2477
+ const context = {
2478
+ ...sandboxAttemptCtx,
2479
+ reportInstallation: (manifest) => { agentInstallation = manifest; },
2480
+ };
2481
+ const returned = await assertFirst.requestEffect((0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, agent_effects_ts_1.agentBeforeEffect)(agent, sandbox, callbackContext) ?? effect_1.Effect.void));
2470
2482
  if (typeof returned === "function") {
2471
2483
  throw new Error(`${`Agent.setup (${agent.name})`} returned a function. setup does not carry cleanup and the returned value will not be executed — put the cleanup in the paired teardown of the same layer (${"Agent.teardown"}); see the experiments tutorial on docs-site or docs/runner.md.
2472
2484
  `.trimEnd());
@@ -2521,10 +2533,6 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2521
2533
  otel,
2522
2534
  feedback,
2523
2535
  concurrencySlot,
2524
- // 实验分类器:send 链上排在 adapter 的 classifySendFailure 之前(见
2525
- // docs/feature/error-classification/architecture.md「分类链」)。与本文件 declareFailure
2526
- // 走的生命周期链是同一个函数,两条链的决议序各自单源在 send-failures.ts / failure-class.ts。
2527
- experimentClassifier: run.classifyFailure,
2528
2536
  sourceRegistry,
2529
2537
  resources: attemptResources,
2530
2538
  nextSourceOrder: sourceCapture.nextSourceOrder,
@@ -2867,7 +2875,7 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2867
2875
  sources,
2868
2876
  o11y,
2869
2877
  trace,
2870
- agentSetup,
2878
+ agentInstallation,
2871
2879
  ...(diffArtifactAvailable ? { diff: diffWindows } : {}),
2872
2880
  evidenceCoverage: state.manager.evidenceCoverage,
2873
2881
  // sandbox 归属不在这里拼:它是租借时刻就定死的调度事实,由 runAttemptEffect 统一挂到
@@ -2881,7 +2889,7 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2881
2889
  if (isBodyInterrupted(signal, parentSignal, isDeadlineTimedOut()))
2882
2890
  throw e;
2883
2891
  recorder.failCurrent();
2884
- // SandboxLayer command / agent.setup / 评分链路抛出的终局失败:同样先读空间轴回执,
2892
+ // SandboxLayer command / agent.before / 评分链路抛出的终局失败:同样先读空间轴回执,
2885
2893
  // 再折成纯数据 AttemptError(顺序不可换,见 declareFailure)。
2886
2894
  declareFailure(getPhase() ?? "eval.run", e);
2887
2895
  const error = errorFromThrown(e, getPhase(), res.attemptTimeout);
@@ -2914,45 +2922,25 @@ async function runAttemptBody(a, config, t0, base, res, parentSignal) {
2914
2922
  ...(sealed === undefined
2915
2923
  ? (evalDef.evaluationKind === "score" ? { scoreResult: scoreFactOutcomeForAttemptError(error) } : {})
2916
2924
  : legacyResultProjectionFromSealedAssertions(sealed, error)),
2917
- ...(agentSetup !== undefined ? { agentSetup } : {}),
2925
+ ...(agentInstallation !== undefined ? { agentInstallation } : {}),
2918
2926
  };
2919
2927
  return value;
2920
2928
  }
2921
2929
  finally {
2922
2930
  // 收尾段一律在 finally 跑(主链成败都执行),不改判定,各自兜错(diagnostic)、各自计时
2923
2931
  // (不计入 durationMs 口径,见 docs/feature/record/architecture.md)。执行序与 LifecyclePhase
2924
- // 闭集声明一致:agent.teardown → sandbox.cleanup;各段可独立标 failed。
2932
+ // 闭集声明一致:agent.after → sandbox.cleanup;各段可独立标 failed。
2925
2933
  // 沙箱 stop / 接收器 close 不在这里 —— 由 runAttemptEffect 的 Sample 在本函数返回后回收,
2926
2934
  // 并经 finalizer 计成 sandbox.stop。没有对应 teardown/cleanup 的段直接跳过,不产生空阶段。
2927
2935
  if (assertFirst.beginCleanup()) {
2928
2936
  try {
2929
- if (agentSetupReached && agent.teardown) {
2937
+ if (agentSetupReached && agent.after) {
2930
2938
  enterPhase("agent.teardown");
2931
2939
  await recorder
2932
2940
  .measureClosing("agent.teardown", async () => {
2933
2941
  try {
2934
- // 先按 kind 收窄 Agent 联合,再取 teardown —— 否则可选属性访问会把
2935
- // AgentTeardown | DirectAgentTeardown 混成无法调用的签名。
2936
- if (agent.kind === "sandbox") {
2937
- const teardown = agent.teardown;
2938
- if (teardown) {
2939
- const context = { ...sandboxAttemptCtx, signal };
2940
- const native = (0, effect_runtime_ts_1.agentTeardownEffect)(agent, sandbox, context);
2941
- await assertFirst.requestCleanup((0, cleanup_timeout_ts_1.withCleanupTimeout)(native === undefined
2942
- ? (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.authorCallbackEffect)(() => teardown(sandbox, callbackContext)), { inheritAttemptSignal: false })
2943
- : (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.agentTeardownEffect)(agent, sandbox, callbackContext), { inheritAttemptSignal: false })));
2944
- }
2945
- }
2946
- else {
2947
- const teardown = agent.teardown;
2948
- if (teardown) {
2949
- const context = { ...attemptCtx, signal };
2950
- const native = (0, effect_runtime_ts_1.agentTeardownEffect)(agent, sandbox, context);
2951
- await assertFirst.requestCleanup((0, cleanup_timeout_ts_1.withCleanupTimeout)(native === undefined
2952
- ? (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.authorCallbackEffect)(() => teardown(callbackContext)), { inheritAttemptSignal: false })
2953
- : (0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, effect_runtime_ts_1.agentTeardownEffect)(agent, sandbox, callbackContext), { inheritAttemptSignal: false })));
2954
- }
2955
- }
2942
+ const context = { ...sandboxAttemptCtx, signal };
2943
+ await assertFirst.requestCleanup((0, cleanup_timeout_ts_1.withCleanupTimeout)((0, callback_context_ts_1.withAgentCallbackContext)(context, (callbackContext) => (0, agent_effects_ts_1.agentAfterEffect)(agent, sandbox, callbackContext) ?? effect_1.Effect.void, { inheritAttemptSignal: false })));
2956
2944
  }
2957
2945
  catch (e) {
2958
2946
  declareFailure("agent.teardown", e);
@@ -3095,7 +3083,7 @@ const EVAL_RESULT_REDACTED_EVIDENCE_KEYS = [
3095
3083
  "events",
3096
3084
  "o11y",
3097
3085
  "trace",
3098
- "agentSetup",
3086
+ "agentInstallation",
3099
3087
  "evidenceCoverage",
3100
3088
  "diff",
3101
3089
  "commands",