niceeval 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (679) hide show
  1. package/INDEX.md +4 -2
  2. package/dist/adapter-usage.cjs.map +1 -1
  3. package/dist/adapter-usage.d.cts +1 -1
  4. package/dist/adapter-usage.d.mts +1 -1
  5. package/dist/adapter-usage.d.ts +1 -1
  6. package/dist/adapter.cjs +8 -7
  7. package/dist/adapter.cjs.map +1 -1
  8. package/dist/adapter.d.cts +21 -21
  9. package/dist/adapter.d.mts +21 -21
  10. package/dist/adapter.d.ts +21 -21
  11. package/dist/agents/{effect-runtime.cjs → agent-effects.cjs} +12 -18
  12. package/dist/agents/agent-effects.cjs.map +1 -0
  13. package/dist/agents/agent-effects.d.cts +23 -0
  14. package/dist/agents/agent-effects.d.mts +23 -0
  15. package/dist/agents/agent-effects.d.ts +23 -0
  16. package/dist/agents/agent-effects.js +16 -0
  17. package/dist/agents/agent-effects.js.map +1 -0
  18. package/dist/agents/ai-sdk.cjs +1 -1
  19. package/dist/agents/ai-sdk.cjs.map +1 -1
  20. package/dist/agents/bub.cjs +31 -18
  21. package/dist/agents/bub.cjs.map +1 -1
  22. package/dist/agents/bub.d.cts +9 -12
  23. package/dist/agents/bub.d.mts +9 -12
  24. package/dist/agents/bub.d.ts +9 -12
  25. package/dist/agents/claude-code-native.cjs +2 -2
  26. package/dist/agents/claude-code-native.cjs.map +1 -1
  27. package/dist/agents/claude-code.cjs +17 -11
  28. package/dist/agents/claude-code.cjs.map +1 -1
  29. package/dist/agents/claude-code.d.cts +11 -11
  30. package/dist/agents/claude-code.d.mts +11 -11
  31. package/dist/agents/claude-code.d.ts +11 -11
  32. package/dist/agents/codex-app-server.cjs +2 -2
  33. package/dist/agents/codex-app-server.cjs.map +1 -1
  34. package/dist/agents/codex.cjs +18 -12
  35. package/dist/agents/codex.cjs.map +1 -1
  36. package/dist/agents/codex.d.cts +12 -12
  37. package/dist/agents/codex.d.mts +12 -12
  38. package/dist/agents/codex.d.ts +12 -12
  39. package/dist/agents/deepseek-harness.cjs +2 -2
  40. package/dist/agents/deepseek-harness.cjs.map +1 -1
  41. package/dist/agents/hermes.cjs +3 -3
  42. package/dist/agents/hermes.cjs.map +1 -1
  43. package/dist/agents/index.cjs +3 -3
  44. package/dist/agents/index.cjs.map +1 -1
  45. package/dist/agents/index.d.cts +3 -3
  46. package/dist/agents/index.d.mts +3 -3
  47. package/dist/agents/index.d.ts +3 -3
  48. package/dist/agents/index.js +2 -2
  49. package/dist/agents/index.mjs +2 -2
  50. package/dist/agents/mcp.cjs.map +1 -1
  51. package/dist/agents/mcp.d.cts +2 -2
  52. package/dist/agents/mcp.d.mts +2 -2
  53. package/dist/agents/mcp.d.ts +2 -2
  54. package/dist/agents/omp.cjs +2 -2
  55. package/dist/agents/omp.cjs.map +1 -1
  56. package/dist/agents/openai-compat.cjs +2 -2
  57. package/dist/agents/openai-compat.cjs.map +1 -1
  58. package/dist/agents/openclaw.cjs +3 -3
  59. package/dist/agents/openclaw.cjs.map +1 -1
  60. package/dist/agents/opencode.cjs +16 -4
  61. package/dist/agents/opencode.cjs.map +1 -1
  62. package/dist/agents/plugin-extensions.cjs +71 -0
  63. package/dist/agents/plugin-extensions.cjs.map +1 -0
  64. package/dist/agents/plugin-extensions.d.cts +26 -0
  65. package/dist/agents/plugin-extensions.d.mts +26 -0
  66. package/dist/agents/plugin-extensions.d.ts +26 -0
  67. package/dist/agents/plugin-extensions.js +8 -0
  68. package/dist/agents/plugin-extensions.js.map +1 -0
  69. package/dist/agents/post-setup.cjs +14 -3
  70. package/dist/agents/post-setup.cjs.map +1 -1
  71. package/dist/agents/post-setup.d.cts +4 -2
  72. package/dist/agents/post-setup.d.mts +4 -2
  73. package/dist/agents/post-setup.d.ts +4 -2
  74. package/dist/agents/post-setup.js +8 -6
  75. package/dist/agents/sdk-streams.cjs +3 -3
  76. package/dist/agents/sdk-streams.cjs.map +1 -1
  77. package/dist/agents/{session-slot.cjs → session-key.cjs} +4 -4
  78. package/dist/agents/session-key.cjs.map +1 -0
  79. package/dist/agents/session-key.d.cts +12 -0
  80. package/dist/agents/session-key.d.mts +12 -0
  81. package/dist/agents/session-key.d.ts +12 -0
  82. package/dist/agents/session-key.js +6 -0
  83. package/dist/agents/session-key.js.map +1 -0
  84. package/dist/agents/shared.cjs +2 -2
  85. package/dist/agents/shared.cjs.map +1 -1
  86. package/dist/agents/shared.d.cts +4 -4
  87. package/dist/agents/shared.d.mts +4 -4
  88. package/dist/agents/shared.d.ts +4 -4
  89. package/dist/agents/skills.cjs.map +1 -1
  90. package/dist/agents/skills.d.cts +3 -3
  91. package/dist/agents/skills.d.mts +3 -3
  92. package/dist/agents/skills.d.ts +3 -3
  93. package/dist/agents/types.cjs.map +1 -1
  94. package/dist/agents/types.d.cts +55 -54
  95. package/dist/agents/types.d.mts +55 -54
  96. package/dist/agents/types.d.ts +55 -54
  97. package/dist/agents/ui-message-stream.cjs +4 -4
  98. package/dist/agents/ui-message-stream.cjs.map +1 -1
  99. package/dist/agents/unrecognized-events.cjs +32 -0
  100. package/dist/agents/unrecognized-events.cjs.map +1 -0
  101. package/dist/agents/unrecognized-events.d.cts +8 -0
  102. package/dist/agents/unrecognized-events.d.mts +8 -0
  103. package/dist/agents/unrecognized-events.d.ts +8 -0
  104. package/dist/agents/unrecognized-events.js +6 -0
  105. package/dist/agents/unrecognized-events.js.map +1 -0
  106. package/dist/assertions/api.cjs.map +1 -1
  107. package/dist/assertions/api.d.cts +3 -0
  108. package/dist/assertions/api.d.mts +3 -0
  109. package/dist/assertions/api.d.ts +3 -0
  110. package/dist/assertions/collection.cjs +1 -1
  111. package/dist/assertions/collection.cjs.map +1 -1
  112. package/dist/assertions/judge.cjs +1 -1
  113. package/dist/assertions/judge.cjs.map +1 -1
  114. package/dist/assertions/match.cjs +52 -21
  115. package/dist/assertions/match.cjs.map +1 -1
  116. package/dist/assertions/match.d.cts +16 -5
  117. package/dist/assertions/match.d.mts +16 -5
  118. package/dist/assertions/match.d.ts +16 -5
  119. package/dist/assertions/match.js +96 -94
  120. package/dist/assertions/measurements.cjs +22 -6
  121. package/dist/assertions/measurements.cjs.map +1 -1
  122. package/dist/assertions/measurements.d.cts +8 -1
  123. package/dist/assertions/measurements.d.mts +8 -1
  124. package/dist/assertions/measurements.d.ts +8 -1
  125. package/dist/assertions/numeric.cjs +2 -0
  126. package/dist/assertions/numeric.cjs.map +1 -1
  127. package/dist/assertions/numeric.d.cts +1 -1
  128. package/dist/assertions/numeric.d.mts +1 -1
  129. package/dist/assertions/numeric.d.ts +1 -1
  130. package/dist/assertions/quantity.cjs +42 -0
  131. package/dist/assertions/quantity.cjs.map +1 -0
  132. package/dist/assertions/quantity.d.cts +18 -0
  133. package/dist/assertions/quantity.d.mts +18 -0
  134. package/dist/assertions/quantity.d.ts +18 -0
  135. package/dist/assertions/quantity.js +22 -0
  136. package/dist/assertions/quantity.js.map +1 -0
  137. package/dist/assertions/record/attachment.cjs +2 -0
  138. package/dist/assertions/record/attachment.cjs.map +1 -1
  139. package/dist/assertions/record/codec.cjs +5 -1
  140. package/dist/assertions/record/codec.cjs.map +1 -1
  141. package/dist/assertions/record/model.cjs.map +1 -1
  142. package/dist/assertions/record/model.d.cts +3 -1
  143. package/dist/assertions/record/model.d.mts +3 -1
  144. package/dist/assertions/record/model.d.ts +3 -1
  145. package/dist/assertions/runtime.cjs +11 -6
  146. package/dist/assertions/runtime.cjs.map +1 -1
  147. package/dist/cli/program.cjs +3 -0
  148. package/dist/cli/program.cjs.map +1 -1
  149. package/dist/context/assert-first.cjs +6 -4
  150. package/dist/context/assert-first.cjs.map +1 -1
  151. package/dist/context/assert-first.d.cts +9 -3
  152. package/dist/context/assert-first.d.mts +9 -3
  153. package/dist/context/assert-first.d.ts +9 -3
  154. package/dist/context/notes.cjs +47 -0
  155. package/dist/context/notes.cjs.map +1 -0
  156. package/dist/context/notes.d.cts +10 -0
  157. package/dist/context/notes.d.mts +10 -0
  158. package/dist/context/notes.d.ts +10 -0
  159. package/dist/context/notes.js +6 -0
  160. package/dist/context/notes.js.map +1 -0
  161. package/dist/context/send-failures.cjs +1 -7
  162. package/dist/context/send-failures.cjs.map +1 -1
  163. package/dist/context/send-failures.d.cts +2 -3
  164. package/dist/context/send-failures.d.mts +2 -3
  165. package/dist/context/send-failures.d.ts +2 -3
  166. package/dist/context/send-retry.cjs +0 -1
  167. package/dist/context/send-retry.cjs.map +1 -1
  168. package/dist/context/send-retry.d.cts +1 -2
  169. package/dist/context/send-retry.d.mts +1 -2
  170. package/dist/context/send-retry.d.ts +1 -2
  171. package/dist/context/session.cjs +10 -17
  172. package/dist/context/session.cjs.map +1 -1
  173. package/dist/context/session.d.cts +4 -10
  174. package/dist/context/session.d.mts +4 -10
  175. package/dist/context/session.d.ts +4 -10
  176. package/dist/define.cjs +88 -65
  177. package/dist/define.cjs.map +1 -1
  178. package/dist/define.d.cts +3 -3
  179. package/dist/define.d.mts +3 -3
  180. package/dist/define.d.ts +3 -3
  181. package/dist/eval/cli/contribution.cjs +1 -1
  182. package/dist/eval/cli/contribution.cjs.map +1 -1
  183. package/dist/eval/host/index.cjs +1 -1
  184. package/dist/eval/host/index.cjs.map +1 -1
  185. package/dist/eval/record/evaluation.cjs +1 -1
  186. package/dist/eval/record/evaluation.cjs.map +1 -1
  187. package/dist/eval/record/membership-provenance.d.cts +3 -3
  188. package/dist/eval/record/membership-provenance.d.mts +3 -3
  189. package/dist/eval/record/membership-provenance.d.ts +3 -3
  190. package/dist/eval/record/score.cjs +2 -2
  191. package/dist/eval/record/score.cjs.map +1 -1
  192. package/dist/eval/record/sealed-assertion.cjs +1 -1
  193. package/dist/eval/record/sealed-assertion.cjs.map +1 -1
  194. package/dist/eval/record/verdict.cjs +2 -2
  195. package/dist/eval/record/verdict.cjs.map +1 -1
  196. package/dist/expect/index.cjs +10 -1
  197. package/dist/expect/index.cjs.map +1 -1
  198. package/dist/expect/index.d.cts +3 -1
  199. package/dist/expect/index.d.mts +3 -1
  200. package/dist/expect/index.d.ts +3 -1
  201. package/dist/expect/index.js +92 -76
  202. package/dist/expect/index.mjs +92 -76
  203. package/dist/experiment/host/cli/contribution.cjs +52 -39
  204. package/dist/experiment/host/cli/contribution.cjs.map +1 -1
  205. package/dist/experiment/host/cli/contribution.d.cts +18 -4
  206. package/dist/experiment/host/cli/contribution.d.mts +18 -4
  207. package/dist/experiment/host/cli/contribution.d.ts +18 -4
  208. package/dist/experiment/host/cli/contribution.js +2 -2
  209. package/dist/experiment/host/cli/debug-protocol.cjs +2 -2
  210. package/dist/experiment/host/cli/debug-protocol.cjs.map +1 -1
  211. package/dist/experiment/host/cli/debug-protocol.d.cts +2 -2
  212. package/dist/experiment/host/cli/debug-protocol.d.mts +2 -2
  213. package/dist/experiment/host/cli/debug-protocol.d.ts +2 -2
  214. package/dist/experiment/host/cli/output-protocol.cjs +1 -1
  215. package/dist/experiment/host/cli/output-protocol.cjs.map +1 -1
  216. package/dist/experiment/host/cli/output-protocol.d.cts +2 -2
  217. package/dist/experiment/host/cli/output-protocol.d.mts +2 -2
  218. package/dist/experiment/host/cli/output-protocol.d.ts +2 -2
  219. package/dist/experiment/host/current.cjs +2 -2
  220. package/dist/experiment/host/current.cjs.map +1 -1
  221. package/dist/experiment/host/index.cjs +1 -1
  222. package/dist/experiment/host/index.cjs.map +1 -1
  223. package/dist/experiment/host/operations.cjs +21 -22
  224. package/dist/experiment/host/operations.cjs.map +1 -1
  225. package/dist/experiment/host/runtime.cjs +8 -9
  226. package/dist/experiment/host/runtime.cjs.map +1 -1
  227. package/dist/experiment/host/runtime.d.cts +3 -3
  228. package/dist/experiment/host/runtime.d.mts +3 -3
  229. package/dist/experiment/host/runtime.d.ts +3 -3
  230. package/dist/experiment/host/teardown.cjs +3 -3
  231. package/dist/experiment/host/teardown.cjs.map +1 -1
  232. package/dist/experiment/host/teardown.d.cts +3 -3
  233. package/dist/experiment/host/teardown.d.mts +3 -3
  234. package/dist/experiment/host/teardown.d.ts +3 -3
  235. package/dist/experiment/host/types.cjs.map +1 -1
  236. package/dist/experiment/host/types.d.cts +19 -19
  237. package/dist/experiment/host/types.d.mts +19 -19
  238. package/dist/experiment/host/types.d.ts +19 -19
  239. package/dist/index.cjs +3 -3
  240. package/dist/index.cjs.map +1 -1
  241. package/dist/index.d.cts +3 -3
  242. package/dist/index.d.mts +3 -3
  243. package/dist/index.d.ts +3 -3
  244. package/dist/index.js +2 -2
  245. package/dist/index.mjs +2 -2
  246. package/dist/inspection/assertions.cjs +1 -1
  247. package/dist/inspection/assertions.cjs.map +1 -1
  248. package/dist/inspection/cli/contribution.cjs +8 -7
  249. package/dist/inspection/cli/contribution.cjs.map +1 -1
  250. package/dist/inspection/facts.cjs +4 -4
  251. package/dist/inspection/facts.cjs.map +1 -1
  252. package/dist/inspection/index.cjs +1 -5
  253. package/dist/inspection/index.cjs.map +1 -1
  254. package/dist/inspection/index.d.cts +1 -2
  255. package/dist/inspection/index.d.mts +1 -2
  256. package/dist/inspection/index.d.ts +1 -2
  257. package/dist/inspection/index.js +20 -26
  258. package/dist/inspection/lifecycle.cjs +7 -0
  259. package/dist/inspection/lifecycle.cjs.map +1 -0
  260. package/dist/inspection/lifecycle.d.cts +4 -0
  261. package/dist/inspection/lifecycle.d.mts +4 -0
  262. package/dist/inspection/lifecycle.d.ts +4 -0
  263. package/dist/inspection/lifecycle.js +6 -0
  264. package/dist/inspection/lifecycle.js.map +1 -0
  265. package/dist/inspection/notes.cjs +40 -0
  266. package/dist/inspection/notes.cjs.map +1 -0
  267. package/dist/inspection/notes.d.cts +12 -0
  268. package/dist/inspection/notes.d.mts +12 -0
  269. package/dist/inspection/notes.d.ts +12 -0
  270. package/dist/inspection/notes.js +8 -0
  271. package/dist/inspection/notes.js.map +1 -0
  272. package/dist/inspection/overview.cjs +12 -15
  273. package/dist/inspection/overview.cjs.map +1 -1
  274. package/dist/inspection/overview.d.cts +8 -6
  275. package/dist/inspection/overview.d.mts +8 -6
  276. package/dist/inspection/overview.d.ts +8 -6
  277. package/dist/inspection/planned-attempt.cjs +45 -0
  278. package/dist/inspection/planned-attempt.cjs.map +1 -0
  279. package/dist/inspection/planned-attempt.d.cts +109 -0
  280. package/dist/inspection/planned-attempt.d.mts +109 -0
  281. package/dist/inspection/planned-attempt.d.ts +109 -0
  282. package/dist/inspection/planned-attempt.js +24 -0
  283. package/dist/inspection/planned-attempt.js.map +1 -0
  284. package/dist/inspection/project-result.cjs +5 -5
  285. package/dist/inspection/project-result.cjs.map +1 -1
  286. package/dist/inspection/project-result.d.cts +58 -57
  287. package/dist/inspection/project-result.d.mts +58 -57
  288. package/dist/inspection/project-result.d.ts +58 -57
  289. package/dist/inspection/project-result.js +4 -4
  290. package/dist/inspection/project.cjs +3 -3
  291. package/dist/inspection/project.cjs.map +1 -1
  292. package/dist/inspection/protocol-values.cjs +1 -1
  293. package/dist/inspection/protocol-values.cjs.map +1 -1
  294. package/dist/inspection/protocol-values.d.cts +1 -1
  295. package/dist/inspection/protocol-values.d.mts +1 -1
  296. package/dist/inspection/protocol-values.d.ts +1 -1
  297. package/dist/inspection/protocol.cjs +8 -8
  298. package/dist/inspection/protocol.cjs.map +1 -1
  299. package/dist/inspection/protocol.d.cts +237 -219
  300. package/dist/inspection/protocol.d.mts +237 -219
  301. package/dist/inspection/protocol.d.ts +237 -219
  302. package/dist/inspection/public.cjs +1 -5
  303. package/dist/inspection/public.cjs.map +1 -1
  304. package/dist/inspection/public.d.cts +1 -2
  305. package/dist/inspection/public.d.mts +1 -2
  306. package/dist/inspection/public.d.ts +1 -2
  307. package/dist/inspection/public.js +14 -20
  308. package/dist/inspection/public.mjs +166 -129
  309. package/dist/inspection/query.cjs +1 -1
  310. package/dist/inspection/query.cjs.map +1 -1
  311. package/dist/inspection/results.cjs +61 -52
  312. package/dist/inspection/results.cjs.map +1 -1
  313. package/dist/inspection/results.d.cts +157 -140
  314. package/dist/inspection/results.d.mts +157 -140
  315. package/dist/inspection/results.d.ts +157 -140
  316. package/dist/inspection/select.cjs +33 -28
  317. package/dist/inspection/select.cjs.map +1 -1
  318. package/dist/inspection/source.cjs +1 -1
  319. package/dist/inspection/source.cjs.map +1 -1
  320. package/dist/inspection/sources.cjs +2 -2
  321. package/dist/inspection/sources.cjs.map +1 -1
  322. package/dist/inspection/trace.cjs +9 -8
  323. package/dist/inspection/trace.cjs.map +1 -1
  324. package/dist/inspection/trace.d.cts +4 -4
  325. package/dist/inspection/trace.d.mts +4 -4
  326. package/dist/inspection/trace.d.ts +4 -4
  327. package/dist/loaders/index.cjs +7 -279
  328. package/dist/loaders/index.cjs.map +1 -1
  329. package/dist/loaders/index.d.cts +2 -95
  330. package/dist/loaders/index.d.mts +2 -95
  331. package/dist/loaders/index.d.ts +2 -95
  332. package/dist/loaders/index.js +10 -12
  333. package/dist/loaders/index.mjs +10 -12
  334. package/dist/loaders/runtime.cjs +283 -0
  335. package/dist/loaders/runtime.cjs.map +1 -0
  336. package/dist/loaders/runtime.d.cts +95 -0
  337. package/dist/loaders/runtime.d.mts +95 -0
  338. package/dist/loaders/runtime.d.ts +95 -0
  339. package/dist/loaders/runtime.js +16 -0
  340. package/dist/loaders/runtime.js.map +1 -0
  341. package/dist/migrations/judge-provider.md +6 -6
  342. package/dist/{model-slots.cjs → model-roles.cjs} +12 -12
  343. package/dist/{model-slots.cjs.map → model-roles.cjs.map} +1 -1
  344. package/dist/{model-slots.d.cts → model-roles.d.cts} +10 -10
  345. package/dist/{model-slots.d.mts → model-roles.d.mts} +10 -10
  346. package/dist/{model-slots.d.ts → model-roles.d.ts} +10 -10
  347. package/dist/model-roles.js +14 -0
  348. package/dist/model-roles.js.map +1 -0
  349. package/dist/o11y/adapter-usage-projection.cjs +9 -8
  350. package/dist/o11y/adapter-usage-projection.cjs.map +1 -1
  351. package/dist/o11y/adapter-usage-projection.d.cts +23 -15
  352. package/dist/o11y/adapter-usage-projection.d.mts +23 -15
  353. package/dist/o11y/adapter-usage-projection.d.ts +23 -15
  354. package/dist/o11y/cache-read.cjs +14 -14
  355. package/dist/o11y/cache-read.cjs.map +1 -1
  356. package/dist/o11y/cache-read.d.cts +5 -5
  357. package/dist/o11y/cache-read.d.mts +5 -5
  358. package/dist/o11y/cache-read.d.ts +5 -5
  359. package/dist/o11y/derive.cjs.map +1 -1
  360. package/dist/o11y/derive.d.cts +2 -2
  361. package/dist/o11y/derive.d.mts +2 -2
  362. package/dist/o11y/derive.d.ts +2 -2
  363. package/dist/o11y/eval-usage.cjs +9 -9
  364. package/dist/o11y/eval-usage.cjs.map +1 -1
  365. package/dist/o11y/eval-usage.d.cts +7 -7
  366. package/dist/o11y/eval-usage.d.mts +7 -7
  367. package/dist/o11y/eval-usage.d.ts +7 -7
  368. package/dist/o11y/parsers/bub.cjs +57 -81
  369. package/dist/o11y/parsers/bub.cjs.map +1 -1
  370. package/dist/o11y/parsers/index.cjs.map +1 -1
  371. package/dist/o11y/parsers/index.d.cts +2 -0
  372. package/dist/o11y/parsers/index.d.mts +2 -0
  373. package/dist/o11y/parsers/index.d.ts +2 -0
  374. package/dist/o11y/parsers/opencode.cjs +129 -217
  375. package/dist/o11y/parsers/opencode.cjs.map +1 -1
  376. package/dist/o11y/parsers/opencode.d.cts +2 -5
  377. package/dist/o11y/parsers/opencode.d.mts +2 -5
  378. package/dist/o11y/parsers/opencode.d.ts +2 -5
  379. package/dist/o11y/types.cjs.map +1 -1
  380. package/dist/o11y/types.d.cts +1 -1
  381. package/dist/o11y/types.d.mts +1 -1
  382. package/dist/o11y/types.d.ts +1 -1
  383. package/dist/plugin/contracts.cjs +170 -120
  384. package/dist/plugin/contracts.cjs.map +1 -1
  385. package/dist/plugin/contracts.d.cts +102 -90
  386. package/dist/plugin/contracts.d.mts +102 -90
  387. package/dist/plugin/contracts.d.ts +102 -90
  388. package/dist/plugin/contracts.js +16 -12
  389. package/dist/plugin/index.cjs.map +1 -1
  390. package/dist/plugin/index.d.cts +1 -1
  391. package/dist/plugin/index.d.mts +1 -1
  392. package/dist/plugin/index.d.ts +1 -1
  393. package/dist/plugin/link.cjs +69 -64
  394. package/dist/plugin/link.cjs.map +1 -1
  395. package/dist/plugin/link.d.cts +5 -3
  396. package/dist/plugin/link.d.mts +5 -3
  397. package/dist/plugin/link.d.ts +5 -3
  398. package/dist/plugin/link.js +12 -8
  399. package/dist/record/codec/seal-manifest.d.cts +3 -3
  400. package/dist/record/codec/seal-manifest.d.mts +3 -3
  401. package/dist/record/codec/seal-manifest.d.ts +3 -3
  402. package/dist/record/family/attempt-note/definition.cjs +12 -0
  403. package/dist/record/family/attempt-note/definition.cjs.map +1 -0
  404. package/dist/record/family/attempt-note/definition.d.cts +6 -0
  405. package/dist/record/family/attempt-note/definition.d.mts +6 -0
  406. package/dist/record/family/attempt-note/definition.d.ts +6 -0
  407. package/dist/record/family/attempt-note/definition.js +6 -0
  408. package/dist/record/family/attempt-note/definition.js.map +1 -0
  409. package/dist/record/family/attempt-note/persistence.cjs +10 -0
  410. package/dist/record/family/attempt-note/persistence.cjs.map +1 -0
  411. package/dist/record/family/attempt-note/persistence.d.cts +6 -0
  412. package/dist/record/family/attempt-note/persistence.d.mts +6 -0
  413. package/dist/record/family/attempt-note/persistence.d.ts +6 -0
  414. package/dist/record/family/attempt-note/persistence.js +6 -0
  415. package/dist/record/family/attempt-note/persistence.js.map +1 -0
  416. package/dist/record/family/attempt-note/schema.cjs +20 -0
  417. package/dist/record/family/attempt-note/schema.cjs.map +1 -0
  418. package/dist/record/family/attempt-note/schema.d.cts +21 -0
  419. package/dist/record/family/attempt-note/schema.d.mts +21 -0
  420. package/dist/record/family/attempt-note/schema.d.ts +21 -0
  421. package/dist/record/family/attempt-note/schema.js +10 -0
  422. package/dist/record/family/attempt-note/schema.js.map +1 -0
  423. package/dist/record/family/catalog.cjs +32 -29
  424. package/dist/record/family/catalog.cjs.map +1 -1
  425. package/dist/record/family/catalog.d.cts +7 -2
  426. package/dist/record/family/catalog.d.mts +7 -2
  427. package/dist/record/family/catalog.d.ts +7 -2
  428. package/dist/record/family/current.cjs +48 -45
  429. package/dist/record/family/current.cjs.map +1 -1
  430. package/dist/record/family/current.d.cts +15 -0
  431. package/dist/record/family/current.d.mts +15 -0
  432. package/dist/record/family/current.d.ts +15 -0
  433. package/dist/record/model/index.js +66 -64
  434. package/dist/record/model/run-context.cjs +9 -3
  435. package/dist/record/model/run-context.cjs.map +1 -1
  436. package/dist/record/model/run-context.d.cts +9 -2
  437. package/dist/record/model/run-context.d.mts +9 -2
  438. package/dist/record/model/run-context.d.ts +9 -2
  439. package/dist/record/model/run-context.js +8 -6
  440. package/dist/record/model/seal-manifest.d.cts +1 -1
  441. package/dist/record/model/seal-manifest.d.mts +1 -1
  442. package/dist/record/model/seal-manifest.d.ts +1 -1
  443. package/dist/run/cli/contribution.cjs +6 -32
  444. package/dist/run/cli/contribution.cjs.map +1 -1
  445. package/dist/run/host/runtime.cjs +1 -1
  446. package/dist/run/host/runtime.cjs.map +1 -1
  447. package/dist/run/storage/sqlite.cjs +7 -7
  448. package/dist/run/storage/sqlite.cjs.map +1 -1
  449. package/dist/runner/adapter-usage.cjs +5 -3
  450. package/dist/runner/adapter-usage.cjs.map +1 -1
  451. package/dist/runner/adapter-usage.d.cts +2 -2
  452. package/dist/runner/adapter-usage.d.mts +2 -2
  453. package/dist/runner/adapter-usage.d.ts +2 -2
  454. package/dist/runner/adoption.cjs +9 -12
  455. package/dist/runner/adoption.cjs.map +1 -1
  456. package/dist/runner/attempt-notes.cjs +8 -0
  457. package/dist/runner/attempt-notes.cjs.map +1 -0
  458. package/dist/runner/attempt-notes.d.cts +4 -0
  459. package/dist/runner/attempt-notes.d.mts +4 -0
  460. package/dist/runner/attempt-notes.d.ts +4 -0
  461. package/dist/runner/attempt-notes.js +8 -0
  462. package/dist/runner/attempt-notes.js.map +1 -0
  463. package/dist/runner/attempt.cjs +61 -73
  464. package/dist/runner/attempt.cjs.map +1 -1
  465. package/dist/runner/attempt.d.cts +3 -3
  466. package/dist/runner/attempt.d.mts +3 -3
  467. package/dist/runner/attempt.d.ts +3 -3
  468. package/dist/runner/command-plan.cjs +21 -26
  469. package/dist/runner/command-plan.cjs.map +1 -1
  470. package/dist/runner/command-plan.d.cts +4 -4
  471. package/dist/runner/command-plan.d.mts +4 -4
  472. package/dist/runner/command-plan.d.ts +4 -4
  473. package/dist/runner/command-plan.js +4 -4
  474. package/dist/runner/config-identity.cjs.map +1 -1
  475. package/dist/runner/config-identity.d.cts +2 -2
  476. package/dist/runner/config-identity.d.mts +2 -2
  477. package/dist/runner/config-identity.d.ts +2 -2
  478. package/dist/runner/discover.cjs +6 -6
  479. package/dist/runner/discover.cjs.map +1 -1
  480. package/dist/runner/eval-selection.cjs +2 -2
  481. package/dist/runner/eval-selection.cjs.map +1 -1
  482. package/dist/runner/eval-selection.d.cts +2 -2
  483. package/dist/runner/eval-selection.d.mts +2 -2
  484. package/dist/runner/eval-selection.d.ts +2 -2
  485. package/dist/runner/feedback/human.cjs +1 -1
  486. package/dist/runner/feedback/human.cjs.map +1 -1
  487. package/dist/runner/feedback/json.cjs +4 -2
  488. package/dist/runner/feedback/json.cjs.map +1 -1
  489. package/dist/runner/feedback/json.d.cts +1 -1
  490. package/dist/runner/feedback/json.d.mts +1 -1
  491. package/dist/runner/feedback/json.d.ts +1 -1
  492. package/dist/runner/feedback/sink.cjs +1 -1
  493. package/dist/runner/feedback/sink.cjs.map +1 -1
  494. package/dist/runner/feedback/sink.d.cts +1 -1
  495. package/dist/runner/feedback/sink.d.mts +1 -1
  496. package/dist/runner/feedback/sink.d.ts +1 -1
  497. package/dist/runner/fingerprint.cjs +1 -1
  498. package/dist/runner/fingerprint.cjs.map +1 -1
  499. package/dist/runner/project-target.cjs.map +1 -1
  500. package/dist/runner/project-target.d.cts +2 -2
  501. package/dist/runner/project-target.d.mts +2 -2
  502. package/dist/runner/project-target.d.ts +2 -2
  503. package/dist/runner/record/attachments.cjs +2 -2
  504. package/dist/runner/record/attachments.cjs.map +1 -1
  505. package/dist/runner/record/planning.cjs +8 -2
  506. package/dist/runner/record/planning.cjs.map +1 -1
  507. package/dist/runner/record.cjs +2 -0
  508. package/dist/runner/record.cjs.map +1 -1
  509. package/dist/runner/report.cjs +3 -3
  510. package/dist/runner/report.cjs.map +1 -1
  511. package/dist/runner/report.d.cts +1 -1
  512. package/dist/runner/report.d.mts +1 -1
  513. package/dist/runner/report.d.ts +1 -1
  514. package/dist/runner/reuse-plan.cjs +2 -2
  515. package/dist/runner/reuse-plan.cjs.map +1 -1
  516. package/dist/runner/run.cjs +10 -45
  517. package/dist/runner/run.cjs.map +1 -1
  518. package/dist/runner/sandbox-pool.cjs +1 -2
  519. package/dist/runner/sandbox-pool.cjs.map +1 -1
  520. package/dist/runner/setup-prefix-preparation.cjs +1 -1
  521. package/dist/runner/setup-prefix-preparation.cjs.map +1 -1
  522. package/dist/runner/teardown-registry.cjs +2 -2
  523. package/dist/runner/teardown-registry.cjs.map +1 -1
  524. package/dist/runner/teardown-registry.d.cts +1 -1
  525. package/dist/runner/teardown-registry.d.mts +1 -1
  526. package/dist/runner/teardown-registry.d.ts +1 -1
  527. package/dist/runner/types.cjs +4 -4
  528. package/dist/runner/types.cjs.map +1 -1
  529. package/dist/runner/types.d.cts +64 -93
  530. package/dist/runner/types.d.mts +64 -93
  531. package/dist/runner/types.d.ts +64 -93
  532. package/dist/runner/types.js +2 -2
  533. package/dist/sandbox/action.cjs +1 -1
  534. package/dist/sandbox/action.cjs.map +1 -1
  535. package/dist/sandbox/cli/contribution.cjs +17 -14
  536. package/dist/sandbox/cli/contribution.cjs.map +1 -1
  537. package/dist/sandbox/cli/contribution.d.cts +1 -1
  538. package/dist/sandbox/cli/contribution.d.mts +1 -1
  539. package/dist/sandbox/cli/contribution.d.ts +1 -1
  540. package/dist/sandbox/commands.cjs +1 -1
  541. package/dist/sandbox/commands.cjs.map +1 -1
  542. package/dist/sandbox/commands.d.cts +1 -1
  543. package/dist/sandbox/commands.d.mts +1 -1
  544. package/dist/sandbox/commands.d.ts +1 -1
  545. package/dist/sandbox/compose.cjs +2 -2
  546. package/dist/sandbox/compose.cjs.map +1 -1
  547. package/dist/sandbox/docker-profile/registry.cjs +5 -9
  548. package/dist/sandbox/docker-profile/registry.cjs.map +1 -1
  549. package/dist/sandbox/docker-profile/registry.d.cts +0 -3
  550. package/dist/sandbox/docker-profile/registry.d.mts +0 -3
  551. package/dist/sandbox/docker-profile/registry.d.ts +0 -3
  552. package/dist/sandbox/docker-profile/registry.js +6 -12
  553. package/dist/sandbox/docker-profile/runtime.cjs +1 -1
  554. package/dist/sandbox/docker-profile/runtime.cjs.map +1 -1
  555. package/dist/sandbox/docker-profile/schema.cjs +12 -16
  556. package/dist/sandbox/docker-profile/schema.cjs.map +1 -1
  557. package/dist/sandbox/docker-profile/schema.d.cts +2 -6
  558. package/dist/sandbox/docker-profile/schema.d.mts +2 -6
  559. package/dist/sandbox/docker-profile/schema.d.ts +2 -6
  560. package/dist/sandbox/docker-profile/schema.js +24 -32
  561. package/dist/sandbox/incus.cjs +2 -2
  562. package/dist/sandbox/incus.cjs.map +1 -1
  563. package/dist/sandbox/index.cjs +4 -35
  564. package/dist/sandbox/index.cjs.map +1 -1
  565. package/dist/sandbox/index.d.cts +4 -8
  566. package/dist/sandbox/index.d.mts +4 -8
  567. package/dist/sandbox/index.d.ts +4 -8
  568. package/dist/sandbox/index.js +116 -172
  569. package/dist/sandbox/index.mjs +116 -172
  570. package/dist/sandbox/layer.cjs +3 -3
  571. package/dist/sandbox/layer.cjs.map +1 -1
  572. package/dist/sandbox/link.cjs +5 -0
  573. package/dist/sandbox/link.cjs.map +1 -1
  574. package/dist/sandbox/link.d.cts +3 -0
  575. package/dist/sandbox/link.d.mts +3 -0
  576. package/dist/sandbox/link.d.ts +3 -0
  577. package/dist/sandbox/runtime.cjs +9 -4
  578. package/dist/sandbox/runtime.cjs.map +1 -1
  579. package/dist/shared/failure-class.cjs +5 -5
  580. package/dist/shared/failure-class.cjs.map +1 -1
  581. package/dist/shared/failure-class.d.cts +4 -10
  582. package/dist/shared/failure-class.d.mts +4 -10
  583. package/dist/shared/failure-class.d.ts +4 -10
  584. package/dist/shared/types.cjs.map +1 -1
  585. package/dist/shared/types.d.cts +1 -1
  586. package/dist/shared/types.d.mts +1 -1
  587. package/dist/shared/types.d.ts +1 -1
  588. package/dist/show/contribution.cjs +17 -2
  589. package/dist/show/contribution.cjs.map +1 -1
  590. package/dist/show/contribution.d.cts +14 -0
  591. package/dist/show/contribution.d.mts +14 -0
  592. package/dist/show/contribution.d.ts +14 -0
  593. package/dist/show/model.cjs +8 -5
  594. package/dist/show/model.cjs.map +1 -1
  595. package/dist/show/model.d.cts +11 -8
  596. package/dist/show/model.d.mts +11 -8
  597. package/dist/show/model.d.ts +11 -8
  598. package/dist/show/render.cjs +34 -22
  599. package/dist/show/render.cjs.map +1 -1
  600. package/dist/sources/projector.cjs +1 -1
  601. package/dist/sources/projector.cjs.map +1 -1
  602. package/dist/types.cjs +1 -1
  603. package/dist/types.cjs.map +1 -1
  604. package/dist/types.d.cts +1 -1
  605. package/dist/types.d.mts +1 -1
  606. package/dist/types.d.ts +1 -1
  607. package/dist/types.js +2 -2
  608. package/dist/view/app-dist/.vite/manifest.json +2 -2
  609. package/dist/view/app-dist/assets/{index-B3ijZRph.js → index-CxrOUvHC.js} +17 -17
  610. package/dist/view/app-dist/assets/{quality-cost-scatter-B--DfJ9s.js → quality-cost-scatter-B6Aiss7x.js} +1 -1
  611. package/dist/view/app-dist/index.html +1 -1
  612. package/dist/view/cli/contribution.cjs +1 -1
  613. package/dist/view/cli/contribution.cjs.map +1 -1
  614. package/dist/view/function-runtime.mjs +318 -121
  615. package/dist/view/http-protocol.d.cts +1 -1
  616. package/dist/view/http-protocol.d.mts +1 -1
  617. package/dist/view/http-protocol.d.ts +1 -1
  618. package/dist/view/inspection-host.cjs +2 -2
  619. package/dist/view/inspection-host.cjs.map +1 -1
  620. package/dist/view/inspection-host.d.cts +349 -331
  621. package/dist/view/inspection-host.d.mts +349 -331
  622. package/dist/view/inspection-host.d.ts +349 -331
  623. package/docs-site/zh/examples/integrations/ai-sdk-v7.mdx +6 -6
  624. package/docs-site/zh/examples/integrations/claude-sdk.mdx +5 -5
  625. package/docs-site/zh/examples/integrations/codex-sdk.mdx +4 -4
  626. package/docs-site/zh/examples/integrations/langgraph.mdx +4 -4
  627. package/docs-site/zh/examples/integrations/pi-sdk.mdx +5 -5
  628. package/docs-site/zh/explanation/adapter.mdx +6 -6
  629. package/docs-site/zh/explanation/assert.mdx +7 -7
  630. package/docs-site/zh/explanation/drive.mdx +4 -4
  631. package/docs-site/zh/explanation/hitl.mdx +2 -2
  632. package/docs-site/zh/explanation/judge.mdx +2 -2
  633. package/docs-site/zh/introduction.mdx +2 -2
  634. package/docs-site/zh/reference/builtin-agents.mdx +46 -49
  635. package/docs-site/zh/reference/cli.mdx +16 -14
  636. package/docs-site/zh/reference/define-agent.mdx +19 -19
  637. package/docs-site/zh/reference/define-config.mdx +7 -15
  638. package/docs-site/zh/reference/define-eval.mdx +20 -14
  639. package/docs-site/zh/reference/define-experiment.mdx +18 -39
  640. package/docs-site/zh/reference/events.mdx +1 -1
  641. package/docs-site/zh/reference/expect.mdx +21 -0
  642. package/docs-site/zh/reference/official-adapters.mdx +12 -5
  643. package/docs-site/zh/troubleshooting/debugging.mdx +2 -2
  644. package/docs-site/zh/troubleshooting/recover-after-kill.mdx +1 -1
  645. package/docs-site/zh/tutorials/agent-onboarding.mdx +2 -2
  646. package/docs-site/zh/tutorials/authoring.mdx +2 -2
  647. package/docs-site/zh/tutorials/compare-runs.mdx +1 -1
  648. package/docs-site/zh/tutorials/concurrency.mdx +8 -8
  649. package/docs-site/zh/tutorials/configuration.mdx +5 -5
  650. package/docs-site/zh/tutorials/control-run-cost.mdx +19 -19
  651. package/docs-site/zh/tutorials/eval-groups.mdx +1 -1
  652. package/docs-site/zh/tutorials/evaluation-kinds.mdx +5 -5
  653. package/docs-site/zh/tutorials/experiment-services.mdx +32 -32
  654. package/docs-site/zh/tutorials/handle-execution-failures.mdx +2 -28
  655. package/docs-site/zh/tutorials/plugins.mdx +49 -143
  656. package/docs-site/zh/tutorials/sandbox-agent.mdx +1 -1
  657. package/docs-site/zh/tutorials/sandbox-reuse.mdx +7 -7
  658. package/docs-site/zh/tutorials/upgrade-0-18.mdx +1 -1
  659. package/docs-site/zh/tutorials/upgrade-0-19.mdx +121 -0
  660. package/docs-site/zh/tutorials/upgrade-0-20.mdx +12 -0
  661. package/docs-site/zh/tutorials/verify-judge.mdx +2 -2
  662. package/docs-site/zh/tutorials/viewing-results.mdx +2 -2
  663. package/docs-site/zh/tutorials/write-experiment.mdx +1 -1
  664. package/docs-site/zh/tutorials/write-send.mdx +13 -13
  665. package/package.json +1 -1
  666. package/dist/agents/effect-runtime.cjs.map +0 -1
  667. package/dist/agents/effect-runtime.d.cts +0 -29
  668. package/dist/agents/effect-runtime.d.mts +0 -29
  669. package/dist/agents/effect-runtime.d.ts +0 -29
  670. package/dist/agents/effect-runtime.js +0 -16
  671. package/dist/agents/effect-runtime.js.map +0 -1
  672. package/dist/agents/session-slot.cjs.map +0 -1
  673. package/dist/agents/session-slot.d.cts +0 -12
  674. package/dist/agents/session-slot.d.mts +0 -12
  675. package/dist/agents/session-slot.d.ts +0 -12
  676. package/dist/agents/session-slot.js +0 -6
  677. package/dist/agents/session-slot.js.map +0 -1
  678. package/dist/model-slots.js +0 -14
  679. package/dist/model-slots.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import type { Agent, AgentSetupManifest, McpServer, Sandbox, SkillSpec } from "../types.cjs";
