@ai-agent-forge/agent-forge 0.85.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 (1654) hide show
  1. package/CHANGELOG.md +5969 -0
  2. package/README.md +629 -0
  3. package/dist/artifacts/artifact-store.d.ts +51 -0
  4. package/dist/artifacts/artifact-store.d.ts.map +1 -0
  5. package/dist/artifacts/artifact-store.js +87 -0
  6. package/dist/artifacts/artifact-store.js.map +1 -0
  7. package/dist/artifacts/paged-read.d.ts +51 -0
  8. package/dist/artifacts/paged-read.d.ts.map +1 -0
  9. package/dist/artifacts/paged-read.js +55 -0
  10. package/dist/artifacts/paged-read.js.map +1 -0
  11. package/dist/bun/cli.d.ts +3 -0
  12. package/dist/bun/cli.d.ts.map +1 -0
  13. package/dist/bun/cli.js +11 -0
  14. package/dist/bun/cli.js.map +1 -0
  15. package/dist/bun/register-bedrock.d.ts +2 -0
  16. package/dist/bun/register-bedrock.d.ts.map +1 -0
  17. package/dist/bun/register-bedrock.js +4 -0
  18. package/dist/bun/register-bedrock.js.map +1 -0
  19. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  20. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  21. package/dist/bun/restore-sandbox-env.js +36 -0
  22. package/dist/bun/restore-sandbox-env.js.map +1 -0
  23. package/dist/bundle/.build-manifest.json +3566 -0
  24. package/dist/bundle/chunks/anthropic-messages-RJYU4TCY.js +6 -0
  25. package/dist/bundle/chunks/anthropic.js +75 -0
  26. package/dist/bundle/chunks/azure-openai-responses-LESTCUL7.js +2 -0
  27. package/dist/bundle/chunks/bedrock-converse-stream.js +78 -0
  28. package/dist/bundle/chunks/chunk-3QKHSPQL.js +8 -0
  29. package/dist/bundle/chunks/chunk-4L3WN2XY.js +2 -0
  30. package/dist/bundle/chunks/chunk-4NKZMFSZ.js +1579 -0
  31. package/dist/bundle/chunks/chunk-6CYCI3EJ.js +12 -0
  32. package/dist/bundle/chunks/chunk-6R7UI4IY.js +2 -0
  33. package/dist/bundle/chunks/chunk-7ZC4UXSL.js +2 -0
  34. package/dist/bundle/chunks/chunk-7ZY7IXZD.js +4 -0
  35. package/dist/bundle/chunks/chunk-DRQDKNXA.js +2 -0
  36. package/dist/bundle/chunks/chunk-DTD7JQ7Y.js +42 -0
  37. package/dist/bundle/chunks/chunk-EWXX34QG.js +2 -0
  38. package/dist/bundle/chunks/chunk-GMWCTUPB.js +2 -0
  39. package/dist/bundle/chunks/chunk-JUUC5AZY.js +2 -0
  40. package/dist/bundle/chunks/chunk-KQEGUM34.js +2 -0
  41. package/dist/bundle/chunks/chunk-L2ZPNLYD.js +2 -0
  42. package/dist/bundle/chunks/chunk-MDOTREMR.js +11 -0
  43. package/dist/bundle/chunks/chunk-NUHFSC37.js +25 -0
  44. package/dist/bundle/chunks/chunk-PGXDEOVV.js +2 -0
  45. package/dist/bundle/chunks/chunk-PJACZCIR.js +2 -0
  46. package/dist/bundle/chunks/chunk-PRRNXB7S.js +2 -0
  47. package/dist/bundle/chunks/chunk-SER2HCLE.js +38 -0
  48. package/dist/bundle/chunks/chunk-TEPMHNKQ.js +2 -0
  49. package/dist/bundle/chunks/chunk-V46XUTK3.js +2 -0
  50. package/dist/bundle/chunks/chunk-WGLBM2BP.js +2 -0
  51. package/dist/bundle/chunks/chunk-WW3LMV3F.js +2 -0
  52. package/dist/bundle/chunks/chunk-XDUWOHPL.js +6 -0
  53. package/dist/bundle/chunks/github-copilot.js +2 -0
  54. package/dist/bundle/chunks/google-generative-ai-NZ66X6K7.js +2 -0
  55. package/dist/bundle/chunks/google-vertex-2ZZOFBNQ.js +2 -0
  56. package/dist/bundle/chunks/https-proxy-agent-UDEHOBGS.js +13 -0
  57. package/dist/bundle/chunks/image-resize-worker.js +2 -0
  58. package/dist/bundle/chunks/kimi-coding.js +2 -0
  59. package/dist/bundle/chunks/lib-HGQMNYVT.js +9 -0
  60. package/dist/bundle/chunks/mistral-conversations-B6DZRMEK.js +5 -0
  61. package/dist/bundle/chunks/multipart-parser-SQ6GDJL7.js +3 -0
  62. package/dist/bundle/chunks/node-O3RIBJRH.js +16 -0
  63. package/dist/bundle/chunks/node-TWVVAGPO.js +2 -0
  64. package/dist/bundle/chunks/openai-codex-responses-UFH6O5K6.js +10 -0
  65. package/dist/bundle/chunks/openai-codex.js +75 -0
  66. package/dist/bundle/chunks/openai-completions-A55GHA4O.js +7 -0
  67. package/dist/bundle/chunks/openai-responses-TJLXRAXR.js +2 -0
  68. package/dist/bundle/chunks/openrouter-images-G3GT5BVT.js +2 -0
  69. package/dist/bundle/chunks/openrouter.js +75 -0
  70. package/dist/bundle/chunks/pi-messages-SLF355GF.js +8 -0
  71. package/dist/bundle/chunks/radius.js +75 -0
  72. package/dist/bundle/chunks/src-UK77SYZE.js +4 -0
  73. package/dist/bundle/chunks/xai.js +2 -0
  74. package/dist/bundle/cli.js +3 -0
  75. package/dist/bundle/client.js +2 -0
  76. package/dist/bundle/index.js +8 -0
  77. package/dist/bundle/rpc-entry.js +3 -0
  78. package/dist/capabilities/builtin.d.ts +46 -0
  79. package/dist/capabilities/builtin.d.ts.map +1 -0
  80. package/dist/capabilities/builtin.js +68 -0
  81. package/dist/capabilities/builtin.js.map +1 -0
  82. package/dist/cli/args.d.ts +102 -0
  83. package/dist/cli/args.d.ts.map +1 -0
  84. package/dist/cli/args.js +712 -0
  85. package/dist/cli/args.js.map +1 -0
  86. package/dist/cli/auth-check.d.ts +19 -0
  87. package/dist/cli/auth-check.d.ts.map +1 -0
  88. package/dist/cli/auth-check.js +50 -0
  89. package/dist/cli/auth-check.js.map +1 -0
  90. package/dist/cli/auth-command.d.ts +24 -0
  91. package/dist/cli/auth-command.d.ts.map +1 -0
  92. package/dist/cli/auth-command.js +102 -0
  93. package/dist/cli/auth-command.js.map +1 -0
  94. package/dist/cli/config-selector.d.ts +23 -0
  95. package/dist/cli/config-selector.d.ts.map +1 -0
  96. package/dist/cli/config-selector.js +51 -0
  97. package/dist/cli/config-selector.js.map +1 -0
  98. package/dist/cli/credential-print.d.ts +13 -0
  99. package/dist/cli/credential-print.d.ts.map +1 -0
  100. package/dist/cli/credential-print.js +76 -0
  101. package/dist/cli/credential-print.js.map +1 -0
  102. package/dist/cli/experimental/auth.d.ts +16 -0
  103. package/dist/cli/experimental/auth.d.ts.map +1 -0
  104. package/dist/cli/experimental/auth.js +13 -0
  105. package/dist/cli/experimental/auth.js.map +1 -0
  106. package/dist/cli/experimental/cli.d.ts +6 -0
  107. package/dist/cli/experimental/cli.d.ts.map +1 -0
  108. package/dist/cli/experimental/cli.js +5 -0
  109. package/dist/cli/experimental/cli.js.map +1 -0
  110. package/dist/cli/experimental/command-options.d.ts +17 -0
  111. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  112. package/dist/cli/experimental/command-options.js +35 -0
  113. package/dist/cli/experimental/command-options.js.map +1 -0
  114. package/dist/cli/experimental/command.d.ts +63 -0
  115. package/dist/cli/experimental/command.d.ts.map +1 -0
  116. package/dist/cli/experimental/command.js +130 -0
  117. package/dist/cli/experimental/command.js.map +1 -0
  118. package/dist/cli/experimental/commands/client.d.ts +13 -0
  119. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  120. package/dist/cli/experimental/commands/client.js +25 -0
  121. package/dist/cli/experimental/commands/client.js.map +1 -0
  122. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  123. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  124. package/dist/cli/experimental/commands/pi.js +26 -0
  125. package/dist/cli/experimental/commands/pi.js.map +1 -0
  126. package/dist/cli/experimental/commands/server.d.ts +13 -0
  127. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  128. package/dist/cli/experimental/commands/server.js +25 -0
  129. package/dist/cli/experimental/commands/server.js.map +1 -0
  130. package/dist/cli/experimental/transport-address.d.ts +10 -0
  131. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  132. package/dist/cli/experimental/transport-address.js +38 -0
  133. package/dist/cli/experimental/transport-address.js.map +1 -0
  134. package/dist/cli/file-processor.d.ts +15 -0
  135. package/dist/cli/file-processor.d.ts.map +1 -0
  136. package/dist/cli/file-processor.js +71 -0
  137. package/dist/cli/file-processor.js.map +1 -0
  138. package/dist/cli/initial-message.d.ts +18 -0
  139. package/dist/cli/initial-message.d.ts.map +1 -0
  140. package/dist/cli/initial-message.js +22 -0
  141. package/dist/cli/initial-message.js.map +1 -0
  142. package/dist/cli/list-models.d.ts +9 -0
  143. package/dist/cli/list-models.d.ts.map +1 -0
  144. package/dist/cli/list-models.js +98 -0
  145. package/dist/cli/list-models.js.map +1 -0
  146. package/dist/cli/plugin-command.d.ts +50 -0
  147. package/dist/cli/plugin-command.d.ts.map +1 -0
  148. package/dist/cli/plugin-command.js +85 -0
  149. package/dist/cli/plugin-command.js.map +1 -0
  150. package/dist/cli/plugin-manager-controller.d.ts +59 -0
  151. package/dist/cli/plugin-manager-controller.d.ts.map +1 -0
  152. package/dist/cli/plugin-manager-controller.js +183 -0
  153. package/dist/cli/plugin-manager-controller.js.map +1 -0
  154. package/dist/cli/plugin-selection-controller.d.ts +57 -0
  155. package/dist/cli/plugin-selection-controller.d.ts.map +1 -0
  156. package/dist/cli/plugin-selection-controller.js +159 -0
  157. package/dist/cli/plugin-selection-controller.js.map +1 -0
  158. package/dist/cli/serve.d.ts +39 -0
  159. package/dist/cli/serve.d.ts.map +1 -0
  160. package/dist/cli/serve.js +124 -0
  161. package/dist/cli/serve.js.map +1 -0
  162. package/dist/cli/session-picker.d.ts +30 -0
  163. package/dist/cli/session-picker.d.ts.map +1 -0
  164. package/dist/cli/session-picker.js +62 -0
  165. package/dist/cli/session-picker.js.map +1 -0
  166. package/dist/cli/startup-ui.d.ts +20 -0
  167. package/dist/cli/startup-ui.d.ts.map +1 -0
  168. package/dist/cli/startup-ui.js +185 -0
  169. package/dist/cli/startup-ui.js.map +1 -0
  170. package/dist/cli/trace-view.d.ts +86 -0
  171. package/dist/cli/trace-view.d.ts.map +1 -0
  172. package/dist/cli/trace-view.js +263 -0
  173. package/dist/cli/trace-view.js.map +1 -0
  174. package/dist/cli.d.ts +3 -0
  175. package/dist/cli.d.ts.map +1 -0
  176. package/dist/cli.js +19 -0
  177. package/dist/cli.js.map +1 -0
  178. package/dist/client/index.d.ts +3 -0
  179. package/dist/client/index.d.ts.map +1 -0
  180. package/dist/client/index.js +3 -0
  181. package/dist/client/index.js.map +1 -0
  182. package/dist/client/remote-session.d.ts +53 -0
  183. package/dist/client/remote-session.d.ts.map +1 -0
  184. package/dist/client/remote-session.js +340 -0
  185. package/dist/client/remote-session.js.map +1 -0
  186. package/dist/client/transcript.d.ts +12 -0
  187. package/dist/client/transcript.d.ts.map +1 -0
  188. package/dist/client/transcript.js +98 -0
  189. package/dist/client/transcript.js.map +1 -0
  190. package/dist/config.d.ts +95 -0
  191. package/dist/config.d.ts.map +1 -0
  192. package/dist/config.js +459 -0
  193. package/dist/config.js.map +1 -0
  194. package/dist/core/agent-capability-contract.d.ts +322 -0
  195. package/dist/core/agent-capability-contract.d.ts.map +1 -0
  196. package/dist/core/agent-capability-contract.js +1154 -0
  197. package/dist/core/agent-capability-contract.js.map +1 -0
  198. package/dist/core/agent-session-bash.d.ts +51 -0
  199. package/dist/core/agent-session-bash.d.ts.map +1 -0
  200. package/dist/core/agent-session-bash.js +138 -0
  201. package/dist/core/agent-session-bash.js.map +1 -0
  202. package/dist/core/agent-session-compaction.d.ts +188 -0
  203. package/dist/core/agent-session-compaction.d.ts.map +1 -0
  204. package/dist/core/agent-session-compaction.js +1071 -0
  205. package/dist/core/agent-session-compaction.js.map +1 -0
  206. package/dist/core/agent-session-context.d.ts +43 -0
  207. package/dist/core/agent-session-context.d.ts.map +1 -0
  208. package/dist/core/agent-session-context.js +170 -0
  209. package/dist/core/agent-session-context.js.map +1 -0
  210. package/dist/core/agent-session-extensions.d.ts +30 -0
  211. package/dist/core/agent-session-extensions.d.ts.map +1 -0
  212. package/dist/core/agent-session-extensions.js +74 -0
  213. package/dist/core/agent-session-extensions.js.map +1 -0
  214. package/dist/core/agent-session-internal.d.ts +290 -0
  215. package/dist/core/agent-session-internal.d.ts.map +1 -0
  216. package/dist/core/agent-session-internal.js +40 -0
  217. package/dist/core/agent-session-internal.js.map +1 -0
  218. package/dist/core/agent-session-lifecycle.d.ts +242 -0
  219. package/dist/core/agent-session-lifecycle.d.ts.map +1 -0
  220. package/dist/core/agent-session-lifecycle.js +699 -0
  221. package/dist/core/agent-session-lifecycle.js.map +1 -0
  222. package/dist/core/agent-session-loop-runner.d.ts +52 -0
  223. package/dist/core/agent-session-loop-runner.d.ts.map +1 -0
  224. package/dist/core/agent-session-loop-runner.js +168 -0
  225. package/dist/core/agent-session-loop-runner.js.map +1 -0
  226. package/dist/core/agent-session-loop.d.ts +39 -0
  227. package/dist/core/agent-session-loop.d.ts.map +1 -0
  228. package/dist/core/agent-session-loop.js +155 -0
  229. package/dist/core/agent-session-loop.js.map +1 -0
  230. package/dist/core/agent-session-model.d.ts +49 -0
  231. package/dist/core/agent-session-model.d.ts.map +1 -0
  232. package/dist/core/agent-session-model.js +155 -0
  233. package/dist/core/agent-session-model.js.map +1 -0
  234. package/dist/core/agent-session-paths.d.ts +3 -0
  235. package/dist/core/agent-session-paths.d.ts.map +1 -0
  236. package/dist/core/agent-session-paths.js +14 -0
  237. package/dist/core/agent-session-paths.js.map +1 -0
  238. package/dist/core/agent-session-projection.d.ts +53 -0
  239. package/dist/core/agent-session-projection.d.ts.map +1 -0
  240. package/dist/core/agent-session-projection.js +195 -0
  241. package/dist/core/agent-session-projection.js.map +1 -0
  242. package/dist/core/agent-session-retry.d.ts +28 -0
  243. package/dist/core/agent-session-retry.d.ts.map +1 -0
  244. package/dist/core/agent-session-retry.js +141 -0
  245. package/dist/core/agent-session-retry.js.map +1 -0
  246. package/dist/core/agent-session-runtime.d.ts +181 -0
  247. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  248. package/dist/core/agent-session-runtime.js +297 -0
  249. package/dist/core/agent-session-runtime.js.map +1 -0
  250. package/dist/core/agent-session-services.d.ts +281 -0
  251. package/dist/core/agent-session-services.d.ts.map +1 -0
  252. package/dist/core/agent-session-services.js +680 -0
  253. package/dist/core/agent-session-services.js.map +1 -0
  254. package/dist/core/agent-session-store.d.ts +47 -0
  255. package/dist/core/agent-session-store.d.ts.map +1 -0
  256. package/dist/core/agent-session-store.js +155 -0
  257. package/dist/core/agent-session-store.js.map +1 -0
  258. package/dist/core/agent-session-tools.d.ts +36 -0
  259. package/dist/core/agent-session-tools.d.ts.map +1 -0
  260. package/dist/core/agent-session-tools.js +305 -0
  261. package/dist/core/agent-session-tools.js.map +1 -0
  262. package/dist/core/agent-session.d.ts +1156 -0
  263. package/dist/core/agent-session.d.ts.map +1 -0
  264. package/dist/core/agent-session.js +2550 -0
  265. package/dist/core/agent-session.js.map +1 -0
  266. package/dist/core/auth-guidance.d.ts +5 -0
  267. package/dist/core/auth-guidance.d.ts.map +1 -0
  268. package/dist/core/auth-guidance.js +21 -0
  269. package/dist/core/auth-guidance.js.map +1 -0
  270. package/dist/core/auth-storage.d.ts +72 -0
  271. package/dist/core/auth-storage.d.ts.map +1 -0
  272. package/dist/core/auth-storage.js +426 -0
  273. package/dist/core/auth-storage.js.map +1 -0
  274. package/dist/core/bash-executor.d.ts +32 -0
  275. package/dist/core/bash-executor.d.ts.map +1 -0
  276. package/dist/core/bash-executor.js +111 -0
  277. package/dist/core/bash-executor.js.map +1 -0
  278. package/dist/core/cache-stats.d.ts +49 -0
  279. package/dist/core/cache-stats.d.ts.map +1 -0
  280. package/dist/core/cache-stats.js +101 -0
  281. package/dist/core/cache-stats.js.map +1 -0
  282. package/dist/core/compaction/branch-summarization.d.ts +88 -0
  283. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  284. package/dist/core/compaction/branch-summarization.js +220 -0
  285. package/dist/core/compaction/branch-summarization.js.map +1 -0
  286. package/dist/core/compaction/compaction.d.ts +178 -0
  287. package/dist/core/compaction/compaction.d.ts.map +1 -0
  288. package/dist/core/compaction/compaction.js +608 -0
  289. package/dist/core/compaction/compaction.js.map +1 -0
  290. package/dist/core/compaction/index.d.ts +7 -0
  291. package/dist/core/compaction/index.d.ts.map +1 -0
  292. package/dist/core/compaction/index.js +7 -0
  293. package/dist/core/compaction/index.js.map +1 -0
  294. package/dist/core/compaction/utils.d.ts +49 -0
  295. package/dist/core/compaction/utils.d.ts.map +1 -0
  296. package/dist/core/compaction/utils.js +170 -0
  297. package/dist/core/compaction/utils.js.map +1 -0
  298. package/dist/core/defaults.d.ts +4 -0
  299. package/dist/core/defaults.d.ts.map +1 -0
  300. package/dist/core/defaults.js +11 -0
  301. package/dist/core/defaults.js.map +1 -0
  302. package/dist/core/diagnostics.d.ts +15 -0
  303. package/dist/core/diagnostics.d.ts.map +1 -0
  304. package/dist/core/diagnostics.js +2 -0
  305. package/dist/core/diagnostics.js.map +1 -0
  306. package/dist/core/embedded-sdk.d.ts +96 -0
  307. package/dist/core/embedded-sdk.d.ts.map +1 -0
  308. package/dist/core/embedded-sdk.js +395 -0
  309. package/dist/core/embedded-sdk.js.map +1 -0
  310. package/dist/core/event-bus.d.ts +9 -0
  311. package/dist/core/event-bus.d.ts.map +1 -0
  312. package/dist/core/event-bus.js +25 -0
  313. package/dist/core/event-bus.js.map +1 -0
  314. package/dist/core/exec.d.ts +29 -0
  315. package/dist/core/exec.d.ts.map +1 -0
  316. package/dist/core/exec.js +75 -0
  317. package/dist/core/exec.js.map +1 -0
  318. package/dist/core/experimental.d.ts +2 -0
  319. package/dist/core/experimental.d.ts.map +1 -0
  320. package/dist/core/experimental.js +6 -0
  321. package/dist/core/experimental.js.map +1 -0
  322. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  323. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  324. package/dist/core/export-html/ansi-to-html.js +249 -0
  325. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  326. package/dist/core/export-html/index.d.ts +37 -0
  327. package/dist/core/export-html/index.d.ts.map +1 -0
  328. package/dist/core/export-html/index.js +226 -0
  329. package/dist/core/export-html/index.js.map +1 -0
  330. package/dist/core/export-html/template.css +1066 -0
  331. package/dist/core/export-html/template.html +55 -0
  332. package/dist/core/export-html/template.js +1864 -0
  333. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  334. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  335. package/dist/core/export-html/tool-renderer.js +108 -0
  336. package/dist/core/export-html/tool-renderer.js.map +1 -0
  337. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  338. package/dist/core/export-html/vendor/marked.min.js +78 -0
  339. package/dist/core/extensions/agent-composition.d.ts +67 -0
  340. package/dist/core/extensions/agent-composition.d.ts.map +1 -0
  341. package/dist/core/extensions/agent-composition.js +785 -0
  342. package/dist/core/extensions/agent-composition.js.map +1 -0
  343. package/dist/core/extensions/bootstrap-agent-loop.d.ts +203 -0
  344. package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -0
  345. package/dist/core/extensions/bootstrap-agent-loop.js +565 -0
  346. package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -0
  347. package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts +7 -0
  348. package/dist/core/extensions/bootstrap-branch-summary-policy.d.ts.map +1 -0
  349. package/dist/core/extensions/bootstrap-branch-summary-policy.js +28 -0
  350. package/dist/core/extensions/bootstrap-branch-summary-policy.js.map +1 -0
  351. package/dist/core/extensions/bootstrap-compaction-policy.d.ts +7 -0
  352. package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -0
  353. package/dist/core/extensions/bootstrap-compaction-policy.js +81 -0
  354. package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -0
  355. package/dist/core/extensions/bootstrap-lifecycle.d.ts +26 -0
  356. package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -0
  357. package/dist/core/extensions/bootstrap-lifecycle.js +181 -0
  358. package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -0
  359. package/dist/core/extensions/bootstrap-overflow-policy.d.ts +7 -0
  360. package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -0
  361. package/dist/core/extensions/bootstrap-overflow-policy.js +29 -0
  362. package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -0
  363. package/dist/core/extensions/bootstrap-retry-policy.d.ts +7 -0
  364. package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -0
  365. package/dist/core/extensions/bootstrap-retry-policy.js +28 -0
  366. package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -0
  367. package/dist/core/extensions/bootstrap-skills.d.ts +16 -0
  368. package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -0
  369. package/dist/core/extensions/bootstrap-skills.js +119 -0
  370. package/dist/core/extensions/bootstrap-skills.js.map +1 -0
  371. package/dist/core/extensions/bootstrap-tools.d.ts +20 -0
  372. package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -0
  373. package/dist/core/extensions/bootstrap-tools.js +35 -0
  374. package/dist/core/extensions/bootstrap-tools.js.map +1 -0
  375. package/dist/core/extensions/capability-exports.d.ts +5 -0
  376. package/dist/core/extensions/capability-exports.d.ts.map +1 -0
  377. package/dist/core/extensions/capability-exports.js +4 -0
  378. package/dist/core/extensions/capability-exports.js.map +1 -0
  379. package/dist/core/extensions/capability-plugin.d.ts +69 -0
  380. package/dist/core/extensions/capability-plugin.d.ts.map +1 -0
  381. package/dist/core/extensions/capability-plugin.js +485 -0
  382. package/dist/core/extensions/capability-plugin.js.map +1 -0
  383. package/dist/core/extensions/capability-runtime-events.d.ts +22 -0
  384. package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -0
  385. package/dist/core/extensions/capability-runtime-events.js +381 -0
  386. package/dist/core/extensions/capability-runtime-events.js.map +1 -0
  387. package/dist/core/extensions/capability-runtime-guards.d.ts +93 -0
  388. package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -0
  389. package/dist/core/extensions/capability-runtime-guards.js +800 -0
  390. package/dist/core/extensions/capability-runtime-guards.js.map +1 -0
  391. package/dist/core/extensions/capability-runtime-inspect.d.ts +12 -0
  392. package/dist/core/extensions/capability-runtime-inspect.d.ts.map +1 -0
  393. package/dist/core/extensions/capability-runtime-inspect.js +106 -0
  394. package/dist/core/extensions/capability-runtime-inspect.js.map +1 -0
  395. package/dist/core/extensions/capability-runtime-manifest.d.ts +19 -0
  396. package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -0
  397. package/dist/core/extensions/capability-runtime-manifest.js +218 -0
  398. package/dist/core/extensions/capability-runtime-manifest.js.map +1 -0
  399. package/dist/core/extensions/capability-runtime-operation.d.ts +26 -0
  400. package/dist/core/extensions/capability-runtime-operation.d.ts.map +1 -0
  401. package/dist/core/extensions/capability-runtime-operation.js +88 -0
  402. package/dist/core/extensions/capability-runtime-operation.js.map +1 -0
  403. package/dist/core/extensions/capability-runtime-snapshot.d.ts +11 -0
  404. package/dist/core/extensions/capability-runtime-snapshot.d.ts.map +1 -0
  405. package/dist/core/extensions/capability-runtime-snapshot.js +81 -0
  406. package/dist/core/extensions/capability-runtime-snapshot.js.map +1 -0
  407. package/dist/core/extensions/capability-runtime-store.d.ts +34 -0
  408. package/dist/core/extensions/capability-runtime-store.d.ts.map +1 -0
  409. package/dist/core/extensions/capability-runtime-store.js +153 -0
  410. package/dist/core/extensions/capability-runtime-store.js.map +1 -0
  411. package/dist/core/extensions/capability-runtime-tool.d.ts +10 -0
  412. package/dist/core/extensions/capability-runtime-tool.d.ts.map +1 -0
  413. package/dist/core/extensions/capability-runtime-tool.js +10 -0
  414. package/dist/core/extensions/capability-runtime-tool.js.map +1 -0
  415. package/dist/core/extensions/capability-runtime-types.d.ts +303 -0
  416. package/dist/core/extensions/capability-runtime-types.d.ts.map +1 -0
  417. package/dist/core/extensions/capability-runtime-types.js +2 -0
  418. package/dist/core/extensions/capability-runtime-types.js.map +1 -0
  419. package/dist/core/extensions/capability-runtime-validation.d.ts +35 -0
  420. package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -0
  421. package/dist/core/extensions/capability-runtime-validation.js +380 -0
  422. package/dist/core/extensions/capability-runtime-validation.js.map +1 -0
  423. package/dist/core/extensions/capability-runtime.d.ts +7 -0
  424. package/dist/core/extensions/capability-runtime.d.ts.map +1 -0
  425. package/dist/core/extensions/capability-runtime.js +2170 -0
  426. package/dist/core/extensions/capability-runtime.js.map +1 -0
  427. package/dist/core/extensions/compaction-memory-failure-mode.d.ts +43 -0
  428. package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -0
  429. package/dist/core/extensions/compaction-memory-failure-mode.js +31 -0
  430. package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -0
  431. package/dist/core/extensions/context-strategy-binding.d.ts +12 -0
  432. package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -0
  433. package/dist/core/extensions/context-strategy-binding.js +54 -0
  434. package/dist/core/extensions/context-strategy-binding.js.map +1 -0
  435. package/dist/core/extensions/index.d.ts +19 -0
  436. package/dist/core/extensions/index.d.ts.map +1 -0
  437. package/dist/core/extensions/index.js +18 -0
  438. package/dist/core/extensions/index.js.map +1 -0
  439. package/dist/core/extensions/lifecycle-catalog.d.ts +584 -0
  440. package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -0
  441. package/dist/core/extensions/lifecycle-catalog.js +1903 -0
  442. package/dist/core/extensions/lifecycle-catalog.js.map +1 -0
  443. package/dist/core/extensions/lifecycle-delivery-queue.d.ts +48 -0
  444. package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -0
  445. package/dist/core/extensions/lifecycle-delivery-queue.js +164 -0
  446. package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -0
  447. package/dist/core/extensions/microcompact.d.ts +71 -0
  448. package/dist/core/extensions/microcompact.d.ts.map +1 -0
  449. package/dist/core/extensions/microcompact.js +123 -0
  450. package/dist/core/extensions/microcompact.js.map +1 -0
  451. package/dist/core/extensions/public-api.d.ts +10 -0
  452. package/dist/core/extensions/public-api.d.ts.map +1 -0
  453. package/dist/core/extensions/public-api.js +9 -0
  454. package/dist/core/extensions/public-api.js.map +1 -0
  455. package/dist/core/facade/coding-agent-facade.d.ts +338 -0
  456. package/dist/core/facade/coding-agent-facade.d.ts.map +1 -0
  457. package/dist/core/facade/coding-agent-facade.js +115 -0
  458. package/dist/core/facade/coding-agent-facade.js.map +1 -0
  459. package/dist/core/facade/coding-agent-runtime-facade.d.ts +115 -0
  460. package/dist/core/facade/coding-agent-runtime-facade.d.ts.map +1 -0
  461. package/dist/core/facade/coding-agent-runtime-facade.js +63 -0
  462. package/dist/core/facade/coding-agent-runtime-facade.js.map +1 -0
  463. package/dist/core/facade/index.d.ts +6 -0
  464. package/dist/core/facade/index.d.ts.map +1 -0
  465. package/dist/core/facade/index.js +3 -0
  466. package/dist/core/facade/index.js.map +1 -0
  467. package/dist/core/footer-data-provider.d.ts +57 -0
  468. package/dist/core/footer-data-provider.d.ts.map +1 -0
  469. package/dist/core/footer-data-provider.js +323 -0
  470. package/dist/core/footer-data-provider.js.map +1 -0
  471. package/dist/core/http-dispatcher.d.ts +22 -0
  472. package/dist/core/http-dispatcher.d.ts.map +1 -0
  473. package/dist/core/http-dispatcher.js +98 -0
  474. package/dist/core/http-dispatcher.js.map +1 -0
  475. package/dist/core/index.d.ts +19 -0
  476. package/dist/core/index.d.ts.map +1 -0
  477. package/dist/core/index.js +13 -0
  478. package/dist/core/index.js.map +1 -0
  479. package/dist/core/input-source.d.ts +9 -0
  480. package/dist/core/input-source.d.ts.map +1 -0
  481. package/dist/core/input-source.js +2 -0
  482. package/dist/core/input-source.js.map +1 -0
  483. package/dist/core/keybindings.d.ts +442 -0
  484. package/dist/core/keybindings.d.ts.map +1 -0
  485. package/dist/core/keybindings.js +329 -0
  486. package/dist/core/keybindings.js.map +1 -0
  487. package/dist/core/logger.d.ts +107 -0
  488. package/dist/core/logger.d.ts.map +1 -0
  489. package/dist/core/logger.js +246 -0
  490. package/dist/core/logger.js.map +1 -0
  491. package/dist/core/messages.d.ts +85 -0
  492. package/dist/core/messages.d.ts.map +1 -0
  493. package/dist/core/messages.js +146 -0
  494. package/dist/core/messages.js.map +1 -0
  495. package/dist/core/model-config.d.ts +586 -0
  496. package/dist/core/model-config.d.ts.map +1 -0
  497. package/dist/core/model-config.js +258 -0
  498. package/dist/core/model-config.js.map +1 -0
  499. package/dist/core/model-registry.d.ts +49 -0
  500. package/dist/core/model-registry.d.ts.map +1 -0
  501. package/dist/core/model-registry.js +115 -0
  502. package/dist/core/model-registry.js.map +1 -0
  503. package/dist/core/model-resolver.d.ts +124 -0
  504. package/dist/core/model-resolver.d.ts.map +1 -0
  505. package/dist/core/model-resolver.js +590 -0
  506. package/dist/core/model-resolver.js.map +1 -0
  507. package/dist/core/model-runtime.d.ts +100 -0
  508. package/dist/core/model-runtime.d.ts.map +1 -0
  509. package/dist/core/model-runtime.js +598 -0
  510. package/dist/core/model-runtime.js.map +1 -0
  511. package/dist/core/models-store.d.ts +22 -0
  512. package/dist/core/models-store.d.ts.map +1 -0
  513. package/dist/core/models-store.js +115 -0
  514. package/dist/core/models-store.js.map +1 -0
  515. package/dist/core/output-guard.d.ts +7 -0
  516. package/dist/core/output-guard.d.ts.map +1 -0
  517. package/dist/core/output-guard.js +90 -0
  518. package/dist/core/output-guard.js.map +1 -0
  519. package/dist/core/package-install-host.d.ts +23 -0
  520. package/dist/core/package-install-host.d.ts.map +1 -0
  521. package/dist/core/package-install-host.js +202 -0
  522. package/dist/core/package-install-host.js.map +1 -0
  523. package/dist/core/package-manager.d.ts +93 -0
  524. package/dist/core/package-manager.d.ts.map +1 -0
  525. package/dist/core/package-manager.js +947 -0
  526. package/dist/core/package-manager.js.map +1 -0
  527. package/dist/core/package-process-runner.d.ts +4 -0
  528. package/dist/core/package-process-runner.d.ts.map +1 -0
  529. package/dist/core/package-process-runner.js +47 -0
  530. package/dist/core/package-process-runner.js.map +1 -0
  531. package/dist/core/package-resource-collection.d.ts +16 -0
  532. package/dist/core/package-resource-collection.d.ts.map +1 -0
  533. package/dist/core/package-resource-collection.js +300 -0
  534. package/dist/core/package-resource-collection.js.map +1 -0
  535. package/dist/core/package-resource-discovery.d.ts +33 -0
  536. package/dist/core/package-resource-discovery.d.ts.map +1 -0
  537. package/dist/core/package-resource-discovery.js +449 -0
  538. package/dist/core/package-resource-discovery.js.map +1 -0
  539. package/dist/core/package-source.d.ts +157 -0
  540. package/dist/core/package-source.d.ts.map +1 -0
  541. package/dist/core/package-source.js +179 -0
  542. package/dist/core/package-source.js.map +1 -0
  543. package/dist/core/pi-manifest.d.ts +7 -0
  544. package/dist/core/pi-manifest.d.ts.map +1 -0
  545. package/dist/core/pi-manifest.js +26 -0
  546. package/dist/core/pi-manifest.js.map +1 -0
  547. package/dist/core/prompt-templates.d.ts +54 -0
  548. package/dist/core/prompt-templates.d.ts.map +1 -0
  549. package/dist/core/prompt-templates.js +236 -0
  550. package/dist/core/prompt-templates.js.map +1 -0
  551. package/dist/core/provider-composer.d.ts +58 -0
  552. package/dist/core/provider-composer.d.ts.map +1 -0
  553. package/dist/core/provider-composer.js +403 -0
  554. package/dist/core/provider-composer.js.map +1 -0
  555. package/dist/core/radius.d.ts +2 -0
  556. package/dist/core/radius.d.ts.map +1 -0
  557. package/dist/core/radius.js +2 -0
  558. package/dist/core/radius.js.map +1 -0
  559. package/dist/core/remote-catalog-provider.d.ts +5 -0
  560. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  561. package/dist/core/remote-catalog-provider.js +121 -0
  562. package/dist/core/remote-catalog-provider.js.map +1 -0
  563. package/dist/core/resolve-config-value.d.ts +30 -0
  564. package/dist/core/resolve-config-value.d.ts.map +1 -0
  565. package/dist/core/resolve-config-value.js +247 -0
  566. package/dist/core/resolve-config-value.js.map +1 -0
  567. package/dist/core/resource-loader.d.ts +211 -0
  568. package/dist/core/resource-loader.d.ts.map +1 -0
  569. package/dist/core/resource-loader.js +687 -0
  570. package/dist/core/resource-loader.js.map +1 -0
  571. package/dist/core/runtime-credentials.d.ts +15 -0
  572. package/dist/core/runtime-credentials.d.ts.map +1 -0
  573. package/dist/core/runtime-credentials.js +39 -0
  574. package/dist/core/runtime-credentials.js.map +1 -0
  575. package/dist/core/sdk.d.ts +395 -0
  576. package/dist/core/sdk.d.ts.map +1 -0
  577. package/dist/core/sdk.js +1112 -0
  578. package/dist/core/sdk.js.map +1 -0
  579. package/dist/core/session-cwd.d.ts +19 -0
  580. package/dist/core/session-cwd.d.ts.map +1 -0
  581. package/dist/core/session-cwd.js +38 -0
  582. package/dist/core/session-cwd.js.map +1 -0
  583. package/dist/core/session-export.d.ts +7 -0
  584. package/dist/core/session-export.d.ts.map +1 -0
  585. package/dist/core/session-export.js +48 -0
  586. package/dist/core/session-export.js.map +1 -0
  587. package/dist/core/session-manager.d.ts +463 -0
  588. package/dist/core/session-manager.d.ts.map +1 -0
  589. package/dist/core/session-manager.js +1583 -0
  590. package/dist/core/session-manager.js.map +1 -0
  591. package/dist/core/session-start.d.ts +12 -0
  592. package/dist/core/session-start.d.ts.map +1 -0
  593. package/dist/core/session-start.js +2 -0
  594. package/dist/core/session-start.js.map +1 -0
  595. package/dist/core/session-storage.d.ts +130 -0
  596. package/dist/core/session-storage.d.ts.map +1 -0
  597. package/dist/core/session-storage.js +386 -0
  598. package/dist/core/session-storage.js.map +1 -0
  599. package/dist/core/settings-diagnostics.d.ts +9 -0
  600. package/dist/core/settings-diagnostics.d.ts.map +1 -0
  601. package/dist/core/settings-diagnostics.js +21 -0
  602. package/dist/core/settings-diagnostics.js.map +1 -0
  603. package/dist/core/settings-manager.d.ts +352 -0
  604. package/dist/core/settings-manager.d.ts.map +1 -0
  605. package/dist/core/settings-manager.js +987 -0
  606. package/dist/core/settings-manager.js.map +1 -0
  607. package/dist/core/skills.d.ts +60 -0
  608. package/dist/core/skills.d.ts.map +1 -0
  609. package/dist/core/skills.js +382 -0
  610. package/dist/core/skills.js.map +1 -0
  611. package/dist/core/slash-commands.d.ts +15 -0
  612. package/dist/core/slash-commands.d.ts.map +1 -0
  613. package/dist/core/slash-commands.js +33 -0
  614. package/dist/core/slash-commands.js.map +1 -0
  615. package/dist/core/source-info.d.ts +18 -0
  616. package/dist/core/source-info.d.ts.map +1 -0
  617. package/dist/core/source-info.js +19 -0
  618. package/dist/core/source-info.js.map +1 -0
  619. package/dist/core/system-prompt.d.ts +8 -0
  620. package/dist/core/system-prompt.d.ts.map +1 -0
  621. package/dist/core/system-prompt.js +137 -0
  622. package/dist/core/system-prompt.js.map +1 -0
  623. package/dist/core/timings.d.ts +11 -0
  624. package/dist/core/timings.d.ts.map +1 -0
  625. package/dist/core/timings.js +46 -0
  626. package/dist/core/timings.js.map +1 -0
  627. package/dist/core/tools/bash.d.ts +87 -0
  628. package/dist/core/tools/bash.d.ts.map +1 -0
  629. package/dist/core/tools/bash.js +409 -0
  630. package/dist/core/tools/bash.js.map +1 -0
  631. package/dist/core/tools/edit-diff.d.ts +110 -0
  632. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  633. package/dist/core/tools/edit-diff.js +425 -0
  634. package/dist/core/tools/edit-diff.js.map +1 -0
  635. package/dist/core/tools/edit.d.ts +55 -0
  636. package/dist/core/tools/edit.d.ts.map +1 -0
  637. package/dist/core/tools/edit.js +305 -0
  638. package/dist/core/tools/edit.js.map +1 -0
  639. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  640. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  641. package/dist/core/tools/file-mutation-queue.js +52 -0
  642. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  643. package/dist/core/tools/find.d.ts +42 -0
  644. package/dist/core/tools/find.d.ts.map +1 -0
  645. package/dist/core/tools/find.js +303 -0
  646. package/dist/core/tools/find.js.map +1 -0
  647. package/dist/core/tools/grep.d.ts +41 -0
  648. package/dist/core/tools/grep.d.ts.map +1 -0
  649. package/dist/core/tools/grep.js +309 -0
  650. package/dist/core/tools/grep.js.map +1 -0
  651. package/dist/core/tools/index.d.ts +44 -0
  652. package/dist/core/tools/index.d.ts.map +1 -0
  653. package/dist/core/tools/index.js +129 -0
  654. package/dist/core/tools/index.js.map +1 -0
  655. package/dist/core/tools/ls.d.ts +41 -0
  656. package/dist/core/tools/ls.d.ts.map +1 -0
  657. package/dist/core/tools/ls.js +173 -0
  658. package/dist/core/tools/ls.js.map +1 -0
  659. package/dist/core/tools/output-accumulator.d.ts +52 -0
  660. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  661. package/dist/core/tools/output-accumulator.js +184 -0
  662. package/dist/core/tools/output-accumulator.js.map +1 -0
  663. package/dist/core/tools/path-utils.d.ts +10 -0
  664. package/dist/core/tools/path-utils.d.ts.map +1 -0
  665. package/dist/core/tools/path-utils.js +99 -0
  666. package/dist/core/tools/path-utils.js.map +1 -0
  667. package/dist/core/tools/powershell.d.ts +16 -0
  668. package/dist/core/tools/powershell.d.ts.map +1 -0
  669. package/dist/core/tools/powershell.js +39 -0
  670. package/dist/core/tools/powershell.js.map +1 -0
  671. package/dist/core/tools/read.d.ts +39 -0
  672. package/dist/core/tools/read.d.ts.map +1 -0
  673. package/dist/core/tools/read.js +282 -0
  674. package/dist/core/tools/read.js.map +1 -0
  675. package/dist/core/tools/render-utils.d.ts +24 -0
  676. package/dist/core/tools/render-utils.d.ts.map +1 -0
  677. package/dist/core/tools/render-utils.js +65 -0
  678. package/dist/core/tools/render-utils.js.map +1 -0
  679. package/dist/core/tools/tool-definition-wrapper.d.ts +15 -0
  680. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  681. package/dist/core/tools/tool-definition-wrapper.js +36 -0
  682. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  683. package/dist/core/tools/tool-definition.d.ts +123 -0
  684. package/dist/core/tools/tool-definition.d.ts.map +1 -0
  685. package/dist/core/tools/tool-definition.js +20 -0
  686. package/dist/core/tools/tool-definition.js.map +1 -0
  687. package/dist/core/tools/tool-search.d.ts +30 -0
  688. package/dist/core/tools/tool-search.d.ts.map +1 -0
  689. package/dist/core/tools/tool-search.js +99 -0
  690. package/dist/core/tools/tool-search.js.map +1 -0
  691. package/dist/core/tools/truncate.d.ts +70 -0
  692. package/dist/core/tools/truncate.d.ts.map +1 -0
  693. package/dist/core/tools/truncate.js +215 -0
  694. package/dist/core/tools/truncate.js.map +1 -0
  695. package/dist/core/tools/write.d.ts +30 -0
  696. package/dist/core/tools/write.d.ts.map +1 -0
  697. package/dist/core/tools/write.js +202 -0
  698. package/dist/core/tools/write.js.map +1 -0
  699. package/dist/core/trace-retention.d.ts +19 -0
  700. package/dist/core/trace-retention.d.ts.map +1 -0
  701. package/dist/core/trace-retention.js +91 -0
  702. package/dist/core/trace-retention.js.map +1 -0
  703. package/dist/core/usage-totals.d.ts +21 -0
  704. package/dist/core/usage-totals.d.ts.map +1 -0
  705. package/dist/core/usage-totals.js +53 -0
  706. package/dist/core/usage-totals.js.map +1 -0
  707. package/dist/durable/durable-service.d.ts +136 -0
  708. package/dist/durable/durable-service.d.ts.map +1 -0
  709. package/dist/durable/durable-service.js +710 -0
  710. package/dist/durable/durable-service.js.map +1 -0
  711. package/dist/e2e/stdio-launcher.d.ts +25 -0
  712. package/dist/e2e/stdio-launcher.d.ts.map +1 -0
  713. package/dist/e2e/stdio-launcher.js +244 -0
  714. package/dist/e2e/stdio-launcher.js.map +1 -0
  715. package/dist/host/agent-retry-scheduler.d.ts +65 -0
  716. package/dist/host/agent-retry-scheduler.d.ts.map +1 -0
  717. package/dist/host/agent-retry-scheduler.js +52 -0
  718. package/dist/host/agent-retry-scheduler.js.map +1 -0
  719. package/dist/host/auto-compaction.d.ts +56 -0
  720. package/dist/host/auto-compaction.d.ts.map +1 -0
  721. package/dist/host/auto-compaction.js +62 -0
  722. package/dist/host/auto-compaction.js.map +1 -0
  723. package/dist/host/branch-reload.d.ts +56 -0
  724. package/dist/host/branch-reload.d.ts.map +1 -0
  725. package/dist/host/branch-reload.js +39 -0
  726. package/dist/host/branch-reload.js.map +1 -0
  727. package/dist/host/channel-adapter.d.ts +25 -0
  728. package/dist/host/channel-adapter.d.ts.map +1 -0
  729. package/dist/host/channel-adapter.js +45 -0
  730. package/dist/host/channel-adapter.js.map +1 -0
  731. package/dist/host/checkpoint-commit.d.ts +74 -0
  732. package/dist/host/checkpoint-commit.d.ts.map +1 -0
  733. package/dist/host/checkpoint-commit.js +76 -0
  734. package/dist/host/checkpoint-commit.js.map +1 -0
  735. package/dist/host/manual-compaction.d.ts +43 -0
  736. package/dist/host/manual-compaction.d.ts.map +1 -0
  737. package/dist/host/manual-compaction.js +63 -0
  738. package/dist/host/manual-compaction.js.map +1 -0
  739. package/dist/host/output-projection.d.ts +61 -0
  740. package/dist/host/output-projection.d.ts.map +1 -0
  741. package/dist/host/output-projection.js +74 -0
  742. package/dist/host/output-projection.js.map +1 -0
  743. package/dist/host/output-reducer.d.ts +43 -0
  744. package/dist/host/output-reducer.d.ts.map +1 -0
  745. package/dist/host/output-reducer.js +77 -0
  746. package/dist/host/output-reducer.js.map +1 -0
  747. package/dist/host/output-serializer.d.ts +31 -0
  748. package/dist/host/output-serializer.d.ts.map +1 -0
  749. package/dist/host/output-serializer.js +120 -0
  750. package/dist/host/output-serializer.js.map +1 -0
  751. package/dist/host/overflow-recovery.d.ts +55 -0
  752. package/dist/host/overflow-recovery.d.ts.map +1 -0
  753. package/dist/host/overflow-recovery.js +89 -0
  754. package/dist/host/overflow-recovery.js.map +1 -0
  755. package/dist/host/retry-common.d.ts +29 -0
  756. package/dist/host/retry-common.d.ts.map +1 -0
  757. package/dist/host/retry-common.js +12 -0
  758. package/dist/host/retry-common.js.map +1 -0
  759. package/dist/host/session-event-translation.d.ts +26 -0
  760. package/dist/host/session-event-translation.d.ts.map +1 -0
  761. package/dist/host/session-event-translation.js +61 -0
  762. package/dist/host/session-event-translation.js.map +1 -0
  763. package/dist/host/summary-retry.d.ts +54 -0
  764. package/dist/host/summary-retry.d.ts.map +1 -0
  765. package/dist/host/summary-retry.js +66 -0
  766. package/dist/host/summary-retry.js.map +1 -0
  767. package/dist/index.d.ts +105 -0
  768. package/dist/index.d.ts.map +1 -0
  769. package/dist/index.js +176 -0
  770. package/dist/index.js.map +1 -0
  771. package/dist/main.d.ts +36 -0
  772. package/dist/main.d.ts.map +1 -0
  773. package/dist/main.js +1630 -0
  774. package/dist/main.js.map +1 -0
  775. package/dist/migration/migration-tool.d.ts +56 -0
  776. package/dist/migration/migration-tool.d.ts.map +1 -0
  777. package/dist/migration/migration-tool.js +72 -0
  778. package/dist/migration/migration-tool.js.map +1 -0
  779. package/dist/migrations.d.ts +33 -0
  780. package/dist/migrations.d.ts.map +1 -0
  781. package/dist/migrations.js +272 -0
  782. package/dist/migrations.js.map +1 -0
  783. package/dist/modes/index.d.ts +10 -0
  784. package/dist/modes/index.d.ts.map +1 -0
  785. package/dist/modes/index.js +8 -0
  786. package/dist/modes/index.js.map +1 -0
  787. package/dist/modes/interactive/assets/clankolas.png +0 -0
  788. package/dist/modes/interactive/components/armin.d.ts +34 -0
  789. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  790. package/dist/modes/interactive/components/armin.js +336 -0
  791. package/dist/modes/interactive/components/armin.js.map +1 -0
  792. package/dist/modes/interactive/components/assistant-message.d.ts +25 -0
  793. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  794. package/dist/modes/interactive/components/assistant-message.js +151 -0
  795. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  796. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  797. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  798. package/dist/modes/interactive/components/bash-execution.js +176 -0
  799. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  800. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  801. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  802. package/dist/modes/interactive/components/bordered-loader.js +56 -0
  803. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  804. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  805. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  806. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  807. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  808. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  809. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  810. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  811. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  812. package/dist/modes/interactive/components/config-selector.d.ts +113 -0
  813. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  814. package/dist/modes/interactive/components/config-selector.js +857 -0
  815. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  816. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  817. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  818. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  819. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  820. package/dist/modes/interactive/components/custom-editor.d.ts +19 -0
  821. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  822. package/dist/modes/interactive/components/custom-editor.js +71 -0
  823. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  824. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  825. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  826. package/dist/modes/interactive/components/custom-entry.js +52 -0
  827. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  828. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  829. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  830. package/dist/modes/interactive/components/custom-message.js +87 -0
  831. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  832. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  833. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  834. package/dist/modes/interactive/components/daxnuts.js +141 -0
  835. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  836. package/dist/modes/interactive/components/dialog-editor.d.ts +21 -0
  837. package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -0
  838. package/dist/modes/interactive/components/dialog-editor.js +98 -0
  839. package/dist/modes/interactive/components/dialog-editor.js.map +1 -0
  840. package/dist/modes/interactive/components/dialog-input.d.ts +23 -0
  841. package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -0
  842. package/dist/modes/interactive/components/dialog-input.js +61 -0
  843. package/dist/modes/interactive/components/dialog-input.js.map +1 -0
  844. package/dist/modes/interactive/components/dialog-selector.d.ts +26 -0
  845. package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -0
  846. package/dist/modes/interactive/components/dialog-selector.js +83 -0
  847. package/dist/modes/interactive/components/dialog-selector.js.map +1 -0
  848. package/dist/modes/interactive/components/diff.d.ts +12 -0
  849. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  850. package/dist/modes/interactive/components/diff.js +133 -0
  851. package/dist/modes/interactive/components/diff.js.map +1 -0
  852. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  853. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  854. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  855. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  856. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  857. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  858. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  859. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  860. package/dist/modes/interactive/components/footer.d.ts +33 -0
  861. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  862. package/dist/modes/interactive/components/footer.js +248 -0
  863. package/dist/modes/interactive/components/footer.js.map +1 -0
  864. package/dist/modes/interactive/components/index.d.ts +34 -0
  865. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  866. package/dist/modes/interactive/components/index.js +35 -0
  867. package/dist/modes/interactive/components/index.js.map +1 -0
  868. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  869. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  870. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  871. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  872. package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  873. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  874. package/dist/modes/interactive/components/login-dialog.js +188 -0
  875. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  876. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  877. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  878. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  879. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  880. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  881. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  882. package/dist/modes/interactive/components/mermaid.js +75 -0
  883. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  884. package/dist/modes/interactive/components/model-selector.d.ts +67 -0
  885. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  886. package/dist/modes/interactive/components/model-selector.js +381 -0
  887. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  888. package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  889. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  890. package/dist/modes/interactive/components/oauth-selector.js +165 -0
  891. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  892. package/dist/modes/interactive/components/plugin-manager-entry.d.ts +62 -0
  893. package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -0
  894. package/dist/modes/interactive/components/plugin-manager-entry.js +294 -0
  895. package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -0
  896. package/dist/modes/interactive/components/plugin-selection-entry.d.ts +82 -0
  897. package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -0
  898. package/dist/modes/interactive/components/plugin-selection-entry.js +228 -0
  899. package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -0
  900. package/dist/modes/interactive/components/render-types.d.ts +26 -0
  901. package/dist/modes/interactive/components/render-types.d.ts.map +1 -0
  902. package/dist/modes/interactive/components/render-types.js +7 -0
  903. package/dist/modes/interactive/components/render-types.js.map +1 -0
  904. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  905. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  906. package/dist/modes/interactive/components/scoped-models-selector.js +328 -0
  907. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  908. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  909. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  910. package/dist/modes/interactive/components/session-selector-search.js +158 -0
  911. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  912. package/dist/modes/interactive/components/session-selector.d.ts +143 -0
  913. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  914. package/dist/modes/interactive/components/session-selector.js +1053 -0
  915. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  916. package/dist/modes/interactive/components/settings-selector.d.ts +88 -0
  917. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  918. package/dist/modes/interactive/components/settings-selector.js +677 -0
  919. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  920. package/dist/modes/interactive/components/settings-submenu.d.ts +72 -0
  921. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -0
  922. package/dist/modes/interactive/components/settings-submenu.js +165 -0
  923. package/dist/modes/interactive/components/settings-submenu.js.map +1 -0
  924. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  925. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  926. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  927. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  928. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  929. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  930. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  931. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  932. package/dist/modes/interactive/components/status-indicator.d.ts +34 -0
  933. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  934. package/dist/modes/interactive/components/status-indicator.js +60 -0
  935. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  936. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  937. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  938. package/dist/modes/interactive/components/theme-selector.js +50 -0
  939. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  940. package/dist/modes/interactive/components/thinking-selector.d.ts +23 -0
  941. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  942. package/dist/modes/interactive/components/thinking-selector.js +109 -0
  943. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  944. package/dist/modes/interactive/components/tool-execution.d.ts +59 -0
  945. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  946. package/dist/modes/interactive/components/tool-execution.js +335 -0
  947. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  948. package/dist/modes/interactive/components/tree-list.d.ts +67 -0
  949. package/dist/modes/interactive/components/tree-list.d.ts.map +1 -0
  950. package/dist/modes/interactive/components/tree-list.js +710 -0
  951. package/dist/modes/interactive/components/tree-list.js.map +1 -0
  952. package/dist/modes/interactive/components/tree-render.d.ts +17 -0
  953. package/dist/modes/interactive/components/tree-render.d.ts.map +1 -0
  954. package/dist/modes/interactive/components/tree-render.js +316 -0
  955. package/dist/modes/interactive/components/tree-render.js.map +1 -0
  956. package/dist/modes/interactive/components/tree-selector.d.ts +25 -0
  957. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  958. package/dist/modes/interactive/components/tree-selector.js +235 -0
  959. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  960. package/dist/modes/interactive/components/tree-types.d.ts +35 -0
  961. package/dist/modes/interactive/components/tree-types.d.ts.map +1 -0
  962. package/dist/modes/interactive/components/tree-types.js +2 -0
  963. package/dist/modes/interactive/components/tree-types.js.map +1 -0
  964. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  965. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  966. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  967. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  968. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  969. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  970. package/dist/modes/interactive/components/user-message.js +49 -0
  971. package/dist/modes/interactive/components/user-message.js.map +1 -0
  972. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  973. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  974. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  975. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  976. package/dist/modes/interactive/external-editor.d.ts +12 -0
  977. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  978. package/dist/modes/interactive/external-editor.js +38 -0
  979. package/dist/modes/interactive/external-editor.js.map +1 -0
  980. package/dist/modes/interactive/interactive-auth.d.ts +90 -0
  981. package/dist/modes/interactive/interactive-auth.d.ts.map +1 -0
  982. package/dist/modes/interactive/interactive-auth.js +492 -0
  983. package/dist/modes/interactive/interactive-auth.js.map +1 -0
  984. package/dist/modes/interactive/interactive-commands.d.ts +68 -0
  985. package/dist/modes/interactive/interactive-commands.d.ts.map +1 -0
  986. package/dist/modes/interactive/interactive-commands.js +157 -0
  987. package/dist/modes/interactive/interactive-commands.js.map +1 -0
  988. package/dist/modes/interactive/interactive-dialog-ui.d.ts +73 -0
  989. package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -0
  990. package/dist/modes/interactive/interactive-dialog-ui.js +189 -0
  991. package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -0
  992. package/dist/modes/interactive/interactive-format.d.ts +65 -0
  993. package/dist/modes/interactive/interactive-format.d.ts.map +1 -0
  994. package/dist/modes/interactive/interactive-format.js +268 -0
  995. package/dist/modes/interactive/interactive-format.js.map +1 -0
  996. package/dist/modes/interactive/interactive-helpers.d.ts +25 -0
  997. package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -0
  998. package/dist/modes/interactive/interactive-helpers.js +73 -0
  999. package/dist/modes/interactive/interactive-helpers.js.map +1 -0
  1000. package/dist/modes/interactive/interactive-mode.d.ts +640 -0
  1001. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  1002. package/dist/modes/interactive/interactive-mode.js +4107 -0
  1003. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  1004. package/dist/modes/interactive/interactive-selectors.d.ts +95 -0
  1005. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -0
  1006. package/dist/modes/interactive/interactive-selectors.js +356 -0
  1007. package/dist/modes/interactive/interactive-selectors.js.map +1 -0
  1008. package/dist/modes/interactive/model-catalog-refresh.d.ts +11 -0
  1009. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  1010. package/dist/modes/interactive/model-catalog-refresh.js +35 -0
  1011. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  1012. package/dist/modes/interactive/model-search.d.ts +12 -0
  1013. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  1014. package/dist/modes/interactive/model-search.js +15 -0
  1015. package/dist/modes/interactive/model-search.js.map +1 -0
  1016. package/dist/modes/interactive/theme/dark.json +90 -0
  1017. package/dist/modes/interactive/theme/light.json +89 -0
  1018. package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
  1019. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  1020. package/dist/modes/interactive/theme/theme-controller.js +126 -0
  1021. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  1022. package/dist/modes/interactive/theme/theme-schema.json +352 -0
  1023. package/dist/modes/interactive/theme/theme.d.ts +122 -0
  1024. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  1025. package/dist/modes/interactive/theme/theme.js +1093 -0
  1026. package/dist/modes/interactive/theme/theme.js.map +1 -0
  1027. package/dist/modes/json-event.d.ts +34 -0
  1028. package/dist/modes/json-event.d.ts.map +1 -0
  1029. package/dist/modes/json-event.js +29 -0
  1030. package/dist/modes/json-event.js.map +1 -0
  1031. package/dist/modes/print-mode.d.ts +32 -0
  1032. package/dist/modes/print-mode.d.ts.map +1 -0
  1033. package/dist/modes/print-mode.js +205 -0
  1034. package/dist/modes/print-mode.js.map +1 -0
  1035. package/dist/modes/rpc/jsonl.d.ts +17 -0
  1036. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  1037. package/dist/modes/rpc/jsonl.js +49 -0
  1038. package/dist/modes/rpc/jsonl.js.map +1 -0
  1039. package/dist/modes/rpc/rpc-client.d.ts +254 -0
  1040. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  1041. package/dist/modes/rpc/rpc-client.js +496 -0
  1042. package/dist/modes/rpc/rpc-client.js.map +1 -0
  1043. package/dist/modes/rpc/rpc-mode.d.ts +53 -0
  1044. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  1045. package/dist/modes/rpc/rpc-mode.js +540 -0
  1046. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  1047. package/dist/modes/rpc/rpc-types.d.ts +486 -0
  1048. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  1049. package/dist/modes/rpc/rpc-types.js +8 -0
  1050. package/dist/modes/rpc/rpc-types.js.map +1 -0
  1051. package/dist/package-manager-cli.d.ts +18 -0
  1052. package/dist/package-manager-cli.d.ts.map +1 -0
  1053. package/dist/package-manager-cli.js +944 -0
  1054. package/dist/package-manager-cli.js.map +1 -0
  1055. package/dist/plugins/ecosystem/active-bindings.d.ts +92 -0
  1056. package/dist/plugins/ecosystem/active-bindings.d.ts.map +1 -0
  1057. package/dist/plugins/ecosystem/active-bindings.js +198 -0
  1058. package/dist/plugins/ecosystem/active-bindings.js.map +1 -0
  1059. package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts +32 -0
  1060. package/dist/plugins/ecosystem/bootstrap-factory-manifest.d.ts.map +1 -0
  1061. package/dist/plugins/ecosystem/bootstrap-factory-manifest.js +32 -0
  1062. package/dist/plugins/ecosystem/bootstrap-factory-manifest.js.map +1 -0
  1063. package/dist/plugins/ecosystem/catalog.d.ts +38 -0
  1064. package/dist/plugins/ecosystem/catalog.d.ts.map +1 -0
  1065. package/dist/plugins/ecosystem/catalog.js +90 -0
  1066. package/dist/plugins/ecosystem/catalog.js.map +1 -0
  1067. package/dist/plugins/ecosystem/cli.d.ts +102 -0
  1068. package/dist/plugins/ecosystem/cli.d.ts.map +1 -0
  1069. package/dist/plugins/ecosystem/cli.js +970 -0
  1070. package/dist/plugins/ecosystem/cli.js.map +1 -0
  1071. package/dist/plugins/ecosystem/default-active-bindings.d.ts +33 -0
  1072. package/dist/plugins/ecosystem/default-active-bindings.d.ts.map +1 -0
  1073. package/dist/plugins/ecosystem/default-active-bindings.js +105 -0
  1074. package/dist/plugins/ecosystem/default-active-bindings.js.map +1 -0
  1075. package/dist/plugins/ecosystem/default-plugin-market.d.ts +68 -0
  1076. package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -0
  1077. package/dist/plugins/ecosystem/default-plugin-market.js +146 -0
  1078. package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -0
  1079. package/dist/plugins/ecosystem/distribution.d.ts +113 -0
  1080. package/dist/plugins/ecosystem/distribution.d.ts.map +1 -0
  1081. package/dist/plugins/ecosystem/distribution.js +371 -0
  1082. package/dist/plugins/ecosystem/distribution.js.map +1 -0
  1083. package/dist/plugins/ecosystem/index.d.ts +56 -0
  1084. package/dist/plugins/ecosystem/index.d.ts.map +1 -0
  1085. package/dist/plugins/ecosystem/index.js +31 -0
  1086. package/dist/plugins/ecosystem/index.js.map +1 -0
  1087. package/dist/plugins/ecosystem/installer.d.ts +130 -0
  1088. package/dist/plugins/ecosystem/installer.d.ts.map +1 -0
  1089. package/dist/plugins/ecosystem/installer.js +316 -0
  1090. package/dist/plugins/ecosystem/installer.js.map +1 -0
  1091. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts +47 -0
  1092. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -0
  1093. package/dist/plugins/ecosystem/node-disk-registry-source.js +208 -0
  1094. package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -0
  1095. package/dist/plugins/ecosystem/node-distribution-host.d.ts +55 -0
  1096. package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -0
  1097. package/dist/plugins/ecosystem/node-distribution-host.js +423 -0
  1098. package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -0
  1099. package/dist/plugins/ecosystem/node-local-package-source.d.ts +10 -0
  1100. package/dist/plugins/ecosystem/node-local-package-source.d.ts.map +1 -0
  1101. package/dist/plugins/ecosystem/node-local-package-source.js +97 -0
  1102. package/dist/plugins/ecosystem/node-local-package-source.js.map +1 -0
  1103. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts +58 -0
  1104. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -0
  1105. package/dist/plugins/ecosystem/node-npm-registry-source.js +326 -0
  1106. package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -0
  1107. package/dist/plugins/ecosystem/node-package-install-host.d.ts +91 -0
  1108. package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -0
  1109. package/dist/plugins/ecosystem/node-package-install-host.js +857 -0
  1110. package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -0
  1111. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts +34 -0
  1112. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -0
  1113. package/dist/plugins/ecosystem/node-package-install-persistence.js +221 -0
  1114. package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -0
  1115. package/dist/plugins/ecosystem/node-package-install-stack.d.ts +28 -0
  1116. package/dist/plugins/ecosystem/node-package-install-stack.d.ts.map +1 -0
  1117. package/dist/plugins/ecosystem/node-package-install-stack.js +65 -0
  1118. package/dist/plugins/ecosystem/node-package-install-stack.js.map +1 -0
  1119. package/dist/plugins/ecosystem/node-package-media.d.ts +14 -0
  1120. package/dist/plugins/ecosystem/node-package-media.d.ts.map +1 -0
  1121. package/dist/plugins/ecosystem/node-package-media.js +36 -0
  1122. package/dist/plugins/ecosystem/node-package-media.js.map +1 -0
  1123. package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts +83 -0
  1124. package/dist/plugins/ecosystem/node-plugin-acquisition-host.d.ts.map +1 -0
  1125. package/dist/plugins/ecosystem/node-plugin-acquisition-host.js +423 -0
  1126. package/dist/plugins/ecosystem/node-plugin-acquisition-host.js.map +1 -0
  1127. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +48 -0
  1128. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -0
  1129. package/dist/plugins/ecosystem/node-plugin-bootstrap.js +191 -0
  1130. package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -0
  1131. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts +26 -0
  1132. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -0
  1133. package/dist/plugins/ecosystem/node-plugin-trust-root.js +120 -0
  1134. package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -0
  1135. package/dist/plugins/ecosystem/node-registry-source.d.ts +35 -0
  1136. package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -0
  1137. package/dist/plugins/ecosystem/node-registry-source.js +286 -0
  1138. package/dist/plugins/ecosystem/node-registry-source.js.map +1 -0
  1139. package/dist/plugins/ecosystem/node-release-package-source.d.ts +47 -0
  1140. package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -0
  1141. package/dist/plugins/ecosystem/node-release-package-source.js +336 -0
  1142. package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -0
  1143. package/dist/plugins/ecosystem/node-tar-package.d.ts +11 -0
  1144. package/dist/plugins/ecosystem/node-tar-package.d.ts.map +1 -0
  1145. package/dist/plugins/ecosystem/node-tar-package.js +294 -0
  1146. package/dist/plugins/ecosystem/node-tar-package.js.map +1 -0
  1147. package/dist/plugins/ecosystem/node-tar-writer.d.ts +16 -0
  1148. package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -0
  1149. package/dist/plugins/ecosystem/node-tar-writer.js +134 -0
  1150. package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -0
  1151. package/dist/plugins/ecosystem/node-url-package-source.d.ts +31 -0
  1152. package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -0
  1153. package/dist/plugins/ecosystem/node-url-package-source.js +159 -0
  1154. package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -0
  1155. package/dist/plugins/ecosystem/plugin-acquisition.d.ts +88 -0
  1156. package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -0
  1157. package/dist/plugins/ecosystem/plugin-acquisition.js +197 -0
  1158. package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -0
  1159. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +87 -0
  1160. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -0
  1161. package/dist/plugins/ecosystem/plugin-bootstrap.js +134 -0
  1162. package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -0
  1163. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts +8 -0
  1164. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -0
  1165. package/dist/plugins/ecosystem/registry-cli-adapter.js +16 -0
  1166. package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -0
  1167. package/dist/plugins/ecosystem/registry.d.ts +121 -0
  1168. package/dist/plugins/ecosystem/registry.d.ts.map +1 -0
  1169. package/dist/plugins/ecosystem/registry.js +324 -0
  1170. package/dist/plugins/ecosystem/registry.js.map +1 -0
  1171. package/dist/plugins/ecosystem/resolver.d.ts +32 -0
  1172. package/dist/plugins/ecosystem/resolver.d.ts.map +1 -0
  1173. package/dist/plugins/ecosystem/resolver.js +325 -0
  1174. package/dist/plugins/ecosystem/resolver.js.map +1 -0
  1175. package/dist/plugins/ecosystem/selection-store.d.ts +66 -0
  1176. package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -0
  1177. package/dist/plugins/ecosystem/selection-store.js +241 -0
  1178. package/dist/plugins/ecosystem/selection-store.js.map +1 -0
  1179. package/dist/plugins/ecosystem/selection.d.ts +54 -0
  1180. package/dist/plugins/ecosystem/selection.d.ts.map +1 -0
  1181. package/dist/plugins/ecosystem/selection.js +116 -0
  1182. package/dist/plugins/ecosystem/selection.js.map +1 -0
  1183. package/dist/plugins/ecosystem/state.d.ts +96 -0
  1184. package/dist/plugins/ecosystem/state.d.ts.map +1 -0
  1185. package/dist/plugins/ecosystem/state.js +346 -0
  1186. package/dist/plugins/ecosystem/state.js.map +1 -0
  1187. package/dist/plugins/ecosystem/types.d.ts +90 -0
  1188. package/dist/plugins/ecosystem/types.d.ts.map +1 -0
  1189. package/dist/plugins/ecosystem/types.js +8 -0
  1190. package/dist/plugins/ecosystem/types.js.map +1 -0
  1191. package/dist/plugins/ecosystem/updates.d.ts +30 -0
  1192. package/dist/plugins/ecosystem/updates.d.ts.map +1 -0
  1193. package/dist/plugins/ecosystem/updates.js +148 -0
  1194. package/dist/plugins/ecosystem/updates.js.map +1 -0
  1195. package/dist/plugins/integrity-adapter.d.ts +58 -0
  1196. package/dist/plugins/integrity-adapter.d.ts.map +1 -0
  1197. package/dist/plugins/integrity-adapter.js +70 -0
  1198. package/dist/plugins/integrity-adapter.js.map +1 -0
  1199. package/dist/plugins/mcp-http.d.ts +78 -0
  1200. package/dist/plugins/mcp-http.d.ts.map +1 -0
  1201. package/dist/plugins/mcp-http.js +176 -0
  1202. package/dist/plugins/mcp-http.js.map +1 -0
  1203. package/dist/plugins/observability-types.d.ts +9 -0
  1204. package/dist/plugins/observability-types.d.ts.map +1 -0
  1205. package/dist/plugins/observability-types.js +9 -0
  1206. package/dist/plugins/observability-types.js.map +1 -0
  1207. package/dist/plugins/plugin-host.d.ts +46 -0
  1208. package/dist/plugins/plugin-host.d.ts.map +1 -0
  1209. package/dist/plugins/plugin-host.js +80 -0
  1210. package/dist/plugins/plugin-host.js.map +1 -0
  1211. package/dist/plugins/plugin-supervisor.d.ts +77 -0
  1212. package/dist/plugins/plugin-supervisor.d.ts.map +1 -0
  1213. package/dist/plugins/plugin-supervisor.js +82 -0
  1214. package/dist/plugins/plugin-supervisor.js.map +1 -0
  1215. package/dist/plugins/subagent-task/runner-entry.d.ts +35 -0
  1216. package/dist/plugins/subagent-task/runner-entry.d.ts.map +1 -0
  1217. package/dist/plugins/subagent-task/runner-entry.js +39 -0
  1218. package/dist/plugins/subagent-task/runner-entry.js.map +1 -0
  1219. package/dist/plugins/subagent-task/session-factory.d.ts +57 -0
  1220. package/dist/plugins/subagent-task/session-factory.d.ts.map +1 -0
  1221. package/dist/plugins/subagent-task/session-factory.js +51 -0
  1222. package/dist/plugins/subagent-task/session-factory.js.map +1 -0
  1223. package/dist/profile/child-facade.d.ts +44 -0
  1224. package/dist/profile/child-facade.d.ts.map +1 -0
  1225. package/dist/profile/child-facade.js +56 -0
  1226. package/dist/profile/child-facade.js.map +1 -0
  1227. package/dist/profile/dependency-wiring.d.ts +48 -0
  1228. package/dist/profile/dependency-wiring.d.ts.map +1 -0
  1229. package/dist/profile/dependency-wiring.js +56 -0
  1230. package/dist/profile/dependency-wiring.js.map +1 -0
  1231. package/dist/profile/domain-recovery.d.ts +60 -0
  1232. package/dist/profile/domain-recovery.d.ts.map +1 -0
  1233. package/dist/profile/domain-recovery.js +94 -0
  1234. package/dist/profile/domain-recovery.js.map +1 -0
  1235. package/dist/profile/first-roles.d.ts +30 -0
  1236. package/dist/profile/first-roles.d.ts.map +1 -0
  1237. package/dist/profile/first-roles.js +74 -0
  1238. package/dist/profile/first-roles.js.map +1 -0
  1239. package/dist/profile/goal-plugin.d.ts +38 -0
  1240. package/dist/profile/goal-plugin.d.ts.map +1 -0
  1241. package/dist/profile/goal-plugin.js +113 -0
  1242. package/dist/profile/goal-plugin.js.map +1 -0
  1243. package/dist/profile/identity.d.ts +58 -0
  1244. package/dist/profile/identity.d.ts.map +1 -0
  1245. package/dist/profile/identity.js +100 -0
  1246. package/dist/profile/identity.js.map +1 -0
  1247. package/dist/profile/lock.d.ts +59 -0
  1248. package/dist/profile/lock.d.ts.map +1 -0
  1249. package/dist/profile/lock.js +59 -0
  1250. package/dist/profile/lock.js.map +1 -0
  1251. package/dist/profile/plan-plugin.d.ts +44 -0
  1252. package/dist/profile/plan-plugin.d.ts.map +1 -0
  1253. package/dist/profile/plan-plugin.js +144 -0
  1254. package/dist/profile/plan-plugin.js.map +1 -0
  1255. package/dist/profile/plugin-profiles.d.ts +56 -0
  1256. package/dist/profile/plugin-profiles.d.ts.map +1 -0
  1257. package/dist/profile/plugin-profiles.js +192 -0
  1258. package/dist/profile/plugin-profiles.js.map +1 -0
  1259. package/dist/profile/policy-manifest.d.ts +53 -0
  1260. package/dist/profile/policy-manifest.d.ts.map +1 -0
  1261. package/dist/profile/policy-manifest.js +52 -0
  1262. package/dist/profile/policy-manifest.js.map +1 -0
  1263. package/dist/profile/profile-assembly.d.ts +74 -0
  1264. package/dist/profile/profile-assembly.d.ts.map +1 -0
  1265. package/dist/profile/profile-assembly.js +90 -0
  1266. package/dist/profile/profile-assembly.js.map +1 -0
  1267. package/dist/profile/profile-migration.d.ts +56 -0
  1268. package/dist/profile/profile-migration.d.ts.map +1 -0
  1269. package/dist/profile/profile-migration.js +60 -0
  1270. package/dist/profile/profile-migration.js.map +1 -0
  1271. package/dist/profile/profile-registry.d.ts +58 -0
  1272. package/dist/profile/profile-registry.d.ts.map +1 -0
  1273. package/dist/profile/profile-registry.js +74 -0
  1274. package/dist/profile/profile-registry.js.map +1 -0
  1275. package/dist/profile/role-assembly.d.ts +47 -0
  1276. package/dist/profile/role-assembly.d.ts.map +1 -0
  1277. package/dist/profile/role-assembly.js +31 -0
  1278. package/dist/profile/role-assembly.js.map +1 -0
  1279. package/dist/profile/role-catalog.d.ts +44 -0
  1280. package/dist/profile/role-catalog.d.ts.map +1 -0
  1281. package/dist/profile/role-catalog.js +130 -0
  1282. package/dist/profile/role-catalog.js.map +1 -0
  1283. package/dist/profile/role-orchestrator.d.ts +123 -0
  1284. package/dist/profile/role-orchestrator.d.ts.map +1 -0
  1285. package/dist/profile/role-orchestrator.js +194 -0
  1286. package/dist/profile/role-orchestrator.js.map +1 -0
  1287. package/dist/profile/role-runner.d.ts +99 -0
  1288. package/dist/profile/role-runner.d.ts.map +1 -0
  1289. package/dist/profile/role-runner.js +78 -0
  1290. package/dist/profile/role-runner.js.map +1 -0
  1291. package/dist/profile/root-facade.d.ts +36 -0
  1292. package/dist/profile/root-facade.d.ts.map +1 -0
  1293. package/dist/profile/root-facade.js +48 -0
  1294. package/dist/profile/root-facade.js.map +1 -0
  1295. package/dist/profile/skill-discovery-wiring.d.ts +58 -0
  1296. package/dist/profile/skill-discovery-wiring.d.ts.map +1 -0
  1297. package/dist/profile/skill-discovery-wiring.js +75 -0
  1298. package/dist/profile/skill-discovery-wiring.js.map +1 -0
  1299. package/dist/profile/state-store.d.ts +62 -0
  1300. package/dist/profile/state-store.d.ts.map +1 -0
  1301. package/dist/profile/state-store.js +140 -0
  1302. package/dist/profile/state-store.js.map +1 -0
  1303. package/dist/profile/todo-plugin.d.ts +37 -0
  1304. package/dist/profile/todo-plugin.d.ts.map +1 -0
  1305. package/dist/profile/todo-plugin.js +132 -0
  1306. package/dist/profile/todo-plugin.js.map +1 -0
  1307. package/dist/profiles/builtin-suites.d.ts +142 -0
  1308. package/dist/profiles/builtin-suites.d.ts.map +1 -0
  1309. package/dist/profiles/builtin-suites.js +395 -0
  1310. package/dist/profiles/builtin-suites.js.map +1 -0
  1311. package/dist/profiles/resolved-agent-profile.d.ts +83 -0
  1312. package/dist/profiles/resolved-agent-profile.d.ts.map +1 -0
  1313. package/dist/profiles/resolved-agent-profile.js +75 -0
  1314. package/dist/profiles/resolved-agent-profile.js.map +1 -0
  1315. package/dist/profiles/suite-lifecycle.d.ts +158 -0
  1316. package/dist/profiles/suite-lifecycle.d.ts.map +1 -0
  1317. package/dist/profiles/suite-lifecycle.js +447 -0
  1318. package/dist/profiles/suite-lifecycle.js.map +1 -0
  1319. package/dist/profiles/suite-loader.d.ts +410 -0
  1320. package/dist/profiles/suite-loader.d.ts.map +1 -0
  1321. package/dist/profiles/suite-loader.js +823 -0
  1322. package/dist/profiles/suite-loader.js.map +1 -0
  1323. package/dist/remote/server-assembly.d.ts +230 -0
  1324. package/dist/remote/server-assembly.d.ts.map +1 -0
  1325. package/dist/remote/server-assembly.js +1189 -0
  1326. package/dist/remote/server-assembly.js.map +1 -0
  1327. package/dist/remote/server-entry.d.ts +112 -0
  1328. package/dist/remote/server-entry.d.ts.map +1 -0
  1329. package/dist/remote/server-entry.js +239 -0
  1330. package/dist/remote/server-entry.js.map +1 -0
  1331. package/dist/remote/session-source.d.ts +101 -0
  1332. package/dist/remote/session-source.d.ts.map +1 -0
  1333. package/dist/remote/session-source.js +173 -0
  1334. package/dist/remote/session-source.js.map +1 -0
  1335. package/dist/rpc-entry.d.ts +3 -0
  1336. package/dist/rpc-entry.d.ts.map +1 -0
  1337. package/dist/rpc-entry.js +11 -0
  1338. package/dist/rpc-entry.js.map +1 -0
  1339. package/dist/server/create-harness.d.ts +26 -0
  1340. package/dist/server/create-harness.d.ts.map +1 -0
  1341. package/dist/server/create-harness.js +106 -0
  1342. package/dist/server/create-harness.js.map +1 -0
  1343. package/dist/share/session-share.d.ts +98 -0
  1344. package/dist/share/session-share.d.ts.map +1 -0
  1345. package/dist/share/session-share.js +89 -0
  1346. package/dist/share/session-share.js.map +1 -0
  1347. package/dist/share/share-viewer.d.ts +43 -0
  1348. package/dist/share/share-viewer.d.ts.map +1 -0
  1349. package/dist/share/share-viewer.js +103 -0
  1350. package/dist/share/share-viewer.js.map +1 -0
  1351. package/dist/testing/index.d.ts +4 -0
  1352. package/dist/testing/index.d.ts.map +1 -0
  1353. package/dist/testing/index.js +6 -0
  1354. package/dist/testing/index.js.map +1 -0
  1355. package/dist/testing/mock-ai-server.d.ts +77 -0
  1356. package/dist/testing/mock-ai-server.d.ts.map +1 -0
  1357. package/dist/testing/mock-ai-server.js +69 -0
  1358. package/dist/testing/mock-ai-server.js.map +1 -0
  1359. package/dist/testing/plugin-testkit.d.ts +148 -0
  1360. package/dist/testing/plugin-testkit.d.ts.map +1 -0
  1361. package/dist/testing/plugin-testkit.js +493 -0
  1362. package/dist/testing/plugin-testkit.js.map +1 -0
  1363. package/dist/testing/runtime-delivery-queue.d.ts +47 -0
  1364. package/dist/testing/runtime-delivery-queue.d.ts.map +1 -0
  1365. package/dist/testing/runtime-delivery-queue.js +158 -0
  1366. package/dist/testing/runtime-delivery-queue.js.map +1 -0
  1367. package/dist/testing/session-plugin-testkit.d.ts +144 -0
  1368. package/dist/testing/session-plugin-testkit.d.ts.map +1 -0
  1369. package/dist/testing/session-plugin-testkit.js +444 -0
  1370. package/dist/testing/session-plugin-testkit.js.map +1 -0
  1371. package/dist/utils/abort.d.ts +5 -0
  1372. package/dist/utils/abort.d.ts.map +1 -0
  1373. package/dist/utils/abort.js +53 -0
  1374. package/dist/utils/abort.js.map +1 -0
  1375. package/dist/utils/agent-forge-user-agent.d.ts +2 -0
  1376. package/dist/utils/agent-forge-user-agent.d.ts.map +1 -0
  1377. package/dist/utils/agent-forge-user-agent.js +5 -0
  1378. package/dist/utils/agent-forge-user-agent.js.map +1 -0
  1379. package/dist/utils/ansi.d.ts +2 -0
  1380. package/dist/utils/ansi.d.ts.map +1 -0
  1381. package/dist/utils/ansi.js +53 -0
  1382. package/dist/utils/ansi.js.map +1 -0
  1383. package/dist/utils/changelog.d.ts +22 -0
  1384. package/dist/utils/changelog.d.ts.map +1 -0
  1385. package/dist/utils/changelog.js +165 -0
  1386. package/dist/utils/changelog.js.map +1 -0
  1387. package/dist/utils/child-process.d.ts +18 -0
  1388. package/dist/utils/child-process.d.ts.map +1 -0
  1389. package/dist/utils/child-process.js +107 -0
  1390. package/dist/utils/child-process.js.map +1 -0
  1391. package/dist/utils/clipboard-image.d.ts +11 -0
  1392. package/dist/utils/clipboard-image.d.ts.map +1 -0
  1393. package/dist/utils/clipboard-image.js +246 -0
  1394. package/dist/utils/clipboard-image.js.map +1 -0
  1395. package/dist/utils/clipboard-native.d.ts +11 -0
  1396. package/dist/utils/clipboard-native.d.ts.map +1 -0
  1397. package/dist/utils/clipboard-native.js +22 -0
  1398. package/dist/utils/clipboard-native.js.map +1 -0
  1399. package/dist/utils/clipboard.d.ts +4 -0
  1400. package/dist/utils/clipboard.d.ts.map +1 -0
  1401. package/dist/utils/clipboard.js +161 -0
  1402. package/dist/utils/clipboard.js.map +1 -0
  1403. package/dist/utils/deprecation.d.ts +4 -0
  1404. package/dist/utils/deprecation.d.ts.map +1 -0
  1405. package/dist/utils/deprecation.js +13 -0
  1406. package/dist/utils/deprecation.js.map +1 -0
  1407. package/dist/utils/exif-orientation.d.ts +5 -0
  1408. package/dist/utils/exif-orientation.d.ts.map +1 -0
  1409. package/dist/utils/exif-orientation.js +158 -0
  1410. package/dist/utils/exif-orientation.js.map +1 -0
  1411. package/dist/utils/frontmatter.d.ts +8 -0
  1412. package/dist/utils/frontmatter.d.ts.map +1 -0
  1413. package/dist/utils/frontmatter.js +27 -0
  1414. package/dist/utils/frontmatter.js.map +1 -0
  1415. package/dist/utils/fs-watch.d.ts +5 -0
  1416. package/dist/utils/fs-watch.d.ts.map +1 -0
  1417. package/dist/utils/fs-watch.js +25 -0
  1418. package/dist/utils/fs-watch.js.map +1 -0
  1419. package/dist/utils/git.d.ts +26 -0
  1420. package/dist/utils/git.d.ts.map +1 -0
  1421. package/dist/utils/git.js +201 -0
  1422. package/dist/utils/git.js.map +1 -0
  1423. package/dist/utils/html.d.ts +7 -0
  1424. package/dist/utils/html.d.ts.map +1 -0
  1425. package/dist/utils/html.js +40 -0
  1426. package/dist/utils/html.js.map +1 -0
  1427. package/dist/utils/image-convert.d.ts +10 -0
  1428. package/dist/utils/image-convert.d.ts.map +1 -0
  1429. package/dist/utils/image-convert.js +45 -0
  1430. package/dist/utils/image-convert.js.map +1 -0
  1431. package/dist/utils/image-process.d.ts +18 -0
  1432. package/dist/utils/image-process.d.ts.map +1 -0
  1433. package/dist/utils/image-process.js +84 -0
  1434. package/dist/utils/image-process.js.map +1 -0
  1435. package/dist/utils/image-resize-core.d.ts +30 -0
  1436. package/dist/utils/image-resize-core.d.ts.map +1 -0
  1437. package/dist/utils/image-resize-core.js +125 -0
  1438. package/dist/utils/image-resize-core.js.map +1 -0
  1439. package/dist/utils/image-resize-worker.d.ts +2 -0
  1440. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  1441. package/dist/utils/image-resize-worker.js +31 -0
  1442. package/dist/utils/image-resize-worker.js.map +1 -0
  1443. package/dist/utils/image-resize.d.ts +16 -0
  1444. package/dist/utils/image-resize.d.ts.map +1 -0
  1445. package/dist/utils/image-resize.js +100 -0
  1446. package/dist/utils/image-resize.js.map +1 -0
  1447. package/dist/utils/json.d.ts +3 -0
  1448. package/dist/utils/json.d.ts.map +1 -0
  1449. package/dist/utils/json.js +8 -0
  1450. package/dist/utils/json.js.map +1 -0
  1451. package/dist/utils/management-http.d.ts +25 -0
  1452. package/dist/utils/management-http.d.ts.map +1 -0
  1453. package/dist/utils/management-http.js +54 -0
  1454. package/dist/utils/management-http.js.map +1 -0
  1455. package/dist/utils/mime.d.ts +3 -0
  1456. package/dist/utils/mime.d.ts.map +1 -0
  1457. package/dist/utils/mime.js +115 -0
  1458. package/dist/utils/mime.js.map +1 -0
  1459. package/dist/utils/open-browser.d.ts +9 -0
  1460. package/dist/utils/open-browser.d.ts.map +1 -0
  1461. package/dist/utils/open-browser.js +22 -0
  1462. package/dist/utils/open-browser.js.map +1 -0
  1463. package/dist/utils/paths.d.ts +34 -0
  1464. package/dist/utils/paths.d.ts.map +1 -0
  1465. package/dist/utils/paths.js +114 -0
  1466. package/dist/utils/paths.js.map +1 -0
  1467. package/dist/utils/photon.d.ts +21 -0
  1468. package/dist/utils/photon.d.ts.map +1 -0
  1469. package/dist/utils/photon.js +124 -0
  1470. package/dist/utils/photon.js.map +1 -0
  1471. package/dist/utils/shell.d.ts +34 -0
  1472. package/dist/utils/shell.d.ts.map +1 -0
  1473. package/dist/utils/shell.js +216 -0
  1474. package/dist/utils/shell.js.map +1 -0
  1475. package/dist/utils/sleep.d.ts +5 -0
  1476. package/dist/utils/sleep.d.ts.map +1 -0
  1477. package/dist/utils/sleep.js +17 -0
  1478. package/dist/utils/sleep.js.map +1 -0
  1479. package/dist/utils/sync-sleep.d.ts +2 -0
  1480. package/dist/utils/sync-sleep.d.ts.map +1 -0
  1481. package/dist/utils/sync-sleep.js +11 -0
  1482. package/dist/utils/sync-sleep.js.map +1 -0
  1483. package/dist/utils/syntax-highlight.d.ts +13 -0
  1484. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  1485. package/dist/utils/syntax-highlight.js +177 -0
  1486. package/dist/utils/syntax-highlight.js.map +1 -0
  1487. package/dist/utils/text.d.ts +8 -0
  1488. package/dist/utils/text.d.ts.map +1 -0
  1489. package/dist/utils/text.js +9 -0
  1490. package/dist/utils/text.js.map +1 -0
  1491. package/dist/utils/tool-result-images.d.ts +19 -0
  1492. package/dist/utils/tool-result-images.d.ts.map +1 -0
  1493. package/dist/utils/tool-result-images.js +45 -0
  1494. package/dist/utils/tool-result-images.js.map +1 -0
  1495. package/dist/utils/tools-manager.d.ts +24 -0
  1496. package/dist/utils/tools-manager.d.ts.map +1 -0
  1497. package/dist/utils/tools-manager.js +437 -0
  1498. package/dist/utils/tools-manager.js.map +1 -0
  1499. package/dist/utils/version-check.d.ts +21 -0
  1500. package/dist/utils/version-check.d.ts.map +1 -0
  1501. package/dist/utils/version-check.js +86 -0
  1502. package/dist/utils/version-check.js.map +1 -0
  1503. package/dist/utils/windows-self-update.d.ts +3 -0
  1504. package/dist/utils/windows-self-update.d.ts.map +1 -0
  1505. package/dist/utils/windows-self-update.js +77 -0
  1506. package/dist/utils/windows-self-update.js.map +1 -0
  1507. package/docs/compaction.md +348 -0
  1508. package/docs/containerization.md +114 -0
  1509. package/docs/development.md +71 -0
  1510. package/docs/docs.json +148 -0
  1511. package/docs/environment-variables.md +96 -0
  1512. package/docs/images/exy.png +0 -0
  1513. package/docs/images/interactive-mode.png +0 -0
  1514. package/docs/images/tree-view.png +0 -0
  1515. package/docs/index.md +76 -0
  1516. package/docs/json.md +98 -0
  1517. package/docs/keybindings.md +245 -0
  1518. package/docs/llama-cpp.md +101 -0
  1519. package/docs/models.md +576 -0
  1520. package/docs/packages.md +205 -0
  1521. package/docs/prompt-templates.md +96 -0
  1522. package/docs/providers.md +317 -0
  1523. package/docs/quickstart.md +167 -0
  1524. package/docs/rpc.md +1487 -0
  1525. package/docs/sdk.md +1146 -0
  1526. package/docs/security.md +24 -0
  1527. package/docs/session-format.md +438 -0
  1528. package/docs/sessions.md +145 -0
  1529. package/docs/settings.md +355 -0
  1530. package/docs/shell-aliases.md +13 -0
  1531. package/docs/skills.md +231 -0
  1532. package/docs/terminal-setup.md +192 -0
  1533. package/docs/termux.md +127 -0
  1534. package/docs/themes.md +320 -0
  1535. package/docs/tmux.md +63 -0
  1536. package/docs/tui.md +478 -0
  1537. package/docs/usage.md +291 -0
  1538. package/docs/windows.md +39 -0
  1539. package/examples/README.md +21 -0
  1540. package/examples/extensions/README.md +163 -0
  1541. package/examples/extensions/bash-spawn-hook/index.ts +37 -0
  1542. package/examples/extensions/bash-spawn-hook/plugin.json +10 -0
  1543. package/examples/extensions/bookmark/index.ts +67 -0
  1544. package/examples/extensions/bookmark/plugin.json +11 -0
  1545. package/examples/extensions/built-in-tool-renderer/index.ts +262 -0
  1546. package/examples/extensions/built-in-tool-renderer/plugin.json +10 -0
  1547. package/examples/extensions/claude-rules/index.ts +119 -0
  1548. package/examples/extensions/claude-rules/plugin.json +8 -0
  1549. package/examples/extensions/cli-bridge/README.md +27 -0
  1550. package/examples/extensions/cli-bridge/index.ts +320 -0
  1551. package/examples/extensions/cli-bridge/plugin.json +10 -0
  1552. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  1553. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  1554. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  1555. package/examples/extensions/dynamic-resources/index.ts +53 -0
  1556. package/examples/extensions/dynamic-resources/plugin.json +8 -0
  1557. package/examples/extensions/dynamic-tools/index.ts +102 -0
  1558. package/examples/extensions/dynamic-tools/plugin.json +14 -0
  1559. package/examples/extensions/event-bus/index.ts +75 -0
  1560. package/examples/extensions/event-bus/plugin.json +13 -0
  1561. package/examples/extensions/file-trigger/index.ts +65 -0
  1562. package/examples/extensions/file-trigger/plugin.json +13 -0
  1563. package/examples/extensions/goal/README.md +16 -0
  1564. package/examples/extensions/goal/index.ts +134 -0
  1565. package/examples/extensions/goal/plugin.json +12 -0
  1566. package/examples/extensions/hello/index.ts +29 -0
  1567. package/examples/extensions/hello/plugin.json +10 -0
  1568. package/examples/extensions/kimi-deferred-tools/index.ts +93 -0
  1569. package/examples/extensions/kimi-deferred-tools/plugin.json +11 -0
  1570. package/examples/extensions/mcp-stdio/README.md +19 -0
  1571. package/examples/extensions/mcp-stdio/index.d.ts +64 -0
  1572. package/examples/extensions/mcp-stdio/index.d.ts.map +1 -0
  1573. package/examples/extensions/mcp-stdio/index.js +292 -0
  1574. package/examples/extensions/mcp-stdio/index.js.map +1 -0
  1575. package/examples/extensions/mcp-stdio/index.ts +381 -0
  1576. package/examples/extensions/mcp-stdio/plugin.json +10 -0
  1577. package/examples/extensions/memory-backend/index.ts +120 -0
  1578. package/examples/extensions/memory-backend/plugin.json +10 -0
  1579. package/examples/extensions/minimal-mode/index.ts +447 -0
  1580. package/examples/extensions/minimal-mode/plugin.json +10 -0
  1581. package/examples/extensions/multi-agent/README.md +7 -0
  1582. package/examples/extensions/multi-agent/index.ts +592 -0
  1583. package/examples/extensions/multi-agent/plugin.json +13 -0
  1584. package/examples/extensions/notify/index.ts +70 -0
  1585. package/examples/extensions/notify/plugin.json +8 -0
  1586. package/examples/extensions/permission-gate/index.ts +55 -0
  1587. package/examples/extensions/permission-gate/plugin.json +11 -0
  1588. package/examples/extensions/pirate/index.ts +75 -0
  1589. package/examples/extensions/pirate/plugin.json +8 -0
  1590. package/examples/extensions/plan/README.md +16 -0
  1591. package/examples/extensions/plan/index.ts +136 -0
  1592. package/examples/extensions/plan/plugin.json +12 -0
  1593. package/examples/extensions/prompt-customizer/index.ts +117 -0
  1594. package/examples/extensions/prompt-customizer/plugin.json +8 -0
  1595. package/examples/extensions/protected-paths/index.ts +44 -0
  1596. package/examples/extensions/protected-paths/plugin.json +11 -0
  1597. package/examples/extensions/provider-attribution/README.md +12 -0
  1598. package/examples/extensions/provider-attribution/index.ts +86 -0
  1599. package/examples/extensions/provider-attribution/plugin.json +10 -0
  1600. package/examples/extensions/send-user-message/index.ts +118 -0
  1601. package/examples/extensions/send-user-message/plugin.json +11 -0
  1602. package/examples/extensions/session-name/index.ts +31 -0
  1603. package/examples/extensions/session-name/plugin.json +11 -0
  1604. package/examples/extensions/session-share/README.md +15 -0
  1605. package/examples/extensions/session-share/index.ts +170 -0
  1606. package/examples/extensions/session-share/plugin.json +15 -0
  1607. package/examples/extensions/structured-output/index.ts +68 -0
  1608. package/examples/extensions/structured-output/plugin.json +10 -0
  1609. package/examples/extensions/subagent/README.md +177 -0
  1610. package/examples/extensions/subagent/agents/planner.md +37 -0
  1611. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  1612. package/examples/extensions/subagent/agents/scout.md +50 -0
  1613. package/examples/extensions/subagent/agents/worker.md +24 -0
  1614. package/examples/extensions/subagent/agents.ts +157 -0
  1615. package/examples/extensions/subagent/index.ts +1057 -0
  1616. package/examples/extensions/subagent/plugin.json +13 -0
  1617. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  1618. package/examples/extensions/subagent/prompts/implement.md +10 -0
  1619. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  1620. package/examples/extensions/suite-manager/README.md +45 -0
  1621. package/examples/extensions/suite-manager/index.ts +182 -0
  1622. package/examples/extensions/suite-manager/plugin.json +13 -0
  1623. package/examples/extensions/timed-confirm/index.ts +93 -0
  1624. package/examples/extensions/timed-confirm/plugin.json +13 -0
  1625. package/examples/extensions/todo-set/README.md +18 -0
  1626. package/examples/extensions/todo-set/index.ts +133 -0
  1627. package/examples/extensions/todo-set/plugin.json +12 -0
  1628. package/examples/extensions/tool-override/index.ts +159 -0
  1629. package/examples/extensions/tool-override/plugin.json +11 -0
  1630. package/examples/extensions/trigger-compact/index.ts +76 -0
  1631. package/examples/extensions/trigger-compact/plugin.json +14 -0
  1632. package/examples/extensions/truncated-tool/index.ts +204 -0
  1633. package/examples/extensions/truncated-tool/plugin.json +10 -0
  1634. package/examples/extensions/with-deps/index.ts +42 -0
  1635. package/examples/extensions/with-deps/package-lock.json +31 -0
  1636. package/examples/extensions/with-deps/package.json +22 -0
  1637. package/examples/extensions/with-deps/plugin.json +10 -0
  1638. package/examples/remote-client.ts +66 -0
  1639. package/examples/rpc-extension-ui.ts +641 -0
  1640. package/examples/sdk/01-minimal.ts +26 -0
  1641. package/examples/sdk/02-custom-model.ts +49 -0
  1642. package/examples/sdk/03-custom-prompt.ts +70 -0
  1643. package/examples/sdk/04-skills.ts +55 -0
  1644. package/examples/sdk/05-tools.ts +48 -0
  1645. package/examples/sdk/07-context-files.ts +42 -0
  1646. package/examples/sdk/08-prompt-templates.ts +51 -0
  1647. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  1648. package/examples/sdk/10-settings.ts +53 -0
  1649. package/examples/sdk/11-sessions.ts +52 -0
  1650. package/examples/sdk/12-full-control.ts +72 -0
  1651. package/examples/sdk/13-session-runtime.ts +71 -0
  1652. package/examples/sdk/14-custom-session-storage.ts +132 -0
  1653. package/examples/sdk/README.md +139 -0
  1654. package/package.json +111 -0
