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,6 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveDockerExecutionProfile = exports.parseDockerProfileRegistry = exports.createDockerProfileRegistry = void 0;
4
3
  exports.indexDockerProfiles = indexDockerProfiles;
5
4
  exports.resolveDockerProfile = resolveDockerProfile;
6
5
  exports.resolveDockerProfileSelector = resolveDockerProfileSelector;
@@ -244,7 +243,7 @@ function resolveEntry(entry, index, options) {
244
243
  const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);
245
244
  checkSourceFacts(entry.fileFacts, `registry.entries[${index}]`, options.expectedOwnerUid ?? 0);
246
245
  try {
247
- const profile = (0, schema_ts_1.parseDockerExecutionProfileV1)(entry.profile);
246
+ const profile = (0, schema_ts_1.decodeDockerExecutionProfile)(entry.profile);
248
247
  return Object.freeze({
249
248
  alias,
250
249
  profile,
@@ -260,7 +259,7 @@ function resolveEntry(entry, index, options) {
260
259
  }
261
260
  }
262
261
  /** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */
263
- // @concord-code ne-sandbox-docker-profile-index
262
+ // @concord-code
264
263
  // @concord-implements docs/feature/sandbox-docker-profiles/library.md
265
264
  // @concord-implements docs/feature/sandbox-docker-profiles/architecture.md
266
265
  function indexDockerProfiles(input, options = {}) {
@@ -294,8 +293,6 @@ function indexDockerProfiles(input, options = {}) {
294
293
  }
295
294
  return Object.freeze({ entries: Object.freeze(entries) });
296
295
  }
297
- exports.createDockerProfileRegistry = indexDockerProfiles;
298
- exports.parseDockerProfileRegistry = indexDockerProfiles;
299
296
  function isRegistryIndex(value) {
300
297
  return isRecord(value) && Array.isArray(value.entries) && value.entries.every((entry) => isRecord(entry) &&
301
298
  typeof entry.alias === "string" &&
@@ -308,7 +305,7 @@ function indexOf(input) {
308
305
  const entries = input.entries.map((entry, index) => {
309
306
  const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);
310
307
  try {
311
- const profile = (0, schema_ts_1.parseDockerExecutionProfileV1)(entry.profile);
308
+ const profile = (0, schema_ts_1.decodeDockerExecutionProfile)(entry.profile);
312
309
  const descriptorDigest = (0, schema_ts_1.dockerExecutionProfileV1Digest)(profile);
313
310
  if (entry.profileId !== profile.profileId || entry.descriptorDigest !== descriptorDigest) {
314
311
  throw (0, errors_ts_1.dockerProfileError)({
@@ -340,7 +337,7 @@ function indexOf(input) {
340
337
  return indexDockerProfiles(input);
341
338
  }
342
339
  /** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */
343
- // @concord-code ne-sandbox-docker-profile-resolve
340
+ // @concord-code
344
341
  // @concord-implements docs/feature/sandbox-docker-profiles/library.md
345
342
  function resolveDockerProfile(registry, alias) {
346
343
  const normalizedAlias = requiredAlias(alias, "profile alias");
@@ -355,7 +352,7 @@ function resolveDockerProfile(registry, alias) {
355
352
  });
356
353
  }
357
354
  /** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */
358
- // @concord-code ne-sandbox-docker-profile-select
355
+ // @concord-code
359
356
  // @concord-implements docs/feature/sandbox-docker-profiles/library.md
360
357
  function resolveDockerProfileSelector(registry, selector) {
361
358
  const normalizedSelector = requiredSelector(selector, "profile selector");
@@ -379,5 +376,4 @@ function resolveDockerProfileSelector(registry, selector) {
379
376
  }
380
377
  return first;
381
378
  }
382
- exports.resolveDockerExecutionProfile = resolveDockerProfile;
383
379
  //# sourceMappingURL=registry.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { dockerProfileError, DockerProfileError, } from \"./errors.ts\";\nimport { dockerExecutionProfileV1Digest, parseDockerExecutionProfileV1, type DockerExecutionProfileV1, } from \"./schema.ts\";\n/** 由宿主 registry loader 提供的文件事实;本模块不会自行读文件或执行路径。 */\nexport interface DockerProfileRegistryFileFacts {\n readonly isSymlink?: boolean;\n readonly ownerUid?: number;\n readonly mode?: number;\n readonly parentWritable?: boolean;\n readonly parentModes?: readonly number[];\n}\nexport interface DockerProfileRegistryEntry {\n readonly alias: string;\n readonly profile?: unknown;\n readonly descriptor?: unknown;\n readonly source?: string;\n readonly fileFacts?: DockerProfileRegistryFileFacts;\n}\nexport interface DockerProfileRegistryOptions {\n /** descriptor 必须由 root 持有;未提供 file facts 时纯解析不会臆造权限事实。 */\n readonly expectedOwnerUid?: number;\n}\nexport interface ResolvedDockerProfileEntry {\n readonly alias: string;\n readonly profile: DockerExecutionProfileV1;\n readonly profileId: string;\n readonly descriptorDigest: string;\n readonly source?: string;\n}\nexport interface DockerProfileRegistryIndex {\n readonly entries: readonly ResolvedDockerProfileEntry[];\n}\nexport type DockerProfileRegistryInput = readonly DockerProfileRegistryEntry[] | Readonly<globalThis.Record<string, unknown>> | {\n readonly entries: readonly DockerProfileRegistryEntry[];\n};\nfunction isRecord(value: unknown): value is globalThis.Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction hasOwn(record: globalThis.Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(record, key);\n}\nfunction requiredAlias(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty alias`,\n });\n }\n if (value.includes(\"\\u0000\") || value.includes(\"/\") || value.includes(\"\\\\\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a single non-empty alias segment`,\n });\n }\n return value;\n}\nfunction requiredSource(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\" || value.includes(\"\\u0000\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty source string without NUL`,\n });\n }\n return value;\n}\nfunction requiredSelector(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\" || value.includes(\"\\u0000\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty selector without NUL`,\n });\n }\n return value;\n}\nfunction sourceFacts(value: unknown, path: string): DockerProfileRegistryFileFacts | undefined {\n if (value === undefined)\n return undefined;\n if (!isRecord(value)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a plain object`,\n });\n }\n const allowed = new Set([\"isSymlink\", \"ownerUid\", \"mode\", \"parentWritable\", \"parentModes\"]);\n const unsupported = Object.keys(value).find((key) => !allowed.has(key));\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.${unsupported}`,\n message: `${path}.${unsupported} is not supported`,\n });\n }\n if (value.isSymlink !== undefined && typeof value.isSymlink !== \"boolean\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.isSymlink`,\n message: `${path}.isSymlink must be boolean`,\n });\n }\n const ownerUid = value.ownerUid;\n if (ownerUid !== undefined && (typeof ownerUid !== \"number\" || !Number.isSafeInteger(ownerUid) || ownerUid < 0)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.ownerUid`,\n message: `${path}.ownerUid must be a non-negative safe integer`,\n });\n }\n const mode = value.mode;\n if (mode !== undefined && (typeof mode !== \"number\" || !Number.isInteger(mode) || mode < 0 || mode > 0o7777)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.mode`,\n message: `${path}.mode must be an integer between 0 and 0o7777`,\n });\n }\n if (value.parentWritable !== undefined && typeof value.parentWritable !== \"boolean\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.parentWritable`,\n message: `${path}.parentWritable must be boolean`,\n });\n }\n const parentModes = value.parentModes;\n if (parentModes !== undefined && (!Array.isArray(parentModes) || parentModes.some((mode) => typeof mode !== \"number\" || !Number.isInteger(mode) || mode < 0 || mode > 0o7777))) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.parentModes`,\n message: `${path}.parentModes must contain file modes`,\n });\n }\n return Object.freeze({\n ...(value.isSymlink === undefined ? {} : { isSymlink: value.isSymlink }),\n ...(ownerUid === undefined ? {} : { ownerUid }),\n ...(mode === undefined ? {} : { mode }),\n ...(value.parentWritable === undefined ? {} : { parentWritable: value.parentWritable }),\n ...(parentModes === undefined ? {} : { parentModes: Object.freeze([...parentModes]) }),\n });\n}\nfunction checkSourceFacts(facts: DockerProfileRegistryFileFacts | undefined, path: string, expectedOwnerUid: number): void {\n if (facts === undefined)\n return;\n if (facts.isSymlink === true) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-symlink\",\n path,\n message: \"Docker profile descriptor must be a regular file, not a symbolic link\",\n });\n }\n if (facts.ownerUid !== undefined && facts.ownerUid !== expectedOwnerUid) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-owner-invalid\",\n path,\n message: `Docker profile descriptor must be owned by UID ${expectedOwnerUid}`,\n details: { expectedOwnerUid, actualOwnerUid: facts.ownerUid },\n });\n }\n if (facts.mode !== undefined && (facts.mode & 0o022) !== 0) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-mode-invalid\",\n path,\n message: \"Docker profile descriptor and registry file must not be group- or world-writable\",\n details: { mode: facts.mode },\n });\n }\n if (facts.parentWritable === true || facts.parentModes?.some((mode) => (mode & 0o022) !== 0) === true) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-parent-writable\",\n path,\n message: \"Docker profile descriptor parent directories must not be group- or world-writable\",\n });\n }\n}\nfunction entryFromArray(value: unknown, index: number): DockerProfileRegistryEntry {\n const path = `registry.entries[${index}]`;\n if (!isRecord(value)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a plain object`,\n });\n }\n const allowed = new Set([\"alias\", \"profile\", \"descriptor\", \"source\", \"fileFacts\"]);\n const unsupported = Object.keys(value).find((key) => !allowed.has(key));\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.${unsupported}`,\n message: `${path}.${unsupported} is not supported`,\n });\n }\n if (hasOwn(value, \"profile\") && hasOwn(value, \"descriptor\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must provide either profile or descriptor, not both`,\n });\n }\n if (!hasOwn(value, \"profile\") && !hasOwn(value, \"descriptor\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must provide profile or descriptor`,\n });\n }\n const profile = hasOwn(value, \"profile\") ? value.profile : value.descriptor;\n return Object.freeze({\n alias: requiredAlias(value.alias, `${path}.alias`),\n profile,\n ...(value.source === undefined ? {} : { source: requiredSource(value.source, `${path}.source`) }),\n ...(value.fileFacts === undefined ? {} : { fileFacts: sourceFacts(value.fileFacts, `${path}.fileFacts`) }),\n });\n}\nfunction entryFromAlias(alias: string, value: unknown): DockerProfileRegistryEntry[] {\n const normalizedAlias = requiredAlias(alias, `registry.${alias}`);\n if (Array.isArray(value)) {\n return value.map((candidate) => Object.freeze({ alias: normalizedAlias, profile: candidate }));\n }\n return [Object.freeze({ alias: normalizedAlias, profile: value })];\n}\nfunction rawEntries(input: unknown): readonly DockerProfileRegistryEntry[] {\n if (Array.isArray(input))\n return Object.freeze(input.map(entryFromArray));\n if (!isRecord(input)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: \"registry\",\n message: \"registry must be an entries array or an alias-to-descriptor object\",\n });\n }\n if (hasOwn(input, \"entries\")) {\n const unsupported = Object.keys(input).find((key) => key !== \"entries\");\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `registry.${unsupported}`,\n message: `registry.${unsupported} is not supported`,\n });\n }\n if (!Array.isArray(input.entries)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: \"registry.entries\",\n message: \"registry.entries must be an array\",\n });\n }\n return Object.freeze(input.entries.map(entryFromArray));\n }\n const entries = Object.entries(input).flatMap(([alias, profile]) => entryFromAlias(alias, profile));\n return Object.freeze(entries);\n}\nfunction withAlias(error: DockerProfileError, alias: string): DockerProfileError {\n return dockerProfileError({\n code: error.code,\n message: `Docker profile alias ${JSON.stringify(alias)}: ${error.message}`,\n ...(error.path === undefined ? {} : { path: error.path }),\n alias,\n ...(error.profileId === undefined ? {} : { profileId: error.profileId }),\n ...(error.candidates === undefined ? {} : { candidates: error.candidates }),\n ...(error.details === undefined ? {} : { details: error.details }),\n });\n}\nfunction resolveEntry(entry: DockerProfileRegistryEntry, index: number, options: DockerProfileRegistryOptions): ResolvedDockerProfileEntry {\n const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);\n checkSourceFacts(entry.fileFacts, `registry.entries[${index}]`, options.expectedOwnerUid ?? 0);\n try {\n const profile = parseDockerExecutionProfileV1(entry.profile);\n return Object.freeze({\n alias,\n profile,\n profileId: profile.profileId,\n descriptorDigest: dockerExecutionProfileV1Digest(profile),\n ...(entry.source === undefined ? {} : { source: entry.source }),\n });\n }\n catch (error) {\n if (error instanceof DockerProfileError)\n throw withAlias(error, alias);\n throw error;\n }\n}\n/** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */\n// @concord-code ne-sandbox-docker-profile-index\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\n// @concord-implements docs/feature/sandbox-docker-profiles/architecture.md\nexport function indexDockerProfiles(input: DockerProfileRegistryInput | unknown, options: DockerProfileRegistryOptions = {}): DockerProfileRegistryIndex {\n const entries = rawEntries(input).map((entry, index) => resolveEntry(entry, index, options));\n const byAlias = new Map<string, ResolvedDockerProfileEntry[]>();\n const byProfileId = new Map<string, ResolvedDockerProfileEntry[]>();\n for (const entry of entries) {\n byAlias.set(entry.alias, [...(byAlias.get(entry.alias) ?? []), entry]);\n byProfileId.set(entry.profileId, [...(byProfileId.get(entry.profileId) ?? []), entry]);\n }\n const ambiguous = [...byAlias.entries()].find(([, candidates]) => candidates.length > 1);\n if (ambiguous !== undefined) {\n const [alias, candidates] = ambiguous;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-ambiguous-alias\",\n alias,\n candidates: candidates.map((candidate) => candidate.profileId),\n message: `Docker profile alias ${JSON.stringify(alias)} resolves to multiple descriptors`,\n });\n }\n const duplicate = [...byProfileId.entries()].find(([, candidates]) => candidates.length > 1);\n if (duplicate !== undefined) {\n const [profileId, candidates] = duplicate;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-duplicate-id\",\n profileId,\n alias: candidates[0]?.alias,\n candidates: candidates.map((candidate) => candidate.alias),\n message: `Docker profile stable ID ${JSON.stringify(profileId)} is registered more than once`,\n });\n }\n return Object.freeze({ entries: Object.freeze(entries) });\n}\nexport const createDockerProfileRegistry = indexDockerProfiles;\nexport const parseDockerProfileRegistry = indexDockerProfiles;\nfunction isRegistryIndex(value: unknown): value is DockerProfileRegistryIndex {\n return isRecord(value) && Array.isArray(value.entries) && value.entries.every((entry) => isRecord(entry) &&\n typeof entry.alias === \"string\" &&\n isRecord(entry.profile) &&\n typeof entry.profileId === \"string\" &&\n typeof entry.descriptorDigest === \"string\");\n}\nfunction indexOf(input: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown): DockerProfileRegistryIndex {\n if (isRegistryIndex(input)) {\n const entries = input.entries.map((entry, index) => {\n const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);\n try {\n const profile = parseDockerExecutionProfileV1(entry.profile);\n const descriptorDigest = dockerExecutionProfileV1Digest(profile);\n if (entry.profileId !== profile.profileId || entry.descriptorDigest !== descriptorDigest) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `registry.entries[${index}]`,\n message: \"registry index profileId or descriptorDigest does not match its descriptor\",\n details: {\n expectedProfileId: profile.profileId,\n actualProfileId: entry.profileId,\n expectedDescriptorDigest: descriptorDigest,\n actualDescriptorDigest: entry.descriptorDigest,\n },\n });\n }\n return Object.freeze({\n alias,\n profile,\n ...(entry.source === undefined ? {} : { source: requiredSource(entry.source, `registry.entries[${index}].source`) }),\n });\n }\n catch (error) {\n if (error instanceof DockerProfileError)\n throw withAlias(error, alias);\n throw error;\n }\n });\n return indexDockerProfiles(entries);\n }\n return indexDockerProfiles(input);\n}\n/** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */\n// @concord-code ne-sandbox-docker-profile-resolve\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\nexport function resolveDockerProfile(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, alias: string): ResolvedDockerProfileEntry {\n const normalizedAlias = requiredAlias(alias, \"profile alias\");\n const index = indexOf(registry);\n const match = index.entries.find((entry) => entry.alias === normalizedAlias);\n if (match !== undefined)\n return match;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-alias-not-found\",\n alias: normalizedAlias,\n message: `No Docker execution profile is registered for alias ${JSON.stringify(normalizedAlias)}`,\n });\n}\n/** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */\n// @concord-code ne-sandbox-docker-profile-select\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\nexport function resolveDockerProfileSelector(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, selector: string): ResolvedDockerProfileEntry {\n const normalizedSelector = requiredSelector(selector, \"profile selector\");\n const index = indexOf(registry);\n const matches = index.entries.filter((entry) => entry.alias === normalizedSelector || entry.profileId === normalizedSelector);\n const first = matches[0];\n if (first === undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-alias-not-found\",\n alias: normalizedSelector,\n message: `No Docker execution profile matches selector ${JSON.stringify(normalizedSelector)}`,\n });\n }\n if (matches.length > 1) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-ambiguous-alias\",\n alias: normalizedSelector,\n candidates: matches.map((match) => match.alias),\n message: `Docker profile selector ${JSON.stringify(normalizedSelector)} is ambiguous`,\n });\n }\n return first;\n}\nexport const resolveDockerExecutionProfile = resolveDockerProfile;\n"]}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["registry.ts"],"names":[],"mappings":"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","sourcesContent":["import { dockerProfileError, DockerProfileError, } from \"./errors.ts\";\nimport { dockerExecutionProfileV1Digest, decodeDockerExecutionProfile, type DockerExecutionProfileV1, } from \"./schema.ts\";\n/** 由宿主 registry loader 提供的文件事实;本模块不会自行读文件或执行路径。 */\nexport interface DockerProfileRegistryFileFacts {\n readonly isSymlink?: boolean;\n readonly ownerUid?: number;\n readonly mode?: number;\n readonly parentWritable?: boolean;\n readonly parentModes?: readonly number[];\n}\nexport interface DockerProfileRegistryEntry {\n readonly alias: string;\n readonly profile?: unknown;\n readonly descriptor?: unknown;\n readonly source?: string;\n readonly fileFacts?: DockerProfileRegistryFileFacts;\n}\nexport interface DockerProfileRegistryOptions {\n /** descriptor 必须由 root 持有;未提供 file facts 时纯解析不会臆造权限事实。 */\n readonly expectedOwnerUid?: number;\n}\nexport interface ResolvedDockerProfileEntry {\n readonly alias: string;\n readonly profile: DockerExecutionProfileV1;\n readonly profileId: string;\n readonly descriptorDigest: string;\n readonly source?: string;\n}\nexport interface DockerProfileRegistryIndex {\n readonly entries: readonly ResolvedDockerProfileEntry[];\n}\nexport type DockerProfileRegistryInput = readonly DockerProfileRegistryEntry[] | Readonly<globalThis.Record<string, unknown>> | {\n readonly entries: readonly DockerProfileRegistryEntry[];\n};\nfunction isRecord(value: unknown): value is globalThis.Record<string, unknown> {\n if (value === null || typeof value !== \"object\" || Array.isArray(value))\n return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\nfunction hasOwn(record: globalThis.Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(record, key);\n}\nfunction requiredAlias(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty alias`,\n });\n }\n if (value.includes(\"\\u0000\") || value.includes(\"/\") || value.includes(\"\\\\\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a single non-empty alias segment`,\n });\n }\n return value;\n}\nfunction requiredSource(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\" || value.includes(\"\\u0000\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty source string without NUL`,\n });\n }\n return value;\n}\nfunction requiredSelector(value: unknown, path: string): string {\n if (typeof value !== \"string\" || value.trim() === \"\" || value.includes(\"\\u0000\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a non-empty selector without NUL`,\n });\n }\n return value;\n}\nfunction sourceFacts(value: unknown, path: string): DockerProfileRegistryFileFacts | undefined {\n if (value === undefined)\n return undefined;\n if (!isRecord(value)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a plain object`,\n });\n }\n const allowed = new Set([\"isSymlink\", \"ownerUid\", \"mode\", \"parentWritable\", \"parentModes\"]);\n const unsupported = Object.keys(value).find((key) => !allowed.has(key));\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.${unsupported}`,\n message: `${path}.${unsupported} is not supported`,\n });\n }\n if (value.isSymlink !== undefined && typeof value.isSymlink !== \"boolean\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.isSymlink`,\n message: `${path}.isSymlink must be boolean`,\n });\n }\n const ownerUid = value.ownerUid;\n if (ownerUid !== undefined && (typeof ownerUid !== \"number\" || !Number.isSafeInteger(ownerUid) || ownerUid < 0)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.ownerUid`,\n message: `${path}.ownerUid must be a non-negative safe integer`,\n });\n }\n const mode = value.mode;\n if (mode !== undefined && (typeof mode !== \"number\" || !Number.isInteger(mode) || mode < 0 || mode > 0o7777)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.mode`,\n message: `${path}.mode must be an integer between 0 and 0o7777`,\n });\n }\n if (value.parentWritable !== undefined && typeof value.parentWritable !== \"boolean\") {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.parentWritable`,\n message: `${path}.parentWritable must be boolean`,\n });\n }\n const parentModes = value.parentModes;\n if (parentModes !== undefined && (!Array.isArray(parentModes) || parentModes.some((mode) => typeof mode !== \"number\" || !Number.isInteger(mode) || mode < 0 || mode > 0o7777))) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.parentModes`,\n message: `${path}.parentModes must contain file modes`,\n });\n }\n return Object.freeze({\n ...(value.isSymlink === undefined ? {} : { isSymlink: value.isSymlink }),\n ...(ownerUid === undefined ? {} : { ownerUid }),\n ...(mode === undefined ? {} : { mode }),\n ...(value.parentWritable === undefined ? {} : { parentWritable: value.parentWritable }),\n ...(parentModes === undefined ? {} : { parentModes: Object.freeze([...parentModes]) }),\n });\n}\nfunction checkSourceFacts(facts: DockerProfileRegistryFileFacts | undefined, path: string, expectedOwnerUid: number): void {\n if (facts === undefined)\n return;\n if (facts.isSymlink === true) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-symlink\",\n path,\n message: \"Docker profile descriptor must be a regular file, not a symbolic link\",\n });\n }\n if (facts.ownerUid !== undefined && facts.ownerUid !== expectedOwnerUid) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-owner-invalid\",\n path,\n message: `Docker profile descriptor must be owned by UID ${expectedOwnerUid}`,\n details: { expectedOwnerUid, actualOwnerUid: facts.ownerUid },\n });\n }\n if (facts.mode !== undefined && (facts.mode & 0o022) !== 0) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-mode-invalid\",\n path,\n message: \"Docker profile descriptor and registry file must not be group- or world-writable\",\n details: { mode: facts.mode },\n });\n }\n if (facts.parentWritable === true || facts.parentModes?.some((mode) => (mode & 0o022) !== 0) === true) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-parent-writable\",\n path,\n message: \"Docker profile descriptor parent directories must not be group- or world-writable\",\n });\n }\n}\nfunction entryFromArray(value: unknown, index: number): DockerProfileRegistryEntry {\n const path = `registry.entries[${index}]`;\n if (!isRecord(value)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must be a plain object`,\n });\n }\n const allowed = new Set([\"alias\", \"profile\", \"descriptor\", \"source\", \"fileFacts\"]);\n const unsupported = Object.keys(value).find((key) => !allowed.has(key));\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `${path}.${unsupported}`,\n message: `${path}.${unsupported} is not supported`,\n });\n }\n if (hasOwn(value, \"profile\") && hasOwn(value, \"descriptor\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must provide either profile or descriptor, not both`,\n });\n }\n if (!hasOwn(value, \"profile\") && !hasOwn(value, \"descriptor\")) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path,\n message: `${path} must provide profile or descriptor`,\n });\n }\n const profile = hasOwn(value, \"profile\") ? value.profile : value.descriptor;\n return Object.freeze({\n alias: requiredAlias(value.alias, `${path}.alias`),\n profile,\n ...(value.source === undefined ? {} : { source: requiredSource(value.source, `${path}.source`) }),\n ...(value.fileFacts === undefined ? {} : { fileFacts: sourceFacts(value.fileFacts, `${path}.fileFacts`) }),\n });\n}\nfunction entryFromAlias(alias: string, value: unknown): DockerProfileRegistryEntry[] {\n const normalizedAlias = requiredAlias(alias, `registry.${alias}`);\n if (Array.isArray(value)) {\n return value.map((candidate) => Object.freeze({ alias: normalizedAlias, profile: candidate }));\n }\n return [Object.freeze({ alias: normalizedAlias, profile: value })];\n}\nfunction rawEntries(input: unknown): readonly DockerProfileRegistryEntry[] {\n if (Array.isArray(input))\n return Object.freeze(input.map(entryFromArray));\n if (!isRecord(input)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: \"registry\",\n message: \"registry must be an entries array or an alias-to-descriptor object\",\n });\n }\n if (hasOwn(input, \"entries\")) {\n const unsupported = Object.keys(input).find((key) => key !== \"entries\");\n if (unsupported !== undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `registry.${unsupported}`,\n message: `registry.${unsupported} is not supported`,\n });\n }\n if (!Array.isArray(input.entries)) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: \"registry.entries\",\n message: \"registry.entries must be an array\",\n });\n }\n return Object.freeze(input.entries.map(entryFromArray));\n }\n const entries = Object.entries(input).flatMap(([alias, profile]) => entryFromAlias(alias, profile));\n return Object.freeze(entries);\n}\nfunction withAlias(error: DockerProfileError, alias: string): DockerProfileError {\n return dockerProfileError({\n code: error.code,\n message: `Docker profile alias ${JSON.stringify(alias)}: ${error.message}`,\n ...(error.path === undefined ? {} : { path: error.path }),\n alias,\n ...(error.profileId === undefined ? {} : { profileId: error.profileId }),\n ...(error.candidates === undefined ? {} : { candidates: error.candidates }),\n ...(error.details === undefined ? {} : { details: error.details }),\n });\n}\nfunction resolveEntry(entry: DockerProfileRegistryEntry, index: number, options: DockerProfileRegistryOptions): ResolvedDockerProfileEntry {\n const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);\n checkSourceFacts(entry.fileFacts, `registry.entries[${index}]`, options.expectedOwnerUid ?? 0);\n try {\n const profile = decodeDockerExecutionProfile(entry.profile);\n return Object.freeze({\n alias,\n profile,\n profileId: profile.profileId,\n descriptorDigest: dockerExecutionProfileV1Digest(profile),\n ...(entry.source === undefined ? {} : { source: entry.source }),\n });\n }\n catch (error) {\n if (error instanceof DockerProfileError)\n throw withAlias(error, alias);\n throw error;\n }\n}\n/** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */\n// @concord-code\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\n// @concord-implements docs/feature/sandbox-docker-profiles/architecture.md\nexport function indexDockerProfiles(input: DockerProfileRegistryInput | unknown, options: DockerProfileRegistryOptions = {}): DockerProfileRegistryIndex {\n const entries = rawEntries(input).map((entry, index) => resolveEntry(entry, index, options));\n const byAlias = new Map<string, ResolvedDockerProfileEntry[]>();\n const byProfileId = new Map<string, ResolvedDockerProfileEntry[]>();\n for (const entry of entries) {\n byAlias.set(entry.alias, [...(byAlias.get(entry.alias) ?? []), entry]);\n byProfileId.set(entry.profileId, [...(byProfileId.get(entry.profileId) ?? []), entry]);\n }\n const ambiguous = [...byAlias.entries()].find(([, candidates]) => candidates.length > 1);\n if (ambiguous !== undefined) {\n const [alias, candidates] = ambiguous;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-ambiguous-alias\",\n alias,\n candidates: candidates.map((candidate) => candidate.profileId),\n message: `Docker profile alias ${JSON.stringify(alias)} resolves to multiple descriptors`,\n });\n }\n const duplicate = [...byProfileId.entries()].find(([, candidates]) => candidates.length > 1);\n if (duplicate !== undefined) {\n const [profileId, candidates] = duplicate;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-duplicate-id\",\n profileId,\n alias: candidates[0]?.alias,\n candidates: candidates.map((candidate) => candidate.alias),\n message: `Docker profile stable ID ${JSON.stringify(profileId)} is registered more than once`,\n });\n }\n return Object.freeze({ entries: Object.freeze(entries) });\n}\nfunction isRegistryIndex(value: unknown): value is DockerProfileRegistryIndex {\n return isRecord(value) && Array.isArray(value.entries) && value.entries.every((entry) => isRecord(entry) &&\n typeof entry.alias === \"string\" &&\n isRecord(entry.profile) &&\n typeof entry.profileId === \"string\" &&\n typeof entry.descriptorDigest === \"string\");\n}\nfunction indexOf(input: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown): DockerProfileRegistryIndex {\n if (isRegistryIndex(input)) {\n const entries = input.entries.map((entry, index) => {\n const alias = requiredAlias(entry.alias, `registry.entries[${index}].alias`);\n try {\n const profile = decodeDockerExecutionProfile(entry.profile);\n const descriptorDigest = dockerExecutionProfileV1Digest(profile);\n if (entry.profileId !== profile.profileId || entry.descriptorDigest !== descriptorDigest) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-entry-invalid\",\n path: `registry.entries[${index}]`,\n message: \"registry index profileId or descriptorDigest does not match its descriptor\",\n details: {\n expectedProfileId: profile.profileId,\n actualProfileId: entry.profileId,\n expectedDescriptorDigest: descriptorDigest,\n actualDescriptorDigest: entry.descriptorDigest,\n },\n });\n }\n return Object.freeze({\n alias,\n profile,\n ...(entry.source === undefined ? {} : { source: requiredSource(entry.source, `registry.entries[${index}].source`) }),\n });\n }\n catch (error) {\n if (error instanceof DockerProfileError)\n throw withAlias(error, alias);\n throw error;\n }\n });\n return indexDockerProfiles(entries);\n }\n return indexDockerProfiles(input);\n}\n/** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */\n// @concord-code\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\nexport function resolveDockerProfile(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, alias: string): ResolvedDockerProfileEntry {\n const normalizedAlias = requiredAlias(alias, \"profile alias\");\n const index = indexOf(registry);\n const match = index.entries.find((entry) => entry.alias === normalizedAlias);\n if (match !== undefined)\n return match;\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-alias-not-found\",\n alias: normalizedAlias,\n message: `No Docker execution profile is registered for alias ${JSON.stringify(normalizedAlias)}`,\n });\n}\n/** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */\n// @concord-code\n// @concord-implements docs/feature/sandbox-docker-profiles/library.md\nexport function resolveDockerProfileSelector(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, selector: string): ResolvedDockerProfileEntry {\n const normalizedSelector = requiredSelector(selector, \"profile selector\");\n const index = indexOf(registry);\n const matches = index.entries.filter((entry) => entry.alias === normalizedSelector || entry.profileId === normalizedSelector);\n const first = matches[0];\n if (first === undefined) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-alias-not-found\",\n alias: normalizedSelector,\n message: `No Docker execution profile matches selector ${JSON.stringify(normalizedSelector)}`,\n });\n }\n if (matches.length > 1) {\n throw dockerProfileError({\n code: \"sandbox.docker-profile-registry-ambiguous-alias\",\n alias: normalizedSelector,\n candidates: matches.map((match) => match.alias),\n message: `Docker profile selector ${JSON.stringify(normalizedSelector)} is ambiguous`,\n });\n }\n return first;\n}\n"]}
@@ -33,10 +33,7 @@ export type DockerProfileRegistryInput = readonly DockerProfileRegistryEntry[] |
33
33
  };
34
34
  /** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */
35
35
  export declare function indexDockerProfiles(input: DockerProfileRegistryInput | unknown, options?: DockerProfileRegistryOptions): DockerProfileRegistryIndex;
36
- export declare const createDockerProfileRegistry: typeof indexDockerProfiles;
37
- export declare const parseDockerProfileRegistry: typeof indexDockerProfiles;
38
36
  /** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */
39
37
  export declare function resolveDockerProfile(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, alias: string): ResolvedDockerProfileEntry;
40
38
  /** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */
41
39
  export declare function resolveDockerProfileSelector(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, selector: string): ResolvedDockerProfileEntry;
42
- export declare const resolveDockerExecutionProfile: typeof resolveDockerProfile;
@@ -33,10 +33,7 @@ export type DockerProfileRegistryInput = readonly DockerProfileRegistryEntry[] |
33
33
  };
34
34
  /** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */
35
35
  export declare function indexDockerProfiles(input: DockerProfileRegistryInput | unknown, options?: DockerProfileRegistryOptions): DockerProfileRegistryIndex;
36
- export declare const createDockerProfileRegistry: typeof indexDockerProfiles;
37
- export declare const parseDockerProfileRegistry: typeof indexDockerProfiles;
38
36
  /** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */
39
37
  export declare function resolveDockerProfile(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, alias: string): ResolvedDockerProfileEntry;
40
38
  /** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */
41
39
  export declare function resolveDockerProfileSelector(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, selector: string): ResolvedDockerProfileEntry;
42
- export declare const resolveDockerExecutionProfile: typeof resolveDockerProfile;
@@ -33,10 +33,7 @@ export type DockerProfileRegistryInput = readonly DockerProfileRegistryEntry[] |
33
33
  };
34
34
  /** 构造只含规范化 descriptor 的 registry index;不读文件、不执行 profile 内容。 */
35
35
  export declare function indexDockerProfiles(input: DockerProfileRegistryInput | unknown, options?: DockerProfileRegistryOptions): DockerProfileRegistryIndex;
36
- export declare const createDockerProfileRegistry: typeof indexDockerProfiles;
37
- export declare const parseDockerProfileRegistry: typeof indexDockerProfiles;
38
36
  /** 只按宿主 alias 查找;没有 alias 时不猜 profile ID 或默认 Docker endpoint。 */
39
37
  export declare function resolveDockerProfile(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, alias: string): ResolvedDockerProfileEntry;
40
38
  /** detached 读面可显式按 alias 或 stable ID 查找;两者同时命中不同 descriptor 时拒绝猜测。 */
41
39
  export declare function resolveDockerProfileSelector(registry: DockerProfileRegistryIndex | DockerProfileRegistryInput | unknown, selector: string): ResolvedDockerProfileEntry;
42
- export declare const resolveDockerExecutionProfile: typeof resolveDockerProfile;
@@ -1,16 +1,10 @@
1
1
  import { createRequire as __niceevalCreateRequire } from "node:module";
2
2
  const __niceevalRequire = __niceevalCreateRequire(import.meta.url);
3
3
  const __niceevalCanonical = __niceevalRequire("./registry.cjs");
4
- const __niceevalExport0 = __niceevalCanonical["createDockerProfileRegistry"];
5
- export { __niceevalExport0 as createDockerProfileRegistry };
6
- const __niceevalExport1 = __niceevalCanonical["indexDockerProfiles"];
7
- export { __niceevalExport1 as indexDockerProfiles };
8
- const __niceevalExport2 = __niceevalCanonical["parseDockerProfileRegistry"];
9
- export { __niceevalExport2 as parseDockerProfileRegistry };
10
- const __niceevalExport3 = __niceevalCanonical["resolveDockerExecutionProfile"];
11
- export { __niceevalExport3 as resolveDockerExecutionProfile };
12
- const __niceevalExport4 = __niceevalCanonical["resolveDockerProfile"];
13
- export { __niceevalExport4 as resolveDockerProfile };
14
- const __niceevalExport5 = __niceevalCanonical["resolveDockerProfileSelector"];
15
- export { __niceevalExport5 as resolveDockerProfileSelector };
4
+ const __niceevalExport0 = __niceevalCanonical["indexDockerProfiles"];
5
+ export { __niceevalExport0 as indexDockerProfiles };
6
+ const __niceevalExport1 = __niceevalCanonical["resolveDockerProfile"];
7
+ export { __niceevalExport1 as resolveDockerProfile };
8
+ const __niceevalExport2 = __niceevalCanonical["resolveDockerProfileSelector"];
9
+ export { __niceevalExport2 as resolveDockerProfileSelector };
16
10
  //# sourceMappingURL=registry.js.map
@@ -233,7 +233,7 @@ async function loadDockerProfileRegistryAt(registryDir) {
233
233
  async function loadDockerProfileRegistry() {
234
234
  return loadDockerProfileRegistryAt(exports.DOCKER_PROFILE_REGISTRY_DIR);
235
235
  }
236
- // @concord-code ne-sandbox-docker-profile-control
236
+ // @concord-code
237
237
  // @concord-implements docs/feature/sandbox-docker-profiles/architecture.md
238
238
  // @concord-implements docs/feature/sandbox-docker-profiles/lifecycle.md
239
239
  function dockerProfileControlRequest(path, request, signal, timeoutMs = 10000) {