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
package/dist/define.cjs CHANGED
@@ -12,7 +12,7 @@ exports.defineEvalForContext = defineEvalForContext;
12
12
  exports.defineExperiment = defineExperiment;
13
13
  exports.defineConfig = defineConfig;
14
14
  exports.defineSandbox = defineSandbox;
15
- const model_slots_ts_1 = require("./model-slots.cjs");
15
+ const model_roles_ts_1 = require("./model-roles.cjs");
16
16
  const adapter_flags_ts_1 = require("./adapter-flags.cjs");
17
17
  const flags_ts_1 = require("./experiment/flags.cjs");
18
18
  const judge_config_ts_1 = require("./runner/judge-config.cjs");
@@ -22,7 +22,7 @@ const types_ts_1 = require("./types.cjs");
22
22
  const layer_ts_1 = require("./sandbox/layer.cjs");
23
23
  const effect_1 = require("effect");
24
24
  const coverage_ts_1 = require("./assertions/coverage.cjs");
25
- const effect_runtime_ts_1 = require("./agents/effect-runtime.cjs");
25
+ const agent_effects_ts_1 = require("./agents/agent-effects.cjs");
26
26
  const contracts_ts_1 = require("./plugin/contracts.cjs");
27
27
  /** Recognize only the retired flat configuration, without evaluating getters. */