1
+ import type { Agent, AgentInstallationManifest, McpServer, Sandbox, SkillSpec } from "../types.cjs";
2
2
  import type { SandboxCommand } from "../sandbox/commands.cjs";
3
3
  /**
4
4
  * Codex 的原生 Plugin —— **只属于 Codex**,不能传给 Claude Code(它有自己的
@@ -31,7 +31,7 @@ export interface CodexConfig {
31
31
  /**
32
32
  * 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
33
33
  * 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
34
- * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
34
+ * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 before manifest,并全部按
35
35
  * 潜在敏感值从 timing / execution / error 证据中脱敏。`CODEX_API_KEY` 仍由 `apiKey` 或
36
36
  * 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
37
37
  * env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
@@ -41,7 +41,7 @@ export interface CodexConfig {
41
41
  */
42
42
  env?: Readonly<globalThis.Record<string, string>>;
43
43
  /**
44
- * 额外 MCP server(每个 Sandbox setup 时追加进 ~/.codex/config.toml)。
44
+ * 额外 MCP server(每个 Sandbox before 时追加进 ~/.codex/config.toml)。
45
45
  * stdio 形态(command/args/env)写 [mcp_servers.<name>] 的 command 行;
46
46
  * Streamable HTTP 形态(url/headers)写 url 行,headers 进 [mcp_servers.<name>.http_headers] 子表。
47
47
  */