@@ -0,0 +1,2170 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { performance } from "node:perf_hooks";
3
+ import { createLifecycleRuntime } from "./capability-runtime-events.js";
4
+ import { guardedComposition, guardedCredentials, guardedInteraction, guardedOutput, guardedSession, RuntimeAgentTask, withNormalizedToolResultExecute, } from "./capability-runtime-guards.js";
5
+ import { createRuntimeInspector } from "./capability-runtime-inspect.js";
6
+ import { assertManifest, assertPluginCapabilityDeclarations, assertPluginCapabilityId, assertPluginCapabilityVersion, capabilityKey, createPluginConfig, isPluginConfigValue, resolvePluginCapabilityOrder, } from "./capability-runtime-manifest.js";
7
+ import { OutputArtifactError, RuntimeOperation } from "./capability-runtime-operation.js";
8
+ import { definitionSnapshot, detachedSnapshot } from "./capability-runtime-snapshot.js";
9
+ import { assertRegisteredCapabilityActive as assertRegisteredCapabilityState, cancelOwnedOperations as cancelOwnedOperationsState, createCapabilityRuntimeState, createRevokedCapabilityError, invokePluginCapability as invokePluginCapabilityState, invokeRegisteredCapability as invokeRegisteredCapabilityState, invokeRegisteredCapabilityWithSignal as invokeRegisteredCapabilityWithSignalState, isRevokedCapabilityError, observeUnexpectedAsyncCleanup, trackOperation as trackOperationState, } from "./capability-runtime-store.js";
10
+ import { invokeCapabilityTool } from "./capability-runtime-tool.js";
11
+ import { asHandler, assertAgentTaskRequest, assertHost, capabilityName, contributionPointKey, lifecycleEventKey, lifecycleRegistrationKinds, stableTextCompare, toolReadonlySafe, validateCommandDefinition, validateCommandResult, validateContributionPointDefinition, validateExecutionFactsV1, validateLifecycleEventDefinition, validateProviderHeaders, validateRetryScheduleV1, } from "./capability-runtime-validation.js";
12
+ import { PLUGIN_REJECTED_EVENT_ID, PLUGIN_REJECTED_EVENT_VERSION } from "./lifecycle-catalog.js";
13
+ import { createLifecycleDeliveryQueue } from "./lifecycle-delivery-queue.js";
14
+ import { createDisposableRegistration, createEventEnvelope, } from "./public-api.js";
15
+ export { resolvePluginCapabilityOrder } from "./capability-runtime-manifest.js";
16
+ export { validateExecutionFactsV1, validateRetryScheduleV1 } from "./capability-runtime-validation.js";
17
+ /**
18
+ * 慢事件订阅者观测阈值(毫秒):publish 对单个订阅者的投递耗时超过该值时记一条
19
+ * warn 日志(事件类型 + 订阅 id + 耗时,pluginId 归属订阅者)。纯观测面,不改投递
20
+ * 行为:仍顺序 await、等待完成、不超时打断、不丢弃。每个订阅者在单个 publish 周期
21
+ * 内至多被投递一次,因此天然至多记一条。计时用 performance.now 而非可注入 clock:
22
+ * clock 缺省恒 0(生产不注入),不能作为耗时来源。
23
+ */
24
+ const SLOW_EVENT_SUBSCRIBER_WARN_MS = 100;
25
+ export function createCapabilityRuntime(inputHost, options = {}) {
26
+ // D-075 S4 third batch: the communication/turnContext host services carry
27
+ // host-owned callbacks. They must ride by reference (like the trace
28
+ // service in CapabilityRuntimeOptions) instead of through the structured
29
+ // clone below, which cannot clone functions. Strip them before the
30
+ // snapshot and re-attach to the exposed host afterwards. S4 fourth batch:
31
+ // memoryStorage joins — its store/ledger factories and vector components
32
+ // are host-owned runtime services with the same non-cloneable shape.
33
+ // Validate BEFORE destructuring: destructuring a null/non-object host would
34
+ // surface a TypeError instead of the contract's validation error.
35
+ assertHost(inputHost);
36
+ const { communication, turnContext, memoryStorage, ...cloneableHost } = inputHost;
37
+ const host = detachedSnapshot(cloneableHost);
38
+ assertHost(host);
39
+ const hostWithServices = communication === undefined && turnContext === undefined && memoryStorage === undefined
40
+ ? host
41
+ : Object.freeze({
42
+ ...host,
43
+ ...(communication === undefined ? {} : { communication }),
44
+ ...(turnContext === undefined ? {} : { turnContext }),
45
+ ...(memoryStorage === undefined ? {} : { memoryStorage }),
46
+ });
47
+ const hasSession = host.features.includes("session");
48
+ const hasSessionExport = host.features.includes("session-export");
49
+ const hasSessionRevision = host.features.includes("session-revision-v1");
50
+ if (hasSession && !options.session) {
51
+ throw new Error("Host declares session capability without a SessionAPI");
52
+ }
53
+ if (!hasSession && options.session) {
54
+ throw new Error("Host provides a SessionAPI without the session capability");
55
+ }
56
+ if (hasSessionExport && !hasSession) {
57
+ throw new Error("Host declares session-export capability without the session capability");
58
+ }
59
+ if (hasSessionExport && !options.session?.exportArtifact) {
60
+ throw new Error("Host declares session-export capability without SessionAPI.exportArtifact");
61
+ }
62
+ if (hasSessionRevision && !hasSession) {
63
+ throw new Error("Host declares session-revision-v1 capability without the session capability");
64
+ }
65
+ if (hasSessionRevision && !options.session?.getRevision) {
66
+ throw new Error("Host declares session-revision-v1 capability without SessionAPI.getRevision");
67
+ }
68
+ if (host.features.includes("agents") && !options.session) {
69
+ throw new Error("Host declares agents capability without a parent SessionAPI");
70
+ }
71
+ if (host.features.includes("agents") &&
72
+ !options.agents &&
73
+ options.agentSessionReader === undefined &&
74
+ options.agentSessionLister === undefined) {
75
+ throw new Error("Host declares agents capability without an AgentTaskAdapter or a session reader/lister");
76
+ }
77
+ if (options.agents && !host.features.includes("agents")) {
78
+ throw new Error("Host provides an AgentTaskAdapter without the agents capability");
79
+ }
80
+ if (options.agentResults && !host.features.includes("agent-result-replay-v1")) {
81
+ throw new Error("Host provides an agentResults option without the agent-result-replay-v1 capability");
82
+ }
83
+ if (host.features.includes("agent-result-replay-v1") && !options.agentResults) {
84
+ throw new Error("Host declares agent-result-replay-v1 capability without an agentResults option");
85
+ }
86
+ if (host.features.includes("credentials") && !options.credentials) {
87
+ throw new Error("Host declares credentials capability without a CredentialAPI");
88
+ }
89
+ if (options.credentials && !host.features.includes("credentials")) {
90
+ throw new Error("Host provides a CredentialAPI without the credentials capability");
91
+ }
92
+ if (host.features.includes("interaction") && !options.interaction) {
93
+ throw new Error("Host declares interaction capability without an InteractionHostV1");
94
+ }
95
+ if (options.interaction && !host.features.includes("interaction")) {
96
+ throw new Error("Host provides an InteractionHostV1 without the interaction capability");
97
+ }
98
+ if (host.features.includes("agent-result-replay-v1") && !host.features.includes("agents")) {
99
+ throw new Error("Host declares the agent-result-replay-v1 feature without the agents capability");
100
+ }
101
+ const clock = options.clock ?? (() => 0);
102
+ // Per-runtime unique segment for generated agent task ids: without an
103
+ // idFactory the id is otherwise a deterministic per-instance sequence, so a
104
+ // rebuilt runtime reusing the same owner and sequence would replay over the
105
+ // previous generation's durable records under the same key.
106
+ const runtimeInstanceSegment = randomUUID().slice(0, 8);
107
+ const onOutputArtifactCommit = options.onOutputArtifactCommit;
108
+ const toolExecutionContext = options.toolExecutionContext;
109
+ const state = createCapabilityRuntimeState();
110
+ const { tools, skills, retryPolicies, compactionPolicies, overflowPolicies, branchSummaryPolicies, runLoopStrategies, loopHooks, commands, operations, rpcMethods, contextStrategies, pluginCapabilities, providerHeaderTransforms, contributionPoints, lifecycleDefinitions, lifecycleRegistrations, subscribers, statuses, pluginRegistrations, apiStates, activeOwnerTokens, outputArtifacts, stateByOwner, stateRevisionsByOwner, stateWatchers, stateByInstance, stateRevisionsByInstance, stateWatchersByInstance, logs, spans, lifecycleDeliveryQueues, pluginRejections, } = state;
111
+ const runtimeState = state;
112
+ let subscriptionSequence = 0;
113
+ let operationSequence = 0;
114
+ let agentTaskSequence = 0;
115
+ let artifactSequence = 0;
116
+ let contributionSubscriptionSequence = 0;
117
+ let lifecycleRegistrationSequence = 0;
118
+ let stateWatcherSequence = 0;
119
+ let spanSequence = 0;
120
+ let traceSequence = 0;
121
+ let loopHookSequence = 0;
122
+ const createRuntimeId = (kind, sequence, fallback) => {
123
+ if (!options.idFactory)
124
+ return fallback;
125
+ const id = options.idFactory(kind, sequence);
126
+ if (typeof id !== "string" || !id.trim()) {
127
+ throw new Error(`Runtime idFactory must return a non-empty string for ${kind}`);
128
+ }
129
+ return id;
130
+ };
131
+ const { dispatchLifecycle, reportCapabilityCall, reportOperationCancel, reportOperationEnd, reportOperationStart, reportOperationStep, } = createLifecycleRuntime({
132
+ state,
133
+ clock,
134
+ createRuntimeId,
135
+ onLifecycleDispatch: options.onLifecycleDispatch,
136
+ });
137
+ const inspect = createRuntimeInspector({ state, host });
138
+ const assertRegisteredCapabilityActive = (registered) => assertRegisteredCapabilityState(state, registered);
139
+ const invokeRegisteredCapability = async (registered, invoke) => invokeRegisteredCapabilityState(state, registered, invoke);
140
+ const invokeRegisteredCapabilityWithSignal = async (registered, signal, invoke) => invokeRegisteredCapabilityWithSignalState(state, registered, signal, invoke);
141
+ const invokePluginCapability = async (registered, input, signal) => invokePluginCapabilityState(state, registered, input, signal);
142
+ const trackOperation = (ownerTokens, handle) => trackOperationState(state, ownerTokens, handle);
143
+ const cancelOwnedOperations = (ownerToken, owner) => cancelOwnedOperationsState(state, ownerToken, owner);
144
+ const cleanupArtifacts = (ownerToken) => {
145
+ for (const [artifactId, artifact] of outputArtifacts) {
146
+ if (artifact.ownerToken === ownerToken)
147
+ outputArtifacts.delete(artifactId);
148
+ }
149
+ };
150
+ const cleanupPluginCapabilities = (ownerToken) => {
151
+ for (const [key, capability] of pluginCapabilities) {
152
+ if (capability.ownerToken === ownerToken)
153
+ pluginCapabilities.delete(key);
154
+ }
155
+ };
156
+ const cleanupRegisteredCapabilities = (ownerToken) => {
157
+ for (const registry of [
158
+ tools,
159
+ skills,
160
+ retryPolicies,
161
+ compactionPolicies,
162
+ overflowPolicies,
163
+ branchSummaryPolicies,
164
+ runLoopStrategies,
165
+ commands,
166
+ operations,
167
+ rpcMethods,
168
+ contextStrategies,
169
+ providerHeaderTransforms,
170
+ ]) {
171
+ for (const [name, entry] of registry) {
172
+ if (entry.ownerToken === ownerToken) {
173
+ registry.delete(name);
174
+ if (registry === tools)
175
+ notifyToolRegistryChange(entry.owner, name);
176
+ }
177
+ }
178
+ }
179
+ for (const [position, entries] of loopHooks) {
180
+ const remaining = entries.filter((entry) => entry.ownerToken !== ownerToken);
181
+ if (remaining.length === 0)
182
+ loopHooks.delete(position);
183
+ else if (remaining.length !== entries.length)
184
+ loopHooks.set(position, remaining);
185
+ }
186
+ for (const [type, handlers] of subscribers) {
187
+ for (const [id, handler] of handlers) {
188
+ if (handler.ownerToken === ownerToken)
189
+ handlers.delete(id);
190
+ }
191
+ if (handlers.size === 0)
192
+ subscribers.delete(type);
193
+ }
194
+ // 替换链清扫:链中只应存活 owner 的注册。revokeState 先 activeOwnerTokens.delete
195
+ // 再调用本清理,故此处能正确判定本 owner 已死;死条目在 restoreReplacedTool 弹栈
196
+ // 时本就会被跳过(同样按 activeOwnerTokens 判定),提前删除不改变任何可观测行为,
197
+ // 只消除陈旧状态——替换方长期不 dispose 且被替换 owner 已撤销时,链项会一直滞留。
198
+ for (const [name, chain] of toolReplacementChains) {
199
+ const remaining = chain.filter((entry) => activeOwnerTokens.has(entry.ownerToken));
200
+ if (remaining.length === 0)
201
+ toolReplacementChains.delete(name);
202
+ else if (remaining.length !== chain.length)
203
+ toolReplacementChains.set(name, remaining);
204
+ }
205
+ };
206
+ const revokeState = (api, state) => {
207
+ state.active = false;
208
+ activeOwnerTokens.delete(state.ownerToken);
209
+ for (const instance of state.compositionInstances ?? [])
210
+ void instance.dispose();
211
+ state.compositionInstances?.clear();
212
+ const definitionBinding = options.composition;
213
+ definitionBinding?.disposeDefinitions?.(Array.from(state.compositionDefinitions ?? []));
214
+ state.compositionDefinitions?.clear();
215
+ cancelOwnedOperations(state.ownerToken, state.owner);
216
+ cleanupArtifacts(state.ownerToken);
217
+ cleanupStateWatchers(state.ownerToken);
218
+ cleanupDiagnostics(state.owner);
219
+ cleanupPluginCapabilities(state.ownerToken);
220
+ cleanupContributionPoints(state.ownerToken);
221
+ cleanupLifecycle(state.ownerToken);
222
+ cleanupRegisteredCapabilities(state.ownerToken);
223
+ apiStates.delete(api);
224
+ };
225
+ const cleanupContributionPoints = (ownerToken) => {
226
+ for (const [key, point] of contributionPoints) {
227
+ if (point.ownerToken === ownerToken)
228
+ contributionPoints.delete(key);
229
+ for (const [id, entry] of point.entries) {
230
+ if (entry.ownerToken === ownerToken)
231
+ point.entries.delete(id);
232
+ }
233
+ for (const [id, subscriber] of point.subscribers) {
234
+ if (subscriber.ownerToken === ownerToken)
235
+ point.subscribers.delete(id);
236
+ }
237
+ }
238
+ };
239
+ const closeLifecycleRegistrationQueue = (registration) => {
240
+ const queue = registration.queue;
241
+ if (!queue)
242
+ return;
243
+ queue.close();
244
+ void queue
245
+ .drain()
246
+ .then(() => lifecycleDeliveryQueues.delete(queue));
247
+ };
248
+ const cleanupLifecycle = (ownerToken) => {
249
+ for (const [key, stored] of lifecycleDefinitions) {
250
+ if (stored.ownerToken === ownerToken)
251
+ lifecycleDefinitions.delete(key);
252
+ }
253
+ for (const [key, registrations] of lifecycleRegistrations) {
254
+ for (const [id, registration] of registrations) {
255
+ if (registration.ownerToken === ownerToken) {
256
+ closeLifecycleRegistrationQueue(registration);
257
+ registrations.delete(id);
258
+ }
259
+ }
260
+ if (registrations.size === 0)
261
+ lifecycleRegistrations.delete(key);
262
+ }
263
+ };
264
+ const cleanupStateWatchers = (ownerToken) => {
265
+ for (const [owner, watchers] of stateWatchers) {
266
+ for (const [id, watcher] of watchers)
267
+ if (watcher.ownerToken === ownerToken)
268
+ watchers.delete(id);
269
+ if (watchers.size === 0)
270
+ stateWatchers.delete(owner);
271
+ }
272
+ };
273
+ const cleanupDiagnostics = (owner) => {
274
+ for (const span of spans.values()) {
275
+ if (span.pluginId === owner && span.status === "running") {
276
+ span.status = "cancelled";
277
+ span.endedAt = clock();
278
+ }
279
+ }
280
+ };
281
+ const assertStateKey = (key) => {
282
+ if (typeof key !== "string" || !key.trim())
283
+ throw new Error("State key must be a non-empty string");
284
+ };
285
+ const assertStateOptions = (options) => {
286
+ if (options?.expectedRevision !== undefined &&
287
+ (!Number.isSafeInteger(options.expectedRevision) || options.expectedRevision < 0)) {
288
+ throw new Error("State expectedRevision must be a non-negative safe integer");
289
+ }
290
+ };
291
+ const stateSnapshot = (key, state) => detachedSnapshot({ key, revision: state.revision, value: state.value });
292
+ const dispatchStateChange = (watchers, owner, change) => {
293
+ if (!watchers)
294
+ return;
295
+ for (const watcher of watchers.values()) {
296
+ if (watcher.prefix !== undefined && !change.key.startsWith(watcher.prefix))
297
+ continue;
298
+ if (!activeOwnerTokens.has(watcher.ownerToken))
299
+ continue;
300
+ try {
301
+ watcher.handler(detachedSnapshot(change));
302
+ }
303
+ catch (error) {
304
+ recordLog("error", owner, "State watcher failed", { key: change.key }, error);
305
+ }
306
+ }
307
+ };
308
+ const notifyStateWatchers = (owner, change) => dispatchStateChange(stateWatchers.get(owner), owner, change);
309
+ const recordLog = (level, owner, message, fields, cause) => {
310
+ if (typeof message !== "string" || !message.trim())
311
+ throw new Error("Logger message must be non-empty");
312
+ if (fields !== undefined && !isPluginConfigValue(fields))
313
+ throw new Error("Logger fields must be serializable");
314
+ const record = {
315
+ version: 1,
316
+ level,
317
+ message,
318
+ pluginId: owner,
319
+ timestamp: clock(),
320
+ ...(options.session === undefined ? {} : { sessionId: options.session.getSessionId() }),
321
+ ...(fields === undefined ? {} : { fields: detachedSnapshot(fields) }),
322
+ ...(cause === undefined ? {} : { cause: detachedSnapshot(cause) }),
323
+ };
324
+ logs.push(record);
325
+ // 插件日志宿主转发(设计 §7.2):入环后同步转发一次。回调抛错直接吞掉——
326
+ // 与 notifyToolRegistryChange 同守"观察者故障不打断调用方"的边界,但错误
327
+ // 通道不同:不引入无读者的计数,也绝不经 recordLog 再记录(回调契约禁止
328
+ // 内部调用 LoggerAPI,防自递归)。
329
+ if (options.onLogRecord) {
330
+ try {
331
+ options.onLogRecord(record);
332
+ }
333
+ catch {
334
+ // Swallowed by contract: a failing host sink must never break the
335
+ // logger contract nor recurse back through recordLog.
336
+ }
337
+ }
338
+ };
339
+ /**
340
+ * 工具表变更钩子:宿主注入 onToolRegistryChange 后,工具表每次变更(注册、
341
+ * 同名替换、卸载、替换链恢复)同步调用一次。回调失败只记运行时日志,不回传
342
+ * 注册/卸载路径——宿主观察者故障不得打断注册本身(与 onOutputArtifactCommit
343
+ * 的观察者容错通道一致)。缺省不传 = 行为不变。
344
+ */
345
+ const notifyToolRegistryChange = (owner, name) => {
346
+ if (!options.onToolRegistryChange)
347
+ return;
348
+ try {
349
+ options.onToolRegistryChange();
350
+ }
351
+ catch (error) {
352
+ recordLog("error", owner, "Tool registry change observer failed", { tool: name }, error);
353
+ }
354
+ };
355
+ const ownerStateViewFor = (owner) => ({
356
+ conflictScope: owner,
357
+ pluginId: owner,
358
+ watchScope: owner,
359
+ readStored: (key) => stateByOwner.get(owner)?.get(key),
360
+ listEntries: () => Array.from(stateByOwner.get(owner)?.entries() ?? []),
361
+ ensureNamespace: () => {
362
+ const namespace = stateByOwner.get(owner) ?? new Map();
363
+ stateByOwner.set(owner, namespace);
364
+ return namespace;
365
+ },
366
+ ensureRevisions: () => {
367
+ const revisions = stateRevisionsByOwner.get(owner) ?? new Map();
368
+ stateRevisionsByOwner.set(owner, revisions);
369
+ return revisions;
370
+ },
371
+ ensureWatchers: () => {
372
+ const watchers = stateWatchers.get(owner) ?? new Map();
373
+ stateWatchers.set(owner, watchers);
374
+ return watchers;
375
+ },
376
+ removeWatcher: (watchers, id) => {
377
+ watchers.delete(id);
378
+ if (watchers.size === 0)
379
+ stateWatchers.delete(owner);
380
+ },
381
+ notify: (change) => notifyStateWatchers(owner, change),
382
+ });
383
+ const instanceStateViewFor = (owner, instanceId) => ({
384
+ conflictScope: `${owner}/${instanceId}`,
385
+ pluginId: owner,
386
+ watchScope: `${owner}/${instanceId}`,
387
+ readStored: (key) => stateByInstance.get(owner)?.get(instanceId)?.get(key),
388
+ listEntries: () => Array.from(stateByInstance.get(owner)?.get(instanceId)?.entries() ?? []),
389
+ ensureNamespace: () => {
390
+ const ownerNamespaces = stateByInstance.get(owner) ?? new Map();
391
+ stateByInstance.set(owner, ownerNamespaces);
392
+ const namespace = ownerNamespaces.get(instanceId) ?? new Map();
393
+ ownerNamespaces.set(instanceId, namespace);
394
+ return namespace;
395
+ },
396
+ ensureRevisions: () => {
397
+ const ownerRevisions = stateRevisionsByInstance.get(owner) ?? new Map();
398
+ stateRevisionsByInstance.set(owner, ownerRevisions);
399
+ const revisions = ownerRevisions.get(instanceId) ?? new Map();
400
+ ownerRevisions.set(instanceId, revisions);
401
+ return revisions;
402
+ },
403
+ ensureWatchers: () => {
404
+ const ownerWatchers = stateWatchersByInstance.get(owner) ?? new Map();
405
+ stateWatchersByInstance.set(owner, ownerWatchers);
406
+ const watchers = ownerWatchers.get(instanceId) ?? new Map();
407
+ ownerWatchers.set(instanceId, watchers);
408
+ return watchers;
409
+ },
410
+ removeWatcher: (watchers, id) => {
411
+ watchers.delete(id);
412
+ if (watchers.size === 0)
413
+ stateWatchersByInstance.get(owner)?.delete(instanceId);
414
+ },
415
+ notify: (change) => dispatchStateChange(stateWatchersByInstance.get(owner)?.get(instanceId), owner, change),
416
+ });
417
+ /**
418
+ * One StateAPI implementation shared by the owner namespace and every
419
+ * composition instance namespace: the same key validation, CAS, detached
420
+ * snapshots, watcher notification, and registration lifecycle.
421
+ */
422
+ const createStateApiFor = (view, ownerToken, assertUsable, own) => ({
423
+ get: (key) => {
424
+ assertUsable();
425
+ assertStateKey(key);
426
+ const value = view.readStored(key);
427
+ return value ? stateSnapshot(key, value) : undefined;
428
+ },
429
+ set: (key, value, options) => {
430
+ assertUsable();
431
+ assertStateKey(key);
432
+ assertStateOptions(options);
433
+ if (!isPluginConfigValue(value))
434
+ throw new Error("State value must be serializable");
435
+ const namespace = view.ensureNamespace();
436
+ const revisions = view.ensureRevisions();
437
+ const currentRevision = revisions.get(key) ?? 0;
438
+ if (options?.expectedRevision !== undefined && options.expectedRevision !== currentRevision)
439
+ throw new Error(`State revision conflict: ${view.conflictScope}/${key}`);
440
+ const revision = currentRevision + 1;
441
+ revisions.set(key, revision);
442
+ namespace.set(key, { revision, value: detachedSnapshot(value) });
443
+ view.notify({
444
+ pluginId: view.pluginId,
445
+ key,
446
+ revision,
447
+ value: detachedSnapshot(value),
448
+ ...(options?.operationId === undefined ? {} : { operationId: options.operationId }),
449
+ ...(options?.correlationId === undefined ? {} : { correlationId: options.correlationId }),
450
+ });
451
+ return revision;
452
+ },
453
+ delete: (key, options) => {
454
+ assertUsable();
455
+ assertStateKey(key);
456
+ assertStateOptions(options);
457
+ const namespace = view.ensureNamespace();
458
+ const revisions = view.ensureRevisions();
459
+ const currentRevision = revisions.get(key) ?? 0;
460
+ if (options?.expectedRevision !== undefined && options.expectedRevision !== currentRevision)
461
+ throw new Error(`State revision conflict: ${view.conflictScope}/${key}`);
462
+ const revision = currentRevision + 1;
463
+ revisions.set(key, revision);
464
+ namespace.delete(key);
465
+ view.notify({
466
+ pluginId: view.pluginId,
467
+ key,
468
+ revision,
469
+ ...(options?.operationId === undefined ? {} : { operationId: options.operationId }),
470
+ ...(options?.correlationId === undefined ? {} : { correlationId: options.correlationId }),
471
+ });
472
+ return revision;
473
+ },
474
+ list: (prefix) => {
475
+ assertUsable();
476
+ if (prefix !== undefined && typeof prefix !== "string")
477
+ throw new Error("State prefix must be a string");
478
+ return view
479
+ .listEntries()
480
+ .filter(([key]) => prefix === undefined || key.startsWith(prefix))
481
+ .sort(([a], [b]) => a.localeCompare(b))
482
+ .map(([key, value]) => stateSnapshot(key, value));
483
+ },
484
+ watch: (prefix, handler) => {
485
+ assertUsable();
486
+ if (prefix !== undefined && typeof prefix !== "string")
487
+ throw new Error("State prefix must be a string");
488
+ if (typeof handler !== "function")
489
+ throw new Error("State watcher requires a handler");
490
+ const watchers = view.ensureWatchers();
491
+ const sequence = ++stateWatcherSequence;
492
+ const id = createRuntimeId("state-watcher", sequence, `state-watcher:${view.watchScope}:${sequence}`);
493
+ watchers.set(id, { owner: view.pluginId, ownerToken, prefix, handler });
494
+ return own(createDisposableRegistration("state-watcher", () => {
495
+ view.removeWatcher(watchers, id);
496
+ }, id));
497
+ },
498
+ });
499
+ /**
500
+ * Drop one instance namespace (data, revisions, watchers); instance ids are
501
+ * unique per composition runtime. Clearing the watch table is defense in
502
+ * depth: registrations are tracked to the operation lifecycle and normally
503
+ * dispose themselves before the instance does, so the table is usually
504
+ * empty here — keep the cleanup in case that tracking ever changes.
505
+ */
506
+ const clearInstanceState = (owner, instanceId) => {
507
+ const namespaces = stateByInstance.get(owner);
508
+ namespaces?.delete(instanceId);
509
+ if (namespaces?.size === 0)
510
+ stateByInstance.delete(owner);
511
+ const revisions = stateRevisionsByInstance.get(owner);
512
+ revisions?.delete(instanceId);
513
+ if (revisions?.size === 0)
514
+ stateRevisionsByInstance.delete(owner);
515
+ const watchers = stateWatchersByInstance.get(owner);
516
+ watchers?.delete(instanceId);
517
+ if (watchers?.size === 0)
518
+ stateWatchersByInstance.delete(owner);
519
+ };
520
+ // Instance ids are unique per composition runtime, so one runtime-level
521
+ // id-to-owner index lets every registered clearer resolve the namespace that
522
+ // must be dropped; clearers from unrelated runtimes find no entry and no-op.
523
+ const instanceStateOwners = new Map();
524
+ const clearRegisteredInstanceState = (instanceId) => {
525
+ const owner = instanceStateOwners.get(instanceId);
526
+ if (owner === undefined)
527
+ return;
528
+ instanceStateOwners.delete(instanceId);
529
+ clearInstanceState(owner, instanceId);
530
+ };
531
+ if (options.composition) {
532
+ options.composition.addInstanceStateClearer?.(clearRegisteredInstanceState);
533
+ }
534
+ const validateOutputInput = (input) => {
535
+ if (!input || typeof input !== "object")
536
+ throw new OutputArtifactError("invalid_ref", "Artifact input is required");
537
+ for (const [name, value] of [
538
+ ["sessionId", input.sessionId],
539
+ ["operationId", input.operationId],
540
+ ["kind", input.kind],
541
+ ["mediaType", input.mediaType],
542
+ ]) {
543
+ if (typeof value !== "string" || !value.trim()) {
544
+ throw new OutputArtifactError("invalid_ref", `Artifact ${name} must be a non-empty string`);
545
+ }
546
+ }
547
+ if (typeof input.truncated !== "boolean") {
548
+ throw new OutputArtifactError("invalid_ref", "Artifact truncated must be a boolean");
549
+ }
550
+ if (!(input.data instanceof Uint8Array) &&
551
+ (!input.data || typeof input.data[Symbol.asyncIterator] !== "function")) {
552
+ throw new OutputArtifactError("invalid_ref", "Artifact data must be Uint8Array or AsyncIterable<Uint8Array>");
553
+ }
554
+ };
555
+ const validateOutputRef = (ref) => {
556
+ if (!ref || typeof ref !== "object" || typeof ref.artifactId !== "string" || !ref.artifactId) {
557
+ throw new OutputArtifactError("invalid_ref", "Artifact reference requires a non-empty artifactId");
558
+ }
559
+ };
560
+ /**
561
+ * 工具表同名替换链:name → 被替换的历史注册(栈,栈顶是最近被替换者)。
562
+ * 跨 owner 的重注册把现表项压栈,替换方注册 dispose 时弹出栈顶恢复(多层替换
563
+ * 成链,逐层恢复);owner 已失效的记录直接跳过,不把已撤销的注册放回工具表。
564
+ */
565
+ const toolReplacementChains = new Map();
566
+ const restoreReplacedTool = (registry, name) => {
567
+ const chain = toolReplacementChains.get(name);
568
+ while (chain !== undefined && chain.length > 0) {
569
+ const restored = chain.pop();
570
+ if (restored === undefined)
571
+ break;
572
+ if (chain.length === 0)
573
+ toolReplacementChains.delete(name);
574
+ if (activeOwnerTokens.has(restored.ownerToken)) {
575
+ registry.set(name, restored);
576
+ return true;
577
+ }
578
+ }
579
+ return false;
580
+ };
581
+ const register = (kind, name, value, owner, ownerToken, registry, options) => {
582
+ const replaceable = options?.replaceable === true;
583
+ const tracksToolRegistry = registry === tools;
584
+ const entry = { owner, ownerToken, value };
585
+ if (registry.has(name)) {
586
+ if (!replaceable)
587
+ throw new Error(`${kind} is already registered: ${name}`);
588
+ const replaced = registry.get(name);
589
+ // 同 owner 重注册 = 更新自身注册,不进替换链;恢复语义只跨 owner 生效。
590
+ if (replaced.ownerToken !== ownerToken) {
591
+ const chain = toolReplacementChains.get(name) ?? [];
592
+ chain.push(replaced);
593
+ toolReplacementChains.set(name, chain);
594
+ }
595
+ }
596
+ registry.set(name, entry);
597
+ if (tracksToolRegistry)
598
+ notifyToolRegistryChange(owner, name);
599
+ const id = `registration:${owner}:${kind}:${name}`;
600
+ return createDisposableRegistration(kind, () => {
601
+ const current = registry.get(name);
602
+ // 已被后续注册接手:恢复责任随表项转移,本注册不再动表。
603
+ if (current !== undefined && current !== entry)
604
+ return;
605
+ let changed = current !== undefined;
606
+ registry.delete(name);
607
+ if (replaceable &&
608
+ restoreReplacedTool(registry, name)) {
609
+ changed = true;
610
+ }
611
+ if (changed && tracksToolRegistry)
612
+ notifyToolRegistryChange(owner, name);
613
+ }, id);
614
+ };
615
+ const listPluginCapabilities = (options) => Array.from(pluginCapabilities.values())
616
+ .filter((entry) => options?.kind === undefined || entry.declaration.kind === options.kind)
617
+ .sort((left, right) => {
618
+ const leftKey = capabilityKey(left.declaration.id, left.declaration.version);
619
+ const rightKey = capabilityKey(right.declaration.id, right.declaration.version);
620
+ return leftKey < rightKey ? -1 : leftKey > rightKey ? 1 : 0;
621
+ })
622
+ .map((entry) => Object.freeze({ declaration: detachedSnapshot(entry.declaration), owner: entry.owner }));
623
+ const assertRequiredPluginCapabilities = (manifest) => {
624
+ for (const requirement of manifest.requires ?? []) {
625
+ if (pluginCapabilities.has(capabilityKey(requirement.id, requirement.version)))
626
+ continue;
627
+ if (requirement.optional)
628
+ continue;
629
+ throw new Error(`Plugin capability is required but unavailable: ${requirement.id}@${requirement.version} (${manifest.id})`);
630
+ }
631
+ };
632
+ const listContributionEntries = (point) => Array.from(point.entries.values())
633
+ .filter((entry) => activeOwnerTokens.has(entry.ownerToken))
634
+ .sort((left, right) => stableTextCompare(left.id, right.id) || stableTextCompare(left.owner, right.owner))
635
+ .map(({ ownerToken: _, ...entry }) => detachedSnapshot(entry));
636
+ const notifyContributionSubscribers = async (point, event) => {
637
+ const results = await Promise.allSettled(Array.from(point.subscribers.values(), (subscriber) => {
638
+ if (!activeOwnerTokens.has(subscriber.ownerToken))
639
+ return Promise.resolve();
640
+ return Promise.resolve().then(() => subscriber.handler(detachedSnapshot(event)));
641
+ }));
642
+ const failures = results
643
+ .filter((result) => result.status === "rejected")
644
+ .map((result) => result.reason);
645
+ if (failures.length === 1)
646
+ throw failures[0];
647
+ if (failures.length > 1)
648
+ throw new AggregateError(failures, `Contribution event delivery failed: ${event.pointId}`);
649
+ };
650
+ const contributionPointFor = (point, owner, ownerToken, assertUsable, own) => {
651
+ const assertPointActive = () => {
652
+ assertUsable();
653
+ if (!activeOwnerTokens.has(point.ownerToken))
654
+ throw createRevokedCapabilityError(point.owner);
655
+ };
656
+ const pointId = point.definition.id;
657
+ const version = point.definition.version;
658
+ const lifecycle = point.definition.lifecycle ?? "observe";
659
+ return Object.freeze({
660
+ id: pointId,
661
+ version,
662
+ schema: point.definition.schema,
663
+ lifecycle,
664
+ async add(input) {
665
+ assertPointActive();
666
+ if (!input || typeof input.id !== "string" || !input.id.trim()) {
667
+ throw new Error(`Contribution requires a non-empty id: ${pointId}`);
668
+ }
669
+ if (point.entries.has(input.id)) {
670
+ throw new Error(`Contribution is already registered: ${pointId}@${version}:${input.id}`);
671
+ }
672
+ const value = detachedSnapshot(point.definition.validate(detachedSnapshot(input.value)));
673
+ const entry = Object.freeze({ id: input.id, pointId, version, owner, ownerToken, lifecycle, value });
674
+ point.entries.set(input.id, entry);
675
+ const registration = own(createDisposableRegistration("contribution", () => {
676
+ if (point.entries.get(input.id) !== entry)
677
+ return;
678
+ point.entries.delete(input.id);
679
+ if (point.subscribers.size === 0)
680
+ return;
681
+ return notifyContributionSubscribers(point, {
682
+ pointId,
683
+ version,
684
+ action: "removed",
685
+ contributionId: input.id,
686
+ owner,
687
+ });
688
+ }, `registration:${owner}:contribution:${pointId}@${version}:${input.id}`));
689
+ await notifyContributionSubscribers(point, {
690
+ pointId,
691
+ version,
692
+ action: "added",
693
+ contributionId: input.id,
694
+ owner,
695
+ entry: detachedSnapshot({
696
+ id: entry.id,
697
+ pointId: entry.pointId,
698
+ version: entry.version,
699
+ owner: entry.owner,
700
+ lifecycle: entry.lifecycle,
701
+ value: entry.value,
702
+ }),
703
+ });
704
+ return Object.freeze({ id: input.id, pointId, version, owner, dispose: () => registration.dispose() });
705
+ },
706
+ async remove(id) {
707
+ assertPointActive();
708
+ const entry = point.entries.get(id);
709
+ if (!entry)
710
+ throw new Error(`Contribution is not registered: ${pointId}@${version}:${id}`);
711
+ if (entry.ownerToken !== ownerToken)
712
+ throw new Error(`Contribution can only be removed by its owner: ${pointId}@${version}:${id}`);
713
+ point.entries.delete(id);
714
+ await notifyContributionSubscribers(point, {
715
+ pointId,
716
+ version,
717
+ action: "removed",
718
+ contributionId: id,
719
+ owner,
720
+ });
721
+ },
722
+ list: () => {
723
+ assertPointActive();
724
+ return listContributionEntries(point);
725
+ },
726
+ subscribe: (handler) => {
727
+ assertPointActive();
728
+ if (typeof handler !== "function")
729
+ throw new Error(`Contribution subscriber must be callable: ${pointId}`);
730
+ const sequence = ++contributionSubscriptionSequence;
731
+ const id = createRuntimeId("contribution-subscription", sequence, `contribution-subscription:${owner}:${pointId}@${version}:${sequence}`);
732
+ point.subscribers.set(id, { ownerToken, handler });
733
+ return own(createDisposableRegistration("contribution-subscription", () => {
734
+ point.subscribers.delete(id);
735
+ }, id));
736
+ },
737
+ });
738
+ };
739
+ const lifecycleReference = (event, version) => {
740
+ if (typeof event === "string") {
741
+ if (typeof version !== "number" || !Number.isSafeInteger(version) || version < 1) {
742
+ throw new Error("Lifecycle event version must be provided as a positive safe integer");
743
+ }
744
+ return { id: event, version };
745
+ }
746
+ if (!event || typeof event !== "object" || typeof event.id !== "string" || !event.id.trim()) {
747
+ throw new Error("Lifecycle event reference requires a non-empty id");
748
+ }
749
+ if (!Number.isSafeInteger(event.version) || event.version < 1) {
750
+ throw new Error("Lifecycle event version must be a positive safe integer");
751
+ }
752
+ return { id: event.id, version: event.version };
753
+ };
754
+ const lifecycleDefinitionFor = (event, version) => {
755
+ const reference = lifecycleReference(event, version);
756
+ const stored = lifecycleDefinitions.get(lifecycleEventKey(reference.id, reference.version));
757
+ if (!stored || !activeOwnerTokens.has(stored.ownerToken)) {
758
+ throw new Error(`Lifecycle event is not defined: ${reference.id}@${reference.version}`);
759
+ }
760
+ return stored;
761
+ };
762
+ const lifecycleRegistration = (kind, event, handler, version, owner, ownerToken, assertUsable, own, deliveryOptions) => {
763
+ assertUsable();
764
+ if (!lifecycleRegistrationKinds.has(kind) || typeof handler !== "function") {
765
+ throw new Error(`Lifecycle ${kind} registration requires a callable handler`);
766
+ }
767
+ const stored = lifecycleDefinitionFor(event, version);
768
+ if (stored.definition.allowedRegistrationKinds?.includes(kind) === false) {
769
+ throw new Error(`Lifecycle ${kind} registration is not allowed: ${stored.definition.id}`);
770
+ }
771
+ if (kind === "transform" &&
772
+ !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("candidate")) {
773
+ throw new Error(`Lifecycle transform requires a candidate event: ${stored.definition.id}`);
774
+ }
775
+ if (kind === "execute" && !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("committed")) {
776
+ throw new Error(`Lifecycle execute requires a committed event: ${stored.definition.id}`);
777
+ }
778
+ if (kind === "after-commit" &&
779
+ !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("committed")) {
780
+ throw new Error(`Lifecycle after-commit requires a committed event: ${stored.definition.id}`);
781
+ }
782
+ if (deliveryOptions !== undefined && kind !== "observe" && kind !== "after-commit") {
783
+ throw new Error(`Lifecycle delivery options are only supported for observation registrations: ${stored.definition.id}`);
784
+ }
785
+ const key = lifecycleEventKey(stored.definition.id, stored.definition.version);
786
+ const sequence = ++lifecycleRegistrationSequence;
787
+ const id = createRuntimeId("lifecycle-registration", sequence, `lifecycle:${owner}:${kind}:${key}:${sequence}`);
788
+ const registration = {
789
+ id,
790
+ owner,
791
+ ownerToken,
792
+ kind,
793
+ sequence: lifecycleRegistrationSequence,
794
+ handler,
795
+ delivery: Object.freeze({
796
+ mode: deliveryOptions === undefined ? "inline" : "bounded-queue",
797
+ ...deliveryOptions,
798
+ }),
799
+ };
800
+ if (deliveryOptions !== undefined) {
801
+ const queue = createLifecycleDeliveryQueue({
802
+ maxPendingEvents: deliveryOptions.maxPendingEvents,
803
+ maxPendingBytes: deliveryOptions.maxPendingBytes,
804
+ measureBytes: (delivery) => {
805
+ const serialized = JSON.stringify(delivery.event);
806
+ if (serialized === undefined)
807
+ throw new Error("Lifecycle event is not serializable");
808
+ return new TextEncoder().encode(serialized).byteLength || 1;
809
+ },
810
+ deliver: (delivery) => {
811
+ const registered = {
812
+ owner: registration.owner,
813
+ ownerToken: registration.ownerToken,
814
+ value: registration.handler,
815
+ };
816
+ return invokeRegisteredCapabilityWithSignal(registered, delivery.signal, (value) => value(detachedSnapshot(delivery.event), delivery.signal));
817
+ },
818
+ overflowCode: stored.definition.id === "model.stream"
819
+ ? "model_stream_backpressure_overflow"
820
+ : "lifecycle_delivery_backpressure_overflow",
821
+ });
822
+ registration.queue = queue;
823
+ lifecycleDeliveryQueues.add(queue);
824
+ }
825
+ const registrations = lifecycleRegistrations.get(key) ?? new Map();
826
+ registrations.set(id, registration);
827
+ lifecycleRegistrations.set(key, registrations);
828
+ return own(createDisposableRegistration(`lifecycle-${kind}`, () => {
829
+ if (registrations.get(id) !== registration)
830
+ return;
831
+ const queue = registration.queue;
832
+ queue?.close();
833
+ if (queue)
834
+ void queue
835
+ .drain()
836
+ .then(() => lifecycleDeliveryQueues.delete(queue));
837
+ registrations.delete(id);
838
+ if (registrations.size === 0)
839
+ lifecycleRegistrations.delete(key);
840
+ }, id));
841
+ };
842
+ const apiFor = (manifest) => {
843
+ // Snapshot the caller-owned manifest before validation so later mutation
844
+ // cannot alter capability declarations or required-capability checks.
845
+ const manifestSnapshot = detachedSnapshot(manifest);
846
+ assertManifest(manifestSnapshot, host);
847
+ assertRequiredPluginCapabilities(manifestSnapshot);
848
+ const config = createPluginConfig(manifestSnapshot.config);
849
+ const apiManifest = detachedSnapshot({ ...manifestSnapshot, config });
850
+ const owner = manifestSnapshot.id;
851
+ const ownerToken = Symbol(owner);
852
+ const state = {
853
+ active: true,
854
+ owner,
855
+ ownerToken,
856
+ compositionInstances: new Set(),
857
+ compositionDefinitions: new Set(),
858
+ };
859
+ activeOwnerTokens.add(ownerToken);
860
+ const assertUsable = () => {
861
+ if (!state.active)
862
+ throw new Error(`Capability API is revoked: ${owner}`);
863
+ };
864
+ const compositionLifecycleDispatcher = (event) => {
865
+ // The dispatcher is captured by this API state and passed to each
866
+ // instance it creates. Never resolve ownership by searching the shared
867
+ // composition runtime: another CapabilityRuntime may use the same one.
868
+ if (!state.active || !activeOwnerTokens.has(ownerToken) || event.owner !== owner)
869
+ return;
870
+ if (event.event === "start") {
871
+ statuses.set(event.operationId, "running");
872
+ reportOperationStart(event.operationId, event.operationKind, [ownerToken]);
873
+ }
874
+ else if (event.event === "step") {
875
+ if (event.progress === undefined || event.step === undefined)
876
+ return;
877
+ reportOperationStep(event.operationId, event.operationKind, [ownerToken], event.progress, event.step);
878
+ }
879
+ else if (event.event === "cancel") {
880
+ statuses.set(event.operationId, "cancelled");
881
+ reportOperationCancel(event.operationId, event.operationKind, [ownerToken]);
882
+ }
883
+ else {
884
+ const status = event.status ?? "failed";
885
+ statuses.set(event.operationId, status);
886
+ reportOperationEnd(event.operationId, event.operationKind, status, [ownerToken]);
887
+ }
888
+ };
889
+ const own = (registration) => {
890
+ assertUsable();
891
+ const registrations = pluginRegistrations.get(owner) ?? new Set();
892
+ registrations.add(registration);
893
+ pluginRegistrations.set(owner, registrations);
894
+ return registration;
895
+ };
896
+ /**
897
+ * Counterpart of {@link own} for registrations released by their own
898
+ * lifecycle (a disposed agent task): a registration set that still holds
899
+ * them would pin the released resource for the rest of the plugin's life.
900
+ */
901
+ const unown = (registration) => {
902
+ const registrations = pluginRegistrations.get(owner);
903
+ if (!registrations)
904
+ return;
905
+ registrations.delete(registration);
906
+ if (registrations.size === 0)
907
+ pluginRegistrations.delete(owner);
908
+ };
909
+ const logger = {
910
+ debug: (message, fields) => {
911
+ assertUsable();
912
+ recordLog("debug", owner, message, fields);
913
+ },
914
+ info: (message, fields) => {
915
+ assertUsable();
916
+ recordLog("info", owner, message, fields);
917
+ },
918
+ warn: (message, fields) => {
919
+ assertUsable();
920
+ recordLog("warn", owner, message, fields);
921
+ },
922
+ error: (message, fields, cause) => {
923
+ assertUsable();
924
+ recordLog("error", owner, message, fields, cause);
925
+ },
926
+ };
927
+ const diagnostics = {
928
+ start: (name, attributes, parentSpanId) => {
929
+ assertUsable();
930
+ if (typeof name !== "string" || !name.trim())
931
+ throw new Error("Diagnostic span name must be non-empty");
932
+ if (attributes !== undefined && !isPluginConfigValue(attributes))
933
+ throw new Error("Diagnostic attributes must be serializable");
934
+ if (parentSpanId !== undefined && (typeof parentSpanId !== "string" || !parentSpanId.trim()))
935
+ throw new Error("Diagnostic parentSpanId must be non-empty");
936
+ const spanSequenceValue = ++spanSequence;
937
+ const spanId = createRuntimeId("span", spanSequenceValue, `span:${owner}:${spanSequenceValue}`);
938
+ const traceId = parentSpanId
939
+ ? (spans.get(parentSpanId)?.traceId ??
940
+ (() => {
941
+ const sequence = ++traceSequence;
942
+ return createRuntimeId("trace", sequence, `trace:${sequence}`);
943
+ })())
944
+ : (() => {
945
+ const sequence = ++traceSequence;
946
+ return createRuntimeId("trace", sequence, `trace:${sequence}`);
947
+ })();
948
+ const snapshot = {
949
+ version: 1,
950
+ traceId,
951
+ spanId,
952
+ ...(parentSpanId === undefined ? {} : { parentSpanId }),
953
+ name,
954
+ pluginId: owner,
955
+ ...(options.session === undefined ? {} : { sessionId: options.session.getSessionId() }),
956
+ startedAt: clock(),
957
+ status: "running",
958
+ attributes: detachedSnapshot(attributes ?? {}),
959
+ };
960
+ spans.set(spanId, snapshot);
961
+ let ended = false;
962
+ const span = {
963
+ traceId,
964
+ spanId,
965
+ annotate(fields) {
966
+ assertUsable();
967
+ if (ended)
968
+ throw new Error(`Diagnostic span is already ended: ${spanId}`);
969
+ if (!fields || typeof fields !== "object" || Array.isArray(fields) || !isPluginConfigValue(fields))
970
+ throw new Error("Diagnostic annotations must be a plain object");
971
+ const current = spans.get(spanId);
972
+ if (!current)
973
+ throw new Error(`Diagnostic span is not available: ${spanId}`);
974
+ current.attributes = detachedSnapshot({
975
+ ...current.attributes,
976
+ ...fields,
977
+ });
978
+ },
979
+ end(outcome = { status: "ok" }) {
980
+ assertUsable();
981
+ if (ended)
982
+ throw new Error(`Diagnostic span is already ended: ${spanId}`);
983
+ if (!["ok", "error", "cancelled"].includes(outcome.status))
984
+ throw new Error("Diagnostic span status is invalid");
985
+ if (outcome.result !== undefined && !isPluginConfigValue(outcome.result))
986
+ throw new Error("Diagnostic span result must be serializable");
987
+ const current = spans.get(spanId);
988
+ if (!current)
989
+ throw new Error(`Diagnostic span is not available: ${spanId}`);
990
+ ended = true;
991
+ current.status = outcome.status;
992
+ current.endedAt = clock();
993
+ if (outcome.result !== undefined)
994
+ current.result = detachedSnapshot(outcome.result);
995
+ if (outcome.cause !== undefined)
996
+ current.cause = detachedSnapshot(outcome.cause);
997
+ },
998
+ };
999
+ own(createDisposableRegistration("diagnostic-span", () => {
1000
+ if (!ended) {
1001
+ const current = spans.get(spanId);
1002
+ if (current?.status === "running") {
1003
+ current.status = "cancelled";
1004
+ current.endedAt = clock();
1005
+ }
1006
+ }
1007
+ }, `registration:${owner}:diagnostic-span:${spanId}`));
1008
+ return span;
1009
+ },
1010
+ };
1011
+ const stateApi = createStateApiFor(ownerStateViewFor(owner), ownerToken, assertUsable, own);
1012
+ /** Instance-private state namespace view for one composition instance; cleared on its disposal. */
1013
+ const createInstanceStateApi = (instanceOwner, instanceId) => createStateApiFor(instanceStateViewFor(instanceOwner, instanceId), ownerToken, assertUsable, own);
1014
+ const capabilities = {
1015
+ provide(declaration, handler) {
1016
+ assertUsable();
1017
+ assertPluginCapabilityDeclarations([declaration], `Plugin capability declaration: ${owner}`);
1018
+ if (typeof handler !== "function")
1019
+ throw new Error("Plugin capability provider requires a callable handler");
1020
+ const declared = manifestSnapshot.provides?.some((item) => item.id === declaration.id && item.version === declaration.version && item.kind === declaration.kind);
1021
+ if (!declared) {
1022
+ throw new Error(`Plugin capability must be declared by its manifest: ${declaration.id}@${declaration.version} (${owner})`);
1023
+ }
1024
+ const key = capabilityKey(declaration.id, declaration.version);
1025
+ if (pluginCapabilities.has(key)) {
1026
+ throw new Error(`Plugin capability is already provided: ${declaration.id}@${declaration.version}`);
1027
+ }
1028
+ const registered = {
1029
+ declaration: detachedSnapshot(declaration),
1030
+ owner,
1031
+ ownerToken,
1032
+ handler: handler,
1033
+ };
1034
+ pluginCapabilities.set(key, registered);
1035
+ return own(createDisposableRegistration("plugin-capability", () => {
1036
+ if (pluginCapabilities.get(key)?.ownerToken === ownerToken)
1037
+ pluginCapabilities.delete(key);
1038
+ }, `registration:${owner}:plugin-capability:${declaration.id}@${declaration.version}`));
1039
+ },
1040
+ require(id, requireOptions) {
1041
+ assertUsable();
1042
+ assertPluginCapabilityId(id, "Plugin capability id");
1043
+ const version = requireOptions?.version;
1044
+ assertPluginCapabilityVersion(version, "Plugin capability version");
1045
+ const registered = pluginCapabilities.get(capabilityKey(id, version));
1046
+ if (!registered)
1047
+ throw new Error(`Plugin capability is not available: ${id}@${version}`);
1048
+ const declaration = detachedSnapshot(registered.declaration);
1049
+ return Object.freeze({
1050
+ declaration,
1051
+ owner: registered.owner,
1052
+ call: (input, callOptions) => {
1053
+ assertUsable();
1054
+ if (!activeOwnerTokens.has(registered.ownerToken)) {
1055
+ throw createRevokedCapabilityError(registered.owner);
1056
+ }
1057
+ const sequence = ++operationSequence;
1058
+ const operationId = createRuntimeId("capability-operation", sequence, `capability:${owner}:${id}@${version}:${sequence}`);
1059
+ const handle = trackOperation([ownerToken, registered.ownerToken], new RuntimeOperation(operationId, (value, context) => invokePluginCapability(registered, value, context.signal), detachedSnapshot(input), (status) => {
1060
+ statuses.set(operationId, status);
1061
+ if (status === "running") {
1062
+ reportCapabilityCall("start", operationId, owner, registered, [
1063
+ ownerToken,
1064
+ registered.ownerToken,
1065
+ ]);
1066
+ }
1067
+ else if (status === "cancelled") {
1068
+ reportCapabilityCall("cancel", operationId, owner, registered, [
1069
+ ownerToken,
1070
+ registered.ownerToken,
1071
+ ]);
1072
+ }
1073
+ }, (status) => reportCapabilityCall("end", operationId, owner, registered, [ownerToken, registered.ownerToken], status), () => false));
1074
+ statuses.set(operationId, handle.status());
1075
+ const signal = callOptions?.signal;
1076
+ if (signal) {
1077
+ if (signal.aborted)
1078
+ void handle.cancel(signal.reason);
1079
+ else
1080
+ signal.addEventListener("abort", () => void handle.cancel(signal.reason), { once: true });
1081
+ }
1082
+ return handle;
1083
+ },
1084
+ });
1085
+ },
1086
+ list: listPluginCapabilities,
1087
+ };
1088
+ const contributions = {
1089
+ define: (definition) => {
1090
+ assertUsable();
1091
+ const validated = validateContributionPointDefinition(definition);
1092
+ const key = contributionPointKey(validated.id, validated.version);
1093
+ if (contributionPoints.has(key))
1094
+ throw new Error(`Contribution point is already defined: ${key}`);
1095
+ const point = {
1096
+ owner,
1097
+ ownerToken,
1098
+ definition: validated,
1099
+ entries: new Map(),
1100
+ subscribers: new Map(),
1101
+ };
1102
+ contributionPoints.set(key, point);
1103
+ own(createDisposableRegistration("contribution-point", () => {
1104
+ if (contributionPoints.get(key) === point)
1105
+ contributionPoints.delete(key);
1106
+ }, `registration:${owner}:contribution-point:${key}`));
1107
+ return contributionPointFor(point, owner, ownerToken, assertUsable, own);
1108
+ },
1109
+ get: (id, version) => {
1110
+ assertUsable();
1111
+ const point = contributionPoints.get(contributionPointKey(id, version));
1112
+ if (!point)
1113
+ throw new Error(`Contribution point is not defined: ${id}@${version}`);
1114
+ return contributionPointFor(point, owner, ownerToken, assertUsable, own);
1115
+ },
1116
+ list: () => Array.from(contributionPoints.values())
1117
+ .filter((point) => activeOwnerTokens.has(point.ownerToken))
1118
+ .sort((left, right) => stableTextCompare(contributionPointKey(left.definition.id, left.definition.version), contributionPointKey(right.definition.id, right.definition.version)))
1119
+ .map((point) => Object.freeze({
1120
+ id: point.definition.id,
1121
+ version: point.definition.version,
1122
+ schema: point.definition.schema,
1123
+ lifecycle: point.definition.lifecycle ?? "observe",
1124
+ owner: point.owner,
1125
+ })),
1126
+ };
1127
+ const agentTasks = new Set();
1128
+ const createAgentTask = async (request) => {
1129
+ assertUsable();
1130
+ assertAgentTaskRequest(request);
1131
+ const adapter = options.agents;
1132
+ const session = options.session;
1133
+ if (!adapter || !session)
1134
+ throw new Error("Agent task capability is not available from this host");
1135
+ const hostTask = await adapter.create(request);
1136
+ try {
1137
+ assertUsable();
1138
+ }
1139
+ catch (error) {
1140
+ await hostTask.dispose();
1141
+ throw error;
1142
+ }
1143
+ let task;
1144
+ let registration;
1145
+ let detachParentCascade = () => { };
1146
+ try {
1147
+ task = new RuntimeAgentTask(createRuntimeId("agent-task", ++agentTaskSequence, `agent-task:${owner}:${agentTaskSequence}:${runtimeInstanceSegment}`), session.getSessionId(), request, hostTask, assertUsable, host.features.includes("session-revision-v1"), options.agentResults,
1148
+ // Task disposal releases every runtime-side reference — the
1149
+ // live-task set, the parent fence listener and the owner
1150
+ // registration — so a long-lived parent session does not
1151
+ // accumulate settled tasks (and their child session graphs)
1152
+ // until runtime disposal.
1153
+ () => {
1154
+ agentTasks.delete(task);
1155
+ detachParentCascade();
1156
+ if (registration)
1157
+ unown(registration);
1158
+ });
1159
+ }
1160
+ catch (error) {
1161
+ await hostTask.dispose();
1162
+ throw error;
1163
+ }
1164
+ agentTasks.add(task);
1165
+ detachParentCascade = attachParentCascade(task);
1166
+ registration = own(createDisposableRegistration("agent-task", () => task.dispose(), `registration:${owner}:agent-task:${task.id}`));
1167
+ return task;
1168
+ };
1169
+ // Parent-session cancel fence (D-044 §4.2): bind each task once to the
1170
+ // signal current at creation time. Tasks created after the fence already
1171
+ // fired are cancelled immediately; the host refreshes the fence epoch so
1172
+ // later tasks bind to a fresh signal instead of the spent one.
1173
+ const attachParentCascade = (task) => {
1174
+ const signal = options.parentSignal?.();
1175
+ if (!signal)
1176
+ return () => { };
1177
+ const cancelForParent = () => {
1178
+ void task.cancel("parent session aborted").catch(() => { });
1179
+ };
1180
+ if (signal.aborted) {
1181
+ cancelForParent();
1182
+ return () => { };
1183
+ }
1184
+ signal.addEventListener("abort", cancelForParent, { once: true });
1185
+ // The fence signal lives as long as its epoch, so the listener must be
1186
+ // removable: an unremoved closure would retain the task for the whole
1187
+ // epoch even after the task settled and was disposed.
1188
+ return () => signal.removeEventListener("abort", cancelForParent);
1189
+ };
1190
+ /**
1191
+ * Durable replay read: loads the terminal record persisted at settle from
1192
+ * the host-injected durable store. The guarded option pair guarantees the
1193
+ * agentResults option is present whenever the replay feature is declared,
1194
+ * so a missing store only means the host never opted into replay.
1195
+ */
1196
+ const createAgentResultReader = async (taskId) => {
1197
+ const record = options.agentResults?.store.loadArtifact({
1198
+ artifactId: `agent-task:${taskId}`,
1199
+ });
1200
+ return record ? record.data : undefined;
1201
+ };
1202
+ /**
1203
+ * 父→子引导(D-060 S4,程序面):对运行中的 agent task 投递一条有界引导消息。
1204
+ * 只在**本 runtime 的活跃任务**里定位(越界即"不存在");宿主会话无 steer 面
1205
+ * 时按任务侧结构化错误透传。
1206
+ */
1207
+ const createAgentTaskSteer = async (request) => {
1208
+ assertUsable();
1209
+ const task = Array.from(agentTasks).find((candidate) => candidate.id === request.taskId);
1210
+ if (task === undefined) {
1211
+ throw Object.assign(new Error(`no live agent task ${request.taskId} in this runtime`), {
1212
+ code: "subagent_unknown_task",
1213
+ });
1214
+ }
1215
+ await task.steer(request.text);
1216
+ };
1217
+ const output = {
1218
+ put: async (input, options) => {
1219
+ assertUsable();
1220
+ validateOutputInput(input);
1221
+ const signal = options?.signal;
1222
+ const throwIfAborted = () => {
1223
+ if (signal?.aborted) {
1224
+ throw new OutputArtifactError("cancelled", `Artifact write cancelled: ${String(signal.reason ?? "cancelled")}`);
1225
+ }
1226
+ };
1227
+ throwIfAborted();
1228
+ const chunks = [];
1229
+ let sizeBytes = 0;
1230
+ if (input.data instanceof Uint8Array) {
1231
+ chunks.push(new Uint8Array(input.data));
1232
+ sizeBytes = input.data.byteLength;
1233
+ }
1234
+ else {
1235
+ for await (const chunk of input.data) {
1236
+ throwIfAborted();
1237
+ if (!(chunk instanceof Uint8Array)) {
1238
+ throw new OutputArtifactError("invalid_ref", "Artifact stream yielded a non-Uint8Array chunk");
1239
+ }
1240
+ const copy = new Uint8Array(chunk);
1241
+ chunks.push(copy);
1242
+ sizeBytes += copy.byteLength;
1243
+ }
1244
+ }
1245
+ throwIfAborted();
1246
+ const bytes = new Uint8Array(sizeBytes);
1247
+ let offset = 0;
1248
+ for (const chunk of chunks) {
1249
+ bytes.set(chunk, offset);
1250
+ offset += chunk.byteLength;
1251
+ }
1252
+ // A stream may yield after the plugin has been revoked. Never commit
1253
+ // bytes after the lifecycle boundary has closed.
1254
+ assertUsable();
1255
+ const sequence = ++artifactSequence;
1256
+ const artifactId = createRuntimeId("artifact", sequence, `artifact:${owner}:${sequence}`);
1257
+ const ref = {
1258
+ sessionId: input.sessionId,
1259
+ operationId: input.operationId,
1260
+ artifactId,
1261
+ kind: input.kind,
1262
+ mediaType: input.mediaType,
1263
+ sizeBytes,
1264
+ truncated: input.truncated,
1265
+ createdAt: clock(),
1266
+ };
1267
+ outputArtifacts.set(artifactId, { ref, bytes, ownerToken });
1268
+ // Durable mirroring is a host concern, not a runtime one: the commit
1269
+ // observer receives the same bytes reachable through stat/read. An
1270
+ // observer failure is recorded but never fails the committed artifact,
1271
+ // and cleanup/revoke intentionally do not re-emit (durable records are
1272
+ // meant to outlive the in-memory lifecycle boundary).
1273
+ if (onOutputArtifactCommit) {
1274
+ try {
1275
+ onOutputArtifactCommit({ ref: { ...ref }, bytes });
1276
+ }
1277
+ catch (error) {
1278
+ recordLog("error", owner, "Output artifact commit observer failed", { artifactId }, error);
1279
+ }
1280
+ }
1281
+ return { ...ref };
1282
+ },
1283
+ stat: async (ref) => {
1284
+ assertUsable();
1285
+ validateOutputRef(ref);
1286
+ const artifact = outputArtifacts.get(ref.artifactId);
1287
+ if (!artifact) {
1288
+ throw new OutputArtifactError("not_found", `Output artifact is not available: ${ref.artifactId}`);
1289
+ }
1290
+ if (ref.sessionId !== artifact.ref.sessionId ||
1291
+ ref.operationId !== artifact.ref.operationId ||
1292
+ ref.kind !== artifact.ref.kind ||
1293
+ ref.mediaType !== artifact.ref.mediaType ||
1294
+ ref.sizeBytes !== artifact.ref.sizeBytes ||
1295
+ ref.truncated !== artifact.ref.truncated ||
1296
+ ref.createdAt !== artifact.ref.createdAt) {
1297
+ throw new OutputArtifactError("invalid_ref", `Output artifact reference does not match: ${ref.artifactId}`);
1298
+ }
1299
+ return { ...artifact.ref };
1300
+ },
1301
+ read: async (ref, options) => {
1302
+ assertUsable();
1303
+ const stored = await output.stat(ref);
1304
+ const artifact = outputArtifacts.get(stored.artifactId);
1305
+ if (!artifact)
1306
+ throw new OutputArtifactError("not_found", `Output artifact is not available: ${stored.artifactId}`);
1307
+ const offset = options?.offset ?? 0;
1308
+ const maxBytes = options?.maxBytes ?? artifact.bytes.byteLength;
1309
+ if (!Number.isInteger(offset) || offset < 0) {
1310
+ throw new OutputArtifactError("invalid_ref", "Artifact read offset must be a non-negative integer");
1311
+ }
1312
+ if (!Number.isInteger(maxBytes) || maxBytes <= 0) {
1313
+ throw new OutputArtifactError("invalid_ref", "Artifact read maxBytes must be a positive integer");
1314
+ }
1315
+ const end = Math.min(offset + maxBytes, artifact.bytes.byteLength);
1316
+ const data = artifact.bytes.slice(Math.min(offset, artifact.bytes.byteLength), end);
1317
+ const eof = end >= artifact.bytes.byteLength;
1318
+ return { data, ...(eof ? {} : { nextOffset: end }), eof };
1319
+ },
1320
+ };
1321
+ const compositionHostPrimitives = ({ instance, operationId, signal }) => {
1322
+ const sessionApi = options.session;
1323
+ const session = sessionApi
1324
+ ? Object.freeze({
1325
+ version: 1,
1326
+ getSessionId: () => sessionApi.getSessionId(),
1327
+ ...(sessionApi.getRevision ? { getRevision: () => sessionApi.getRevision() } : {}),
1328
+ getMessages: () => sessionApi.getMessages(),
1329
+ getBranchEntries: () => sessionApi.getBranchEntries(),
1330
+ isIdle: () => sessionApi.isIdle(),
1331
+ prompt: (text) => sessionApi.prompt(text),
1332
+ ...(sessionApi.steer ? { steer: (text) => sessionApi.steer(text) } : {}),
1333
+ abort: () => sessionApi.abort(),
1334
+ waitForIdle: () => sessionApi.waitForIdle(),
1335
+ appendEntry: (customType, data) => sessionApi.appendEntry(customType, data),
1336
+ })
1337
+ : undefined;
1338
+ const context = host.features.includes("context") && sessionApi?.getContextSnapshot && sessionApi.commitContext
1339
+ ? Object.freeze({
1340
+ version: 1,
1341
+ get: () => sessionApi.getContextSnapshot(),
1342
+ commit: async (request) => {
1343
+ if (request.operationId !== operationId) {
1344
+ throw new Error(`Agent context operationId must match active operation: ${operationId}`);
1345
+ }
1346
+ return sessionApi.commitContext({ ...request, signal: request.signal ?? signal });
1347
+ },
1348
+ })
1349
+ : undefined;
1350
+ const state = host.features.includes("plugin-state-v1")
1351
+ ? Object.freeze({
1352
+ ...stateApi,
1353
+ set: (key, value, options) => {
1354
+ if (options?.operationId !== undefined && options.operationId !== operationId) {
1355
+ throw new Error(`Agent state operationId must match active operation: ${operationId}`);
1356
+ }
1357
+ return stateApi.set(key, value, { ...options, operationId });
1358
+ },
1359
+ delete: (key, options) => {
1360
+ if (options?.operationId !== undefined && options.operationId !== operationId) {
1361
+ throw new Error(`Agent state operationId must match active operation: ${operationId}`);
1362
+ }
1363
+ return stateApi.delete(key, { ...options, operationId });
1364
+ },
1365
+ })
1366
+ : undefined;
1367
+ const instanceState = host.features.includes("plugin-state-v1")
1368
+ ? createInstanceStateApi(owner, instance.id)
1369
+ : undefined;
1370
+ const sessionId = options.session?.getSessionId();
1371
+ const scopedOutput = guardedOutput(output, assertUsable);
1372
+ const artifact = host.features.includes("output-artifacts") && sessionId !== undefined
1373
+ ? Object.freeze({
1374
+ put: (input, putOptions) => {
1375
+ if (input.sessionId !== sessionId || input.operationId !== operationId) {
1376
+ throw new OutputArtifactError("invalid_ref", `Agent artifact must use active session and operation: ${operationId}`);
1377
+ }
1378
+ return scopedOutput.put(input, putOptions);
1379
+ },
1380
+ stat: async (ref) => {
1381
+ if (ref.sessionId !== sessionId || ref.operationId !== operationId) {
1382
+ throw new OutputArtifactError("invalid_ref", `Agent artifact must use active session and operation: ${operationId}`);
1383
+ }
1384
+ return scopedOutput.stat(ref);
1385
+ },
1386
+ read: async (ref, readOptions) => {
1387
+ if (ref.sessionId !== sessionId || ref.operationId !== operationId) {
1388
+ throw new OutputArtifactError("invalid_ref", `Agent artifact must use active session and operation: ${operationId}`);
1389
+ }
1390
+ return scopedOutput.read(ref, readOptions);
1391
+ },
1392
+ })
1393
+ : undefined;
1394
+ const modelFacade = options.modelRuntime && sessionApi
1395
+ ? Object.freeze({
1396
+ version: 1,
1397
+ get facts() {
1398
+ const runtime = options.modelRuntime;
1399
+ const resolved = runtime.getModelFacts();
1400
+ if (!resolved)
1401
+ throw new Error("No model is set on this session's agent");
1402
+ return resolved;
1403
+ },
1404
+ invocation: {
1405
+ invoke: async (input, signal) => {
1406
+ const runtime = options.modelRuntime;
1407
+ if (!runtime)
1408
+ throw new Error("Agent model runtime is not available");
1409
+ return runtime.invoke({
1410
+ ...(input.systemPrompt === undefined ? {} : { systemPrompt: input.systemPrompt }),
1411
+ prompt: input.prompt,
1412
+ ...(input.maxTokens === undefined ? {} : { maxTokens: input.maxTokens }),
1413
+ ...(input.thinkingLevel === undefined ? {} : { thinkingLevel: input.thinkingLevel }),
1414
+ }, { signal });
1415
+ },
1416
+ },
1417
+ })
1418
+ : undefined;
1419
+ const toolFacade = host.features.includes("tools")
1420
+ ? Object.freeze({
1421
+ version: 1,
1422
+ listTools: () => {
1423
+ assertUsable();
1424
+ return [...tools.entries()]
1425
+ .filter(([, entry]) => activeOwnerTokens.has(entry.ownerToken))
1426
+ .sort(([left], [right]) => stableTextCompare(left, right))
1427
+ .map(([name, entry]) => ({
1428
+ name,
1429
+ definition: definitionSnapshot(entry.value),
1430
+ source: entry.owner,
1431
+ readonlySafe: toolReadonlySafe(entry.value),
1432
+ }));
1433
+ },
1434
+ invokeTool: (name, input, invokeOptions) => {
1435
+ assertUsable();
1436
+ const registered = tools.get(name);
1437
+ if (!registered || !activeOwnerTokens.has(registered.ownerToken)) {
1438
+ throw new Error(`Agent tool is not registered: ${name}`);
1439
+ }
1440
+ return invokeRegisteredCapability(registered, (value) => invokeCapabilityTool(asHandler(value, "Tool"), input, toolExecutionContext, invokeOptions?.signal));
1441
+ },
1442
+ })
1443
+ : undefined;
1444
+ return Object.freeze({
1445
+ version: 1,
1446
+ ...(session ? { session } : {}),
1447
+ ...(context ? { context } : {}),
1448
+ ...(state ? { state } : {}),
1449
+ ...(instanceState ? { instanceState } : {}),
1450
+ ...(artifact ? { artifact } : {}),
1451
+ ...(modelFacade ? { model: modelFacade } : {}),
1452
+ ...(toolFacade ? { tool: toolFacade } : {}),
1453
+ });
1454
+ };
1455
+ const lifecycle = {
1456
+ define(definition) {
1457
+ assertUsable();
1458
+ const normalized = validateLifecycleEventDefinition(definition);
1459
+ const key = lifecycleEventKey(normalized.id, normalized.version);
1460
+ if (lifecycleDefinitions.has(key))
1461
+ throw new Error(`Lifecycle event is already defined: ${key}`);
1462
+ lifecycleDefinitions.set(key, { owner, ownerToken, definition: normalized });
1463
+ const registration = own(createDisposableRegistration("lifecycle-definition", () => {
1464
+ const current = lifecycleDefinitions.get(key);
1465
+ if (current?.ownerToken !== ownerToken)
1466
+ return;
1467
+ lifecycleDefinitions.delete(key);
1468
+ const registrations = lifecycleRegistrations.get(key);
1469
+ if (registrations) {
1470
+ for (const registration of registrations.values())
1471
+ closeLifecycleRegistrationQueue(registration);
1472
+ lifecycleRegistrations.delete(key);
1473
+ }
1474
+ }, `registration:${owner}:lifecycle-definition:${key}`));
1475
+ void registration;
1476
+ return normalized;
1477
+ },
1478
+ get(id, version) {
1479
+ assertUsable();
1480
+ return lifecycleDefinitionFor({ id, version }).definition;
1481
+ },
1482
+ registerObserve(event, handler, version, options) {
1483
+ return lifecycleRegistration("observe", event, handler, version, owner, ownerToken, assertUsable, own, options);
1484
+ },
1485
+ registerTransform(event, handler, version) {
1486
+ return lifecycleRegistration("transform", event, handler, version, owner, ownerToken, assertUsable, own);
1487
+ },
1488
+ registerExecute(event, handler, version) {
1489
+ return lifecycleRegistration("execute", event, handler, version, owner, ownerToken, assertUsable, own);
1490
+ },
1491
+ registerAfterCommit(event, handler, version, options) {
1492
+ return lifecycleRegistration("after-commit", event, handler, version, owner, ownerToken, assertUsable, own, options);
1493
+ },
1494
+ };
1495
+ const api = {
1496
+ manifest: apiManifest,
1497
+ host: hostWithServices,
1498
+ config,
1499
+ ...(host.features.includes("logger-v1") ? { logger } : {}),
1500
+ ...(host.features.includes("diagnostics-v1") ? { diagnostics } : {}),
1501
+ ...(host.features.includes("plugin-state-v1") ? { state: stateApi } : {}),
1502
+ ...(host.features.includes("runtime-inspector-v1")
1503
+ ? { inspector: { snapshot: () => inspect() } }
1504
+ : {}),
1505
+ capabilities,
1506
+ contributions,
1507
+ lifecycle,
1508
+ ...(hasSession && options.session
1509
+ ? {
1510
+ session: guardedSession(options.session, assertUsable, {
1511
+ allowExport: hasSessionExport,
1512
+ allowRevision: hasSessionRevision,
1513
+ }),
1514
+ }
1515
+ : {}),
1516
+ ...(host.features.includes("output-artifacts") ? { output: guardedOutput(output, assertUsable) } : {}),
1517
+ ...(host.features.includes("credentials") && options.credentials
1518
+ ? { credentials: guardedCredentials(options.credentials, assertUsable) }
1519
+ : {}),
1520
+ // agents 成员随 feature 在场即构建(构造期断言已保证 feature/选项配对),
1521
+ // 各成员再按宿主注入逐项条件化:任务面跟 adapter,durable replay 跟
1522
+ // agentResults 存储,回读面跟 reader/lister。
1523
+ ...(host.features.includes("agents")
1524
+ ? {
1525
+ agents: {
1526
+ // 任务面(create/steer)只在宿主注入 adapter 时存在;reader/lister-only
1527
+ // 宿主(承载退役切片 2:pooled 叶子/只读回读)的 agents 只承载回读,
1528
+ // 委派面由 delegate 的池化装配或宿主 adapter 提供。
1529
+ ...(options.agents === undefined
1530
+ ? {}
1531
+ : {
1532
+ create: createAgentTask,
1533
+ // 父→子引导(D-060 S4,程序面):运行中任务的有界 steer。
1534
+ steer: createAgentTaskSteer,
1535
+ }),
1536
+ // durable replay 读取跟随 agentResults 存储(与 adapter 无关):
1537
+ // serve 装配的重建读取面没有 adapter 也必须可用。
1538
+ ...(options.agentResults === undefined ? {} : { result: createAgentResultReader }),
1539
+ // 会话回读(D-060 S3):宿主注入读取器才暴露;作用域由宿主强制。
1540
+ ...(options.agentSessionReader === undefined
1541
+ ? {}
1542
+ : {
1543
+ session: async (sessionId) => {
1544
+ assertUsable();
1545
+ return options.agentSessionReader?.(sessionId);
1546
+ },
1547
+ }),
1548
+ // 子会话盘点(D-060 模型面):宿主注入列举器才暴露;只回本会话的子会话。
1549
+ ...(options.agentSessionLister === undefined
1550
+ ? {}
1551
+ : {
1552
+ list: async () => {
1553
+ assertUsable();
1554
+ return options.agentSessionLister?.() ?? [];
1555
+ },
1556
+ }),
1557
+ },
1558
+ }
1559
+ : {}),
1560
+ // Session cancel fence (D-044 §4.2) as a public getter: consulted per
1561
+ // call so plugins cascade against the current epoch signal, never a
1562
+ // signal captured at API creation time. Absent when the host injects
1563
+ // no parentSignal (behavior unchanged).
1564
+ ...(options.parentSignal === undefined ? {} : { sessionAbortSignal: () => options.parentSignal?.() }),
1565
+ // Host trace service (D-075 S4 second batch): the adapter rides
1566
+ // `api.trace`, its budget overrides ride `api.traceSinkOptions`.
1567
+ // Absent when the host injects no trace service.
1568
+ ...(options.trace === undefined
1569
+ ? {}
1570
+ : {
1571
+ trace: options.trace.adapter,
1572
+ ...(options.trace.options === undefined ? {} : { traceSinkOptions: options.trace.options }),
1573
+ }),
1574
+ ...(host.features.includes("interaction") && options.interaction
1575
+ ? { interaction: guardedInteraction(options.interaction, owner, assertUsable, own) }
1576
+ : {}),
1577
+ ...(host.features.includes("agent-composition-v1") && options.composition
1578
+ ? {
1579
+ composition: guardedComposition(options.composition, assertUsable, (instance) => {
1580
+ state.compositionInstances?.add(instance);
1581
+ instanceStateOwners.set(instance.id, owner);
1582
+ }, (definition) => state.compositionDefinitions?.add(definition), compositionHostPrimitives, compositionLifecycleDispatcher, manifestSnapshot),
1583
+ }
1584
+ : {}),
1585
+ registerTool(definition) {
1586
+ assertUsable();
1587
+ const name = capabilityName(definition, "Tool");
1588
+ // 工具是唯一可替换的注册面:同名重注册 = 替换生效(后装载者赢),
1589
+ // 被替换者入链,替换方 dispose 时逐层恢复(bootstrap 内建与第三方
1590
+ // 插件因此可共存)。
1591
+ return own(register("tool", name, definition, owner, ownerToken, tools, { replaceable: true }));
1592
+ },
1593
+ registerCommand(definition) {
1594
+ assertUsable();
1595
+ const command = validateCommandDefinition(definition);
1596
+ return own(register("command", command.name, command, owner, ownerToken, commands));
1597
+ },
1598
+ registerOperation(name, handler) {
1599
+ assertUsable();
1600
+ if (!name)
1601
+ throw new Error("Operation requires a non-empty name");
1602
+ return own(register("operation", name, handler, owner, ownerToken, operations));
1603
+ },
1604
+ registerRpcMethod(name, handler) {
1605
+ assertUsable();
1606
+ if (!name)
1607
+ throw new Error("RPC method requires a non-empty name");
1608
+ return own(register("rpc", name, handler, owner, ownerToken, rpcMethods));
1609
+ },
1610
+ registerContextStrategy(name, strategy) {
1611
+ assertUsable();
1612
+ if (!name)
1613
+ throw new Error("Context strategy requires a non-empty name");
1614
+ return own(register("context-strategy", name, strategy, owner, ownerToken, contextStrategies));
1615
+ },
1616
+ registerEntryProjection(projection) {
1617
+ assertUsable();
1618
+ if (!projection?.customType)
1619
+ throw new Error("Entry projection requires a non-empty customType");
1620
+ if (typeof projection.project !== "function") {
1621
+ throw new Error("Entry projection requires a callable project");
1622
+ }
1623
+ // 转发到宿主 SessionAPI(SessionManager 持有注册表并应用于上下文投影)。
1624
+ // 宿主未支持时显式失败——第三方与第一方看到同一个错误。
1625
+ const register = options.session?.registerEntryProjection;
1626
+ if (register === undefined) {
1627
+ throw new Error("Entry projections require a host with entry projection support");
1628
+ }
1629
+ const wrapped = {
1630
+ customType: projection.customType,
1631
+ project: (entries) => projection.project(entries),
1632
+ };
1633
+ const dispose = register(wrapped);
1634
+ return own({
1635
+ id: `entry-projection:${projection.customType}`,
1636
+ kind: "entry-projection",
1637
+ dispose: () => {
1638
+ dispose();
1639
+ },
1640
+ });
1641
+ },
1642
+ registerProviderHeaderTransform(name, transform) {
1643
+ assertUsable();
1644
+ if (!name)
1645
+ throw new Error("Provider header transform requires a non-empty name");
1646
+ if (typeof transform !== "function") {
1647
+ throw new Error("Provider header transform requires a callable transform");
1648
+ }
1649
+ return own(register("provider-header-transform", name, transform, owner, ownerToken, providerHeaderTransforms));
1650
+ },
1651
+ registerSkill(definition) {
1652
+ assertUsable();
1653
+ const name = capabilityName(definition, "Skill");
1654
+ if (typeof definition.description !== "string" || !definition.description.trim()) {
1655
+ throw new Error("Skill definition requires a non-empty description");
1656
+ }
1657
+ if (typeof definition.filePath !== "string" || !definition.filePath) {
1658
+ throw new Error("Skill definition requires a filePath");
1659
+ }
1660
+ if (typeof definition.baseDir !== "string" || !definition.baseDir) {
1661
+ throw new Error("Skill definition requires a baseDir");
1662
+ }
1663
+ return own(register("skill", name, definition, owner, ownerToken, skills));
1664
+ },
1665
+ registerRetryPolicy(name, policy) {
1666
+ assertUsable();
1667
+ if (!name)
1668
+ throw new Error("Retry policy requires a non-empty name");
1669
+ if (!policy || typeof policy.decide !== "function") {
1670
+ throw new Error("Retry policy requires a decide function");
1671
+ }
1672
+ return own(register("retry-policy", name, policy, owner, ownerToken, retryPolicies));
1673
+ },
1674
+ registerCompactionPolicy(name, policy) {
1675
+ assertUsable();
1676
+ if (!name)
1677
+ throw new Error("Compaction policy requires a non-empty name");
1678
+ if (!policy || typeof policy.decide !== "function") {
1679
+ throw new Error("Compaction policy requires a decide function");
1680
+ }
1681
+ return own(register("compaction-policy", name, policy, owner, ownerToken, compactionPolicies));
1682
+ },
1683
+ registerOverflowPolicy(name, policy) {
1684
+ assertUsable();
1685
+ if (!name)
1686
+ throw new Error("Overflow policy requires a non-empty name");
1687
+ if (!policy || typeof policy.decide !== "function") {
1688
+ throw new Error("Overflow policy requires a decide function");
1689
+ }
1690
+ return own(register("overflow-policy", name, policy, owner, ownerToken, overflowPolicies));
1691
+ },
1692
+ registerBranchSummaryPolicy(name, policy) {
1693
+ assertUsable();
1694
+ if (!name)
1695
+ throw new Error("Branch summary policy requires a non-empty name");
1696
+ if (!policy || typeof policy.summarize !== "function") {
1697
+ throw new Error("Branch summary policy requires a summarize function");
1698
+ }
1699
+ return own(register("branch-summary-policy", name, policy, owner, ownerToken, branchSummaryPolicies));
1700
+ },
1701
+ registerLoopHook(position, handler) {
1702
+ assertUsable();
1703
+ const positions = [
1704
+ "beforeInput",
1705
+ "beforeToolCall",
1706
+ "afterToolCall",
1707
+ "transformContext",
1708
+ "prepareNextTurn",
1709
+ "shouldStopAfterTurn",
1710
+ ];
1711
+ if (!positions.includes(position)) {
1712
+ throw new Error(`Agent loop hook position is invalid: ${String(position)}`);
1713
+ }
1714
+ if (typeof handler !== "function") {
1715
+ throw new Error("Agent loop hook requires a callable handler");
1716
+ }
1717
+ const entries = loopHooks.get(position) ?? [];
1718
+ loopHooks.set(position, entries);
1719
+ const entry = { owner, ownerToken, value: handler };
1720
+ entries.push(entry);
1721
+ const id = `registration:${owner}:loop-hook:${position}:${++loopHookSequence}`;
1722
+ return own(createDisposableRegistration("loop-hook", () => {
1723
+ const current = loopHooks.get(position);
1724
+ if (!current)
1725
+ return;
1726
+ const index = current.indexOf(entry);
1727
+ if (index >= 0)
1728
+ current.splice(index, 1);
1729
+ if (current.length === 0)
1730
+ loopHooks.delete(position);
1731
+ }, id));
1732
+ },
1733
+ registerRunLoopStrategy(name, strategy) {
1734
+ assertUsable();
1735
+ if (!name)
1736
+ throw new Error("Run loop strategy requires a non-empty name");
1737
+ if (!strategy || typeof strategy.decideNextCycle !== "function") {
1738
+ throw new Error("Run loop strategy requires a decideNextCycle function");
1739
+ }
1740
+ return own(register("run-loop-strategy", name, strategy, owner, ownerToken, runLoopStrategies));
1741
+ },
1742
+ subscribe(type, handler) {
1743
+ assertUsable();
1744
+ if (!type)
1745
+ throw new Error("Event type requires a non-empty name");
1746
+ const handlers = subscribers.get(type) ?? new Map();
1747
+ subscribers.set(type, handlers);
1748
+ const sequence = ++subscriptionSequence;
1749
+ const id = createRuntimeId("subscription", sequence, `subscription:${owner}:${type}:${sequence}`);
1750
+ handlers.set(id, { owner, ownerToken, value: handler });
1751
+ return own(createDisposableRegistration("subscription", () => {
1752
+ handlers.delete(id);
1753
+ if (handlers.size === 0)
1754
+ subscribers.delete(type);
1755
+ }, id));
1756
+ },
1757
+ async publish(event) {
1758
+ assertUsable();
1759
+ const envelope = detachedSnapshot(createEventEnvelope({ ...event, source: owner }, {
1760
+ id: createRuntimeId("event", ++runtimeState.eventSequence, `event:${owner}:${runtimeState.eventSequence}`),
1761
+ timestamp: clock(),
1762
+ }));
1763
+ const results = [];
1764
+ for (const [subscriptionId, subscriber] of subscribers.get(envelope.type)?.entries() ?? []) {
1765
+ const startedAt = performance.now();
1766
+ try {
1767
+ await invokeRegisteredCapability(subscriber, (handler) => handler(detachedSnapshot(envelope)));
1768
+ results.push({ status: "fulfilled", value: undefined });
1769
+ }
1770
+ catch (reason) {
1771
+ results.push({ status: "rejected", reason });
1772
+ }
1773
+ finally {
1774
+ // 慢订阅者观测:成功与异常路径都记(异常本身仍走原有隔离通道)。
1775
+ const durationMs = performance.now() - startedAt;
1776
+ if (durationMs > SLOW_EVENT_SUBSCRIBER_WARN_MS) {
1777
+ recordLog("warn", subscriber.owner, "Slow event subscriber", {
1778
+ eventType: envelope.type,
1779
+ subscriptionId,
1780
+ durationMs: Math.round(durationMs),
1781
+ });
1782
+ }
1783
+ }
1784
+ }
1785
+ assertUsable();
1786
+ const failures = results
1787
+ .filter((result) => result.status === "rejected")
1788
+ .map((result) => result.reason)
1789
+ .filter((error) => !isRevokedCapabilityError(error));
1790
+ if (failures.length === 1)
1791
+ throw failures[0];
1792
+ if (failures.length > 1)
1793
+ throw new AggregateError(failures, `Capability event delivery failed: ${envelope.type}`);
1794
+ return envelope;
1795
+ },
1796
+ call(operation, input, options) {
1797
+ assertUsable();
1798
+ const registered = operations.get(operation);
1799
+ if (!registered)
1800
+ throw new Error(`Operation is not registered: ${operation}`);
1801
+ assertRegisteredCapabilityActive(registered);
1802
+ const sequence = ++operationSequence;
1803
+ const id = createRuntimeId("operation", sequence, `operation:${owner}:${operation}:${sequence}`);
1804
+ const handle = trackOperation([ownerToken, registered.ownerToken], new RuntimeOperation(id, (value, context) => invokeRegisteredCapability(registered, (handler) => handler(value, context)), input, (status) => {
1805
+ statuses.set(id, status);
1806
+ if (status === "running") {
1807
+ reportOperationStart(id, operation, [ownerToken, registered.ownerToken]);
1808
+ }
1809
+ else if (status === "cancelled") {
1810
+ reportOperationCancel(id, operation, [ownerToken, registered.ownerToken]);
1811
+ }
1812
+ }, (status) => reportOperationEnd(id, operation, status, [ownerToken, registered.ownerToken]), (() => {
1813
+ let step = 0;
1814
+ return (progress) => reportOperationStep(id, operation, [ownerToken, registered.ownerToken], progress, ++step);
1815
+ })()));
1816
+ statuses.set(id, handle.status());
1817
+ const signal = options?.signal;
1818
+ if (signal) {
1819
+ if (signal.aborted)
1820
+ void handle.cancel(signal.reason);
1821
+ else
1822
+ signal.addEventListener("abort", () => void handle.cancel(signal.reason), {
1823
+ once: true,
1824
+ });
1825
+ }
1826
+ return handle;
1827
+ },
1828
+ };
1829
+ apiStates.set(api, state);
1830
+ return api;
1831
+ };
1832
+ return {
1833
+ host: hostWithServices,
1834
+ resolvePluginCapabilityOrder,
1835
+ createAPI: apiFor,
1836
+ revokeAPI(api) {
1837
+ const state = apiStates.get(api);
1838
+ if (state)
1839
+ revokeState(api, state);
1840
+ },
1841
+ revokeAllAPIs() {
1842
+ for (const [api, state] of apiStates)
1843
+ revokeState(api, state);
1844
+ },
1845
+ async disposeAll() {
1846
+ const owners = [...pluginRegistrations.keys()];
1847
+ this.revokeAllAPIs();
1848
+ const failures = [];
1849
+ for (const owner of owners) {
1850
+ try {
1851
+ await this.disposePlugin(owner);
1852
+ }
1853
+ catch (error) {
1854
+ failures.push(error);
1855
+ }
1856
+ }
1857
+ await this.drainLifecycleDeliveries();
1858
+ if (failures.length === 1)
1859
+ throw failures[0];
1860
+ if (failures.length > 1)
1861
+ throw new AggregateError(failures, "Capability runtime disposal failed");
1862
+ },
1863
+ disposePluginSync(id) {
1864
+ for (const [api, state] of apiStates)
1865
+ if (state.owner === id)
1866
+ revokeState(api, state);
1867
+ const registrations = pluginRegistrations.get(id);
1868
+ if (!registrations)
1869
+ return;
1870
+ pluginRegistrations.delete(id);
1871
+ const failures = [];
1872
+ for (const registration of registrations) {
1873
+ try {
1874
+ const result = registration.dispose();
1875
+ if (result && typeof result.then === "function") {
1876
+ observeUnexpectedAsyncCleanup(result, id);
1877
+ throw new Error(`Capability plugin ${id} has asynchronous cleanup; use the async loader`);
1878
+ }
1879
+ }
1880
+ catch (error) {
1881
+ failures.push(error);
1882
+ }
1883
+ }
1884
+ if (failures.length === 1)
1885
+ throw failures[0];
1886
+ if (failures.length > 1)
1887
+ throw new AggregateError(failures, `Capability plugin disposal failed: ${id}`);
1888
+ },
1889
+ async disposePlugin(id) {
1890
+ for (const [api, state] of apiStates)
1891
+ if (state.owner === id)
1892
+ revokeState(api, state);
1893
+ const registrations = pluginRegistrations.get(id);
1894
+ if (!registrations)
1895
+ return;
1896
+ pluginRegistrations.delete(id);
1897
+ const failures = [];
1898
+ for (const registration of registrations) {
1899
+ try {
1900
+ await registration.dispose();
1901
+ }
1902
+ catch (error) {
1903
+ failures.push(error);
1904
+ }
1905
+ }
1906
+ if (failures.length === 1)
1907
+ throw failures[0];
1908
+ if (failures.length > 1)
1909
+ throw new AggregateError(failures, `Capability plugin disposal failed: ${id}`);
1910
+ },
1911
+ listTools: () => Object.freeze(Array.from(tools.entries())
1912
+ .filter(([, entry]) => activeOwnerTokens.has(entry.ownerToken))
1913
+ .sort(([left], [right]) => stableTextCompare(left, right))
1914
+ .map(([name, entry]) => Object.freeze({
1915
+ name,
1916
+ definition: withNormalizedToolResultExecute(definitionSnapshot(entry.value)),
1917
+ source: entry.owner,
1918
+ readonlySafe: toolReadonlySafe(entry.value),
1919
+ }))),
1920
+ listCommands: () => Object.freeze(Array.from(commands.values())
1921
+ .filter((entry) => activeOwnerTokens.has(entry.ownerToken))
1922
+ .sort((left, right) => stableTextCompare(left.value.name, right.value.name) || stableTextCompare(left.owner, right.owner))
1923
+ .map((entry) => Object.freeze({ definition: definitionSnapshot(entry.value), source: entry.owner }))),
1924
+ listSkills: () => Object.freeze(Array.from(skills.values())
1925
+ .filter((entry) => activeOwnerTokens.has(entry.ownerToken))
1926
+ .sort((left, right) => stableTextCompare(left.value.name, right.value.name) || stableTextCompare(left.owner, right.owner))
1927
+ .map((entry) => Object.freeze({ definition: definitionSnapshot(entry.value), source: entry.owner }))),
1928
+ listContributionPoints: () => Array.from(contributionPoints.values())
1929
+ .filter((point) => activeOwnerTokens.has(point.ownerToken))
1930
+ .sort((left, right) => stableTextCompare(contributionPointKey(left.definition.id, left.definition.version), contributionPointKey(right.definition.id, right.definition.version)))
1931
+ .map((point) => ({
1932
+ id: point.definition.id,
1933
+ version: point.definition.version,
1934
+ schema: point.definition.schema,
1935
+ lifecycle: point.definition.lifecycle ?? "observe",
1936
+ owner: point.owner,
1937
+ })),
1938
+ listContributions: (pointId, version) => {
1939
+ const point = contributionPoints.get(contributionPointKey(pointId, version));
1940
+ if (!point || !activeOwnerTokens.has(point.ownerToken))
1941
+ throw new Error(`Contribution point is not defined: ${pointId}@${version}`);
1942
+ return listContributionEntries(point);
1943
+ },
1944
+ hasLifecycleEvent: (id, version) => {
1945
+ const definition = lifecycleDefinitions.get(lifecycleEventKey(id, version));
1946
+ return definition !== undefined && activeOwnerTokens.has(definition.ownerToken);
1947
+ },
1948
+ dispatchLifecycle,
1949
+ async recordPluginRejection(rejection) {
1950
+ const detached = Object.freeze({
1951
+ code: rejection.code,
1952
+ manifestPath: rejection.manifestPath,
1953
+ ...(rejection.pluginId === undefined ? {} : { pluginId: rejection.pluginId }),
1954
+ message: rejection.message,
1955
+ });
1956
+ pluginRejections.push(detached);
1957
+ const rejectedEventDefinition = lifecycleDefinitions.get(lifecycleEventKey(PLUGIN_REJECTED_EVENT_ID, PLUGIN_REJECTED_EVENT_VERSION));
1958
+ if (!rejectedEventDefinition || !activeOwnerTokens.has(rejectedEventDefinition.ownerToken)) {
1959
+ return;
1960
+ }
1961
+ try {
1962
+ await dispatchLifecycle({
1963
+ type: PLUGIN_REJECTED_EVENT_ID,
1964
+ version: PLUGIN_REJECTED_EVENT_VERSION,
1965
+ phase: "committed",
1966
+ data: {
1967
+ version: 1,
1968
+ ...(detached.pluginId === undefined ? {} : { pluginId: detached.pluginId }),
1969
+ manifestPath: detached.manifestPath,
1970
+ code: detached.code,
1971
+ message: detached.message,
1972
+ },
1973
+ source: "capability-runtime",
1974
+ });
1975
+ }
1976
+ catch {
1977
+ // The inspector record above is authoritative; lifecycle delivery failures
1978
+ // surface through runtime reports, never through the startup path.
1979
+ }
1980
+ },
1981
+ listPluginCapabilities,
1982
+ validateExecutionFacts: validateExecutionFactsV1,
1983
+ validateRetrySchedule: validateRetryScheduleV1,
1984
+ hasRetryPolicy: (name) => retryPolicies.has(name),
1985
+ async classifyRetry(name, request) {
1986
+ const policy = retryPolicies.get(name);
1987
+ if (!policy)
1988
+ throw new Error(`Retry policy is not registered: ${name}`);
1989
+ if (!policy.value.classify)
1990
+ throw new Error(`Retry policy does not support classification: ${name}`);
1991
+ const retryable = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.classify?.(request));
1992
+ if (typeof retryable !== "boolean") {
1993
+ throw new Error(`Retry policy returned an invalid classification: ${name}`);
1994
+ }
1995
+ return retryable;
1996
+ },
1997
+ async decideRetry(name, request) {
1998
+ const policy = retryPolicies.get(name);
1999
+ if (!policy)
2000
+ throw new Error(`Retry policy is not registered: ${name}`);
2001
+ const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2002
+ if (!decision || typeof decision.retry !== "boolean") {
2003
+ throw new Error(`Retry policy returned an invalid decision: ${name}`);
2004
+ }
2005
+ if (decision.delayMs !== undefined && (!Number.isFinite(decision.delayMs) || decision.delayMs < 0)) {
2006
+ throw new Error(`Retry policy returned an invalid delayMs: ${name}`);
2007
+ }
2008
+ return decision;
2009
+ },
2010
+ hasCompactionPolicy: (name) => compactionPolicies.has(name),
2011
+ async prepareCompaction(name, request) {
2012
+ const policy = compactionPolicies.get(name);
2013
+ if (!policy)
2014
+ throw new Error(`Compaction policy is not registered: ${name}`);
2015
+ if (!policy.value.prepare)
2016
+ throw new Error(`Compaction policy does not support preparation: ${name}`);
2017
+ return invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.prepare?.(request));
2018
+ },
2019
+ hasBranchSummaryPolicy: (name) => branchSummaryPolicies.has(name),
2020
+ async summarizeBranch(name, request) {
2021
+ const policy = branchSummaryPolicies.get(name);
2022
+ if (!policy)
2023
+ throw new Error(`Branch summary policy is not registered: ${name}`);
2024
+ const result = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.summarize(request));
2025
+ if (!result || typeof result !== "object") {
2026
+ throw new Error(`Branch summary policy returned an invalid result: ${name}`);
2027
+ }
2028
+ return result;
2029
+ },
2030
+ getLoopHookChain: (position) => {
2031
+ const entries = loopHooks.get(position);
2032
+ if (!entries)
2033
+ return [];
2034
+ return entries
2035
+ .filter((entry) => activeOwnerTokens.has(entry.ownerToken))
2036
+ .map((entry) => entry.value);
2037
+ },
2038
+ hasRunLoopStrategy: (name) => runLoopStrategies.has(name),
2039
+ async decideRunLoop(name, request) {
2040
+ const strategy = runLoopStrategies.get(name);
2041
+ if (!strategy)
2042
+ throw new Error(`Run loop strategy is not registered: ${name}`);
2043
+ const decision = await invokeRegisteredCapabilityWithSignal(strategy, request.signal, (value) => value.decideNextCycle(request));
2044
+ if (!decision || typeof decision.continueLoop !== "boolean") {
2045
+ throw new Error(`Run loop strategy returned an invalid decision: ${name}`);
2046
+ }
2047
+ return decision;
2048
+ },
2049
+ async decideCompaction(name, request) {
2050
+ const policy = compactionPolicies.get(name);
2051
+ if (!policy)
2052
+ throw new Error(`Compaction policy is not registered: ${name}`);
2053
+ const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2054
+ if (!decision || typeof decision.compact !== "boolean") {
2055
+ throw new Error(`Compaction policy returned an invalid decision: ${name}`);
2056
+ }
2057
+ if (decision.retry !== undefined && typeof decision.retry !== "boolean") {
2058
+ throw new Error(`Compaction policy returned an invalid retry value: ${name}`);
2059
+ }
2060
+ if (decision.failureMessage !== undefined && typeof decision.failureMessage !== "string") {
2061
+ throw new Error(`Compaction policy returned an invalid failureMessage: ${name}`);
2062
+ }
2063
+ return decision;
2064
+ },
2065
+ async summarizeCompaction(name, request) {
2066
+ const policy = compactionPolicies.get(name);
2067
+ if (!policy)
2068
+ throw new Error(`Compaction policy is not registered: ${name}`);
2069
+ if (!policy.value.summarize)
2070
+ throw new Error(`Compaction policy does not support summaries: ${name}`);
2071
+ const result = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.summarize?.(request));
2072
+ if (!result ||
2073
+ typeof result.summary !== "string" ||
2074
+ !result.summary ||
2075
+ typeof result.firstKeptEntryId !== "string" ||
2076
+ !Number.isFinite(result.tokensBefore)) {
2077
+ throw new Error(`Compaction policy returned an invalid summary: ${name}`);
2078
+ }
2079
+ return result;
2080
+ },
2081
+ hasOverflowPolicy: (name) => overflowPolicies.has(name),
2082
+ async decideOverflow(name, request) {
2083
+ const policy = overflowPolicies.get(name);
2084
+ if (!policy)
2085
+ throw new Error(`Overflow policy is not registered: ${name}`);
2086
+ const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2087
+ if (!decision ||
2088
+ typeof decision.contextOverflow !== "boolean" ||
2089
+ typeof decision.recoverableLength !== "boolean") {
2090
+ throw new Error(`Overflow policy returned an invalid decision: ${name}`);
2091
+ }
2092
+ return decision;
2093
+ },
2094
+ async invokeTool(name, input, options) {
2095
+ const registered = tools.get(name);
2096
+ if (!registered)
2097
+ throw new Error(`Tool is not registered: ${name}`);
2098
+ return invokeRegisteredCapability(registered, (value) => invokeCapabilityTool(asHandler(value, "Tool"), input, toolExecutionContext, options?.signal));
2099
+ },
2100
+ hasCommand: (name) => commands.has(name),
2101
+ async invokeCommand(name, args, options) {
2102
+ const registered = commands.get(name);
2103
+ if (!registered)
2104
+ throw new Error(`Command is not registered: ${name}`);
2105
+ return validateCommandResult(await invokeRegisteredCapability(registered, (value) => value.execute(args, options ?? { signal: new AbortController().signal })), name);
2106
+ },
2107
+ hasRpcMethod: (name) => rpcMethods.has(name),
2108
+ async dispatchRpc(name, input) {
2109
+ const registered = rpcMethods.get(name);
2110
+ if (!registered)
2111
+ throw new Error(`RPC method is not registered: ${name}`);
2112
+ return invokeRegisteredCapability(registered, (value) => value(input));
2113
+ },
2114
+ hasContextStrategy: (name) => contextStrategies.has(name),
2115
+ async transformContext(name, context, options) {
2116
+ const strategy = contextStrategies.get(name);
2117
+ if (!strategy)
2118
+ throw new Error(`Context strategy is not registered: ${name}`);
2119
+ return invokeRegisteredCapability(strategy, (value) => value.transform(context, options));
2120
+ },
2121
+ async snapshotContext(name, context, options) {
2122
+ const registered = contextStrategies.get(name);
2123
+ if (!registered)
2124
+ throw new Error(`Context strategy is not registered: ${name}`);
2125
+ if (!registered.value.snapshot)
2126
+ throw new Error(`Context strategy does not support snapshots: ${name}`);
2127
+ return invokeRegisteredCapability(registered, (value) => value.snapshot?.(context, options));
2128
+ },
2129
+ async restoreContext(name, snapshot, options) {
2130
+ const registered = contextStrategies.get(name);
2131
+ if (!registered)
2132
+ throw new Error(`Context strategy is not registered: ${name}`);
2133
+ if (!registered.value.restore)
2134
+ throw new Error(`Context strategy does not support restore: ${name}`);
2135
+ return invokeRegisteredCapability(registered, (value) => value.restore?.(snapshot, options));
2136
+ },
2137
+ async replaceContext(name, context, options) {
2138
+ const registered = contextStrategies.get(name);
2139
+ if (!registered)
2140
+ throw new Error(`Context strategy is not registered: ${name}`);
2141
+ if (!registered.value.replace)
2142
+ throw new Error(`Context strategy does not support replacement: ${name}`);
2143
+ return invokeRegisteredCapability(registered, (value) => value.replace?.(context, options));
2144
+ },
2145
+ async transformProviderHeaders(request) {
2146
+ let headers = validateProviderHeaders(request.headers, "request");
2147
+ for (const [name, transform] of providerHeaderTransforms) {
2148
+ headers = validateProviderHeaders(await invokeRegisteredCapability(transform, (value) => value({
2149
+ model: request.model,
2150
+ ...(request.sessionId === undefined ? {} : { sessionId: request.sessionId }),
2151
+ headers: { ...headers },
2152
+ })), name);
2153
+ }
2154
+ return headers;
2155
+ },
2156
+ getOperationStatus: (id) => statuses.get(id),
2157
+ drainLifecycleDeliveries: async () => {
2158
+ while (true) {
2159
+ const queues = [...lifecycleDeliveryQueues];
2160
+ if (queues.length === 0)
2161
+ return;
2162
+ await Promise.all(queues.map((queue) => queue.drain()));
2163
+ if (queues.every((queue) => queue.snapshot().pendingEvents === 0))
2164
+ return;
2165
+ }
2166
+ },
2167
+ inspect,
2168
+ };
2169
+ }
2170
+ //# sourceMappingURL=capability-runtime.js.map