28
28
  function normalizeDefinitionJudge(value, label) {
@@ -71,8 +71,15 @@ function defineEvalGroup(input) {
71
71
  function isDefinedScoreEval(value) {
72
72
  return definedScoreEvals.has(value);
73
73
  }
74
+ function assertAuthorLifecycleNames(def, owner) {
75
+ for (const [previous, current] of [["setup", "before"], ["teardown", "after"]]) {
76
+ if (Object.hasOwn(def, previous))
77
+ throw new TypeError(`${owner}.${previous} is no longer supported; use ${current}.`);
78
+ }
79
+ }
74
80
  /** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
75
81
  function defineSandboxAgent(def) {
82
+ assertAuthorLifecycleNames(def, "Agent");
76
83
  if (!def.name)
77
84
  throw new Error(`defineSandboxAgent requires name.`);
78
85
  (0, coverage_ts_1.assertEvidenceCoverage)(def.evidenceCoverage, "defineSandboxAgent");
@@ -89,7 +96,7 @@ function defineSandboxAgent(def) {
89
96
  throw new TypeError("defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.");
90
97
  }
91
98
  }
92
- return {
99
+ const agent = {
93
100
  name: def.name,
94
101
  kind: "sandbox",
95
102
  defineEval,
@@ -98,69 +105,80 @@ function defineSandboxAgent(def) {
98
105
  ...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),
99
106
  ensure,
100
107
  installers: def.installers ?? [],
101
- setup: def.setup,
108
+ before: def.before,
102
109
  tracing: def.tracing,
103
110
  spanMapper: def.spanMapper,
104
111
  send: def.send,
105
112
  classifySendFailure: def.classifySendFailure,
106
- teardown: def.teardown,
113
+ after: def.after,
107
114
  };
115
+ return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
116
+ send: (input, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.send(input, context)),
117
+ before: def.before === undefined ? undefined : (sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.before(sandbox, context)),
118
+ after: def.after === undefined ? undefined : (sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.after(sandbox, { ...context, sandbox })),
119
+ });
108
120
  }
109
121
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
110
122
  function makeSandboxAgent(def) {
111
- const { send, setup, teardown, ...publicDefinition } = def;
123
+ const { send, before, after, ...publicDefinition } = def;
112
124
  const agent = defineSandboxAgent({
113
125
  ...publicDefinition,
114
- send: (0, effect_runtime_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
115
- ...(setup === undefined ? {} : {
116
- setup: (0, effect_runtime_ts_1.effectAgentCallback)(setup, (_sandbox, context) => context.signal),
126
+ send: (0, agent_effects_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
127
+ ...(before === undefined ? {} : {
128
+ before: (0, agent_effects_ts_1.effectAgentCallback)(before, (_sandbox, context) => context.signal),
117
129
  }),
118
- ...(teardown === undefined ? {} : {
119
- teardown: (0, effect_runtime_ts_1.effectAgentCallback)(teardown, (_sandbox, context) => context.signal),
130
+ ...(after === undefined ? {} : {
131
+ after: (0, agent_effects_ts_1.effectAgentCallback)(after, (_sandbox, context) => context.signal),
120
132
  }),
121
133
  });
122
- return (0, effect_runtime_ts_1.registerAgentEffectRuntime)(agent, {
123
- send: send,
124
- sandboxSetup: setup,
125
- sandboxTeardown: teardown,
134
+ return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
135
+ send,
136
+ before,
137
+ after,
126
138
  });
127
139
  }
128
140
  /** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
129
141
  function defineAgent(def) {
142
+ assertAuthorLifecycleNames(def, "Agent");
130
143
  if (!def.name)
131
144
  throw new Error(`defineAgent requires name.`);
132
145
  (0, coverage_ts_1.assertEvidenceCoverage)(def.evidenceCoverage, "defineAgent");
133
- return {
146
+ const agent = {
134
147
  name: def.name,
135
148
  kind: "direct",
136
149
  defineEval,
137
150
  defineScoreEval,
138
151
  evidenceCoverage: def.evidenceCoverage,
139
- setup: def.setup,
152
+ before: def.before,
140
153
  tracing: def.tracing,
141
154
  spanMapper: def.spanMapper,
142
155
  send: def.send,
143
156
  classifySendFailure: def.classifySendFailure,
144
- teardown: def.teardown,
157
+ after: def.after,
145
158
  };
159
+ return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
160
+ send: (input, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.send(input, context)),
161
+ before: def.before === undefined ? undefined : (_sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.before(context)),
162
+ after: def.after === undefined ? undefined : (_sandbox, context) => (0, agent_effects_ts_1.authorCallbackEffect)(() => def.after(context)),
163
+ });
146
164
  }
147
165
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
148
166
  function makeDirectAgent(def) {
149
- const { send, setup, teardown, ...publicDefinition } = def;
167
+ const { send, before, after, ...publicDefinition } = def;
150
168
  const agent = defineAgent({
151
169
  ...publicDefinition,
152
- send: (0, effect_runtime_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
153
- ...(setup === undefined ? {} : {
154
- setup: (0, effect_runtime_ts_1.effectAgentCallback)(setup, (context) => context.signal),
170
+ send: (0, agent_effects_ts_1.effectAgentCallback)(send, (_input, context) => context.signal),
171
+ ...(before === undefined ? {} : {
172
+ before: (0, agent_effects_ts_1.effectAgentCallback)(before, (context) => context.signal),
155
173
  }),
156
- ...(teardown === undefined ? {} : {
157
- teardown: (0, effect_runtime_ts_1.effectAgentCallback)(teardown, (context) => context.signal),
174
+ ...(after === undefined ? {} : {
175
+ after: (0, agent_effects_ts_1.effectAgentCallback)(after, (context) => context.signal),
158
176
  }),
159
177
  });
160
- return (0, effect_runtime_ts_1.registerAgentEffectRuntime)(agent, {
178
+ return (0, agent_effects_ts_1.attachAgentEffects)(agent, {
161
179
  send,
162
- directSetup: setup,
163
- directTeardown: teardown,
180
+ before: before === undefined ? undefined : (_sandbox, context) => before(context),
181
+ after: after === undefined ? undefined : (_sandbox, context) => after(context),
164
182
  });
165
183
  }
166
184
  /** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
@@ -175,7 +193,7 @@ function defineScoreEval(def) {
175
193
  return defineEvalForContext("score", def);
176
194
  }
177
195
  /** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */
178
- // @concord-code ne-surface-define-eval-context
196
+ // @concord-code
179
197
  // @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md
180
198
  function defineEvalForContext(kind, def, internalFields = {}) {
181
199
  const factory = kind === "pass" ? "defineEval" : "defineScoreEval";
@@ -202,23 +220,28 @@ function defineEvalForContext(kind, def, internalFields = {}) {
202
220
  definedScoreEvals.add(result);
203
221
  return result;
204
222
  }
205
- // @concord-code ne-surface-define-experiment
223
+ // @concord-code
206
224
  // @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md
207
225
  function defineExperiment(def) {
226
+ rejectRemovedField(def, "judgeRuntime", "Use judge.");
227
+ rejectRemovedField(def, "classifyFailure", "Use built-in failure classification or ExperimentFatalError / EvalFatalError.");
228
+ rejectRemovedField(def, "agent", "Use adapter to select the tested Agent or Adapter.");
208
229
  if (Object.hasOwn(def, "id")) {
209
230
  throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);
210
231
  }
211
- if ((def.agent === undefined) === (def.adapter === undefined)) {
212
- throw new Error(`defineExperiment requires exactly one of agent or adapter.`);
232
+ if (def.adapter === undefined) {
233
+ throw new Error(`defineExperiment requires adapter.`);
213
234
  }
214
- const adapter = def.adapter ?? def.agent;
235
+ const adapter = def.adapter;
215
236
  if (adapter.kind !== "custom" && def.models !== undefined) {
216
237
  throw new TypeError("Experiment models is only supported by custom Adapters.");
217
238
  }
218
- const models = adapter.kind === "custom" ? (0, model_slots_ts_1.normalizeModelSlots)(def) : undefined;
219
- const judgeRuntime = def.judgeRuntime === undefined
239
+ const models = adapter.kind === "custom" ? (0, model_roles_ts_1.normalizeModelRoles)(def) : undefined;
240
+ if (adapter.kind === "custom")
241
+ (0, model_roles_ts_1.assertRequiredModelRoles)(adapter.requiredModelRoles, models, `Adapter "${adapter.name}"`);
242
+ const judge = def.judge === undefined
220
243
  ? undefined
221
- : normalizeDefinitionJudge(def.judgeRuntime, "defineExperiment() judgeRuntime");
244
+ : normalizeDefinitionJudge(def.judge, "defineExperiment() judge");
222
245
  assertSandboxLayer(def.sandbox, "defineExperiment");
223
246
  if (adapter.kind === "custom") {
224
247
  if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {
@@ -228,21 +251,17 @@ function defineExperiment(def) {
228
251
  throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);
229
252
  }
230
253
  }
231
- // setup 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.setup);
254
+ assertAuthorLifecycleNames(def, "Experiment");
255
+ // before 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.before);
232
256
  // 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。
233
- if (def.setup !== undefined && typeof def.setup !== "function") {
234
- throw new Error(`experiment.setup must be a function ((ctx) => void); use experiment.teardown for cleanup; to prepare the in-sandbox environment per experiment, chain .setup() hooks on the sandbox spec instead.`);
257
+ if (def.before !== undefined && typeof def.before !== "function") {
258
+ throw new Error(`experiment.before must be a function ((ctx) => void); use experiment.after for cleanup; to prepare the in-sandbox environment per experiment, chain .before() hooks on the sandbox spec instead.`);
235
259
  }
236
260
  // teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能
237
261
  // 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有
238
262
  // 执行补偿的情况下释放 immutable owner generation。
239
- if (def.teardown !== undefined && typeof def.teardown !== "function") {
240
- throw new Error(`Experiment teardown must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);
241
- }
242
- // classifyFailure 是失败分类链上的实验通道(见 runner/types.ts 的 ExperimentDef.classifyFailure):
243
- // 传成非函数在解析时就报,不等到某条 attempt 撞死才发现这一路声明白写。
244
- if (def.classifyFailure !== undefined && typeof def.classifyFailure !== "function") {
245
- throw new Error(`experiment.classifyFailure must be a function ((failure) => FailureClass | undefined); it classifies failures that surface as third-party errors and must return undefined for anything it does not recognize.`);
263
+ if (def.after !== undefined && typeof def.after !== "function") {
264
+ throw new Error(`Experiment after must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);
246
265
  }
247
266
  // labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,
248
267
  // 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。
@@ -255,7 +274,7 @@ function defineExperiment(def) {
255
274
  }
256
275
  const sharedState = normalizeSharedState(def.sharedState);
257
276
  const sandboxCache = normalizeSandboxCache(def.sandboxCache, "defineExperiment");
258
- const { id: _derivedId, agent: _agent, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;
277
+ const { id: _derivedId, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;
259
278
  const flags = (0, flags_ts_1.decodeExperimentFlags)(def.flags === undefined ? {} : def.flags);
260
279
  return (0, types_ts_1.brandExperimentDefinition)({
261
280
  ...author,
@@ -265,7 +284,6 @@ function defineExperiment(def) {
265
284
  reasoningEffort: models.default?.reasoningEffort ?? undefined,
266
285
  }),
267
286
  adapter,
268
- ...(adapter.kind === "custom" ? {} : { agent: adapter }),
269
287
  flags: adapter.kind === "custom" && adapter.parseFlags !== undefined
270
288
  ? (0, adapter_flags_ts_1.parseAdapterFlags)(adapter.parseFlags, flags)
271
289
  : flags,
@@ -274,7 +292,7 @@ function defineExperiment(def) {
274
292
  earlyExit: def.earlyExit ?? false,
275
293
  evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? "*"),
276
294
  sandboxReuse: def.sandboxReuse === true,
277
- ...(judgeRuntime === undefined ? {} : { judgeRuntime }),
295
+ ...(judge === undefined ? {} : { judge }),
278
296
  ...(sharedState === undefined ? {} : { sharedState }),
279
297
  ...(sandboxCache === undefined ? {} : { sandboxCache }),
280
298
  plugins: normalizePlugins(def.plugins ?? [], "defineExperiment plugins", "experiment"),
@@ -284,15 +302,17 @@ function normalizeSandboxCache(value, factory) {
284
302
  if (value === undefined)
285
303
  return undefined;
286
304
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
287
- throw new TypeError(`${factory} sandboxCache must be an object with optional setup "use" or "bypass".`);
305
+ throw new TypeError(`${factory} sandboxCache must be an object with optional before "use" or "bypass".`);
288
306
  }
307
+ if (Object.hasOwn(value, "setup"))
308
+ throw new TypeError(`${factory} sandboxCache.setup is no longer supported. Use sandboxCache.before.`);
289
309
  const keys = Object.keys(value);
290
- const setup = Reflect.get(value, "setup");
291
- if (keys.some((key) => key !== "setup") ||
292
- (setup !== undefined && setup !== "use" && setup !== "bypass")) {
293
- throw new TypeError(`${factory} sandboxCache must be an object with optional setup "use" or "bypass".`);
310
+ const before = Reflect.get(value, "before");
311
+ if (keys.some((key) => key !== "before") ||
312
+ (before !== undefined && before !== "use" && before !== "bypass")) {
313
+ throw new TypeError(`${factory} sandboxCache must be an object with optional before "use" or "bypass".`);
294
314
  }
295
- return Object.freeze(setup === undefined ? {} : { setup });
315
+ return Object.freeze(before === undefined ? {} : { before });
296
316
  }
297
317
  const SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;
298
318
  function normalizeSharedState(value) {
@@ -311,6 +331,7 @@ function normalizeSharedState(value) {
311
331
  return Object.freeze({ key: candidate.key });
312
332
  }
313
333
  function normalizeEvalFields(def) {
334
+ rejectRemovedField(def, "reporters", "Use Config.reporters for project-level reporting.");
314
335
  const judge = def.judge === undefined
315
336
  ? undefined
316
337
  : normalizeDefinitionJudge(def.judge, "defineEval() judge");
@@ -320,7 +341,6 @@ function normalizeEvalFields(def) {
320
341
  ...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),
321
342
  plugins: normalizePlugins(def.plugins ?? [], "defineEval plugins", "eval"),
322
343
  ...(judge !== undefined ? { judge } : {}),
323
- reporters: Object.freeze([...(def.reporters ?? [])]),
324
344
  ...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),
325
345
  metadata: decodeJsonRecord(def.metadata ?? {}, "Eval metadata"),
326
346
  diff: Object.freeze({
@@ -329,7 +349,7 @@ function normalizeEvalFields(def) {
329
349
  }),
330
350
  };
331
351
  }
332
- // @concord-code ne-surface-normalize-plugins
352
+ // @concord-code
333
353
  // @concord-implements docs/feature/plugins/library.md
334
354
  function normalizePlugins(value, label, owner) {
335
355
  if (!Array.isArray(value))
@@ -337,9 +357,7 @@ function normalizePlugins(value, label, owner) {
337
357
  return Object.freeze(value.map((plugin, index) => {
338
358
  if (!(0, contracts_ts_1.isPluginInstance)(plugin))
339
359
  throw new TypeError(`${label}[${index}] must be created by definePlugin().`);
340
- if ((0, contracts_ts_1.pluginInstanceDataOf)(plugin)[owner] === undefined) {
341
- throw new TypeError(`${label}[${index}] does not support ${owner} attachment.`);
342
- }
360
+ (0, contracts_ts_1.assertPluginOwner)(plugin, owner, `${label}[${index}]`);
343
361
  return plugin;
344
362
  }));
345
363
  }
@@ -386,17 +404,20 @@ function assertSandboxLayer(value, factory) {
386
404
  }
387
405
  /** 项目级配置。 */
388
406
  function defineConfig(config) {
407
+ rejectRemovedField(config, "judgeRuntime", "Use judgeProvider.");
408
+ rejectRemovedField(config, "maxSetupPrefixConcurrency", "Use maxBeforeCacheConcurrency.");
409
+ rejectRemovedField(config, "workspace", "Use the project directory as the working directory.");
389
410
  const sandboxCache = normalizeSandboxCache(config.sandboxCache, "defineConfig");
390
- const judgeRuntime = config.judgeRuntime === undefined
411
+ const judgeProvider = config.judgeProvider === undefined
391
412
  ? undefined
392
- : normalizeDefinitionJudge(config.judgeRuntime, "defineConfig() judgeRuntime");
393
- if (judgeRuntime !== undefined && !(0, provider_ts_1.isJudgeProvider)(judgeRuntime)) {
394
- throw new TypeError("defineConfig() judgeRuntime must be a Judge Provider created by niceeval/judge");
413
+ : normalizeDefinitionJudge(config.judgeProvider, "defineConfig() judgeProvider");
414
+ if (judgeProvider !== undefined && !(0, provider_ts_1.isJudgeProvider)(judgeProvider)) {
415
+ throw new TypeError("defineConfig() judgeProvider must be a Judge Provider created by niceeval/judge");
395
416
  }
396
417
  return Object.freeze({
397
418
  ...config,
398
419
  ...(sandboxCache === undefined ? {} : { sandboxCache }),
399
- ...(judgeRuntime === undefined ? {} : { judgeRuntime }),
420
+ ...(judgeProvider === undefined ? {} : { judgeProvider }),
400
421
  });
401
422
  }
402
423
  /**
@@ -406,4 +427,8 @@ function defineConfig(config) {
406
427
  function defineSandbox(def) {
407
428
  return (0, layer_ts_1.customProviderSandbox)(def);
408
429
  }
430
+ function rejectRemovedField(value, field, replacement) {
431
+ if (Object.hasOwn(value, field))
432
+ throw new TypeError(`${field} is no longer supported. ${replacement}`);
433
+ }
409
434
  //# sourceMappingURL=define.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"define.js","sourceRoot":"","sources":["define.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file ne-surface-definition-entry\n// @concord-implements docs/feature/plugins/library.md\nimport type { Adapter } from \"./adapter.ts\";\nimport { normalizeModelSlots } from \"./model-slots.ts\";\nimport { parseAdapterFlags } from \"./adapter-flags.ts\";\nimport { decodeExperimentFlags } from \"./experiment/flags.ts\";\n// 定义入口:把用户对象规格化成核心认得的形状。路径即身份 —— 这里禁止手写 id,\n// 由发现阶段从文件路径推导(见 runner/discover.ts)。\nimport type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, EvalDefinitionFields, ExperimentDefinition, ExperimentInput, SharedStateConfig, SandboxCacheConfig, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext, JsonValue, } from \"./types.ts\";\nimport { normalizeJudgeSelection } from \"./runner/judge-config.ts\";\nimport { isJudgeProvider } from \"./judge/provider.ts\";\nimport { MigrationRequiredError, captureMigrationSource } from \"./error-assistance/index.ts\";\nimport { brandEvalDefinition, brandEvalGroupDefinition, brandExperimentDefinition, isEvalDefinition, } from \"./types.ts\";\nimport { customProviderSandbox, isSandboxLayer, sandboxLayerStateOf, type CustomProviderSandboxOptions, type SandboxLayer, } from \"./sandbox/layer.ts\";\nimport { Result, Schema } from \"effect\";\nimport { assertEvidenceCoverage } from \"./assertions/coverage.ts\";\nimport { effectAgentCallback, registerAgentEffectRuntime, type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition, } from \"./agents/effect-runtime.ts\";\nimport { isPluginInstance, pluginInstanceDataOf, type PluginInstance, type PluginOwner } from \"./plugin/contracts.ts\";\n/** Recognize only the retired flat configuration, without evaluating getters. */\nfunction normalizeDefinitionJudge(value: unknown, label: string) {\n if (!isJudgeProvider(value) && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const prototype = Object.getPrototypeOf(value);\n const legacyKeys = [\"model\", \"baseUrl\", \"apiKeyEnv\", \"timeoutMs\", \"maxOutputTokens\"];\n if ((prototype === Object.prototype || prototype === null) && Reflect.ownKeys(value).every((key) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n return typeof key === \"string\" && legacyKeys.includes(key) && descriptor !== undefined && \"value\" in descriptor;\n })) {\n throw new MigrationRequiredError({ occurrences: [{\n guideId: \"judge-provider\",\n subject: label.replace(\"() \", \".\"),\n source: captureMigrationSource(),\n }] });\n }\n }\n return normalizeJudgeSelection(value, label);\n}\n// 发现期必须区分 defineScoreEval 的真正产物与运行时手写 `{ evaluationKind: \"score\" }` 的裸对象。\n// WeakSet 是模块私有来源证明;Definition 本身另有 types.ts 的私有 symbol 品牌供类型层使用。\nconst definedScoreEvals = new WeakSet<object>();\n/** Define a closed set of real Eval definitions sharing one physical Sandbox. */\nexport function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition {\n if (!Array.isArray(input.evals) || input.evals.length === 0) {\n throw new TypeError(\"defineEvalGroup evals must be a non-empty array of defineEval()/defineScoreEval() definitions.\");\n }\n input.evals.forEach((member, index) => {\n if (!isEvalDefinition(member)) {\n throw new TypeError(`defineEvalGroup evals[${index}] must be the object returned by defineEval() or defineScoreEval().`);\n }\n });\n assertSandboxLayer(input.sandbox, \"defineEvalGroup\");\n if (input.onUnavailable !== \"stop-group\" && input.onUnavailable !== \"replace-sandbox\") {\n throw new TypeError(\"defineEvalGroup onUnavailable must be \\\"stop-group\\\" or \\\"replace-sandbox\\\".\");\n }\n const [first, ...rest] = input.evals;\n return brandEvalGroupDefinition({\n evals: Object.freeze([first, ...rest]),\n onUnavailable: input.onUnavailable,\n ...(input.sandbox ? { sandbox: input.sandbox } : {}),\n ...(input.plugins === undefined ? {} : { plugins: normalizePlugins(input.plugins, \"defineEvalGroup plugins\", \"group\") }),\n });\n}\n/** @internal 仅供 discoverEvals 验证 score 题型来源。 */\nexport function isDefinedScoreEval(value: object): boolean {\n return definedScoreEvals.has(value);\n}\n/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */\nexport function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent {\n if (!def.name)\n throw new Error(`defineSandboxAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineSandboxAgent\");\n if (def.ensure === undefined)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n const ensure = Array.isArray(def.ensure) ? def.ensure : [def.ensure];\n if (ensure.length === 0)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n if (def.sandbox !== undefined) {\n if (!isSandboxLayer(def.sandbox)) {\n throw new TypeError(\"defineSandboxAgent sandbox must be a SandboxLayer created by sandboxLayer().\");\n }\n if (sandboxLayerStateOf(def.sandbox).kind !== \"command-only\") {\n throw new TypeError(\"defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.\");\n }\n }\n return {\n name: def.name,\n kind: \"sandbox\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n ...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),\n ensure,\n installers: def.installers ?? [],\n setup: def.setup,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n teardown: def.teardown,\n };\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeSandboxAgent(def: Omit<SandboxAgentDef, \"send\" | \"setup\" | \"teardown\"> & InternalSandboxAgentDefinition): SandboxAgent {\n const { send, setup, teardown, ...publicDefinition } = def;\n const agent = defineSandboxAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(setup === undefined ? {} : {\n setup: effectAgentCallback(setup, (_sandbox, context) => context.signal),\n }),\n ...(teardown === undefined ? {} : {\n teardown: effectAgentCallback(teardown, (_sandbox, context) => context.signal),\n }),\n });\n return registerAgentEffectRuntime(agent, {\n send: send as InternalDirectAgentDefinition[\"send\"],\n sandboxSetup: setup,\n sandboxTeardown: teardown,\n });\n}\n/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */\nexport function defineAgent(def: DirectAgentDef): DirectAgent {\n if (!def.name)\n throw new Error(`defineAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineAgent\");\n return {\n name: def.name,\n kind: \"direct\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n setup: def.setup,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n teardown: def.teardown,\n };\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeDirectAgent(def: Omit<DirectAgentDef, \"send\" | \"setup\" | \"teardown\"> & InternalDirectAgentDefinition): DirectAgent {\n const { send, setup, teardown, ...publicDefinition } = def;\n const agent = defineAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(setup === undefined ? {} : {\n setup: effectAgentCallback(setup, (context) => context.signal),\n }),\n ...(teardown === undefined ? {} : {\n teardown: effectAgentCallback(teardown, (context) => context.signal),\n }),\n });\n return registerAgentEffectRuntime(agent, {\n send,\n directSetup: setup,\n directTeardown: teardown,\n });\n}\n/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */\nexport function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<\"pass\", TestContext, Sandbox> {\n return defineEvalForContext(\"pass\", def);\n}\n/**\n * 计分制 eval:Fact verdict uses 与 Fact score uses 可以读取同一份证据;正常返回由 Runner\n * 自动关闭计分收集器。字段与 `defineEval` 同形,禁止提供 id,由发现期推导。\n */\nexport function defineScoreEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: ScoreEvalInput<Sandbox>): EvalDefinition<\"score\", ScoreTestContext, Sandbox> {\n return defineEvalForContext(\"score\", def);\n}\ntype EvalFactoryInput<Sandbox extends SandboxLayer | undefined> = Omit<EvalInput<Sandbox> | ScoreEvalInput<Sandbox>, \"test\"> & {\n readonly test: (...args: never[]) => ReturnType<EvalDefinition<\"pass\", unknown, Sandbox>[\"test\"]>;\n};\n/** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */\n// @concord-code ne-surface-define-eval-context\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineEvalForContext<Kind extends \"pass\" | \"score\", Context, const Sandbox extends SandboxLayer | undefined = undefined>(kind: Kind, def: EvalFactoryInput<Sandbox>, internalFields: Readonly<Record<PropertyKey, unknown>> = {}): EvalDefinition<Kind, Context, Sandbox> {\n const factory = kind === \"pass\" ? \"defineEval\" : \"defineScoreEval\";\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`${factory} does not accept id; ids are derived from file paths.`);\n }\n if (Object.hasOwn(def, \"evaluationKind\")) {\n throw new Error(`${factory} does not accept evaluationKind; it is always set to ${JSON.stringify(kind)}.`);\n }\n if (Object.hasOwn(def, \"configHash\")) {\n throw new Error(`${factory} does not accept configHash; configHash is computed during run planning.`);\n }\n if (typeof def.test !== \"function\") {\n throw new Error(`${factory} requires an async test(t) function.`);\n }\n assertSandboxLayer(def.sandbox, factory);\n const result = brandEvalDefinition({\n ...normalizeEvalFields(def),\n ...internalFields,\n evaluationKind: kind,\n test: def.test,\n });\n if (kind === \"score\")\n definedScoreEvals.add(result);\n return result as EvalDefinition<Kind, Context, Sandbox>;\n}\n/** 实验:可签入的运行配置(怎么跑这批 eval)。 */\nexport function defineExperiment<const A extends Adapter>(def: ExperimentInput<A>): ExperimentDefinition<A>;\n// @concord-code ne-surface-define-experiment\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineExperiment(def: Omit<ExperimentInput, \"flags\"> & {\n readonly flags?: unknown;\n}): ExperimentDefinition {\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);\n }\n if ((def.agent === undefined) === (def.adapter === undefined)) {\n throw new Error(`defineExperiment requires exactly one of agent or adapter.`);\n }\n const adapter = def.adapter ?? def.agent!;\n if (adapter.kind !== \"custom\" && def.models !== undefined) {\n throw new TypeError(\"Experiment models is only supported by custom Adapters.\");\n }\n const models = adapter.kind === \"custom\" ? normalizeModelSlots(def) : undefined;\n const judgeRuntime = def.judgeRuntime === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judgeRuntime, \"defineExperiment() judgeRuntime\");\n assertSandboxLayer(def.sandbox, \"defineExperiment\");\n if (adapter.kind === \"custom\") {\n if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {\n throw new Error(`Custom Adapter experiments do not support sandbox, sandboxReuse, or sandboxCache.`);\n }\n if (def.budget !== undefined) {\n throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);\n }\n }\n // setup 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.setup);\n // 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。\n if (def.setup !== undefined && typeof def.setup !== \"function\") {\n throw new Error(`experiment.setup must be a function ((ctx) => void); use experiment.teardown for cleanup; to prepare the in-sandbox environment per experiment, chain .setup() hooks on the sandbox spec instead.`);\n }\n // teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能\n // 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有\n // 执行补偿的情况下释放 immutable owner generation。\n if (def.teardown !== undefined && typeof def.teardown !== \"function\") {\n throw new Error(`Experiment teardown must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);\n }\n // classifyFailure 是失败分类链上的实验通道(见 runner/types.ts 的 ExperimentDef.classifyFailure):\n // 传成非函数在解析时就报,不等到某条 attempt 撞死才发现这一路声明白写。\n if (def.classifyFailure !== undefined && typeof def.classifyFailure !== \"function\") {\n throw new Error(`experiment.classifyFailure must be a function ((failure) => FailureClass | undefined); it classifies failures that surface as third-party errors and must return undefined for anything it does not recognize.`);\n }\n // labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,\n // 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。\n if (def.labels !== undefined) {\n for (const [key, value] of Object.entries(def.labels)) {\n const ok = typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value));\n if (!ok)\n throw new Error(`experiment.labels.${key} must be a string or a finite number; labels are report-side grouping coordinates persisted verbatim into result runs.`);\n }\n }\n const sharedState = normalizeSharedState(def.sharedState);\n const sandboxCache = normalizeSandboxCache(def.sandboxCache, \"defineExperiment\");\n const { id: _derivedId, agent: _agent, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;\n const flags = decodeExperimentFlags(def.flags === undefined ? {} : def.flags);\n return brandExperimentDefinition({\n ...author,\n ...(models === undefined ? {} : {\n models,\n model: models.default?.model ?? undefined,\n reasoningEffort: models.default?.reasoningEffort ?? undefined,\n }),\n adapter,\n ...(adapter.kind === \"custom\" ? {} : { agent: adapter }),\n flags: adapter.kind === \"custom\" && adapter.parseFlags !== undefined\n ? parseAdapterFlags(adapter.parseFlags, flags)\n : flags,\n labels: Object.freeze({ ...(def.labels ?? {}) }),\n attempts: def.attempts ?? 1,\n earlyExit: def.earlyExit ?? false,\n evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? \"*\"),\n sandboxReuse: def.sandboxReuse === true,\n ...(judgeRuntime === undefined ? {} : { judgeRuntime }),\n ...(sharedState === undefined ? {} : { sharedState }),\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n plugins: normalizePlugins(def.plugins ?? [], \"defineExperiment plugins\", \"experiment\"),\n });\n}\nfunction normalizeSandboxCache(value: unknown, factory: \"defineConfig\" | \"defineExperiment\"): SandboxCacheConfig | undefined {\n if (value === undefined)\n return undefined;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional setup \"use\" or \"bypass\".`);\n }\n const keys = Object.keys(value);\n const setup = Reflect.get(value, \"setup\");\n if (keys.some((key) => key !== \"setup\") ||\n (setup !== undefined && setup !== \"use\" && setup !== \"bypass\")) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional setup \"use\" or \"bypass\".`);\n }\n return Object.freeze(setup === undefined ? {} : { setup });\n}\nconst SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;\nfunction normalizeSharedState(value: unknown): SharedStateConfig | undefined {\n if (value === undefined)\n return undefined;\n const candidate = value as {\n key?: unknown;\n };\n if (typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n !Object.hasOwn(value, \"key\") ||\n Object.keys(value).length !== 1 ||\n typeof candidate.key !== \"string\" ||\n !SharedStateKeyPattern.test(candidate.key)) {\n throw new TypeError(`experiment.sharedState must be exactly { key }, where key is a stable, non-secret string matching [a-z0-9][a-z0-9._/-]{0,127}.`);\n }\n return Object.freeze({ key: candidate.key });\n}\nfunction normalizeEvalFields<const Sandbox extends SandboxLayer | undefined>(def: EvalInput<Sandbox> | ScoreEvalInput<Sandbox>): EvalDefinitionFields<Sandbox> {\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineEval() judge\");\n return {\n ...(def.description !== undefined ? { description: def.description } : {}),\n tags: Object.freeze([...(def.tags ?? [])]),\n ...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),\n plugins: normalizePlugins(def.plugins ?? [], \"defineEval plugins\", \"eval\"),\n ...(judge !== undefined ? { judge } : {}),\n reporters: Object.freeze([...(def.reporters ?? [])]),\n ...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),\n metadata: decodeJsonRecord(def.metadata ?? {}, \"Eval metadata\"),\n diff: Object.freeze({\n include: Object.freeze([...(def.diff?.include ?? [])]),\n ignore: Object.freeze([...(def.diff?.ignore ?? [])]),\n }),\n };\n}\n// @concord-code ne-surface-normalize-plugins\n// @concord-implements docs/feature/plugins/library.md\nfunction normalizePlugins<Owner extends PluginOwner>(value: readonly PluginInstance<Owner>[], label: string, owner: Owner): readonly PluginInstance<Owner>[] {\n if (!Array.isArray(value))\n throw new TypeError(`${label} must be an array.`);\n return Object.freeze(value.map((plugin, index) => {\n if (!isPluginInstance(plugin))\n throw new TypeError(`${label}[${index}] must be created by definePlugin().`);\n if (pluginInstanceDataOf(plugin)[owner] === undefined) {\n throw new TypeError(`${label}[${index}] does not support ${owner} attachment.`);\n }\n return plugin;\n }));\n}\nfunction isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return true;\n if (typeof value === \"number\")\n return Number.isFinite(value);\n if (Array.isArray(value))\n return value.every(isJsonValue);\n if (typeof value !== \"object\")\n return false;\n return Object.values(value).every(isJsonValue);\n}\nconst JsonValueSchema = Schema.declare<JsonValue>(isJsonValue);\nconst JsonRecordSchema = Schema.Record(Schema.String, JsonValueSchema);\nfunction deepFreezeJson(value: JsonValue): JsonValue {\n if (Array.isArray(value)) {\n const items: JsonValue[] = value.map(deepFreezeJson);\n Object.freeze(items);\n return items;\n }\n if (value !== null && typeof value === \"object\") {\n const record: globalThis.Record<string, JsonValue> = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, deepFreezeJson(child)]));\n Object.freeze(record);\n return record;\n }\n return value;\n}\nfunction decodeJsonRecord(value: unknown, label: string): Readonly<globalThis.Record<string, JsonValue>> {\n const decoded = Schema.decodeUnknownResult(JsonRecordSchema, { errors: \"all\" })(value);\n if (Result.isFailure(decoded))\n throw new TypeError(`${label} must be JSON-compatible: ${String(decoded.failure)}`);\n return Object.freeze(Object.fromEntries(Object.entries(decoded.success).map(([key, child]) => [key, deepFreezeJson(child)])));\n}\n/**\n * `SandboxLayer` 的品牌只由 `niceeval/sandbox` 工厂写入。动态 TSX/JS 调用绕过静态类型时,\n * 不接受看似相同的裸对象,以免在 linker 阶段才得到难以定位的错误。\n */\nfunction assertSandboxLayer(value: unknown, factory: string): void {\n if (value !== undefined && !isSandboxLayer(value)) {\n throw new TypeError(`${factory} sandbox must be a SandboxLayer created by a niceeval/sandbox factory (for example dockerSandbox(), dockerComposeSandbox(), e2bSandbox(), or vercelSandbox()).`);\n }\n}\n/** 项目级配置。 */\nexport function defineConfig(config: Config): Config {\n const sandboxCache = normalizeSandboxCache(config.sandboxCache, \"defineConfig\");\n const judgeRuntime = config.judgeRuntime === undefined\n ? undefined\n : normalizeDefinitionJudge(config.judgeRuntime, \"defineConfig() judgeRuntime\");\n if (judgeRuntime !== undefined && !isJudgeProvider(judgeRuntime)) {\n throw new TypeError(\"defineConfig() judgeRuntime must be a Judge Provider created by niceeval/judge\");\n }\n return Object.freeze({\n ...config,\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n ...(judgeRuntime === undefined ? {} : { judgeRuntime }),\n });\n}\n/**\n * 自定义沙箱 provider:`create` 直接返回一个实现 `Sandbox` 接口的实例,不需要 niceeval 内置支持\n * 这个 provider 名字。用于接入 docker/vercel/e2b 之外的运行环境(自建 VM、Modal、Fly 等)。\n */\nexport function defineSandbox(def: CustomProviderSandboxOptions): SandboxLayer<\"template-bearing\"> {\n return customProviderSandbox(def);\n}\n"]}
1
+ {"version":3,"file":"define.js","sourceRoot":"","sources":["define.ts"],"names":[],"mappings":"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","sourcesContent":["// @concord-file\n// @concord-implements docs/feature/plugins/library.md\nimport type { Adapter } from \"./adapter.ts\";\nimport { assertRequiredModelRoles, normalizeModelRoles } from \"./model-roles.ts\";\nimport { parseAdapterFlags } from \"./adapter-flags.ts\";\nimport { decodeExperimentFlags } from \"./experiment/flags.ts\";\n// 定义入口:把用户对象规格化成核心认得的形状。路径即身份 —— 这里禁止手写 id,\n// 由发现阶段从文件路径推导(见 runner/discover.ts)。\nimport type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, EvalDefinitionFields, ExperimentDefinition, ExperimentInput, SharedStateConfig, SandboxCacheConfig, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext, JsonValue, } from \"./types.ts\";\nimport { normalizeJudgeSelection } from \"./runner/judge-config.ts\";\nimport { isJudgeProvider } from \"./judge/provider.ts\";\nimport { MigrationRequiredError, captureMigrationSource } from \"./error-assistance/index.ts\";\nimport { brandEvalDefinition, brandEvalGroupDefinition, brandExperimentDefinition, isEvalDefinition, } from \"./types.ts\";\nimport { customProviderSandbox, isSandboxLayer, sandboxLayerStateOf, type CustomProviderSandboxOptions, type SandboxLayer, } from \"./sandbox/layer.ts\";\nimport { Result, Schema } from \"effect\";\nimport { assertEvidenceCoverage } from \"./assertions/coverage.ts\";\nimport { effectAgentCallback, attachAgentEffects, authorCallbackEffect, type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition, } from \"./agents/agent-effects.ts\";\nimport { isPluginInstance, assertPluginOwner, type PluginInstance, type PluginOwner } from \"./plugin/contracts.ts\";\n/** Recognize only the retired flat configuration, without evaluating getters. */\nfunction normalizeDefinitionJudge(value: unknown, label: string) {\n if (!isJudgeProvider(value) && typeof value === \"object\" && value !== null && !Array.isArray(value)) {\n const prototype = Object.getPrototypeOf(value);\n const legacyKeys = [\"model\", \"baseUrl\", \"apiKeyEnv\", \"timeoutMs\", \"maxOutputTokens\"];\n if ((prototype === Object.prototype || prototype === null) && Reflect.ownKeys(value).every((key) => {\n const descriptor = Reflect.getOwnPropertyDescriptor(value, key);\n return typeof key === \"string\" && legacyKeys.includes(key) && descriptor !== undefined && \"value\" in descriptor;\n })) {\n throw new MigrationRequiredError({ occurrences: [{\n guideId: \"judge-provider\",\n subject: label.replace(\"() \", \".\"),\n source: captureMigrationSource(),\n }] });\n }\n }\n return normalizeJudgeSelection(value, label);\n}\n// 发现期必须区分 defineScoreEval 的真正产物与运行时手写 `{ evaluationKind: \"score\" }` 的裸对象。\n// WeakSet 是模块私有来源证明;Definition 本身另有 types.ts 的私有 symbol 品牌供类型层使用。\nconst definedScoreEvals = new WeakSet<object>();\n/** Define a closed set of real Eval definitions sharing one physical Sandbox. */\nexport function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition {\n if (!Array.isArray(input.evals) || input.evals.length === 0) {\n throw new TypeError(\"defineEvalGroup evals must be a non-empty array of defineEval()/defineScoreEval() definitions.\");\n }\n input.evals.forEach((member, index) => {\n if (!isEvalDefinition(member)) {\n throw new TypeError(`defineEvalGroup evals[${index}] must be the object returned by defineEval() or defineScoreEval().`);\n }\n });\n assertSandboxLayer(input.sandbox, \"defineEvalGroup\");\n if (input.onUnavailable !== \"stop-group\" && input.onUnavailable !== \"replace-sandbox\") {\n throw new TypeError(\"defineEvalGroup onUnavailable must be \\\"stop-group\\\" or \\\"replace-sandbox\\\".\");\n }\n const [first, ...rest] = input.evals;\n return brandEvalGroupDefinition({\n evals: Object.freeze([first, ...rest]),\n onUnavailable: input.onUnavailable,\n ...(input.sandbox ? { sandbox: input.sandbox } : {}),\n ...(input.plugins === undefined ? {} : { plugins: normalizePlugins(input.plugins, \"defineEvalGroup plugins\", \"group\") }),\n });\n}\n/** @internal 仅供 discoverEvals 验证 score 题型来源。 */\nexport function isDefinedScoreEval(value: object): boolean {\n return definedScoreEvals.has(value);\n}\nfunction assertAuthorLifecycleNames(def: object, owner: string): void {\n for (const [previous, current] of [[\"setup\", \"before\"], [\"teardown\", \"after\"]] as const) {\n if (Object.hasOwn(def, previous))\n throw new TypeError(`${owner}.${previous} is no longer supported; use ${current}.`);\n }\n}\n/** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */\nexport function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent {\n assertAuthorLifecycleNames(def, \"Agent\");\n if (!def.name)\n throw new Error(`defineSandboxAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineSandboxAgent\");\n if (def.ensure === undefined)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n const ensure = Array.isArray(def.ensure) ? def.ensure : [def.ensure];\n if (ensure.length === 0)\n throw new Error(`defineSandboxAgent requires an ensure declaration.`);\n if (def.sandbox !== undefined) {\n if (!isSandboxLayer(def.sandbox)) {\n throw new TypeError(\"defineSandboxAgent sandbox must be a SandboxLayer created by sandboxLayer().\");\n }\n if (sandboxLayerStateOf(def.sandbox).kind !== \"command-only\") {\n throw new TypeError(\"defineSandboxAgent sandbox must be command-only; an Agent cannot provide a Sandbox template.\");\n }\n }\n const agent: SandboxAgent = {\n name: def.name,\n kind: \"sandbox\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n ...(def.sandbox === undefined ? {} : { sandbox: def.sandbox }),\n ensure,\n installers: def.installers ?? [],\n before: def.before,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n after: def.after,\n };\n return attachAgentEffects(agent, {\n send: (input, context) => authorCallbackEffect(() => def.send(input, context)),\n before: def.before === undefined ? undefined : (sandbox, context) => authorCallbackEffect(() => def.before!(sandbox, context)),\n after: def.after === undefined ? undefined : (sandbox, context) => authorCallbackEffect(() => def.after!(sandbox, { ...context, sandbox })),\n });\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeSandboxAgent(def: Omit<SandboxAgentDef, \"send\" | \"before\" | \"after\"> & InternalSandboxAgentDefinition): SandboxAgent {\n const { send, before, after, ...publicDefinition } = def;\n const agent = defineSandboxAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(before === undefined ? {} : {\n before: effectAgentCallback(before, (_sandbox, context) => context.signal),\n }),\n ...(after === undefined ? {} : {\n after: effectAgentCallback(after, (_sandbox, context) => context.signal),\n }),\n });\n return attachAgentEffects(agent, {\n send,\n before,\n after,\n });\n}\n/** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */\nexport function defineAgent(def: DirectAgentDef): DirectAgent {\n assertAuthorLifecycleNames(def, \"Agent\");\n if (!def.name)\n throw new Error(`defineAgent requires name.`);\n assertEvidenceCoverage(def.evidenceCoverage, \"defineAgent\");\n const agent: DirectAgent = {\n name: def.name,\n kind: \"direct\",\n defineEval,\n defineScoreEval,\n evidenceCoverage: def.evidenceCoverage,\n before: def.before,\n tracing: def.tracing,\n spanMapper: def.spanMapper,\n send: def.send,\n classifySendFailure: def.classifySendFailure,\n after: def.after,\n };\n return attachAgentEffects(agent, {\n send: (input, context) => authorCallbackEffect(() => def.send(input, context)),\n before: def.before === undefined ? undefined : (_sandbox, context) => authorCallbackEffect(() => def.before!(context)),\n after: def.after === undefined ? undefined : (_sandbox, context) => authorCallbackEffect(() => def.after!(context)),\n });\n}\n/** @internal Creates a Promise facade while retaining a built-in Effect runtime. */\nexport function makeDirectAgent(def: Omit<DirectAgentDef, \"send\" | \"before\" | \"after\"> & InternalDirectAgentDefinition): DirectAgent {\n const { send, before, after, ...publicDefinition } = def;\n const agent = defineAgent({\n ...publicDefinition,\n send: effectAgentCallback(send, (_input, context) => context.signal),\n ...(before === undefined ? {} : {\n before: effectAgentCallback(before, (context) => context.signal),\n }),\n ...(after === undefined ? {} : {\n after: effectAgentCallback(after, (context) => context.signal),\n }),\n });\n return attachAgentEffects(agent, {\n send,\n before: before === undefined ? undefined : (_sandbox, context) => before(context),\n after: after === undefined ? undefined : (_sandbox, context) => after(context),\n });\n}\n/** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */\nexport function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<\"pass\", TestContext, Sandbox> {\n return defineEvalForContext(\"pass\", def);\n}\n/**\n * 计分制 eval:Fact verdict uses 与 Fact score uses 可以读取同一份证据;正常返回由 Runner\n * 自动关闭计分收集器。字段与 `defineEval` 同形,禁止提供 id,由发现期推导。\n */\nexport function defineScoreEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: ScoreEvalInput<Sandbox>): EvalDefinition<\"score\", ScoreTestContext, Sandbox> {\n return defineEvalForContext(\"score\", def);\n}\ntype EvalFactoryInput<Sandbox extends SandboxLayer | undefined> = Omit<EvalInput<Sandbox> | ScoreEvalInput<Sandbox>, \"test\"> & {\n readonly test: (...args: never[]) => ReturnType<EvalDefinition<\"pass\", unknown, Sandbox>[\"test\"]>;\n};\n/** @internal Shared normalization and provenance path for root and Adapter-bound Eval factories. */\n// @concord-code\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineEvalForContext<Kind extends \"pass\" | \"score\", Context, const Sandbox extends SandboxLayer | undefined = undefined>(kind: Kind, def: EvalFactoryInput<Sandbox>, internalFields: Readonly<Record<PropertyKey, unknown>> = {}): EvalDefinition<Kind, Context, Sandbox> {\n const factory = kind === \"pass\" ? \"defineEval\" : \"defineScoreEval\";\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`${factory} does not accept id; ids are derived from file paths.`);\n }\n if (Object.hasOwn(def, \"evaluationKind\")) {\n throw new Error(`${factory} does not accept evaluationKind; it is always set to ${JSON.stringify(kind)}.`);\n }\n if (Object.hasOwn(def, \"configHash\")) {\n throw new Error(`${factory} does not accept configHash; configHash is computed during run planning.`);\n }\n if (typeof def.test !== \"function\") {\n throw new Error(`${factory} requires an async test(t) function.`);\n }\n assertSandboxLayer(def.sandbox, factory);\n const result = brandEvalDefinition({\n ...normalizeEvalFields(def),\n ...internalFields,\n evaluationKind: kind,\n test: def.test,\n });\n if (kind === \"score\")\n definedScoreEvals.add(result);\n return result as EvalDefinition<Kind, Context, Sandbox>;\n}\n/** 实验:可签入的运行配置(怎么跑这批 eval)。 */\nexport function defineExperiment<const A extends Adapter>(def: ExperimentInput<A>): ExperimentDefinition<A>;\n// @concord-code\n// @concord-implements docs/feature/compile-time-contracts/use-case/three-levels.md\nexport function defineExperiment(def: Omit<ExperimentInput, \"flags\"> & {\n readonly flags?: unknown;\n}): ExperimentDefinition {\n rejectRemovedField(def, \"judgeRuntime\", \"Use judge.\");\n rejectRemovedField(def, \"classifyFailure\", \"Use built-in failure classification or ExperimentFatalError / EvalFatalError.\");\n rejectRemovedField(def, \"agent\", \"Use adapter to select the tested Agent or Adapter.\");\n if (Object.hasOwn(def, \"id\")) {\n throw new Error(`defineExperiment does not accept id; ids are derived from file paths.`);\n }\n if (def.adapter === undefined) {\n throw new Error(`defineExperiment requires adapter.`);\n }\n const adapter = def.adapter;\n if (adapter.kind !== \"custom\" && def.models !== undefined) {\n throw new TypeError(\"Experiment models is only supported by custom Adapters.\");\n }\n const models = adapter.kind === \"custom\" ? normalizeModelRoles(def) : undefined;\n if (adapter.kind === \"custom\")\n assertRequiredModelRoles(adapter.requiredModelRoles, models, `Adapter \"${adapter.name}\"`);\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineExperiment() judge\");\n assertSandboxLayer(def.sandbox, \"defineExperiment\");\n if (adapter.kind === \"custom\") {\n if (def.sandbox !== undefined || def.sandboxReuse === true || def.sandboxCache !== undefined) {\n throw new Error(`Custom Adapter experiments do not support sandbox, sandboxReuse, or sandboxCache.`);\n }\n if (def.budget !== undefined) {\n throw new Error(`Custom Adapter experiments do not support budget because Adapter usage is not collected.`);\n }\n }\n assertAuthorLifecycleNames(def, \"Experiment\");\n // before 是实验级生命周期钩子(整场一次,宿主机侧,见 runner/types.ts 的 ExperimentDef.before);\n // 传成非函数(如误把 sandbox 钩子对象塞进来)在解析时就报,不等到调度才炸。\n if (def.before !== undefined && typeof def.before !== \"function\") {\n throw new Error(`experiment.before must be a function ((ctx) => void); use experiment.after for cleanup; to prepare the in-sandbox environment per experiment, chain .before() hooks on the sandbox spec instead.`);\n }\n // teardown 与 setup 是同一个 Experiment lifecycle 边界。非函数值绝不能\n // 伪装成已声明的 cleanup,否则 explicit sharedState recovery 可能在没有\n // 执行补偿的情况下释放 immutable owner generation。\n if (def.after !== undefined && typeof def.after !== \"function\") {\n throw new Error(`Experiment after must be a function ((ctx) => void); use a function-valued paired lifecycle hook so normal cleanup and explicit sharedState recovery can both execute it.`);\n }\n // labels 是报告归类坐标(进 ExperimentRunInfo.labels,不透传 ctx/t):值域 string | number,\n // 解析时即校验,布尔 / 对象 / NaN 直接报错,不等到落盘或报告分组才炸。\n if (def.labels !== undefined) {\n for (const [key, value] of Object.entries(def.labels)) {\n const ok = typeof value === \"string\" || (typeof value === \"number\" && Number.isFinite(value));\n if (!ok)\n throw new Error(`experiment.labels.${key} must be a string or a finite number; labels are report-side grouping coordinates persisted verbatim into result runs.`);\n }\n }\n const sharedState = normalizeSharedState(def.sharedState);\n const sandboxCache = normalizeSandboxCache(def.sandboxCache, \"defineExperiment\");\n const { id: _derivedId, adapter: _adapter, sharedState: _sharedState, sandboxCache: _sandboxCache, models: _models, ...author } = def;\n const flags = decodeExperimentFlags(def.flags === undefined ? {} : def.flags);\n return brandExperimentDefinition({\n ...author,\n ...(models === undefined ? {} : {\n models,\n model: models.default?.model ?? undefined,\n reasoningEffort: models.default?.reasoningEffort ?? undefined,\n }),\n adapter,\n flags: adapter.kind === \"custom\" && adapter.parseFlags !== undefined\n ? parseAdapterFlags(adapter.parseFlags, flags)\n : flags,\n labels: Object.freeze({ ...(def.labels ?? {}) }),\n attempts: def.attempts ?? 1,\n earlyExit: def.earlyExit ?? false,\n evals: Array.isArray(def.evals) ? Object.freeze([...def.evals]) : (def.evals ?? \"*\"),\n sandboxReuse: def.sandboxReuse === true,\n ...(judge === undefined ? {} : { judge }),\n ...(sharedState === undefined ? {} : { sharedState }),\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n plugins: normalizePlugins(def.plugins ?? [], \"defineExperiment plugins\", \"experiment\"),\n });\n}\nfunction normalizeSandboxCache(value: unknown, factory: \"defineConfig\" | \"defineExperiment\"): SandboxCacheConfig | undefined {\n if (value === undefined)\n return undefined;\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional before \"use\" or \"bypass\".`);\n }\n if (Object.hasOwn(value, \"setup\"))\n throw new TypeError(`${factory} sandboxCache.setup is no longer supported. Use sandboxCache.before.`);\n const keys = Object.keys(value);\n const before = Reflect.get(value, \"before\");\n if (keys.some((key) => key !== \"before\") ||\n (before !== undefined && before !== \"use\" && before !== \"bypass\")) {\n throw new TypeError(`${factory} sandboxCache must be an object with optional before \"use\" or \"bypass\".`);\n }\n return Object.freeze(before === undefined ? {} : { before });\n}\nconst SharedStateKeyPattern = /^[a-z0-9][a-z0-9._/-]{0,127}$/u;\nfunction normalizeSharedState(value: unknown): SharedStateConfig | undefined {\n if (value === undefined)\n return undefined;\n const candidate = value as {\n key?: unknown;\n };\n if (typeof value !== \"object\" ||\n value === null ||\n Array.isArray(value) ||\n !Object.hasOwn(value, \"key\") ||\n Object.keys(value).length !== 1 ||\n typeof candidate.key !== \"string\" ||\n !SharedStateKeyPattern.test(candidate.key)) {\n throw new TypeError(`experiment.sharedState must be exactly { key }, where key is a stable, non-secret string matching [a-z0-9][a-z0-9._/-]{0,127}.`);\n }\n return Object.freeze({ key: candidate.key });\n}\nfunction normalizeEvalFields<const Sandbox extends SandboxLayer | undefined>(def: EvalInput<Sandbox> | ScoreEvalInput<Sandbox>): EvalDefinitionFields<Sandbox> {\n rejectRemovedField(def, \"reporters\", \"Use Config.reporters for project-level reporting.\");\n const judge = def.judge === undefined\n ? undefined\n : normalizeDefinitionJudge(def.judge, \"defineEval() judge\");\n return {\n ...(def.description !== undefined ? { description: def.description } : {}),\n tags: Object.freeze([...(def.tags ?? [])]),\n ...(def.sandbox !== undefined ? { sandbox: def.sandbox } : {}),\n plugins: normalizePlugins(def.plugins ?? [], \"defineEval plugins\", \"eval\"),\n ...(judge !== undefined ? { judge } : {}),\n ...(def.timeoutMs !== undefined ? { timeoutMs: def.timeoutMs } : {}),\n metadata: decodeJsonRecord(def.metadata ?? {}, \"Eval metadata\"),\n diff: Object.freeze({\n include: Object.freeze([...(def.diff?.include ?? [])]),\n ignore: Object.freeze([...(def.diff?.ignore ?? [])]),\n }),\n };\n}\n// @concord-code\n// @concord-implements docs/feature/plugins/library.md\nfunction normalizePlugins<Owner extends PluginOwner>(value: readonly PluginInstance<Owner>[], label: string, owner: Owner): readonly PluginInstance<Owner>[] {\n if (!Array.isArray(value))\n throw new TypeError(`${label} must be an array.`);\n return Object.freeze(value.map((plugin, index) => {\n if (!isPluginInstance(plugin))\n throw new TypeError(`${label}[${index}] must be created by definePlugin().`);\n assertPluginOwner(plugin, owner, `${label}[${index}]`);\n return plugin;\n }));\n}\nfunction isJsonValue(value: unknown): value is JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\")\n return true;\n if (typeof value === \"number\")\n return Number.isFinite(value);\n if (Array.isArray(value))\n return value.every(isJsonValue);\n if (typeof value !== \"object\")\n return false;\n return Object.values(value).every(isJsonValue);\n}\nconst JsonValueSchema = Schema.declare<JsonValue>(isJsonValue);\nconst JsonRecordSchema = Schema.Record(Schema.String, JsonValueSchema);\nfunction deepFreezeJson(value: JsonValue): JsonValue {\n if (Array.isArray(value)) {\n const items: JsonValue[] = value.map(deepFreezeJson);\n Object.freeze(items);\n return items;\n }\n if (value !== null && typeof value === \"object\") {\n const record: globalThis.Record<string, JsonValue> = Object.fromEntries(Object.entries(value).map(([key, child]) => [key, deepFreezeJson(child)]));\n Object.freeze(record);\n return record;\n }\n return value;\n}\nfunction decodeJsonRecord(value: unknown, label: string): Readonly<globalThis.Record<string, JsonValue>> {\n const decoded = Schema.decodeUnknownResult(JsonRecordSchema, { errors: \"all\" })(value);\n if (Result.isFailure(decoded))\n throw new TypeError(`${label} must be JSON-compatible: ${String(decoded.failure)}`);\n return Object.freeze(Object.fromEntries(Object.entries(decoded.success).map(([key, child]) => [key, deepFreezeJson(child)])));\n}\n/**\n * `SandboxLayer` 的品牌只由 `niceeval/sandbox` 工厂写入。动态 TSX/JS 调用绕过静态类型时,\n * 不接受看似相同的裸对象,以免在 linker 阶段才得到难以定位的错误。\n */\nfunction assertSandboxLayer(value: unknown, factory: string): void {\n if (value !== undefined && !isSandboxLayer(value)) {\n throw new TypeError(`${factory} sandbox must be a SandboxLayer created by a niceeval/sandbox factory (for example dockerSandbox(), dockerComposeSandbox(), e2bSandbox(), or vercelSandbox()).`);\n }\n}\n/** 项目级配置。 */\nexport function defineConfig(config: Config): Config {\n rejectRemovedField(config, \"judgeRuntime\", \"Use judgeProvider.\");\n rejectRemovedField(config, \"maxSetupPrefixConcurrency\", \"Use maxBeforeCacheConcurrency.\");\n rejectRemovedField(config, \"workspace\", \"Use the project directory as the working directory.\");\n const sandboxCache = normalizeSandboxCache(config.sandboxCache, \"defineConfig\");\n const judgeProvider = config.judgeProvider === undefined\n ? undefined\n : normalizeDefinitionJudge(config.judgeProvider, \"defineConfig() judgeProvider\");\n if (judgeProvider !== undefined && !isJudgeProvider(judgeProvider)) {\n throw new TypeError(\"defineConfig() judgeProvider must be a Judge Provider created by niceeval/judge\");\n }\n return Object.freeze({\n ...config,\n ...(sandboxCache === undefined ? {} : { sandboxCache }),\n ...(judgeProvider === undefined ? {} : { judgeProvider }),\n });\n}\n/**\n * 自定义沙箱 provider:`create` 直接返回一个实现 `Sandbox` 接口的实例,不需要 niceeval 内置支持\n * 这个 provider 名字。用于接入 docker/vercel/e2b 之外的运行环境(自建 VM、Modal、Fly 等)。\n */\nexport function defineSandbox(def: CustomProviderSandboxOptions): SandboxLayer<\"template-bearing\"> {\n return customProviderSandbox(def);\n}\nfunction rejectRemovedField(value: object, field: string, replacement: string): void {\n if (Object.hasOwn(value, field))\n throw new TypeError(`${field} is no longer supported. ${replacement}`);\n}\n"]}
package/dist/define.d.cts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Adapter } from "./adapter.cjs";
2
2
  import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.cjs";
3
3
  import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.cjs";
4
- import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/effect-runtime.cjs";
4
+ import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.cjs";
5
5
  /** Define a closed set of real Eval definitions sharing one physical Sandbox. */
6
6
  export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
7
7
  /** @internal 仅供 discoverEvals 验证 score 题型来源。 */
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
9
9
  /** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
10
10
  export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
11
11
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
12
- export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "setup" | "teardown"> & InternalSandboxAgentDefinition): SandboxAgent;
12
+ export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
13
13
  /** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
14
14
  export declare function defineAgent(def: DirectAgentDef): DirectAgent;
15
15
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
16
- export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "setup" | "teardown"> & InternalDirectAgentDefinition): DirectAgent;
16
+ export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
17
17
  /** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
18
18
  export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
19
19
  /**
package/dist/define.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Adapter } from "./adapter.mjs";
2
2
  import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.mjs";
3
3
  import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.mjs";
4
- import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/effect-runtime.mjs";
4
+ import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.mjs";
5
5
  /** Define a closed set of real Eval definitions sharing one physical Sandbox. */
6
6
  export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
7
7
  /** @internal 仅供 discoverEvals 验证 score 题型来源。 */
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
9
9
  /** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
10
10
  export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
11
11
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
12
- export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "setup" | "teardown"> & InternalSandboxAgentDefinition): SandboxAgent;
12
+ export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
13
13
  /** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
14
14
  export declare function defineAgent(def: DirectAgentDef): DirectAgent;
15
15
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
16
- export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "setup" | "teardown"> & InternalDirectAgentDefinition): DirectAgent;
16
+ export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
17
17
  /** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
18
18
  export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
19
19
  /**
package/dist/define.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { Adapter } from "./adapter.js";
2
2
  import type { DirectAgent, DirectAgentDef, Config, EvalInput, EvalGroupDefinition, EvalGroupInput, EvalDefinition, ExperimentDefinition, ExperimentInput, SandboxAgent, SandboxAgentDef, ScoreEvalInput, ScoreTestContext, TestContext } from "./types.js";
3
3
  import { type CustomProviderSandboxOptions, type SandboxLayer } from "./sandbox/layer.js";
4
- import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/effect-runtime.js";
4
+ import { type InternalDirectAgentDefinition, type InternalSandboxAgentDefinition } from "./agents/agent-effects.js";
5
5
  /** Define a closed set of real Eval definitions sharing one physical Sandbox. */
6
6
  export declare function defineEvalGroup<const Sandbox extends SandboxLayer | undefined>(input: EvalGroupInput<Sandbox>): EvalGroupDefinition;
7
7
  /** @internal 仅供 discoverEvals 验证 score 题型来源。 */
@@ -9,11 +9,11 @@ export declare function isDefinedScoreEval(value: object): boolean;
9
9
  /** 沙箱型 agent:在沙箱里 spawn 一个 coding agent 的 CLI,跑完读回 transcript。 */
10
10
  export declare function defineSandboxAgent(def: SandboxAgentDef): SandboxAgent;
11
11
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
12
- export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "setup" | "teardown"> & InternalSandboxAgentDefinition): SandboxAgent;
12
+ export declare function makeSandboxAgent(def: Omit<SandboxAgentDef, "send" | "before" | "after"> & InternalSandboxAgentDefinition): SandboxAgent;
13
13
  /** Direct Agent:在 send 里直接驱动函数、SDK 或服务端点。 */
14
14
  export declare function defineAgent(def: DirectAgentDef): DirectAgent;
15
15
  /** @internal Creates a Promise facade while retaining a built-in Effect runtime. */
16
- export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "setup" | "teardown"> & InternalDirectAgentDefinition): DirectAgent;
16
+ export declare function makeDirectAgent(def: Omit<DirectAgentDef, "send" | "before" | "after"> & InternalDirectAgentDefinition): DirectAgent;
17
17
  /** 会话型 eval(通过制:一个 eval 折叠成一分)。禁止提供 id —— 从路径推导。 */
18
18
  export declare function defineEval<const Sandbox extends SandboxLayer | undefined = undefined>(def: EvalInput<Sandbox>): EvalDefinition<"pass", TestContext, Sandbox>;
19
19
  /**