@@ -58,27 +58,27 @@ export interface CodexConfig {
58
58
  * 一份完整的 Codex `config.toml`(官方 TOML 格式)在本地项目里的路径 —— 相对运行
59
59
  * niceeval 的项目根(含 `niceeval.config.ts` 的目录)解析,不是 Sandbox 内路径;只接受
60
60
  * 项目根内的相对路径,包含 `..` 的路径、绝对路径、`~` 路径和解析后逃出项目根的符号链接
61
- * 都在 setup 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
61
+ * 都在 before 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
62
62
  * (不继承宿主机配置、不解析后重写);保留键 `model`、`model_provider`、`model_providers`、
63
- * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 setup 报错。manifest 只记
63
+ * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 before 报错。manifest 只记
64
64
  * 项目相对路径与字节 SHA-256,不落正文。
65
65
  */
66
66
  configFile?: string;
67
67
  /**
68
68
  * 安装后按数组顺序运行的用户 Hook(复用 SandboxCommand 的窄上下文):在写主配置、挂 MCP、
69
- * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 setup 脚本这类
69
+ * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 before 脚本这类
70
70
  * 「安装产物就位后才能跑」的过程动作。抛错按基础设施错误计(attempt errored)。
71
71
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
72
72
  */
73
- postSetup?: readonly SandboxCommand[];
73
+ before?: readonly SandboxCommand[];
74
74
  /**
75
- * 与 `postSetup` 成对的收尾 Hook:按 `postSetup` 的逆序语义,在 agent 自己的 teardown 步骤
76
- * 之前执行(LIFO 镜像 —— `postSetup` 跑在 agent 安装之后,`preTeardown` 就跑在 agent 收尾
77
- * 之前),当且仅当 `postSetup` 的时点走到过才触发。抛错按基础设施错误计,由 teardown 段
75
+ * 与 `before` 成对的收尾 Hook:按 `before` 的逆序语义,在 agent 自己的 after 步骤
76
+ * 之前执行(LIFO 镜像 —— `before` 跑在 agent 安装之后,`after` 就跑在 agent 收尾
77
+ * 之前),当且仅当 `before` 的时点走到过才触发。抛错按基础设施错误计,由 after 段
78
78
  * 按 teardown-failed 诊断收束。
79
79
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
80
80
  */
81
- preTeardown?: readonly SandboxCommand[];
81
+ after?: readonly SandboxCommand[];
82
82
  }
83
83
  export declare function codexAgent(config?: CodexConfig): Agent;
84
84
  /**
@@ -91,6 +91,6 @@ export declare function codexAgent(config?: CodexConfig): Agent;
91
91
  * architecture/coding-agent-extensions.md「安装收敛:不假设沙箱空白」)。空白沙箱读回为空,
92
92
  * 走的是同一条代码路径。
93
93
  */
94
- export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest["nativePlugins"]>>;
94
+ export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentInstallationManifest["nativePlugins"]>>;
95
95
  declare const _default: Agent;
96
96
  export default _default;
@@ -1,4 +1,4 @@
1
- import type { Agent, AgentSetupManifest, McpServer, Sandbox, SkillSpec } from "../types.mjs";
1
+ import type { Agent, AgentInstallationManifest, McpServer, Sandbox, SkillSpec } from "../types.mjs";
2
2
  import type { SandboxCommand } from "../sandbox/commands.mjs";
3
3
  /**
4
4
  * Codex 的原生 Plugin —— **只属于 Codex**,不能传给 Claude Code(它有自己的
@@ -31,7 +31,7 @@ export interface CodexConfig {
31
31
  /**
32
32
  * 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
33
33
  * 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
34
- * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
34
+ * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 before manifest,并全部按
35
35
  * 潜在敏感值从 timing / execution / error 证据中脱敏。`CODEX_API_KEY` 仍由 `apiKey` 或
36
36
  * 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
37
37
  * env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
@@ -41,7 +41,7 @@ export interface CodexConfig {
41
41
  */
42
42
  env?: Readonly<globalThis.Record<string, string>>;
43
43
  /**
44
- * 额外 MCP server(每个 Sandbox setup 时追加进 ~/.codex/config.toml)。
44
+ * 额外 MCP server(每个 Sandbox before 时追加进 ~/.codex/config.toml)。
45
45
  * stdio 形态(command/args/env)写 [mcp_servers.<name>] 的 command 行;
46
46
  * Streamable HTTP 形态(url/headers)写 url 行,headers 进 [mcp_servers.<name>.http_headers] 子表。
47
47
  */
@@ -58,27 +58,27 @@ export interface CodexConfig {
58
58
  * 一份完整的 Codex `config.toml`(官方 TOML 格式)在本地项目里的路径 —— 相对运行
59
59
  * niceeval 的项目根(含 `niceeval.config.ts` 的目录)解析,不是 Sandbox 内路径;只接受
60
60
  * 项目根内的相对路径,包含 `..` 的路径、绝对路径、`~` 路径和解析后逃出项目根的符号链接
61
- * 都在 setup 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
61
+ * 都在 before 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
62
62
  * (不继承宿主机配置、不解析后重写);保留键 `model`、`model_provider`、`model_providers`、
63
- * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 setup 报错。manifest 只记
63
+ * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 before 报错。manifest 只记
64
64
  * 项目相对路径与字节 SHA-256,不落正文。
65
65
  */
66
66
  configFile?: string;
67
67
  /**
68
68
  * 安装后按数组顺序运行的用户 Hook(复用 SandboxCommand 的窄上下文):在写主配置、挂 MCP、
69
- * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 setup 脚本这类
69
+ * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 before 脚本这类
70
70
  * 「安装产物就位后才能跑」的过程动作。抛错按基础设施错误计(attempt errored)。
71
71
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
72
72
  */
73
- postSetup?: readonly SandboxCommand[];
73
+ before?: readonly SandboxCommand[];
74
74
  /**
75
- * 与 `postSetup` 成对的收尾 Hook:按 `postSetup` 的逆序语义,在 agent 自己的 teardown 步骤
76
- * 之前执行(LIFO 镜像 —— `postSetup` 跑在 agent 安装之后,`preTeardown` 就跑在 agent 收尾
77
- * 之前),当且仅当 `postSetup` 的时点走到过才触发。抛错按基础设施错误计,由 teardown 段
75
+ * 与 `before` 成对的收尾 Hook:按 `before` 的逆序语义,在 agent 自己的 after 步骤
76
+ * 之前执行(LIFO 镜像 —— `before` 跑在 agent 安装之后,`after` 就跑在 agent 收尾
77
+ * 之前),当且仅当 `before` 的时点走到过才触发。抛错按基础设施错误计,由 after 段
78
78
  * 按 teardown-failed 诊断收束。
79
79
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
80
80
  */
81
- preTeardown?: readonly SandboxCommand[];
81
+ after?: readonly SandboxCommand[];
82
82
  }
83
83
  export declare function codexAgent(config?: CodexConfig): Agent;
84
84
  /**
@@ -91,6 +91,6 @@ export declare function codexAgent(config?: CodexConfig): Agent;
91
91
  * architecture/coding-agent-extensions.md「安装收敛:不假设沙箱空白」)。空白沙箱读回为空,
92
92
  * 走的是同一条代码路径。
93
93
  */
94
- export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest["nativePlugins"]>>;
94
+ export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentInstallationManifest["nativePlugins"]>>;
95
95
  declare const _default: Agent;
96
96
  export default _default;
@@ -1,4 +1,4 @@
1
- import type { Agent, AgentSetupManifest, McpServer, Sandbox, SkillSpec } from "../types.js";
1
+ import type { Agent, AgentInstallationManifest, McpServer, Sandbox, SkillSpec } from "../types.js";
2
2
  import type { SandboxCommand } from "../sandbox/commands.js";
3
3
  /**
4
4
  * Codex 的原生 Plugin —— **只属于 Codex**,不能传给 Claude Code(它有自己的
@@ -31,7 +31,7 @@ export interface CodexConfig {
31
31
  /**
32
32
  * 注入每次 Codex CLI 进程的额外环境变量。首轮 `codex exec` 与续轮 `codex exec resume`
33
33
  * 使用同一份声明;Codex 启动的 lifecycle Hook、MCP 动态 header 与命令子进程都会继承。
34
- * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 setup manifest,并全部按
34
+ * 值只经 Sandbox command options 传入,不拼进 shell 文本或写入 before manifest,并全部按
35
35
  * 潜在敏感值从 timing / execution / error 证据中脱敏。`CODEX_API_KEY` 仍由 `apiKey` 或
36
36
  * 宿主同名环境变量提供,Adapter 的鉴权值会覆盖这里的同名键。
37
37
  * env value 不进入 carry 身份。会改变被测行为的非敏感值必须同时声明在 Experiment flags
@@ -41,7 +41,7 @@ export interface CodexConfig {
41
41
  */
42
42
  env?: Readonly<globalThis.Record<string, string>>;
43
43
  /**
44
- * 额外 MCP server(每个 Sandbox setup 时追加进 ~/.codex/config.toml)。
44
+ * 额外 MCP server(每个 Sandbox before 时追加进 ~/.codex/config.toml)。
45
45
  * stdio 形态(command/args/env)写 [mcp_servers.<name>] 的 command 行;
46
46
  * Streamable HTTP 形态(url/headers)写 url 行,headers 进 [mcp_servers.<name>.http_headers] 子表。
47
47
  */
@@ -58,27 +58,27 @@ export interface CodexConfig {
58
58
  * 一份完整的 Codex `config.toml`(官方 TOML 格式)在本地项目里的路径 —— 相对运行
59
59
  * niceeval 的项目根(含 `niceeval.config.ts` 的目录)解析,不是 Sandbox 内路径;只接受
60
60
  * 项目根内的相对路径,包含 `..` 的路径、绝对路径、`~` 路径和解析后逃出项目根的符号链接
61
- * 都在 setup 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
61
+ * 都在 before 阶段报错。原始字节原样并入 Sandbox 里原本为空的用户级 `~/.codex/config.toml`
62
62
  * (不继承宿主机配置、不解析后重写);保留键 `model`、`model_provider`、`model_providers`、
63
- * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 setup 报错。manifest 只记
63
+ * `model_reasoning_effort`、`mcp_servers`、`otel` 出现在文件里 before 报错。manifest 只记
64
64
  * 项目相对路径与字节 SHA-256,不落正文。
65
65
  */
66
66
  configFile?: string;
67
67
  /**
68
68
  * 安装后按数组顺序运行的用户 Hook(复用 SandboxCommand 的窄上下文):在写主配置、挂 MCP、
69
- * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 setup 脚本这类
69
+ * 装 Skills / Plugin、写 manifest 全部完成后执行,适合跑插件自带的 before 脚本这类
70
70
  * 「安装产物就位后才能跑」的过程动作。抛错按基础设施错误计(attempt errored)。
71
71
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
72
72
  */
73
- postSetup?: readonly SandboxCommand[];
73
+ before?: readonly SandboxCommand[];
74
74
  /**
75
- * 与 `postSetup` 成对的收尾 Hook:按 `postSetup` 的逆序语义,在 agent 自己的 teardown 步骤
76
- * 之前执行(LIFO 镜像 —— `postSetup` 跑在 agent 安装之后,`preTeardown` 就跑在 agent 收尾
77
- * 之前),当且仅当 `postSetup` 的时点走到过才触发。抛错按基础设施错误计,由 teardown 段
75
+ * 与 `before` 成对的收尾 Hook:按 `before` 的逆序语义,在 agent 自己的 after 步骤
76
+ * 之前执行(LIFO 镜像 —— `before` 跑在 agent 安装之后,`after` 就跑在 agent 收尾
77
+ * 之前),当且仅当 `before` 的时点走到过才触发。抛错按基础设施错误计,由 after 段
78
78
  * 按 teardown-failed 诊断收束。
79
79
  * 见 docs/feature/adapters/library/coding-agent-extensions.md「安装后运行脚本」。
80
80
  */
81
- preTeardown?: readonly SandboxCommand[];
81
+ after?: readonly SandboxCommand[];
82
82
  }
83
83
  export declare function codexAgent(config?: CodexConfig): Agent;
84
84
  /**
@@ -91,6 +91,6 @@ export declare function codexAgent(config?: CodexConfig): Agent;
91
91
  * architecture/coding-agent-extensions.md「安装收敛:不假设沙箱空白」)。空白沙箱读回为空,
92
92
  * 走的是同一条代码路径。
93
93
  */
94
- export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentSetupManifest["nativePlugins"]>>;
94
+ export declare function installPlugins(sb: Sandbox, plugins: readonly CodexPluginSpec[]): Promise<NonNullable<AgentInstallationManifest["nativePlugins"]>>;
95
95
  declare const _default: Agent;
96
96
  export default _default;
@@ -67,7 +67,7 @@ function resolveBaseUrl(config) {
67
67
  return config?.baseUrl ?? (0, util_ts_1.getEnv)("DSH_BASE_URL") ?? (0, util_ts_1.getEnv)("DEEPSEEK_BASE_URL");
68
68
  }
69
69
  /** DeepSeek Harness sandbox adapter backed by its one-shot headless profile. */
70
- // @concord-code ne-adapter-deepseek-harness-agent
70
+ // @concord-code
71
71
  // @concord-implements docs/feature/adapters/README.md
72
72
  // @concord-implements docs/feature/adapters/sdk/deepseek-harness/README.md
73
73
  function deepSeekHarnessAgent(config) {
@@ -91,7 +91,7 @@ function deepSeekHarnessAgent(config) {
91
91
  installers: pluginLayer === undefined
92
92
  ? [install.installer]
93
93
  : [install.installer, pluginLayer.installer],
94
- setup: (sb, ctx) => effect_1.Effect.tryPromise({
94
+ before: (sb, ctx) => effect_1.Effect.tryPromise({
95
95
  try: async () => {
96
96
  const homeResult = await sb.runShell('test -n "$HOME" && printf "%s" "$HOME"');
97
97
  const home = homeResult.stdout.trim();
@@ -1 +1 @@
1
- {"version":3,"file":"deepseek-harness.js","sourceRoot":"","sources":["deepseek-harness.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { makeSandboxAgent } from \"../define.ts\";\nimport { getEnv, requireEnv } from \"../util.ts\";\nimport type { Agent, EvidenceCoverage, StreamEvent } from \"../types.ts\";\nimport { makeSendFailure } from \"../context/send-failures.ts\";\nimport { shared } from \"./shared.ts\";\nimport { createNpmCliInstaller, resolveAgentBinEffect } from \"./npm-staged.ts\";\nimport { shell } from \"../sandbox/commands.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport type { AgentEnsure, AgentInstaller } from \"./types.ts\";\nimport { exactNpmPluginRevision, normalizeExactNpmPlugins, type ExactNpmPlugin, } from \"./exact-npm-plugins.ts\";\nimport { AGENT_BASELINE_RECIPE_REVISION, DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION, } from \"./coding-cli-versions.ts\";\nconst DSH_EVIDENCE_COVERAGE: EvidenceCoverage = {\n events: { status: \"unavailable\", reason: \"DSH headless mode exposes only the final assistant text.\" },\n actions: { status: \"unavailable\", reason: \"DSH headless mode does not expose tool lifecycle events.\" },\n messages: { status: \"complete\" },\n usage: { status: \"unavailable\", reason: \"DSH headless mode does not expose token usage.\" },\n status: { status: \"complete\" },\n data: { status: \"unavailable\", reason: \"DSH headless mode does not expose a separate Turn.data value.\" },\n};\nexport interface DeepSeekHarnessConfig {\n /** DeepSeek-compatible API key. Defaults to DSH_API_KEY, then DEEPSEEK_API_KEY. */\n apiKey?: string;\n /** DeepSeek-compatible endpoint. Defaults to DSH_BASE_URL, then DEEPSEEK_BASE_URL. */\n baseUrl?: string;\n /** Exact npm version of `@deepseek-ai/dsh`. */\n version?: string;\n /** Native DSH bundles as exact npm package@version declarations. */\n plugins?: readonly string[];\n}\nconst DSH_PNPM_VERSION = \"10.17.1\";\nfunction dshPluginLayer(cliVersion: string, plugins: readonly ExactNpmPlugin[]): {\n ensure: AgentEnsure;\n installer: AgentInstaller;\n} {\n const identity = {\n agent: \"deepseek-harness-plugins\",\n version: cliVersion,\n revision: exactNpmPluginRevision(plugins),\n };\n const expected = JSON.stringify(plugins);\n const verify = `const fs=require(\"node:fs\"),path=require(\"node:path\");` +\n `const expected=${expected},root=process.env.DSH_HOME+\"/profiles/headless\";` +\n `const profile=JSON.parse(fs.readFileSync(path.join(root,\"package.json\"),\"utf8\"));` +\n `const deps=profile.dependencies||{},names=Object.keys(deps);` +\n `if(JSON.stringify(names)!==JSON.stringify(expected.map(x=>x.name)))process.exit(1);` +\n `const bundles=profile.dsh?.profile?.bundles||[];` +\n `const external=bundles.filter(x=>x!==\"@deepseek-ai/dsh-base\"&&x!==\"@deepseek-ai/dsh-headless\");` +\n `if(JSON.stringify(external)!==JSON.stringify(expected.map(x=>x.name)))process.exit(1);` +\n `for(const x of expected){if(deps[x.name]!==x.version)process.exit(1);` +\n `const p=JSON.parse(fs.readFileSync(path.join(root,\"node_modules\",x.name,\"package.json\"),\"utf8\"));` +\n `if(p.name!==x.name||p.version!==x.version||!p.dsh?.bundle)process.exit(1);}`;\n const probeScript = `DSH_HOME=\"$HOME/.niceeval-dsh\" node -e ${shellQuote(verify)}`;\n return {\n ensure: { identity, probe: shell(probeScript) },\n installer: {\n identity,\n installMode: \"sandbox-network\",\n install: async (sandbox, context) => {\n const specs = plugins.map((plugin) => shellQuote(plugin.spec)).join(\" \");\n const script = `set -eu\nexport DSH_HOME=\"$HOME/.niceeval-dsh\"\nrm -rf \"$DSH_HOME/profiles/headless\"\nwrapper_dir=\"$HOME/.niceeval-dsh/.niceeval-bin\"\nmkdir -p \"$wrapper_dir\"\nprintf '%s\\n' '#!/bin/sh' 'exec corepack pnpm@${DSH_PNPM_VERSION} \"$@\"' > \"$wrapper_dir/pnpm\"\nchmod +x \"$wrapper_dir/pnpm\"\nPATH=\"$wrapper_dir:$PATH\" dsh plugin --profile headless add ${specs}\nDSH_HOME=\"$DSH_HOME\" dsh --profile headless --dump-config >/dev/null`;\n await sandbox.runShellOrThrow(script, { signal: context.signal });\n },\n },\n };\n}\nfunction resolveApiKey(config?: DeepSeekHarnessConfig): string {\n return config?.apiKey ?? getEnv(\"DSH_API_KEY\") ?? requireEnv(\"DEEPSEEK_API_KEY\");\n}\nfunction resolveBaseUrl(config?: DeepSeekHarnessConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"DSH_BASE_URL\") ?? getEnv(\"DEEPSEEK_BASE_URL\");\n}\n/** DeepSeek Harness sandbox adapter backed by its one-shot headless profile. */\n// @concord-code ne-adapter-deepseek-harness-agent\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/deepseek-harness/README.md\nexport function deepSeekHarnessAgent(config?: DeepSeekHarnessConfig): Agent {\n const version = config?.version ?? DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION;\n const plugins = normalizeExactNpmPlugins(config?.plugins, \"deepSeekHarnessAgent plugins\");\n const install = createNpmCliInstaller({\n identity: {\n agent: \"deepseek-harness\",\n version,\n revision: String(AGENT_BASELINE_RECIPE_REVISION[\"deepseek-harness\"]),\n },\n packageName: \"@deepseek-ai/dsh\",\n bin: \"dsh\",\n });\n const homes = new Map<string, string>();\n const pluginLayer = plugins.length === 0 ? undefined : dshPluginLayer(version, plugins);\n return makeSandboxAgent({\n name: \"deepseek-harness\",\n evidenceCoverage: DSH_EVIDENCE_COVERAGE,\n ensure: pluginLayer === undefined ? install.ensure : [install.ensure, pluginLayer.ensure],\n installers: pluginLayer === undefined\n ? [install.installer]\n : [install.installer, pluginLayer.installer],\n setup: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n const homeResult = await sb.runShell('test -n \"$HOME\" && printf \"%s\" \"$HOME\"');\n const home = homeResult.stdout.trim();\n if (homeResult.exitCode !== 0 || !home.startsWith(\"/\")) {\n throw new Error(\"DeepSeek Harness setup requires an absolute sandbox HOME directory\");\n }\n const dshHome = `${home}/.niceeval-dsh`;\n homes.set(sb.sandboxId, dshHome);\n const settings = {\n \"agent-default-model\": {\n provider: \"deepseek-official\",\n model: ctx.model ?? \"deepseek-v4-flash\",\n },\n permission: {\n defaultPreset: \"danger-full-access\",\n },\n };\n await shared.writeFile(sb, `${dshHome}/settings.yaml`, JSON.stringify(settings, null, 2));\n },\n catch: (cause) => cause,\n }),\n send: (input, ctx) => Effect.gen(function* () {\n const dshBin = yield* resolveAgentBinEffect(ctx.sandbox, \"dsh\");\n return yield* Effect.tryPromise({\n try: async (signal) => {\n const apiKey = resolveApiKey(config);\n const dshHome = homes.get(ctx.sandbox.sandboxId);\n if (!dshHome)\n throw new Error(\"DeepSeek Harness setup state is unavailable\");\n const env: globalThis.Record<string, string> = {\n DEEPSEEK_API_KEY: apiKey,\n DSH_HOME: dshHome,\n ...ctx.telemetry?.env,\n };\n const baseUrl = resolveBaseUrl(config);\n if (baseUrl)\n env.DEEPSEEK_BASE_URL = baseUrl;\n const res = await ctx.sandbox.runCommand(dshBin, [\"--profile\", \"headless\", input.text], {\n env,\n sensitiveValues: [apiKey],\n stream: true,\n signal,\n });\n const text = res.stdout.trim();\n if (res.exitCode !== 0 || !text) {\n throw makeSendFailure({\n acceptance: \"unknown\",\n message: res.exitCode !== 0\n ? shared.diagnoseFailure(res, [], undefined)\n : \"DeepSeek Harness exited successfully without a final assistant message.\",\n process: res,\n });\n }\n const events: StreamEvent[] = [{ type: \"message\", role: \"assistant\", text }];\n return { events, status: \"completed\" as const };\n },\n catch: (cause) => cause,\n });\n }),\n });\n}\nexport default deepSeekHarnessAgent;\n"]}
1
+ {"version":3,"file":"deepseek-harness.js","sourceRoot":"","sources":["deepseek-harness.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { makeSandboxAgent } from \"../define.ts\";\nimport { getEnv, requireEnv } from \"../util.ts\";\nimport type { Agent, EvidenceCoverage, StreamEvent } from \"../types.ts\";\nimport { makeSendFailure } from \"../context/send-failures.ts\";\nimport { shared } from \"./shared.ts\";\nimport { createNpmCliInstaller, resolveAgentBinEffect } from \"./npm-staged.ts\";\nimport { shell } from \"../sandbox/commands.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport type { AgentEnsure, AgentInstaller } from \"./types.ts\";\nimport { exactNpmPluginRevision, normalizeExactNpmPlugins, type ExactNpmPlugin, } from \"./exact-npm-plugins.ts\";\nimport { AGENT_BASELINE_RECIPE_REVISION, DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION, } from \"./coding-cli-versions.ts\";\nconst DSH_EVIDENCE_COVERAGE: EvidenceCoverage = {\n events: { status: \"unavailable\", reason: \"DSH headless mode exposes only the final assistant text.\" },\n actions: { status: \"unavailable\", reason: \"DSH headless mode does not expose tool lifecycle events.\" },\n messages: { status: \"complete\" },\n usage: { status: \"unavailable\", reason: \"DSH headless mode does not expose token usage.\" },\n status: { status: \"complete\" },\n data: { status: \"unavailable\", reason: \"DSH headless mode does not expose a separate Turn.data value.\" },\n};\nexport interface DeepSeekHarnessConfig {\n /** DeepSeek-compatible API key. Defaults to DSH_API_KEY, then DEEPSEEK_API_KEY. */\n apiKey?: string;\n /** DeepSeek-compatible endpoint. Defaults to DSH_BASE_URL, then DEEPSEEK_BASE_URL. */\n baseUrl?: string;\n /** Exact npm version of `@deepseek-ai/dsh`. */\n version?: string;\n /** Native DSH bundles as exact npm package@version declarations. */\n plugins?: readonly string[];\n}\nconst DSH_PNPM_VERSION = \"10.17.1\";\nfunction dshPluginLayer(cliVersion: string, plugins: readonly ExactNpmPlugin[]): {\n ensure: AgentEnsure;\n installer: AgentInstaller;\n} {\n const identity = {\n agent: \"deepseek-harness-plugins\",\n version: cliVersion,\n revision: exactNpmPluginRevision(plugins),\n };\n const expected = JSON.stringify(plugins);\n const verify = `const fs=require(\"node:fs\"),path=require(\"node:path\");` +\n `const expected=${expected},root=process.env.DSH_HOME+\"/profiles/headless\";` +\n `const profile=JSON.parse(fs.readFileSync(path.join(root,\"package.json\"),\"utf8\"));` +\n `const deps=profile.dependencies||{},names=Object.keys(deps);` +\n `if(JSON.stringify(names)!==JSON.stringify(expected.map(x=>x.name)))process.exit(1);` +\n `const bundles=profile.dsh?.profile?.bundles||[];` +\n `const external=bundles.filter(x=>x!==\"@deepseek-ai/dsh-base\"&&x!==\"@deepseek-ai/dsh-headless\");` +\n `if(JSON.stringify(external)!==JSON.stringify(expected.map(x=>x.name)))process.exit(1);` +\n `for(const x of expected){if(deps[x.name]!==x.version)process.exit(1);` +\n `const p=JSON.parse(fs.readFileSync(path.join(root,\"node_modules\",x.name,\"package.json\"),\"utf8\"));` +\n `if(p.name!==x.name||p.version!==x.version||!p.dsh?.bundle)process.exit(1);}`;\n const probeScript = `DSH_HOME=\"$HOME/.niceeval-dsh\" node -e ${shellQuote(verify)}`;\n return {\n ensure: { identity, probe: shell(probeScript) },\n installer: {\n identity,\n installMode: \"sandbox-network\",\n install: async (sandbox, context) => {\n const specs = plugins.map((plugin) => shellQuote(plugin.spec)).join(\" \");\n const script = `set -eu\nexport DSH_HOME=\"$HOME/.niceeval-dsh\"\nrm -rf \"$DSH_HOME/profiles/headless\"\nwrapper_dir=\"$HOME/.niceeval-dsh/.niceeval-bin\"\nmkdir -p \"$wrapper_dir\"\nprintf '%s\\n' '#!/bin/sh' 'exec corepack pnpm@${DSH_PNPM_VERSION} \"$@\"' > \"$wrapper_dir/pnpm\"\nchmod +x \"$wrapper_dir/pnpm\"\nPATH=\"$wrapper_dir:$PATH\" dsh plugin --profile headless add ${specs}\nDSH_HOME=\"$DSH_HOME\" dsh --profile headless --dump-config >/dev/null`;\n await sandbox.runShellOrThrow(script, { signal: context.signal });\n },\n },\n };\n}\nfunction resolveApiKey(config?: DeepSeekHarnessConfig): string {\n return config?.apiKey ?? getEnv(\"DSH_API_KEY\") ?? requireEnv(\"DEEPSEEK_API_KEY\");\n}\nfunction resolveBaseUrl(config?: DeepSeekHarnessConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"DSH_BASE_URL\") ?? getEnv(\"DEEPSEEK_BASE_URL\");\n}\n/** DeepSeek Harness sandbox adapter backed by its one-shot headless profile. */\n// @concord-code\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/deepseek-harness/README.md\nexport function deepSeekHarnessAgent(config?: DeepSeekHarnessConfig): Agent {\n const version = config?.version ?? DEFAULT_DEEPSEEK_HARNESS_CLI_VERSION;\n const plugins = normalizeExactNpmPlugins(config?.plugins, \"deepSeekHarnessAgent plugins\");\n const install = createNpmCliInstaller({\n identity: {\n agent: \"deepseek-harness\",\n version,\n revision: String(AGENT_BASELINE_RECIPE_REVISION[\"deepseek-harness\"]),\n },\n packageName: \"@deepseek-ai/dsh\",\n bin: \"dsh\",\n });\n const homes = new Map<string, string>();\n const pluginLayer = plugins.length === 0 ? undefined : dshPluginLayer(version, plugins);\n return makeSandboxAgent({\n name: \"deepseek-harness\",\n evidenceCoverage: DSH_EVIDENCE_COVERAGE,\n ensure: pluginLayer === undefined ? install.ensure : [install.ensure, pluginLayer.ensure],\n installers: pluginLayer === undefined\n ? [install.installer]\n : [install.installer, pluginLayer.installer],\n before: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n const homeResult = await sb.runShell('test -n \"$HOME\" && printf \"%s\" \"$HOME\"');\n const home = homeResult.stdout.trim();\n if (homeResult.exitCode !== 0 || !home.startsWith(\"/\")) {\n throw new Error(\"DeepSeek Harness setup requires an absolute sandbox HOME directory\");\n }\n const dshHome = `${home}/.niceeval-dsh`;\n homes.set(sb.sandboxId, dshHome);\n const settings = {\n \"agent-default-model\": {\n provider: \"deepseek-official\",\n model: ctx.model ?? \"deepseek-v4-flash\",\n },\n permission: {\n defaultPreset: \"danger-full-access\",\n },\n };\n await shared.writeFile(sb, `${dshHome}/settings.yaml`, JSON.stringify(settings, null, 2));\n },\n catch: (cause) => cause,\n }),\n send: (input, ctx) => Effect.gen(function* () {\n const dshBin = yield* resolveAgentBinEffect(ctx.sandbox, \"dsh\");\n return yield* Effect.tryPromise({\n try: async (signal) => {\n const apiKey = resolveApiKey(config);\n const dshHome = homes.get(ctx.sandbox.sandboxId);\n if (!dshHome)\n throw new Error(\"DeepSeek Harness setup state is unavailable\");\n const env: globalThis.Record<string, string> = {\n DEEPSEEK_API_KEY: apiKey,\n DSH_HOME: dshHome,\n ...ctx.telemetry?.env,\n };\n const baseUrl = resolveBaseUrl(config);\n if (baseUrl)\n env.DEEPSEEK_BASE_URL = baseUrl;\n const res = await ctx.sandbox.runCommand(dshBin, [\"--profile\", \"headless\", input.text], {\n env,\n sensitiveValues: [apiKey],\n stream: true,\n signal,\n });\n const text = res.stdout.trim();\n if (res.exitCode !== 0 || !text) {\n throw makeSendFailure({\n acceptance: \"unknown\",\n message: res.exitCode !== 0\n ? shared.diagnoseFailure(res, [], undefined)\n : \"DeepSeek Harness exited successfully without a final assistant message.\",\n process: res,\n });\n }\n const events: StreamEvent[] = [{ type: \"message\", role: \"assistant\", text }];\n return { events, status: \"completed\" as const };\n },\n catch: (cause) => cause,\n });\n }),\n });\n}\nexport default deepSeekHarnessAgent;\n"]}
@@ -89,7 +89,7 @@ async function hermesSkillDir(sb) {
89
89
  /**
90
90
  * Hermes Agent 的内置 sandbox Agent 工厂。
91
91
  */
92
- // @concord-code ne-adapter-hermes-agent
92
+ // @concord-code
93
93
  // @concord-implements docs/feature/adapters/README.md
94
94
  // @concord-implements docs/feature/adapters/sdk/hermes/README.md
95
95
  function hermesAgent(config) {
@@ -111,7 +111,7 @@ function hermesAgent(config) {
111
111
  }],
112
112
  evidenceCoverage: coverage_ts_1.completeEvidenceCoverage,
113
113
  spanMapper: canonical_ts_1.mapGenericSpans,
114
- setup: (sb, ctx) => effect_1.Effect.tryPromise({
114
+ before: (sb, ctx) => effect_1.Effect.tryPromise({
115
115
  try: async () => {
116
116
  const baseUrl = resolveBaseUrl(config);
117
117
  if (baseUrl) {
@@ -143,7 +143,7 @@ function hermesAgent(config) {
143
143
  await (0, skills_ts_1.appendProjectInstruction)(sb, (0, skills_ts_1.skillDiscoveryInstruction)(skillDir, (0, skills_ts_1.installedSkillNames)(manifest.skills)));
144
144
  }
145
145
  if (manifest.skills.length) {
146
- ctx.reportSetup(manifest);
146
+ ctx.reportInstallation(manifest);
147
147
  }
148
148
  },
149
149
  catch: (cause) => cause,
@@ -1 +1 @@
1
- {"version":3,"file":"hermes.js","sourceRoot":"","sources":["hermes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { makeSandboxAgent } from \"../define.ts\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/canonical.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { parseHermesTranscript, sessionIdFromHermesOutput } from \"../o11y/parsers/hermes.ts\";\nimport { DEFAULT_HERMES_CLI_VERSION } from \"./coding-cli-versions.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport type { Agent, AgentSetupManifest, Sandbox, SkillSpec, StreamEvent, TurnEvidenceCoverage } from \"../types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\nimport { defineSandboxCommand } from \"../sandbox/commands.ts\";\n// Hermes Agent sandbox adapter。驱动:`hermes chat -q … --yolo`;\n// 行为轨优先 `hermes sessions export`,不足时 sqlite 读 messages。\n// 契约见 docs/feature/adapters/sdk/hermes/README.md。\n//\n// Docker 沙箱会覆盖 PATH(不含 $HOME/.local/bin),所以安装与调用一律走\n// `$HOME/.local/bin/hermes`(同 bub 裁决),不依赖 command -v。\nconst UV = \"$HOME/.local/bin/uv\";\nconst HERMES = \"$HOME/.local/bin/hermes\";\nexport interface HermesConfig {\n /** 模型 API key。省略时读 HERMES_API_KEY → OPENROUTER_API_KEY → ANTHROPIC_API_KEY。 */\n apiKey?: string;\n /** OpenAI 兼容端点。省略时读 HERMES_API_BASE。 */\n baseUrl?: string;\n /** 钉 PyPI `hermes-agent` 版本;省略时用 NiceEval 默认 pin。 */\n version?: string;\n /** 装进沙箱的 Skill,落在 `~/.hermes/skills/<name>/`。 */\n skills?: SkillSpec[];\n}\nfunction resolveApiKey(config?: HermesConfig): string {\n return (config?.apiKey ??\n getEnv(\"HERMES_API_KEY\") ??\n getEnv(\"OPENROUTER_API_KEY\") ??\n requireEnv(\"ANTHROPIC_API_KEY\"));\n}\nfunction resolveBaseUrl(config?: HermesConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"HERMES_API_BASE\");\n}\nasync function hermesShell(sb: Sandbox, args: string[], env: globalThis.Record<string, string>, opts?: {\n stream?: boolean;\n sensitiveValues?: readonly string[];\n}): Promise<{\n exitCode: number;\n stdout: string;\n stderr: string;\n}> {\n // HERMES 变量本身不要 quote,以便 shell 展开 $HOME。\n const script = `${HERMES} ${args.map(shellQuote).join(\" \")}`;\n return sb.runShell(script, {\n env,\n sensitiveValues: opts?.sensitiveValues,\n stream: opts?.stream,\n });\n}\nasync function exportSession(sb: Sandbox, sessionId: string, env: globalThis.Record<string, string>, sensitiveValues: readonly string[]): Promise<string | undefined> {\n const outPath = `/tmp/niceeval-hermes-${sessionId}.jsonl`;\n const res = await hermesShell(sb, [\"sessions\", \"export\", outPath, \"--session-id\", sessionId], env, { sensitiveValues });\n if (res.exitCode !== 0)\n return undefined;\n try {\n return await sb.readText(outPath);\n }\n catch {\n return undefined;\n }\n}\nasync function dumpMessagesFromDb(sb: Sandbox, sessionId: string): Promise<string | undefined> {\n // 不引入宿主 sqlite3 依赖:在沙箱里用 python 读 state.db(Hermes 自带 Python 运行时)。\n const script = `\nimport json, sqlite3, os, sys\ndb = os.path.expanduser(\"~/.hermes/state.db\")\nif not os.path.exists(db):\n sys.exit(0)\ncon = sqlite3.connect(db)\ncon.row_factory = sqlite3.Row\nsid = sys.argv[1]\nsess = con.execute(\"SELECT * FROM sessions WHERE id = ?\", (sid,)).fetchone()\nif sess:\n print(json.dumps(dict(sess), default=str))\nrows = con.execute(\n \"SELECT role, content, tool_call_id, tool_calls, tool_name, reasoning, reasoning_content FROM messages WHERE session_id = ? ORDER BY timestamp, id\",\n (sid,),\n).fetchall()\nfor r in rows:\n print(json.dumps(dict(r), default=str))\n`;\n const res = await sb.runShell(`python3 -c ${shellQuote(script)} ${shellQuote(sessionId)}`);\n if (res.exitCode !== 0 || !res.stdout.trim())\n return undefined;\n return res.stdout;\n}\n/** Hermes 只扫描其 profile home 下的 skills,不扫描 attempt 工作目录。 */\nasync function hermesSkillDir(sb: Sandbox): Promise<string> {\n const home = await sb.runShell('test -n \"$HOME\" && printf \"%s\" \"$HOME\"');\n const path = home.stdout.trim();\n if (home.exitCode !== 0 || !path.startsWith(\"/\")) {\n throw new Error(\"Hermes skill installation requires an absolute sandbox HOME directory\");\n }\n return `${path}/.hermes/skills`;\n}\n/**\n * Hermes Agent 的内置 sandbox Agent 工厂。\n */\n// @concord-code ne-adapter-hermes-agent\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/hermes/README.md\nexport function hermesAgent(config?: HermesConfig): Agent {\n const version = config?.version ?? DEFAULT_HERMES_CLI_VERSION;\n const identity = { agent: \"hermes\", version, revision: \"1\" } as const;\n const probe = defineSandboxCommand({ id: \"niceeval.agent.probe.hermes\", revision: identity.revision, inputs: identity }, async (sandbox) => {\n await sandbox.runShellOrThrow(`test -x ${HERMES} && ${HERMES} --version 2>&1 | grep -F -- ${shellQuote(version)}`);\n });\n return makeSandboxAgent({\n name: \"hermes\",\n ensure: { identity, probe },\n installers: [{\n identity,\n installMode: \"sandbox-network\",\n install: async (sandbox) => {\n await sandbox.runShellOrThrow(`test -x ${UV} || (curl -LsSf https://astral.sh/uv/install.sh | sh)`);\n await sandbox.runShellOrThrow(`${UV} tool install hermes-agent==${version}`);\n },\n }],\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapGenericSpans,\n setup: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n const baseUrl = resolveBaseUrl(config);\n if (baseUrl) {\n // OpenAI 兼容网关:写 custom provider + model.base_url;\n // secret 进 ~/.hermes/.env,不进 git 可见配置。\n const apiKey = resolveApiKey(config);\n const hermesConfig = [\n \"model:\",\n \" provider: custom\",\n ` base_url: ${baseUrl}`,\n \"custom_providers:\",\n \" - name: compat\",\n ` base_url: ${baseUrl}`,\n ` api_key: ${apiKey}`,\n \"\",\n ].join(\"\\n\");\n const hermesEnv = [\n `OPENAI_API_KEY=${apiKey}`,\n `OPENAI_BASE_URL=${baseUrl}`,\n \"\",\n ].join(\"\\n\");\n await shared.writeFile(sb, \"~/.hermes/config.yaml\", hermesConfig, { sensitiveValues: [apiKey] });\n await shared.writeFile(sb, \"~/.hermes/.env\", hermesEnv, { sensitiveValues: [apiKey] });\n }\n const manifest: AgentSetupManifest = { skills: [] };\n if (config?.skills?.length) {\n const skillDir = await hermesSkillDir(sb);\n manifest.skills = await installSkills(sb, config.skills, { dir: skillDir });\n await appendProjectInstruction(sb, skillDiscoveryInstruction(skillDir, installedSkillNames(manifest.skills)));\n }\n if (manifest.skills.length) {\n ctx.reportSetup(manifest);\n }\n },\n catch: (cause) => cause,\n }),\n send: (input, ctx) => Effect.tryPromise({\n try: async () => {\n const sb = ctx.sandbox;\n const baseUrl = resolveBaseUrl(config);\n const args = [\"chat\", \"-q\", input.text, \"--yolo\", \"-Q\"];\n if (ctx.model)\n args.push(\"--model\", ctx.model);\n if (baseUrl)\n args.push(\"--provider\", \"custom\");\n if (ctx.session.id)\n args.push(\"--resume\", ctx.session.id);\n const apiKey = resolveApiKey(config);\n const env: globalThis.Record<string, string> = {\n HERMES_API_KEY: apiKey,\n ANTHROPIC_API_KEY: apiKey,\n OPENROUTER_API_KEY: apiKey,\n OPENAI_API_KEY: apiKey,\n HERMES_YOLO_MODE: \"1\",\n ...ctx.telemetry?.env,\n };\n if (baseUrl) {\n env.HERMES_API_BASE = baseUrl;\n env.OPENAI_BASE_URL = baseUrl;\n env.ANTHROPIC_BASE_URL = baseUrl;\n }\n const sensitiveValues = [apiKey];\n const res = await hermesShell(sb, args, env, { stream: true, sensitiveValues });\n let sessionId = sessionIdFromHermesOutput(res.stdout) ??\n sessionIdFromHermesOutput(res.stderr) ??\n ctx.session.id;\n // 没从输出抠到 id 时,取 state.db 里最新 cli session\n if (!sessionId) {\n const latest = await sb.runShell([\n `python3 -c 'import sqlite3,os;db=os.path.expanduser(\"~/.hermes/state.db\");`,\n \"import sys\",\n \"if not os.path.exists(db): sys.exit(0)\",\n \"c=sqlite3.connect(db)\",\n `r=c.execute(\"select id from sessions where source=\\\\\"cli\\\\\" order by started_at desc limit 1\").fetchone()`,\n `print(r[0] if r else \"\")'`,\n ].join(\"\\n\"));\n const id = latest.stdout.trim();\n if (id)\n sessionId = id;\n }\n if (sessionId)\n ctx.session.capture(sessionId);\n let raw: string | undefined;\n if (sessionId) {\n raw = await exportSession(sb, sessionId, env, sensitiveValues);\n if (!raw)\n raw = await dumpMessagesFromDb(sb, sessionId);\n }\n const parsed = parseHermesTranscript(raw);\n const events: StreamEvent[] = [...parsed.events];\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw || parsed.events.length === 0) {\n const reason = \"hermes session export/state.db unavailable; tool trajectory missing\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n ctx.log(\"hermes transcript unavailable: negative assertions are unreliable\");\n const text = res.stdout.trim().split(\"\\n\").filter((l) => !l.startsWith(\"{\")).slice(-8).join(\"\\n\");\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n }\n else if (!parsed.parseSuccess) {\n const reason = \"some Hermes transcript lines could not be parsed\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(events),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: \"completed\",\n ...(turnEvidenceCoverage ? { evidenceCoverage: turnEvidenceCoverage } : {}),\n };\n },\n catch: (cause) => cause,\n }),\n });\n}\nexport default hermesAgent();\n"]}
1
+ {"version":3,"file":"hermes.js","sourceRoot":"","sources":["hermes.ts"],"names":[],"mappings":"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","sourcesContent":["import { Effect } from \"effect\";\nimport { makeSandboxAgent } from \"../define.ts\";\nimport { requireEnv, getEnv } from \"../util.ts\";\nimport { shared } from \"./shared.ts\";\nimport { appendProjectInstruction, installSkills, installedSkillNames, skillDiscoveryInstruction, } from \"./skills.ts\";\nimport { mapGenericSpans } from \"../o11y/otlp/canonical.ts\";\nimport { unclassifiedToolActionsCoverage } from \"../o11y/command-projection.ts\";\nimport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nimport { parseHermesTranscript, sessionIdFromHermesOutput } from \"../o11y/parsers/hermes.ts\";\nimport { DEFAULT_HERMES_CLI_VERSION } from \"./coding-cli-versions.ts\";\nimport { shellQuote } from \"../sandbox/shell.ts\";\nimport type { Agent, AgentInstallationManifest, Sandbox, SkillSpec, StreamEvent, TurnEvidenceCoverage } from \"../types.ts\";\nimport { makeSendFailure, sendAcceptanceFromEvents } from \"../context/send-failures.ts\";\nimport { defineSandboxCommand } from \"../sandbox/commands.ts\";\n// Hermes Agent sandbox adapter。驱动:`hermes chat -q … --yolo`;\n// 行为轨优先 `hermes sessions export`,不足时 sqlite 读 messages。\n// 契约见 docs/feature/adapters/sdk/hermes/README.md。\n//\n// Docker 沙箱会覆盖 PATH(不含 $HOME/.local/bin),所以安装与调用一律走\n// `$HOME/.local/bin/hermes`(同 bub 裁决),不依赖 command -v。\nconst UV = \"$HOME/.local/bin/uv\";\nconst HERMES = \"$HOME/.local/bin/hermes\";\nexport interface HermesConfig {\n /** 模型 API key。省略时读 HERMES_API_KEY → OPENROUTER_API_KEY → ANTHROPIC_API_KEY。 */\n apiKey?: string;\n /** OpenAI 兼容端点。省略时读 HERMES_API_BASE。 */\n baseUrl?: string;\n /** 钉 PyPI `hermes-agent` 版本;省略时用 NiceEval 默认 pin。 */\n version?: string;\n /** 装进沙箱的 Skill,落在 `~/.hermes/skills/<name>/`。 */\n skills?: SkillSpec[];\n}\nfunction resolveApiKey(config?: HermesConfig): string {\n return (config?.apiKey ??\n getEnv(\"HERMES_API_KEY\") ??\n getEnv(\"OPENROUTER_API_KEY\") ??\n requireEnv(\"ANTHROPIC_API_KEY\"));\n}\nfunction resolveBaseUrl(config?: HermesConfig): string | undefined {\n return config?.baseUrl ?? getEnv(\"HERMES_API_BASE\");\n}\nasync function hermesShell(sb: Sandbox, args: string[], env: globalThis.Record<string, string>, opts?: {\n stream?: boolean;\n sensitiveValues?: readonly string[];\n}): Promise<{\n exitCode: number;\n stdout: string;\n stderr: string;\n}> {\n // HERMES 变量本身不要 quote,以便 shell 展开 $HOME。\n const script = `${HERMES} ${args.map(shellQuote).join(\" \")}`;\n return sb.runShell(script, {\n env,\n sensitiveValues: opts?.sensitiveValues,\n stream: opts?.stream,\n });\n}\nasync function exportSession(sb: Sandbox, sessionId: string, env: globalThis.Record<string, string>, sensitiveValues: readonly string[]): Promise<string | undefined> {\n const outPath = `/tmp/niceeval-hermes-${sessionId}.jsonl`;\n const res = await hermesShell(sb, [\"sessions\", \"export\", outPath, \"--session-id\", sessionId], env, { sensitiveValues });\n if (res.exitCode !== 0)\n return undefined;\n try {\n return await sb.readText(outPath);\n }\n catch {\n return undefined;\n }\n}\nasync function dumpMessagesFromDb(sb: Sandbox, sessionId: string): Promise<string | undefined> {\n // 不引入宿主 sqlite3 依赖:在沙箱里用 python 读 state.db(Hermes 自带 Python 运行时)。\n const script = `\nimport json, sqlite3, os, sys\ndb = os.path.expanduser(\"~/.hermes/state.db\")\nif not os.path.exists(db):\n sys.exit(0)\ncon = sqlite3.connect(db)\ncon.row_factory = sqlite3.Row\nsid = sys.argv[1]\nsess = con.execute(\"SELECT * FROM sessions WHERE id = ?\", (sid,)).fetchone()\nif sess:\n print(json.dumps(dict(sess), default=str))\nrows = con.execute(\n \"SELECT role, content, tool_call_id, tool_calls, tool_name, reasoning, reasoning_content FROM messages WHERE session_id = ? ORDER BY timestamp, id\",\n (sid,),\n).fetchall()\nfor r in rows:\n print(json.dumps(dict(r), default=str))\n`;\n const res = await sb.runShell(`python3 -c ${shellQuote(script)} ${shellQuote(sessionId)}`);\n if (res.exitCode !== 0 || !res.stdout.trim())\n return undefined;\n return res.stdout;\n}\n/** Hermes 只扫描其 profile home 下的 skills,不扫描 attempt 工作目录。 */\nasync function hermesSkillDir(sb: Sandbox): Promise<string> {\n const home = await sb.runShell('test -n \"$HOME\" && printf \"%s\" \"$HOME\"');\n const path = home.stdout.trim();\n if (home.exitCode !== 0 || !path.startsWith(\"/\")) {\n throw new Error(\"Hermes skill installation requires an absolute sandbox HOME directory\");\n }\n return `${path}/.hermes/skills`;\n}\n/**\n * Hermes Agent 的内置 sandbox Agent 工厂。\n */\n// @concord-code\n// @concord-implements docs/feature/adapters/README.md\n// @concord-implements docs/feature/adapters/sdk/hermes/README.md\nexport function hermesAgent(config?: HermesConfig): Agent {\n const version = config?.version ?? DEFAULT_HERMES_CLI_VERSION;\n const identity = { agent: \"hermes\", version, revision: \"1\" } as const;\n const probe = defineSandboxCommand({ id: \"niceeval.agent.probe.hermes\", revision: identity.revision, inputs: identity }, async (sandbox) => {\n await sandbox.runShellOrThrow(`test -x ${HERMES} && ${HERMES} --version 2>&1 | grep -F -- ${shellQuote(version)}`);\n });\n return makeSandboxAgent({\n name: \"hermes\",\n ensure: { identity, probe },\n installers: [{\n identity,\n installMode: \"sandbox-network\",\n install: async (sandbox) => {\n await sandbox.runShellOrThrow(`test -x ${UV} || (curl -LsSf https://astral.sh/uv/install.sh | sh)`);\n await sandbox.runShellOrThrow(`${UV} tool install hermes-agent==${version}`);\n },\n }],\n evidenceCoverage: completeEvidenceCoverage,\n spanMapper: mapGenericSpans,\n before: (sb, ctx) => Effect.tryPromise({\n try: async () => {\n const baseUrl = resolveBaseUrl(config);\n if (baseUrl) {\n // OpenAI 兼容网关:写 custom provider + model.base_url;\n // secret 进 ~/.hermes/.env,不进 git 可见配置。\n const apiKey = resolveApiKey(config);\n const hermesConfig = [\n \"model:\",\n \" provider: custom\",\n ` base_url: ${baseUrl}`,\n \"custom_providers:\",\n \" - name: compat\",\n ` base_url: ${baseUrl}`,\n ` api_key: ${apiKey}`,\n \"\",\n ].join(\"\\n\");\n const hermesEnv = [\n `OPENAI_API_KEY=${apiKey}`,\n `OPENAI_BASE_URL=${baseUrl}`,\n \"\",\n ].join(\"\\n\");\n await shared.writeFile(sb, \"~/.hermes/config.yaml\", hermesConfig, { sensitiveValues: [apiKey] });\n await shared.writeFile(sb, \"~/.hermes/.env\", hermesEnv, { sensitiveValues: [apiKey] });\n }\n const manifest: AgentInstallationManifest = { skills: [] };\n if (config?.skills?.length) {\n const skillDir = await hermesSkillDir(sb);\n manifest.skills = await installSkills(sb, config.skills, { dir: skillDir });\n await appendProjectInstruction(sb, skillDiscoveryInstruction(skillDir, installedSkillNames(manifest.skills)));\n }\n if (manifest.skills.length) {\n ctx.reportInstallation(manifest);\n }\n },\n catch: (cause) => cause,\n }),\n send: (input, ctx) => Effect.tryPromise({\n try: async () => {\n const sb = ctx.sandbox;\n const baseUrl = resolveBaseUrl(config);\n const args = [\"chat\", \"-q\", input.text, \"--yolo\", \"-Q\"];\n if (ctx.model)\n args.push(\"--model\", ctx.model);\n if (baseUrl)\n args.push(\"--provider\", \"custom\");\n if (ctx.session.id)\n args.push(\"--resume\", ctx.session.id);\n const apiKey = resolveApiKey(config);\n const env: globalThis.Record<string, string> = {\n HERMES_API_KEY: apiKey,\n ANTHROPIC_API_KEY: apiKey,\n OPENROUTER_API_KEY: apiKey,\n OPENAI_API_KEY: apiKey,\n HERMES_YOLO_MODE: \"1\",\n ...ctx.telemetry?.env,\n };\n if (baseUrl) {\n env.HERMES_API_BASE = baseUrl;\n env.OPENAI_BASE_URL = baseUrl;\n env.ANTHROPIC_BASE_URL = baseUrl;\n }\n const sensitiveValues = [apiKey];\n const res = await hermesShell(sb, args, env, { stream: true, sensitiveValues });\n let sessionId = sessionIdFromHermesOutput(res.stdout) ??\n sessionIdFromHermesOutput(res.stderr) ??\n ctx.session.id;\n // 没从输出抠到 id 时,取 state.db 里最新 cli session\n if (!sessionId) {\n const latest = await sb.runShell([\n `python3 -c 'import sqlite3,os;db=os.path.expanduser(\"~/.hermes/state.db\");`,\n \"import sys\",\n \"if not os.path.exists(db): sys.exit(0)\",\n \"c=sqlite3.connect(db)\",\n `r=c.execute(\"select id from sessions where source=\\\\\"cli\\\\\" order by started_at desc limit 1\").fetchone()`,\n `print(r[0] if r else \"\")'`,\n ].join(\"\\n\"));\n const id = latest.stdout.trim();\n if (id)\n sessionId = id;\n }\n if (sessionId)\n ctx.session.capture(sessionId);\n let raw: string | undefined;\n if (sessionId) {\n raw = await exportSession(sb, sessionId, env, sensitiveValues);\n if (!raw)\n raw = await dumpMessagesFromDb(sb, sessionId);\n }\n const parsed = parseHermesTranscript(raw);\n const events: StreamEvent[] = [...parsed.events];\n let turnEvidenceCoverage: TurnEvidenceCoverage | undefined;\n if (!raw || parsed.events.length === 0) {\n const reason = \"hermes session export/state.db unavailable; tool trajectory missing\";\n turnEvidenceCoverage = {\n events: { status: \"unavailable\", reason },\n actions: { status: \"unavailable\", reason },\n usage: { status: \"unavailable\", reason },\n };\n ctx.log(\"hermes transcript unavailable: negative assertions are unreliable\");\n const text = res.stdout.trim().split(\"\\n\").filter((l) => !l.startsWith(\"{\")).slice(-8).join(\"\\n\");\n if (text)\n events.push({ type: \"message\", role: \"assistant\", text });\n }\n else if (!parsed.parseSuccess) {\n const reason = \"some Hermes transcript lines could not be parsed\";\n turnEvidenceCoverage = {\n events: { status: \"partial\", reason },\n actions: { status: \"partial\", reason },\n };\n }\n else {\n turnEvidenceCoverage = unclassifiedToolActionsCoverage(events);\n }\n if (res.exitCode !== 0) {\n throw makeSendFailure({\n acceptance: sendAcceptanceFromEvents(events),\n message: shared.diagnoseFailure(res, parsed.events, raw),\n events,\n usage: parsed.usage,\n process: res,\n });\n }\n return {\n events,\n usage: parsed.usage,\n status: \"completed\",\n ...(turnEvidenceCoverage ? { evidenceCoverage: turnEvidenceCoverage } : {}),\n };\n },\n catch: (cause) => cause,\n }),\n });\n}\nexport default hermesAgent();\n"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deepSeekHarnessAgent = exports.ompAgent = exports.openClawAgent = exports.hermesAgent = exports.openCodeAgent = exports.bubAgent = exports.codexAgent = exports.claudeCodeAgent = exports.BUILTIN_AGENTS = exports.aiSdkAgent = exports.turnFromAiSdk = exports.deltaStream = exports.driveFrameStream = exports.createLangGraphEventStream = exports.createCodexThreadEventStream = exports.createPiAgentEventStream = exports.createClaudeSdkEventStream = exports.sseJsonFrames = exports.turnFromResponses = exports.turnFromChatCompletion = exports.responsesEvidenceCoverage = exports.chatCompletionEvidenceCoverage = exports.uiMessageStreamAgent = exports.mapCodexSpans = exports.heuristicTag = exports.tagSpan = exports.normalizeExternalCause = exports.externalCauseText = exports.externalCauseMessageChain = exports.sendFailureText = exports.makeSendFailure = exports.opaqueCommandProjection = exports.notCommandProjection = exports.normalizeLogicalCommand = exports.commandProjection = exports.LOGICAL_COMMAND_NORMALIZER = exports.completeEvidenceCoverage = exports.acquireManagedProcess = exports.agentBin = exports.createNpmCliInstaller = exports.shared = exports.createSessionSlot = exports.defineSandboxAgent = exports.defineAgent = exports.defineAdapterContract = exports.defineAdapter = void 0;
3
+ exports.deepSeekHarnessAgent = exports.ompAgent = exports.openClawAgent = exports.hermesAgent = exports.openCodeAgent = exports.bubAgent = exports.codexAgent = exports.claudeCodeAgent = exports.BUILTIN_AGENTS = exports.aiSdkAgent = exports.turnFromAiSdk = exports.deltaStream = exports.driveFrameStream = exports.createLangGraphEventStream = exports.createCodexThreadEventStream = exports.createPiAgentEventStream = exports.createClaudeSdkEventStream = exports.sseJsonFrames = exports.turnFromResponses = exports.turnFromChatCompletion = exports.responsesEvidenceCoverage = exports.chatCompletionEvidenceCoverage = exports.uiMessageStreamAgent = exports.mapCodexSpans = exports.heuristicTag = exports.tagSpan = exports.normalizeExternalCause = exports.externalCauseText = exports.externalCauseMessageChain = exports.sendFailureText = exports.makeSendFailure = exports.opaqueCommandProjection = exports.notCommandProjection = exports.normalizeLogicalCommand = exports.commandProjection = exports.LOGICAL_COMMAND_NORMALIZER = exports.completeEvidenceCoverage = exports.acquireManagedProcess = exports.agentBin = exports.createNpmCliInstaller = exports.shared = exports.createSessionKey = exports.defineSandboxAgent = exports.defineAgent = exports.defineAdapterContract = exports.defineAdapter = void 0;
4
4
  // niceeval/adapter 公开导出:「连到哪个 AI」相关的类型 + 内置 adapter + 自定义 adapter 的入口。
5
5
  var adapter_ts_1 = require("../adapter.cjs");
6
6
  Object.defineProperty(exports, "defineAdapter", { enumerable: true, get: function () { return adapter_ts_1.defineAdapter; } });
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "defineAdapterContract", { enumerable: true, get:
8
8
  var define_ts_1 = require("../define.cjs");
9
9
  Object.defineProperty(exports, "defineAgent", { enumerable: true, get: function () { return define_ts_1.defineAgent; } });
10
10
  Object.defineProperty(exports, "defineSandboxAgent", { enumerable: true, get: function () { return define_ts_1.defineSandboxAgent; } });
11
- var session_slot_ts_1 = require("./session-slot.cjs");
12
- Object.defineProperty(exports, "createSessionSlot", { enumerable: true, get: function () { return session_slot_ts_1.createSessionSlot; } });
11
+ var session_key_ts_1 = require("./session-key.cjs");
12
+ Object.defineProperty(exports, "createSessionKey", { enumerable: true, get: function () { return session_key_ts_1.createSessionKey; } });
13
13
  var shared_ts_1 = require("./shared.cjs");
14
14
  Object.defineProperty(exports, "shared", { enumerable: true, get: function () { return shared_ts_1.shared; } });
15
15
  var npm_staged_ts_1 = require("./npm-staged.cjs");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,uEAAuE;AACvE,4CAAqE;AAA5D,2GAAA,aAAa,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAI7C,0CAA+D;AAAtD,wGAAA,WAAW,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AACxC,qDAAsD;AAA7C,oHAAA,iBAAiB,OAAA;AAC1B,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAEf,iDAAkE;AAAzD,sHAAA,qBAAqB,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAExC,2DAA6D;AAApD,2HAAA,qBAAqB,OAAA;AAC9B,8DAA8D;AAC9D,iEAAiE;AACjE,yDAAqE;AAA5D,uHAAA,wBAAwB,OAAA;AAEjC,qDAAqD;AACrD,2EAA2E;AAC3E,uDAAuD;AACvD,uEAAuK;AAA9J,mIAAA,0BAA0B,OAAA;AAAE,0HAAA,iBAAiB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAE9H,+DAA+D;AAC/D,qDAAqD;AACrD,wCAAwC;AACxC,qDAAqD;AACrD,gEAA+E;AAAtE,mHAAA,eAAe,OAAA;AAAE,mHAAA,eAAe,OAAA;AAGzC,iEAAmH;AAA1G,8HAAA,yBAAyB,OAAA;AAAE,sHAAA,iBAAiB,OAAA;AAAE,2HAAA,sBAAsB,OAAA;AAE7E,iEAAiE;AACjE,mEAAmE;AACnE,2DAA2D;AAC3D,8EAA8E;AAC9E,0DAAkE;AAAzD,uGAAA,OAAO,OAAA;AAAE,4GAAA,YAAY,OAAA;AAE9B,0DAA8D;AAArD,yGAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAE7B,qDAAqD;AACrD,yBAAyB;AACzB,uDAA2I;AAAlI,kIAAA,8BAA8B,OAAA;AAAE,6HAAA,yBAAyB,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAE7G,0DAA0D;AAC1D,mDAAqI;AAA5H,+GAAA,aAAa,OAAA;AAAE,4HAAA,0BAA0B,OAAA;AAAE,0HAAA,wBAAwB,OAAA;AAAE,8HAAA,4BAA4B,OAAA;AAE1G,2DAA2D;AAC3D,+CAA4D;AAAnD,0HAAA,0BAA0B,OAAA;AAEnC,kFAAkF;AAClF,qDAAqD;AACrD,iDAAiD;AACjD,+DAA+D;AAC/D,+CAA+D;AAAtD,gHAAA,gBAAgB,OAAA;AAAE,2GAAA,WAAW,OAAA;AAEtC,mEAAmE;AACnE,yDAAyD;AACzD,yCAAwD;AAA/C,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAElC,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AACvB,mDAAmD;AAA1C,iHAAA,eAAe,OAAA;AACxB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AACnB,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,6DAA6D;AAApD,2HAAA,oBAAoB,OAAA","sourcesContent":["// niceeval/adapter 公开导出:「连到哪个 AI」相关的类型 + 内置 adapter + 自定义 adapter 的入口。\nexport { defineAdapter, defineAdapterContract } from \"../adapter.ts\";\nexport type { AssertionCheck, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, } from \"../assertions/api.ts\";\nexport type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from \"../adapter.ts\";\nexport type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from \"../adapter-execution-trace.ts\";\nexport { defineAgent, defineSandboxAgent } from \"../define.ts\";\nexport { createSessionSlot } from \"./session-slot.ts\";\nexport { shared } from \"./shared.ts\";\nexport type { Shared } from \"./shared.ts\";\nexport { createNpmCliInstaller, agentBin } from \"./npm-staged.ts\";\nexport type { NpmCliInstallerOptions } from \"./npm-staged.ts\";\nexport { acquireManagedProcess } from \"./managed-process.ts\";\n// 证据覆盖声明:官方 SDK 适配器声明全通道 complete 用 completeEvidenceCoverage;\n// 手写映射按实际情况声明(见 docs/feature/adapters/architecture/evidence.md)。\nexport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nexport type { EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, } from \"../types.ts\";\n// tool operation 的 command 分类只能由 Adapter 根据原生协议事实产生。\n// structured argv 走 commandProjection() 与同一 logical-command/v1 normalizer;\n// 无法安全取得 argv 时显式 opaque,确认不是 command 时显式 not-command。\nexport { LOGICAL_COMMAND_NORMALIZER, commandProjection, normalizeLogicalCommand, notCommandProjection, opaqueCommandProjection, } from \"../o11y/command-projection.ts\";\nexport type { CommandProjection, LogicalCommandInvocation, LogicalCommandNormalizer, OriginalCommandInvocation, OriginalCommandOpaqueReason, } from \"../o11y/types.ts\";\n// 执行失败分类:`Agent.classifySendFailure` 认的结构化 envelope 与同源摘要。两轴词表\n// (FailureClass / FailureScope)与包根导出的是同一个形状——adapter\n// 作者与 eval 作者各自的入口拿到同一份类型。判据、分类链与重试执行体见\n// docs/feature/error-classification/architecture.md。\nexport { makeSendFailure, sendFailureText } from \"../context/send-failures.ts\";\nexport type { SendFailure, SendFailureClassifier } from \"../context/send-failures.ts\";\nexport type { FailureClass, FailureScope } from \"../shared/failure-class.ts\";\nexport { externalCauseMessageChain, externalCauseText, normalizeExternalCause } from \"../shared/external-cause.ts\";\nexport type { ExternalCause, ExternalCauseFact, ExternalCauseLink } from \"../shared/external-cause.ts\";\n// span → canonical GenAI 归一(只服务瀑布图,不喂断言)。私有埋点写自己的 spanMapper 时用:\n// tagSpan 把判定写回 span(原属性只增不改),heuristicTag 是通用兜底判定;mapCodexSpans 是\n// 现成的参考实现(无侵入接 codex 后端时直接声明 `spanMapper: mapCodexSpans`)。\n// 映射目标(什么属性亮起瀑布图的什么)见 apps/docs-site/zh/tutorials/connect-otel.mdx「瀑布图画得准不准」。\nexport { tagSpan, heuristicTag } from \"../o11y/otlp/canonical.ts\";\nexport type { SpanTag } from \"../o11y/otlp/canonical.ts\";\nexport { mapCodexSpans } from \"../o11y/otlp/mappers/codex.ts\";\nexport { uiMessageStreamAgent } from \"./ui-message-stream.ts\";\nexport type { UiMessageStreamAgentOptions, UIMessageLike, UIMessagePartLike } from \"./ui-message-stream.ts\";\n// 两种 OpenAI 响应形状(不限于 OpenAI 官方,任何声明兼容这两种协议形状的服务都能用)的\n// 官方转换器:整段响应 → Turn,零映射。\nexport { chatCompletionEvidenceCoverage, responsesEvidenceCoverage, turnFromChatCompletion, turnFromResponses, } from \"./openai-compat.ts\";\nexport type { ChatCompletionLike, ChatCompletionCustomToolCallLike, ChatCompletionFunctionToolCallLike, ChatCompletionMessageLike, ChatCompletionToolCallLike, ChatCompletionUnknownToolCallLike, ChatCompletionUsageLike, ResponseFunctionCallItemLike, ResponseLike, ResponseMessageItemLike, ResponseOutputItemLike, ResponseOutputTextLike, ResponseUsageLike, } from \"./openai-compat.ts\";\n// SDK 原生事件流 → 标准事件的官方转换器(无侵入 adapter 只剩传输粘合)+ 通用 SSE 读帧器。\nexport { sseJsonFrames, createClaudeSdkEventStream, createPiAgentEventStream, createCodexThreadEventStream } from \"./sdk-streams.ts\";\nexport type { SseFrameCursor, ClaudeSdkMessageLike, ClaudeSdkStream, PiAgentEventLike, PiAgentStream, CodexThreadEventLike, CodexThreadStream, } from \"./sdk-streams.ts\";\n// LangGraph 官方事件流转换器(不绑定 transport,不提供 langGraphAgent 工厂)。\nexport { createLangGraphEventStream } from \"./langgraph.ts\";\nexport type { LangGraphEventLike, LangGraphContentBlockLike, LangGraphStream } from \"./langgraph.ts\";\n// 通用「拼装方式」件:逐帧驱动循环、逐 token/参数增量累加器。见 apps/docs-site/zh/tutorials/write-send.mdx——\n// 这些和任何具体协议无关,自己写 adapter 时优先拿这些拼,只有 transport(怎么发)与\n// 「帧类型 → 操作」这张映射表才是真正要手写的。会话续接与 HITL 停轮现场不再是可选件,\n// 而是 ctx.session(AgentSession)本身的 typed slot 与 id/capture 存取器。\nexport { driveFrameStream, deltaStream } from \"./streaming.ts\";\nexport type { FrameReducer, FrameHook, DeltaOp, DeltaStreamSpec } from \"./streaming.ts\";\n// tracing 管线的内置实现 aiSdkOtel() 在 `niceeval/adapter/otel`(独立子路径,不从这里\n// re-export):OTel 三件套是可选 peer 依赖,只有 import 那个入口的项目才需要安装。\nexport { turnFromAiSdk, aiSdkAgent } from \"./ai-sdk.ts\";\nexport type { AiSdkAgentOptions, AiSdkGenerateContext, AiSdkResultLike, AiSdkStepLike, AiSdkTelemetrySettings, AiSdkToolCallLike, AiSdkToolResultLike, AiSdkTracing, AiSdkTurn, AiSdkTurnTelemetry, AiSdkUsageLike, } from \"./ai-sdk.ts\";\nexport { BUILTIN_AGENTS } from \"./builtin.ts\";\nexport { claudeCodeAgent } from \"./claude-code.ts\";\nexport { codexAgent } from \"./codex.ts\";\nexport { bubAgent } from \"./bub.ts\";\nexport { openCodeAgent } from \"./opencode.ts\";\nexport { hermesAgent } from \"./hermes.ts\";\nexport { openClawAgent } from \"./openclaw.ts\";\nexport { ompAgent } from \"./omp.ts\";\nexport { deepSeekHarnessAgent } from \"./deepseek-harness.ts\";\nexport type { ClaudeCodeConfig, ClaudeCodePluginSpec } from \"./claude-code.ts\";\nexport type { CodexConfig, CodexPluginSpec } from \"./codex.ts\";\nexport type { BubConfig, PythonPluginSpec } from \"./bub.ts\";\nexport type { OpenCodeConfig } from \"./opencode.ts\";\nexport type { HermesConfig } from \"./hermes.ts\";\nexport type { OpenClawConfig } from \"./openclaw.ts\";\nexport type { OmpConfig } from \"./omp.ts\";\nexport type { DeepSeekHarnessConfig } from \"./deepseek-harness.ts\";\nexport type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentSetup, DirectAgentTeardown, AgentSession, SessionSlot, AgentSetup, AgentSetupManifest, AgentSetupSkill, AgentTeardown, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentSetupContext, McpServer, SkillSpec, } from \"../types.ts\";\nexport type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from \"../model-slots.ts\";\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":";;;AAAA,uEAAuE;AACvE,4CAAqE;AAA5D,2GAAA,aAAa,OAAA;AAAE,mHAAA,qBAAqB,OAAA;AAI7C,0CAA+D;AAAtD,wGAAA,WAAW,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AACxC,mDAAoD;AAA3C,kHAAA,gBAAgB,OAAA;AACzB,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAEf,iDAAkE;AAAzD,sHAAA,qBAAqB,OAAA;AAAE,yGAAA,QAAQ,OAAA;AAExC,2DAA6D;AAApD,2HAAA,qBAAqB,OAAA;AAC9B,8DAA8D;AAC9D,iEAAiE;AACjE,yDAAqE;AAA5D,uHAAA,wBAAwB,OAAA;AAEjC,qDAAqD;AACrD,2EAA2E;AAC3E,uDAAuD;AACvD,uEAAuK;AAA9J,mIAAA,0BAA0B,OAAA;AAAE,0HAAA,iBAAiB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAAE,6HAAA,oBAAoB,OAAA;AAAE,gIAAA,uBAAuB,OAAA;AAE9H,+DAA+D;AAC/D,qDAAqD;AACrD,wCAAwC;AACxC,qDAAqD;AACrD,gEAA+E;AAAtE,mHAAA,eAAe,OAAA;AAAE,mHAAA,eAAe,OAAA;AAGzC,iEAAmH;AAA1G,8HAAA,yBAAyB,OAAA;AAAE,sHAAA,iBAAiB,OAAA;AAAE,2HAAA,sBAAsB,OAAA;AAE7E,iEAAiE;AACjE,mEAAmE;AACnE,2DAA2D;AAC3D,8EAA8E;AAC9E,0DAAkE;AAAzD,uGAAA,OAAO,OAAA;AAAE,4GAAA,YAAY,OAAA;AAE9B,0DAA8D;AAArD,yGAAA,aAAa,OAAA;AACtB,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA;AAE7B,qDAAqD;AACrD,yBAAyB;AACzB,uDAA2I;AAAlI,kIAAA,8BAA8B,OAAA;AAAE,6HAAA,yBAAyB,OAAA;AAAE,0HAAA,sBAAsB,OAAA;AAAE,qHAAA,iBAAiB,OAAA;AAE7G,0DAA0D;AAC1D,mDAAqI;AAA5H,+GAAA,aAAa,OAAA;AAAE,4HAAA,0BAA0B,OAAA;AAAE,0HAAA,wBAAwB,OAAA;AAAE,8HAAA,4BAA4B,OAAA;AAE1G,2DAA2D;AAC3D,+CAA4D;AAAnD,0HAAA,0BAA0B,OAAA;AAEnC,kFAAkF;AAClF,qDAAqD;AACrD,iDAAiD;AACjD,+DAA+D;AAC/D,+CAA+D;AAAtD,gHAAA,gBAAgB,OAAA;AAAE,2GAAA,WAAW,OAAA;AAEtC,mEAAmE;AACnE,yDAAyD;AACzD,yCAAwD;AAA/C,0GAAA,aAAa,OAAA;AAAE,uGAAA,UAAU,OAAA;AAElC,2CAA8C;AAArC,4GAAA,cAAc,OAAA;AACvB,mDAAmD;AAA1C,iHAAA,eAAe,OAAA;AACxB,uCAAwC;AAA/B,sGAAA,UAAU,OAAA;AACnB,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,yCAA0C;AAAjC,wGAAA,WAAW,OAAA;AACpB,6CAA8C;AAArC,4GAAA,aAAa,OAAA;AACtB,mCAAoC;AAA3B,kGAAA,QAAQ,OAAA;AACjB,6DAA6D;AAApD,2HAAA,oBAAoB,OAAA","sourcesContent":["// niceeval/adapter 公开导出:「连到哪个 AI」相关的类型 + 内置 adapter + 自定义 adapter 的入口。\nexport { defineAdapter, defineAdapterContract } from \"../adapter.ts\";\nexport type { AssertionCheck, PolymorphicBooleanAssertionHandle, PolymorphicMeasurementAssertionHandle, } from \"../assertions/api.ts\";\nexport type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from \"../adapter.ts\";\nexport type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from \"../adapter-execution-trace.ts\";\nexport { defineAgent, defineSandboxAgent } from \"../define.ts\";\nexport { createSessionKey } from \"./session-key.ts\";\nexport { shared } from \"./shared.ts\";\nexport type { Shared } from \"./shared.ts\";\nexport { createNpmCliInstaller, agentBin } from \"./npm-staged.ts\";\nexport type { NpmCliInstallerOptions } from \"./npm-staged.ts\";\nexport { acquireManagedProcess } from \"./managed-process.ts\";\n// 证据覆盖声明:官方 SDK 适配器声明全通道 complete 用 completeEvidenceCoverage;\n// 手写映射按实际情况声明(见 docs/feature/adapters/architecture/evidence.md)。\nexport { completeEvidenceCoverage } from \"../assertions/coverage.ts\";\nexport type { EvidenceCoverageStatus, EvidenceCoverageEntry, EvidenceCoverage, TurnEvidenceCoverage, } from \"../types.ts\";\n// tool operation 的 command 分类只能由 Adapter 根据原生协议事实产生。\n// structured argv 走 commandProjection() 与同一 logical-command/v1 normalizer;\n// 无法安全取得 argv 时显式 opaque,确认不是 command 时显式 not-command。\nexport { LOGICAL_COMMAND_NORMALIZER, commandProjection, normalizeLogicalCommand, notCommandProjection, opaqueCommandProjection, } from \"../o11y/command-projection.ts\";\nexport type { CommandProjection, LogicalCommandInvocation, LogicalCommandNormalizer, OriginalCommandInvocation, OriginalCommandOpaqueReason, } from \"../o11y/types.ts\";\n// 执行失败分类:`Agent.classifySendFailure` 认的结构化 envelope 与同源摘要。两轴词表\n// (FailureClass / FailureScope)与包根导出的是同一个形状——adapter\n// 作者与 eval 作者各自的入口拿到同一份类型。判据、分类链与重试执行体见\n// docs/feature/error-classification/architecture.md。\nexport { makeSendFailure, sendFailureText } from \"../context/send-failures.ts\";\nexport type { SendFailure, SendFailureClassifier } from \"../context/send-failures.ts\";\nexport type { FailureClass, FailureScope } from \"../shared/failure-class.ts\";\nexport { externalCauseMessageChain, externalCauseText, normalizeExternalCause } from \"../shared/external-cause.ts\";\nexport type { ExternalCause, ExternalCauseFact, ExternalCauseLink } from \"../shared/external-cause.ts\";\n// span → canonical GenAI 归一(只服务瀑布图,不喂断言)。私有埋点写自己的 spanMapper 时用:\n// tagSpan 把判定写回 span(原属性只增不改),heuristicTag 是通用兜底判定;mapCodexSpans 是\n// 现成的参考实现(无侵入接 codex 后端时直接声明 `spanMapper: mapCodexSpans`)。\n// 映射目标(什么属性亮起瀑布图的什么)见 apps/docs-site/zh/tutorials/connect-otel.mdx「瀑布图画得准不准」。\nexport { tagSpan, heuristicTag } from \"../o11y/otlp/canonical.ts\";\nexport type { SpanTag } from \"../o11y/otlp/canonical.ts\";\nexport { mapCodexSpans } from \"../o11y/otlp/mappers/codex.ts\";\nexport { uiMessageStreamAgent } from \"./ui-message-stream.ts\";\nexport type { UiMessageStreamAgentOptions, UIMessageLike, UIMessagePartLike } from \"./ui-message-stream.ts\";\n// 两种 OpenAI 响应形状(不限于 OpenAI 官方,任何声明兼容这两种协议形状的服务都能用)的\n// 官方转换器:整段响应 → Turn,零映射。\nexport { chatCompletionEvidenceCoverage, responsesEvidenceCoverage, turnFromChatCompletion, turnFromResponses, } from \"./openai-compat.ts\";\nexport type { ChatCompletionLike, ChatCompletionCustomToolCallLike, ChatCompletionFunctionToolCallLike, ChatCompletionMessageLike, ChatCompletionToolCallLike, ChatCompletionUnknownToolCallLike, ChatCompletionUsageLike, ResponseFunctionCallItemLike, ResponseLike, ResponseMessageItemLike, ResponseOutputItemLike, ResponseOutputTextLike, ResponseUsageLike, } from \"./openai-compat.ts\";\n// SDK 原生事件流 → 标准事件的官方转换器(无侵入 adapter 只剩传输粘合)+ 通用 SSE 读帧器。\nexport { sseJsonFrames, createClaudeSdkEventStream, createPiAgentEventStream, createCodexThreadEventStream } from \"./sdk-streams.ts\";\nexport type { SseFrameCursor, ClaudeSdkMessageLike, ClaudeSdkStream, PiAgentEventLike, PiAgentStream, CodexThreadEventLike, CodexThreadStream, } from \"./sdk-streams.ts\";\n// LangGraph 官方事件流转换器(不绑定 transport,不提供 langGraphAgent 工厂)。\nexport { createLangGraphEventStream } from \"./langgraph.ts\";\nexport type { LangGraphEventLike, LangGraphContentBlockLike, LangGraphStream } from \"./langgraph.ts\";\n// 通用「拼装方式」件:逐帧驱动循环、逐 token/参数增量累加器。见 apps/docs-site/zh/tutorials/write-send.mdx——\n// 这些和任何具体协议无关,自己写 adapter 时优先拿这些拼,只有 transport(怎么发)与\n// 「帧类型 → 操作」这张映射表才是真正要手写的。会话续接与 HITL 停轮现场不再是可选件,\n// 而是 ctx.session(AgentSession)本身的 typed slot 与 id/capture 存取器。\nexport { driveFrameStream, deltaStream } from \"./streaming.ts\";\nexport type { FrameReducer, FrameHook, DeltaOp, DeltaStreamSpec } from \"./streaming.ts\";\n// tracing 管线的内置实现 aiSdkOtel() 在 `niceeval/adapter/otel`(独立子路径,不从这里\n// re-export):OTel 三件套是可选 peer 依赖,只有 import 那个入口的项目才需要安装。\nexport { turnFromAiSdk, aiSdkAgent } from \"./ai-sdk.ts\";\nexport type { AiSdkAgentOptions, AiSdkGenerateContext, AiSdkResultLike, AiSdkStepLike, AiSdkTelemetrySettings, AiSdkToolCallLike, AiSdkToolResultLike, AiSdkTracing, AiSdkTurn, AiSdkTurnTelemetry, AiSdkUsageLike, } from \"./ai-sdk.ts\";\nexport { BUILTIN_AGENTS } from \"./builtin.ts\";\nexport { claudeCodeAgent } from \"./claude-code.ts\";\nexport { codexAgent } from \"./codex.ts\";\nexport { bubAgent } from \"./bub.ts\";\nexport { openCodeAgent } from \"./opencode.ts\";\nexport { hermesAgent } from \"./hermes.ts\";\nexport { openClawAgent } from \"./openclaw.ts\";\nexport { ompAgent } from \"./omp.ts\";\nexport { deepSeekHarnessAgent } from \"./deepseek-harness.ts\";\nexport type { ClaudeCodeConfig, ClaudeCodePluginSpec } from \"./claude-code.ts\";\nexport type { CodexConfig, CodexPluginSpec } from \"./codex.ts\";\nexport type { BubConfig, PythonPluginSpec } from \"./bub.ts\";\nexport type { OpenCodeConfig } from \"./opencode.ts\";\nexport type { HermesConfig } from \"./hermes.ts\";\nexport type { OpenClawConfig } from \"./openclaw.ts\";\nexport type { OmpConfig } from \"./omp.ts\";\nexport type { DeepSeekHarnessConfig } from \"./deepseek-harness.ts\";\nexport type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentBefore, DirectAgentAfter, AgentSession, SessionKey, AgentBefore, AgentBeforeContext, AgentInstallationManifest, AgentInstallationSkill, AgentAfter, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentBeforeContext, McpServer, SkillSpec, } from \"../types.ts\";\nexport type { ModelRoleSelection, ResolvedModelRole, ResolvedModelRoles } from \"../model-roles.ts\";\n"]}
@@ -3,7 +3,7 @@ export type { AssertionCheck, PolymorphicBooleanAssertionHandle, PolymorphicMeas
3
3
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "../adapter.cjs";
4
4
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "../adapter-execution-trace.cjs";
5
5
  export { defineAgent, defineSandboxAgent } from "../define.cjs";
6
- export { createSessionSlot } from "./session-slot.cjs";
6
+ export { createSessionKey } from "./session-key.cjs";
7
7
  export { shared } from "./shared.cjs";
8
8
  export type { Shared } from "./shared.cjs";
9
9
  export { createNpmCliInstaller, agentBin } from "./npm-staged.cjs";
@@ -50,5 +50,5 @@ export type { HermesConfig } from "./hermes.cjs";
50
50
  export type { OpenClawConfig } from "./openclaw.cjs";
51
51
  export type { OmpConfig } from "./omp.cjs";
52
52
  export type { DeepSeekHarnessConfig } from "./deepseek-harness.cjs";
53
- export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentSetup, DirectAgentTeardown, AgentSession, SessionSlot, AgentSetup, AgentSetupManifest, AgentSetupSkill, AgentTeardown, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentSetupContext, McpServer, SkillSpec, } from "../types.cjs";
54
- export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "../model-slots.cjs";
53
+ export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentBefore, DirectAgentAfter, AgentSession, SessionKey, AgentBefore, AgentBeforeContext, AgentInstallationManifest, AgentInstallationSkill, AgentAfter, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentBeforeContext, McpServer, SkillSpec, } from "../types.cjs";
54
+ export type { ModelRoleSelection, ResolvedModelRole, ResolvedModelRoles } from "../model-roles.cjs";
@@ -3,7 +3,7 @@ export type { AssertionCheck, PolymorphicBooleanAssertionHandle, PolymorphicMeas
3
3
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "../adapter.mjs";
4
4
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "../adapter-execution-trace.mjs";
5
5
  export { defineAgent, defineSandboxAgent } from "../define.mjs";
6
- export { createSessionSlot } from "./session-slot.mjs";
6
+ export { createSessionKey } from "./session-key.mjs";
7
7
  export { shared } from "./shared.mjs";
8
8
  export type { Shared } from "./shared.mjs";
9
9
  export { createNpmCliInstaller, agentBin } from "./npm-staged.mjs";
@@ -50,5 +50,5 @@ export type { HermesConfig } from "./hermes.mjs";
50
50
  export type { OpenClawConfig } from "./openclaw.mjs";
51
51
  export type { OmpConfig } from "./omp.mjs";
52
52
  export type { DeepSeekHarnessConfig } from "./deepseek-harness.mjs";
53
- export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentSetup, DirectAgentTeardown, AgentSession, SessionSlot, AgentSetup, AgentSetupManifest, AgentSetupSkill, AgentTeardown, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentSetupContext, McpServer, SkillSpec, } from "../types.mjs";
54
- export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "../model-slots.mjs";
53
+ export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentBefore, DirectAgentAfter, AgentSession, SessionKey, AgentBefore, AgentBeforeContext, AgentInstallationManifest, AgentInstallationSkill, AgentAfter, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentBeforeContext, McpServer, SkillSpec, } from "../types.mjs";
54
+ export type { ModelRoleSelection, ResolvedModelRole, ResolvedModelRoles } from "../model-roles.mjs";
@@ -3,7 +3,7 @@ export type { AssertionCheck, PolymorphicBooleanAssertionHandle, PolymorphicMeas
3
3
  export type { Adapter, AdapterAssertionsFactory, AdapterAssertionsFactoryContext, AdapterCleanupContext, AttemptCancellation, AttemptSignal, AdapterContract, AdapterCreateContext, AdapterDefinition, AdapterEvalDefinition, AdapterEvalInput, AdapterIdentity, AdapterImplementation, AdapterImplementationInput, AdapterRuntimeDefinition, AdapterScoreEvalInput, EvalContext, ReservedAdapterContextKey, } from "../adapter.js";
4
4
  export type { ExecutionDisplayBlock, ExecutionTraceActor, ExecutionTraceEvent, ExecutionTraceEvidence, ExecutionTraceInput, ExecutionTraceLimitation, ExecutionTraceLink, ExecutionTraceReceipt, ExecutionTraceScope, ExecutionTraceScopeMembership, ExecutionTraceSource, ExecutionTraceTime, TraceJson, } from "../adapter-execution-trace.js";
5
5
  export { defineAgent, defineSandboxAgent } from "../define.js";
6
- export { createSessionSlot } from "./session-slot.js";
6
+ export { createSessionKey } from "./session-key.js";
7
7
  export { shared } from "./shared.js";
8
8
  export type { Shared } from "./shared.js";
9
9
  export { createNpmCliInstaller, agentBin } from "./npm-staged.js";
@@ -50,5 +50,5 @@ export type { HermesConfig } from "./hermes.js";
50
50
  export type { OpenClawConfig } from "./openclaw.js";
51
51
  export type { OmpConfig } from "./omp.js";
52
52
  export type { DeepSeekHarnessConfig } from "./deepseek-harness.js";
53
- export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentSetup, DirectAgentTeardown, AgentSession, SessionSlot, AgentSetup, AgentSetupManifest, AgentSetupSkill, AgentTeardown, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentSetupContext, McpServer, SkillSpec, } from "../types.js";
54
- export type { ModelSlotSelection, ResolvedModelSlot, ResolvedModelSlots } from "../model-slots.js";
53
+ export type { Agent, AgentContext, AgentIdentity, AgentInstallMode, AgentArtifactPlatform, AgentStagedArtifact, AgentEnsureOutcome, AgentEnsure, AgentInstaller, AgentArtifactContext, AgentInstallContext, StagedAgentInstallContext, DirectAgent, DirectAgentDef, DirectAgentBefore, DirectAgentAfter, AgentSession, SessionKey, AgentBefore, AgentBeforeContext, AgentInstallationManifest, AgentInstallationSkill, AgentAfter, AgentTracing, SpanMapper, Telemetry, SandboxAgentDef, SandboxAgent, SandboxAgentContext, SandboxAgentBeforeContext, McpServer, SkillSpec, } from "../types.js";
54
+ export type { ModelRoleSelection, ResolvedModelRole, ResolvedModelRoles } from "../model-roles.js";
@@ -33,8 +33,8 @@ const __niceevalExport14 = __niceevalCanonical["createNpmCliInstaller"];
33
33
  export { __niceevalExport14 as createNpmCliInstaller };
34
34
  const __niceevalExport15 = __niceevalCanonical["createPiAgentEventStream"];
35
35
  export { __niceevalExport15 as createPiAgentEventStream };
36
- const __niceevalExport16 = __niceevalCanonical["createSessionSlot"];
37
- export { __niceevalExport16 as createSessionSlot };
36
+ const __niceevalExport16 = __niceevalCanonical["createSessionKey"];
37
+ export { __niceevalExport16 as createSessionKey };
38
38
  const __niceevalExport17 = __niceevalCanonical["deepSeekHarnessAgent"];
39
39
  export { __niceevalExport17 as deepSeekHarnessAgent };
40
40
  const __niceevalExport18 = __niceevalCanonical["defineAdapter"];
@@ -33,8 +33,8 @@ const __niceevalExport14 = __niceevalCanonical["createNpmCliInstaller"];
33
33
  export { __niceevalExport14 as createNpmCliInstaller };
34
34
  const __niceevalExport15 = __niceevalCanonical["createPiAgentEventStream"];
35
35
  export { __niceevalExport15 as createPiAgentEventStream };
36
- const __niceevalExport16 = __niceevalCanonical["createSessionSlot"];
37
- export { __niceevalExport16 as createSessionSlot };
36
+ const __niceevalExport16 = __niceevalCanonical["createSessionKey"];
37
+ export { __niceevalExport16 as createSessionKey };
38
38
  const __niceevalExport17 = __niceevalCanonical["deepSeekHarnessAgent"];
39
39
  export { __niceevalExport17 as deepSeekHarnessAgent };
40
40
  const __niceevalExport18 = __niceevalCanonical["defineAdapter"];