@ai-agent-forge/agent-forge 0.86.7 → 0.87.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 (665) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +8 -9
  3. package/dist/artifacts/artifact-store.d.ts.map +1 -1
  4. package/dist/artifacts/artifact-store.js +9 -5
  5. package/dist/artifacts/artifact-store.js.map +1 -1
  6. package/dist/bundle/.build-manifest.json +410 -371
  7. package/dist/bundle/chunks/{chunk-A7GUOX2H.js → chunk-6ZKDNZHA.js} +5 -1
  8. package/dist/bundle/chunks/chunk-BFC2BDVJ.js +13 -0
  9. package/dist/bundle/chunks/chunk-MOHOLL3F.js +1456 -0
  10. package/dist/bundle/chunks/image-resize-worker.js +12 -1
  11. package/dist/bundle/chunks/{virtual-modules-3IZ4MYSQ.js → virtual-modules-KZ5DRH7Q.js} +1 -1
  12. package/dist/bundle/cli.js +1 -1
  13. package/dist/bundle/client.js +1 -1
  14. package/dist/bundle/index.js +2 -2
  15. package/dist/bundle/rpc-entry.js +1 -1
  16. package/dist/cli/args.d.ts.map +1 -1
  17. package/dist/cli/args.js +231 -185
  18. package/dist/cli/args.js.map +1 -1
  19. package/dist/cli/auth-check.d.ts.map +1 -1
  20. package/dist/cli/auth-check.js +3 -2
  21. package/dist/cli/auth-check.js.map +1 -1
  22. package/dist/cli/auth-command.d.ts.map +1 -1
  23. package/dist/cli/auth-command.js +15 -9
  24. package/dist/cli/auth-command.js.map +1 -1
  25. package/dist/cli/credential-print.d.ts.map +1 -1
  26. package/dist/cli/credential-print.js +14 -7
  27. package/dist/cli/credential-print.js.map +1 -1
  28. package/dist/cli/experimental/command.d.ts.map +1 -1
  29. package/dist/cli/experimental/command.js +6 -5
  30. package/dist/cli/experimental/command.js.map +1 -1
  31. package/dist/cli/list-models.d.ts.map +1 -1
  32. package/dist/cli/list-models.js +9 -8
  33. package/dist/cli/list-models.js.map +1 -1
  34. package/dist/cli/plugin-manager-controller.d.ts.map +1 -1
  35. package/dist/cli/plugin-manager-controller.js +2 -1
  36. package/dist/cli/plugin-manager-controller.js.map +1 -1
  37. package/dist/cli/serve.d.ts.map +1 -1
  38. package/dist/cli/serve.js +8 -5
  39. package/dist/cli/serve.js.map +1 -1
  40. package/dist/client/remote-session.d.ts.map +1 -1
  41. package/dist/client/remote-session.js +16 -9
  42. package/dist/client/remote-session.js.map +1 -1
  43. package/dist/config.d.ts.map +1 -1
  44. package/dist/config.js +2 -1
  45. package/dist/config.js.map +1 -1
  46. package/dist/core/agent-capability-contract.d.ts +0 -7
  47. package/dist/core/agent-capability-contract.d.ts.map +1 -1
  48. package/dist/core/agent-capability-contract.js +72 -68
  49. package/dist/core/agent-capability-contract.js.map +1 -1
  50. package/dist/core/agent-session-bash.d.ts.map +1 -1
  51. package/dist/core/agent-session-bash.js +5 -4
  52. package/dist/core/agent-session-bash.js.map +1 -1
  53. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  54. package/dist/core/agent-session-compaction.js +28 -22
  55. package/dist/core/agent-session-compaction.js.map +1 -1
  56. package/dist/core/agent-session-context.d.ts.map +1 -1
  57. package/dist/core/agent-session-context.js +18 -13
  58. package/dist/core/agent-session-context.js.map +1 -1
  59. package/dist/core/agent-session-model.d.ts.map +1 -1
  60. package/dist/core/agent-session-model.js +2 -1
  61. package/dist/core/agent-session-model.js.map +1 -1
  62. package/dist/core/agent-session-retry.d.ts.map +1 -1
  63. package/dist/core/agent-session-retry.js +3 -2
  64. package/dist/core/agent-session-retry.js.map +1 -1
  65. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  66. package/dist/core/agent-session-runtime.js +7 -6
  67. package/dist/core/agent-session-runtime.js.map +1 -1
  68. package/dist/core/agent-session-services.d.ts +1 -1
  69. package/dist/core/agent-session-services.d.ts.map +1 -1
  70. package/dist/core/agent-session-services.js.map +1 -1
  71. package/dist/core/agent-session-tools.d.ts.map +1 -1
  72. package/dist/core/agent-session-tools.js +3 -2
  73. package/dist/core/agent-session-tools.js.map +1 -1
  74. package/dist/core/agent-session.d.ts +40 -2
  75. package/dist/core/agent-session.d.ts.map +1 -1
  76. package/dist/core/agent-session.js +142 -34
  77. package/dist/core/agent-session.js.map +1 -1
  78. package/dist/core/auth-guidance.d.ts.map +1 -1
  79. package/dist/core/auth-guidance.js +11 -5
  80. package/dist/core/auth-guidance.js.map +1 -1
  81. package/dist/core/auth-storage.d.ts.map +1 -1
  82. package/dist/core/auth-storage.js +9 -6
  83. package/dist/core/auth-storage.js.map +1 -1
  84. package/dist/core/compaction/compaction.d.ts.map +1 -1
  85. package/dist/core/compaction/compaction.js +2 -1
  86. package/dist/core/compaction/compaction.js.map +1 -1
  87. package/dist/core/embedded-sdk.d.ts.map +1 -1
  88. package/dist/core/embedded-sdk.js +10 -6
  89. package/dist/core/embedded-sdk.js.map +1 -1
  90. package/dist/core/export-html/index.d.ts.map +1 -1
  91. package/dist/core/export-html/index.js +9 -4
  92. package/dist/core/export-html/index.js.map +1 -1
  93. package/dist/core/extensions/agent-composition.d.ts.map +1 -1
  94. package/dist/core/extensions/agent-composition.js +26 -19
  95. package/dist/core/extensions/agent-composition.js.map +1 -1
  96. package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -1
  97. package/dist/core/extensions/bootstrap-agent-loop.js +3 -2
  98. package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -1
  99. package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -1
  100. package/dist/core/extensions/bootstrap-lifecycle.js +20 -17
  101. package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -1
  102. package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -1
  103. package/dist/core/extensions/bootstrap-overflow-policy.js +2 -1
  104. package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -1
  105. package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -1
  106. package/dist/core/extensions/bootstrap-retry-policy.js +2 -1
  107. package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -1
  108. package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -1
  109. package/dist/core/extensions/bootstrap-skills.js +7 -6
  110. package/dist/core/extensions/bootstrap-skills.js.map +1 -1
  111. package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -1
  112. package/dist/core/extensions/bootstrap-tools.js +2 -1
  113. package/dist/core/extensions/bootstrap-tools.js.map +1 -1
  114. package/dist/core/extensions/capability-plugin.d.ts.map +1 -1
  115. package/dist/core/extensions/capability-plugin.js +37 -13
  116. package/dist/core/extensions/capability-plugin.js.map +1 -1
  117. package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -1
  118. package/dist/core/extensions/capability-runtime-events.js +17 -13
  119. package/dist/core/extensions/capability-runtime-events.js.map +1 -1
  120. package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -1
  121. package/dist/core/extensions/capability-runtime-guards.js +16 -15
  122. package/dist/core/extensions/capability-runtime-guards.js.map +1 -1
  123. package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -1
  124. package/dist/core/extensions/capability-runtime-manifest.js +52 -30
  125. package/dist/core/extensions/capability-runtime-manifest.js.map +1 -1
  126. package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -1
  127. package/dist/core/extensions/capability-runtime-validation.js +66 -65
  128. package/dist/core/extensions/capability-runtime-validation.js.map +1 -1
  129. package/dist/core/extensions/capability-runtime.d.ts.map +1 -1
  130. package/dist/core/extensions/capability-runtime.js +147 -127
  131. package/dist/core/extensions/capability-runtime.js.map +1 -1
  132. package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -1
  133. package/dist/core/extensions/compaction-memory-failure-mode.js +3 -2
  134. package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -1
  135. package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -1
  136. package/dist/core/extensions/context-strategy-binding.js +7 -4
  137. package/dist/core/extensions/context-strategy-binding.js.map +1 -1
  138. package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -1
  139. package/dist/core/extensions/lifecycle-catalog.js +290 -279
  140. package/dist/core/extensions/lifecycle-catalog.js.map +1 -1
  141. package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -1
  142. package/dist/core/extensions/lifecycle-delivery-queue.js +3 -2
  143. package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -1
  144. package/dist/core/facade/coding-agent-facade.d.ts +6 -0
  145. package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
  146. package/dist/core/facade/coding-agent-facade.js +2 -0
  147. package/dist/core/facade/coding-agent-facade.js.map +1 -1
  148. package/dist/core/http-dispatcher.d.ts.map +1 -1
  149. package/dist/core/http-dispatcher.js +2 -1
  150. package/dist/core/http-dispatcher.js.map +1 -1
  151. package/dist/core/i18n/index.d.ts +14 -0
  152. package/dist/core/i18n/index.d.ts.map +1 -0
  153. package/dist/core/i18n/index.js +67 -0
  154. package/dist/core/i18n/index.js.map +1 -0
  155. package/dist/core/i18n/locales/en/example.d.ts +7 -0
  156. package/dist/core/i18n/locales/en/example.d.ts.map +1 -0
  157. package/dist/core/i18n/locales/en/example.js +7 -0
  158. package/dist/core/i18n/locales/en/example.js.map +1 -0
  159. package/dist/core/i18n/locales/zh-cn/cli.d.ts +8 -0
  160. package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -0
  161. package/dist/core/i18n/locales/zh-cn/cli.js +227 -0
  162. package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -0
  163. package/dist/core/i18n/locales/zh-cn/common.d.ts +6 -0
  164. package/dist/core/i18n/locales/zh-cn/common.d.ts.map +1 -0
  165. package/dist/core/i18n/locales/zh-cn/common.js +6 -0
  166. package/dist/core/i18n/locales/zh-cn/common.js.map +1 -0
  167. package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts +13 -0
  168. package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts.map +1 -0
  169. package/dist/core/i18n/locales/zh-cn/core-contract-core.js +173 -0
  170. package/dist/core/i18n/locales/zh-cn/core-contract-core.js.map +1 -0
  171. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts +12 -0
  172. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts.map +1 -0
  173. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js +582 -0
  174. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js.map +1 -0
  175. package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts +9 -0
  176. package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts.map +1 -0
  177. package/dist/core/i18n/locales/zh-cn/core-contract-final.js +55 -0
  178. package/dist/core/i18n/locales/zh-cn/core-contract-final.js.map +1 -0
  179. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts +11 -0
  180. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts.map +1 -0
  181. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js +455 -0
  182. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js.map +1 -0
  183. package/dist/core/i18n/locales/zh-cn/core-errors.d.ts +9 -0
  184. package/dist/core/i18n/locales/zh-cn/core-errors.d.ts.map +1 -0
  185. package/dist/core/i18n/locales/zh-cn/core-errors.js +191 -0
  186. package/dist/core/i18n/locales/zh-cn/core-errors.js.map +1 -0
  187. package/dist/core/i18n/locales/zh-cn/example.d.ts +7 -0
  188. package/dist/core/i18n/locales/zh-cn/example.d.ts.map +1 -0
  189. package/dist/core/i18n/locales/zh-cn/example.js +10 -0
  190. package/dist/core/i18n/locales/zh-cn/example.js.map +1 -0
  191. package/dist/core/i18n/locales/zh-cn/index.d.ts +2 -0
  192. package/dist/core/i18n/locales/zh-cn/index.d.ts.map +1 -0
  193. package/dist/core/i18n/locales/zh-cn/index.js +41 -0
  194. package/dist/core/i18n/locales/zh-cn/index.js.map +1 -0
  195. package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts +10 -0
  196. package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -0
  197. package/dist/core/i18n/locales/zh-cn/interactive-mode.js +265 -0
  198. package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -0
  199. package/dist/core/i18n/locales/zh-cn/keybindings.d.ts +11 -0
  200. package/dist/core/i18n/locales/zh-cn/keybindings.d.ts.map +1 -0
  201. package/dist/core/i18n/locales/zh-cn/keybindings.js +67 -0
  202. package/dist/core/i18n/locales/zh-cn/keybindings.js.map +1 -0
  203. package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts +7 -0
  204. package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts.map +1 -0
  205. package/dist/core/i18n/locales/zh-cn/slash-commands.js +39 -0
  206. package/dist/core/i18n/locales/zh-cn/slash-commands.js.map +1 -0
  207. package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts +10 -0
  208. package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts.map +1 -0
  209. package/dist/core/i18n/locales/zh-cn/tui-builtin.js +15 -0
  210. package/dist/core/i18n/locales/zh-cn/tui-builtin.js.map +1 -0
  211. package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts +13 -0
  212. package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts.map +1 -0
  213. package/dist/core/i18n/locales/zh-cn/tui-components-misc.js +102 -0
  214. package/dist/core/i18n/locales/zh-cn/tui-components-misc.js.map +1 -0
  215. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts +12 -0
  216. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -0
  217. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +288 -0
  218. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -0
  219. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts +9 -0
  220. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts.map +1 -0
  221. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js +79 -0
  222. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js.map +1 -0
  223. package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts +8 -0
  224. package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts.map +1 -0
  225. package/dist/core/i18n/locales/zh-cn/tui-self-owned.js +72 -0
  226. package/dist/core/i18n/locales/zh-cn/tui-self-owned.js.map +1 -0
  227. package/dist/core/keybindings.d.ts +15 -0
  228. package/dist/core/keybindings.d.ts.map +1 -1
  229. package/dist/core/keybindings.js +18 -0
  230. package/dist/core/keybindings.js.map +1 -1
  231. package/dist/core/logger.d.ts.map +1 -1
  232. package/dist/core/logger.js +5 -1
  233. package/dist/core/logger.js.map +1 -1
  234. package/dist/core/model-registry.d.ts.map +1 -1
  235. package/dist/core/model-registry.js +2 -1
  236. package/dist/core/model-registry.js.map +1 -1
  237. package/dist/core/model-runtime.d.ts.map +1 -1
  238. package/dist/core/model-runtime.js +8 -4
  239. package/dist/core/model-runtime.js.map +1 -1
  240. package/dist/core/package-install-host.d.ts.map +1 -1
  241. package/dist/core/package-install-host.js +4 -3
  242. package/dist/core/package-install-host.js.map +1 -1
  243. package/dist/core/package-manager.d.ts.map +1 -1
  244. package/dist/core/package-manager.js +15 -10
  245. package/dist/core/package-manager.js.map +1 -1
  246. package/dist/core/package-resource-collection.d.ts.map +1 -1
  247. package/dist/core/package-resource-collection.js +2 -1
  248. package/dist/core/package-resource-collection.js.map +1 -1
  249. package/dist/core/package-source.d.ts.map +1 -1
  250. package/dist/core/package-source.js +3 -2
  251. package/dist/core/package-source.js.map +1 -1
  252. package/dist/core/provider-composer.d.ts.map +1 -1
  253. package/dist/core/provider-composer.js +22 -13
  254. package/dist/core/provider-composer.js.map +1 -1
  255. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  256. package/dist/core/remote-catalog-provider.js +6 -2
  257. package/dist/core/remote-catalog-provider.js.map +1 -1
  258. package/dist/core/resolve-config-value.d.ts.map +1 -1
  259. package/dist/core/resolve-config-value.js +15 -5
  260. package/dist/core/resolve-config-value.js.map +1 -1
  261. package/dist/core/sdk.d.ts +19 -5
  262. package/dist/core/sdk.d.ts.map +1 -1
  263. package/dist/core/sdk.js +74 -54
  264. package/dist/core/sdk.js.map +1 -1
  265. package/dist/core/session-cwd.d.ts.map +1 -1
  266. package/dist/core/session-cwd.js +5 -2
  267. package/dist/core/session-cwd.js.map +1 -1
  268. package/dist/core/session-export.d.ts.map +1 -1
  269. package/dist/core/session-export.js +2 -1
  270. package/dist/core/session-export.js.map +1 -1
  271. package/dist/core/session-manager.d.ts.map +1 -1
  272. package/dist/core/session-manager.js +39 -29
  273. package/dist/core/session-manager.js.map +1 -1
  274. package/dist/core/session-storage.d.ts.map +1 -1
  275. package/dist/core/session-storage.js +3 -3
  276. package/dist/core/session-storage.js.map +1 -1
  277. package/dist/core/settings-manager.d.ts +11 -0
  278. package/dist/core/settings-manager.d.ts.map +1 -1
  279. package/dist/core/settings-manager.js +27 -5
  280. package/dist/core/settings-manager.js.map +1 -1
  281. package/dist/core/slash-commands.d.ts.map +1 -1
  282. package/dist/core/slash-commands.js +53 -32
  283. package/dist/core/slash-commands.js.map +1 -1
  284. package/dist/core/system-prompt.d.ts.map +1 -1
  285. package/dist/core/system-prompt.js +25 -2
  286. package/dist/core/system-prompt.js.map +1 -1
  287. package/dist/core/tools/bash.d.ts.map +1 -1
  288. package/dist/core/tools/bash.js +11 -7
  289. package/dist/core/tools/bash.js.map +1 -1
  290. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  291. package/dist/core/tools/edit-diff.js +9 -4
  292. package/dist/core/tools/edit-diff.js.map +1 -1
  293. package/dist/core/tools/edit.d.ts.map +1 -1
  294. package/dist/core/tools/edit.js +4 -3
  295. package/dist/core/tools/edit.js.map +1 -1
  296. package/dist/core/tools/index.d.ts.map +1 -1
  297. package/dist/core/tools/index.js +3 -2
  298. package/dist/core/tools/index.js.map +1 -1
  299. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  300. package/dist/core/tools/output-accumulator.js +2 -1
  301. package/dist/core/tools/output-accumulator.js.map +1 -1
  302. package/dist/core/tools/read.d.ts.map +1 -1
  303. package/dist/core/tools/read.js +6 -2
  304. package/dist/core/tools/read.js.map +1 -1
  305. package/dist/core/tools/write.d.ts.map +1 -1
  306. package/dist/core/tools/write.js +2 -1
  307. package/dist/core/tools/write.js.map +1 -1
  308. package/dist/durable/durable-service.d.ts.map +1 -1
  309. package/dist/durable/durable-service.js +25 -18
  310. package/dist/durable/durable-service.js.map +1 -1
  311. package/dist/host/checkpoint-commit.d.ts.map +1 -1
  312. package/dist/host/checkpoint-commit.js +2 -1
  313. package/dist/host/checkpoint-commit.js.map +1 -1
  314. package/dist/host/manual-compaction.d.ts.map +1 -1
  315. package/dist/host/manual-compaction.js +2 -1
  316. package/dist/host/manual-compaction.js.map +1 -1
  317. package/dist/host/output-projection.d.ts +0 -13
  318. package/dist/host/output-projection.d.ts.map +1 -1
  319. package/dist/host/output-projection.js +16 -2
  320. package/dist/host/output-projection.js.map +1 -1
  321. package/dist/host/summary-retry.d.ts.map +1 -1
  322. package/dist/host/summary-retry.js +3 -2
  323. package/dist/host/summary-retry.js.map +1 -1
  324. package/dist/main.d.ts.map +1 -1
  325. package/dist/main.js +94 -58
  326. package/dist/main.js.map +1 -1
  327. package/dist/modes/interactive/components/agents-view.d.ts.map +1 -1
  328. package/dist/modes/interactive/components/agents-view.js +18 -15
  329. package/dist/modes/interactive/components/agents-view.js.map +1 -1
  330. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  331. package/dist/modes/interactive/components/assistant-message.js +6 -5
  332. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  333. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  334. package/dist/modes/interactive/components/bash-execution.js +12 -7
  335. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  336. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  337. package/dist/modes/interactive/components/bordered-loader.js +2 -1
  338. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  339. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  340. package/dist/modes/interactive/components/branch-summary-message.js +6 -5
  341. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  342. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  343. package/dist/modes/interactive/components/compaction-summary-message.js +9 -5
  344. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  345. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  346. package/dist/modes/interactive/components/config-selector.js +18 -15
  347. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  348. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  349. package/dist/modes/interactive/components/custom-entry.js +2 -1
  350. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  351. package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -1
  352. package/dist/modes/interactive/components/dialog-editor.js +5 -4
  353. package/dist/modes/interactive/components/dialog-editor.js.map +1 -1
  354. package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -1
  355. package/dist/modes/interactive/components/dialog-input.js +2 -1
  356. package/dist/modes/interactive/components/dialog-input.js.map +1 -1
  357. package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -1
  358. package/dist/modes/interactive/components/dialog-selector.js +4 -3
  359. package/dist/modes/interactive/components/dialog-selector.js.map +1 -1
  360. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  361. package/dist/modes/interactive/components/first-time-setup.js +11 -10
  362. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  363. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  364. package/dist/modes/interactive/components/footer.js +7 -4
  365. package/dist/modes/interactive/components/footer.js.map +1 -1
  366. package/dist/modes/interactive/components/index.d.ts +1 -0
  367. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  368. package/dist/modes/interactive/components/index.js +1 -0
  369. package/dist/modes/interactive/components/index.js.map +1 -1
  370. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  371. package/dist/modes/interactive/components/keybinding-hints.js +3 -2
  372. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  373. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  374. package/dist/modes/interactive/components/login-dialog.js +12 -11
  375. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  376. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  377. package/dist/modes/interactive/components/mermaid.js +6 -2
  378. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  379. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  380. package/dist/modes/interactive/components/model-selector.js +28 -16
  381. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  382. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  383. package/dist/modes/interactive/components/oauth-selector.js +10 -9
  384. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  385. package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -1
  386. package/dist/modes/interactive/components/plugin-manager-entry.js +22 -13
  387. package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -1
  388. package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -1
  389. package/dist/modes/interactive/components/plugin-selection-entry.js +27 -12
  390. package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -1
  391. package/dist/modes/interactive/components/queue-manager-selector.d.ts +60 -0
  392. package/dist/modes/interactive/components/queue-manager-selector.d.ts.map +1 -0
  393. package/dist/modes/interactive/components/queue-manager-selector.js +166 -0
  394. package/dist/modes/interactive/components/queue-manager-selector.js.map +1 -0
  395. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  396. package/dist/modes/interactive/components/scoped-models-selector.js +16 -14
  397. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  398. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  399. package/dist/modes/interactive/components/session-selector.js +43 -31
  400. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  401. package/dist/modes/interactive/components/settings-selector.d.ts +2 -0
  402. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  403. package/dist/modes/interactive/components/settings-selector.js +113 -96
  404. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  405. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  406. package/dist/modes/interactive/components/settings-submenu.js +5 -4
  407. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  408. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  409. package/dist/modes/interactive/components/show-images-selector.js +3 -2
  410. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  411. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  412. package/dist/modes/interactive/components/skill-invocation-message.js +4 -3
  413. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  414. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  415. package/dist/modes/interactive/components/status-indicator.js +14 -5
  416. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  417. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  418. package/dist/modes/interactive/components/theme-selector.js +2 -1
  419. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  420. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  421. package/dist/modes/interactive/components/thinking-selector.js +11 -4
  422. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  423. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  424. package/dist/modes/interactive/components/tool-execution.js +8 -3
  425. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  426. package/dist/modes/interactive/components/tree-list.d.ts.map +1 -1
  427. package/dist/modes/interactive/components/tree-list.js +7 -6
  428. package/dist/modes/interactive/components/tree-list.js.map +1 -1
  429. package/dist/modes/interactive/components/tree-render.d.ts.map +1 -1
  430. package/dist/modes/interactive/components/tree-render.js +28 -23
  431. package/dist/modes/interactive/components/tree-render.js.map +1 -1
  432. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  433. package/dist/modes/interactive/components/tree-selector.js +9 -7
  434. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  435. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  436. package/dist/modes/interactive/components/user-message-selector.js +5 -4
  437. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  438. package/dist/modes/interactive/components/workflow-view.d.ts.map +1 -1
  439. package/dist/modes/interactive/components/workflow-view.js +36 -21
  440. package/dist/modes/interactive/components/workflow-view.js.map +1 -1
  441. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  442. package/dist/modes/interactive/external-editor.js +2 -1
  443. package/dist/modes/interactive/external-editor.js.map +1 -1
  444. package/dist/modes/interactive/interactive-auth.d.ts.map +1 -1
  445. package/dist/modes/interactive/interactive-auth.js +71 -40
  446. package/dist/modes/interactive/interactive-auth.js.map +1 -1
  447. package/dist/modes/interactive/interactive-commands.d.ts +1 -0
  448. package/dist/modes/interactive/interactive-commands.d.ts.map +1 -1
  449. package/dist/modes/interactive/interactive-commands.js +3 -0
  450. package/dist/modes/interactive/interactive-commands.js.map +1 -1
  451. package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -1
  452. package/dist/modes/interactive/interactive-dialog-ui.js +5 -5
  453. package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -1
  454. package/dist/modes/interactive/interactive-format.d.ts.map +1 -1
  455. package/dist/modes/interactive/interactive-format.js +34 -18
  456. package/dist/modes/interactive/interactive-format.js.map +1 -1
  457. package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -1
  458. package/dist/modes/interactive/interactive-helpers.js +7 -2
  459. package/dist/modes/interactive/interactive-helpers.js.map +1 -1
  460. package/dist/modes/interactive/interactive-mode.d.ts +4 -1
  461. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  462. package/dist/modes/interactive/interactive-mode.js +327 -243
  463. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  464. package/dist/modes/interactive/interactive-selectors.d.ts +9 -0
  465. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -1
  466. package/dist/modes/interactive/interactive-selectors.js +79 -25
  467. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  468. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  469. package/dist/modes/interactive/theme/theme-controller.js +5 -1
  470. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  471. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  472. package/dist/modes/interactive/theme/theme.js +26 -23
  473. package/dist/modes/interactive/theme/theme.js.map +1 -1
  474. package/dist/modes/json-event.d.ts.map +1 -1
  475. package/dist/modes/json-event.js +3 -2
  476. package/dist/modes/json-event.js.map +1 -1
  477. package/dist/modes/print-mode.d.ts.map +1 -1
  478. package/dist/modes/print-mode.js +3 -2
  479. package/dist/modes/print-mode.js.map +1 -1
  480. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  481. package/dist/modes/rpc/rpc-client.js +3 -2
  482. package/dist/modes/rpc/rpc-client.js.map +1 -1
  483. package/dist/package-manager-cli.d.ts.map +1 -1
  484. package/dist/package-manager-cli.js +28 -13
  485. package/dist/package-manager-cli.js.map +1 -1
  486. package/dist/plugins/ecosystem/catalog.d.ts.map +1 -1
  487. package/dist/plugins/ecosystem/catalog.js +3 -2
  488. package/dist/plugins/ecosystem/catalog.js.map +1 -1
  489. package/dist/plugins/ecosystem/cli.d.ts.map +1 -1
  490. package/dist/plugins/ecosystem/cli.js +2 -1
  491. package/dist/plugins/ecosystem/cli.js.map +1 -1
  492. package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -1
  493. package/dist/plugins/ecosystem/default-plugin-market.js +3 -2
  494. package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -1
  495. package/dist/plugins/ecosystem/distribution.d.ts.map +1 -1
  496. package/dist/plugins/ecosystem/distribution.js +2 -1
  497. package/dist/plugins/ecosystem/distribution.js.map +1 -1
  498. package/dist/plugins/ecosystem/installer.d.ts.map +1 -1
  499. package/dist/plugins/ecosystem/installer.js +3 -2
  500. package/dist/plugins/ecosystem/installer.js.map +1 -1
  501. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -1
  502. package/dist/plugins/ecosystem/node-disk-registry-source.js +20 -17
  503. package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -1
  504. package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -1
  505. package/dist/plugins/ecosystem/node-distribution-host.js +35 -34
  506. package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -1
  507. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -1
  508. package/dist/plugins/ecosystem/node-npm-registry-source.js +35 -34
  509. package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -1
  510. package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -1
  511. package/dist/plugins/ecosystem/node-package-install-host.js +9 -8
  512. package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -1
  513. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -1
  514. package/dist/plugins/ecosystem/node-package-install-persistence.js +4 -3
  515. package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -1
  516. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
  517. package/dist/plugins/ecosystem/node-plugin-bootstrap.js +21 -5
  518. package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
  519. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -1
  520. package/dist/plugins/ecosystem/node-plugin-trust-root.js +10 -9
  521. package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -1
  522. package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -1
  523. package/dist/plugins/ecosystem/node-registry-source.js +31 -30
  524. package/dist/plugins/ecosystem/node-registry-source.js.map +1 -1
  525. package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -1
  526. package/dist/plugins/ecosystem/node-release-package-source.js +30 -29
  527. package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -1
  528. package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -1
  529. package/dist/plugins/ecosystem/node-tar-writer.js +11 -10
  530. package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -1
  531. package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -1
  532. package/dist/plugins/ecosystem/node-url-package-source.js +21 -20
  533. package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -1
  534. package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -1
  535. package/dist/plugins/ecosystem/plugin-acquisition.js +3 -2
  536. package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -1
  537. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -1
  538. package/dist/plugins/ecosystem/registry-cli-adapter.js +2 -1
  539. package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -1
  540. package/dist/plugins/ecosystem/registry.d.ts.map +1 -1
  541. package/dist/plugins/ecosystem/registry.js +35 -32
  542. package/dist/plugins/ecosystem/registry.js.map +1 -1
  543. package/dist/plugins/ecosystem/resolver.d.ts.map +1 -1
  544. package/dist/plugins/ecosystem/resolver.js +3 -2
  545. package/dist/plugins/ecosystem/resolver.js.map +1 -1
  546. package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -1
  547. package/dist/plugins/ecosystem/selection-store.js +11 -10
  548. package/dist/plugins/ecosystem/selection-store.js.map +1 -1
  549. package/dist/plugins/ecosystem/selection.d.ts.map +1 -1
  550. package/dist/plugins/ecosystem/selection.js +8 -7
  551. package/dist/plugins/ecosystem/selection.js.map +1 -1
  552. package/dist/plugins/ecosystem/state.d.ts.map +1 -1
  553. package/dist/plugins/ecosystem/state.js +24 -23
  554. package/dist/plugins/ecosystem/state.js.map +1 -1
  555. package/dist/plugins/ecosystem/updates.d.ts.map +1 -1
  556. package/dist/plugins/ecosystem/updates.js +5 -4
  557. package/dist/plugins/ecosystem/updates.js.map +1 -1
  558. package/dist/plugins/mcp-http.d.ts +0 -17
  559. package/dist/plugins/mcp-http.d.ts.map +1 -1
  560. package/dist/plugins/mcp-http.js +30 -7
  561. package/dist/plugins/mcp-http.js.map +1 -1
  562. package/dist/plugins/plugin-supervisor.d.ts.map +1 -1
  563. package/dist/plugins/plugin-supervisor.js +19 -1
  564. package/dist/plugins/plugin-supervisor.js.map +1 -1
  565. package/dist/profile/first-roles.d.ts.map +1 -1
  566. package/dist/profile/first-roles.js +10 -1
  567. package/dist/profile/first-roles.js.map +1 -1
  568. package/dist/profile/goal-plugin.d.ts.map +1 -1
  569. package/dist/profile/goal-plugin.js +24 -5
  570. package/dist/profile/goal-plugin.js.map +1 -1
  571. package/dist/profile/identity.d.ts.map +1 -1
  572. package/dist/profile/identity.js +7 -6
  573. package/dist/profile/identity.js.map +1 -1
  574. package/dist/profile/lock.d.ts.map +1 -1
  575. package/dist/profile/lock.js +15 -1
  576. package/dist/profile/lock.js.map +1 -1
  577. package/dist/profile/plan-plugin.d.ts.map +1 -1
  578. package/dist/profile/plan-plugin.js +26 -13
  579. package/dist/profile/plan-plugin.js.map +1 -1
  580. package/dist/profile/plugin-profiles.d.ts.map +1 -1
  581. package/dist/profile/plugin-profiles.js +2 -1
  582. package/dist/profile/plugin-profiles.js.map +1 -1
  583. package/dist/profile/policy-manifest.d.ts.map +1 -1
  584. package/dist/profile/policy-manifest.js +5 -4
  585. package/dist/profile/policy-manifest.js.map +1 -1
  586. package/dist/profile/profile-registry.d.ts +0 -12
  587. package/dist/profile/profile-registry.d.ts.map +1 -1
  588. package/dist/profile/profile-registry.js +14 -1
  589. package/dist/profile/profile-registry.js.map +1 -1
  590. package/dist/profile/role-catalog.d.ts +0 -1
  591. package/dist/profile/role-catalog.d.ts.map +1 -1
  592. package/dist/profile/role-catalog.js +17 -15
  593. package/dist/profile/role-catalog.js.map +1 -1
  594. package/dist/profile/role-orchestrator.d.ts.map +1 -1
  595. package/dist/profile/role-orchestrator.js +8 -7
  596. package/dist/profile/role-orchestrator.js.map +1 -1
  597. package/dist/profile/role-runner.d.ts.map +1 -1
  598. package/dist/profile/role-runner.js +3 -2
  599. package/dist/profile/role-runner.js.map +1 -1
  600. package/dist/profile/root-facade.d.ts.map +1 -1
  601. package/dist/profile/root-facade.js +2 -1
  602. package/dist/profile/root-facade.js.map +1 -1
  603. package/dist/profile/skill-discovery-wiring.d.ts.map +1 -1
  604. package/dist/profile/skill-discovery-wiring.js +7 -2
  605. package/dist/profile/skill-discovery-wiring.js.map +1 -1
  606. package/dist/profile/state-store.d.ts.map +1 -1
  607. package/dist/profile/state-store.js +13 -9
  608. package/dist/profile/state-store.js.map +1 -1
  609. package/dist/profile/todo-plugin.d.ts.map +1 -1
  610. package/dist/profile/todo-plugin.js +9 -4
  611. package/dist/profile/todo-plugin.js.map +1 -1
  612. package/dist/profiles/builtin-suites.d.ts +13 -6
  613. package/dist/profiles/builtin-suites.d.ts.map +1 -1
  614. package/dist/profiles/builtin-suites.js +15 -6
  615. package/dist/profiles/builtin-suites.js.map +1 -1
  616. package/dist/profiles/suite-loader.d.ts +25 -1
  617. package/dist/profiles/suite-loader.d.ts.map +1 -1
  618. package/dist/profiles/suite-loader.js +34 -9
  619. package/dist/profiles/suite-loader.js.map +1 -1
  620. package/dist/remote/server-entry.d.ts.map +1 -1
  621. package/dist/remote/server-entry.js +3 -2
  622. package/dist/remote/server-entry.js.map +1 -1
  623. package/dist/remote/session-source.d.ts.map +1 -1
  624. package/dist/remote/session-source.js +8 -4
  625. package/dist/remote/session-source.js.map +1 -1
  626. package/dist/share/session-share.d.ts.map +1 -1
  627. package/dist/share/session-share.js +14 -2
  628. package/dist/share/session-share.js.map +1 -1
  629. package/dist/testing/plugin-testkit.d.ts.map +1 -1
  630. package/dist/testing/plugin-testkit.js +4 -3
  631. package/dist/testing/plugin-testkit.js.map +1 -1
  632. package/dist/testing/runtime-delivery-queue.d.ts.map +1 -1
  633. package/dist/testing/runtime-delivery-queue.js +2 -1
  634. package/dist/testing/runtime-delivery-queue.js.map +1 -1
  635. package/dist/testing/session-plugin-testkit.d.ts.map +1 -1
  636. package/dist/testing/session-plugin-testkit.js +10 -7
  637. package/dist/testing/session-plugin-testkit.js.map +1 -1
  638. package/dist/utils/ansi.d.ts.map +1 -1
  639. package/dist/utils/ansi.js +2 -1
  640. package/dist/utils/ansi.js.map +1 -1
  641. package/dist/utils/clipboard.d.ts.map +1 -1
  642. package/dist/utils/clipboard.js +7 -6
  643. package/dist/utils/clipboard.js.map +1 -1
  644. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  645. package/dist/utils/image-resize-worker.js +3 -2
  646. package/dist/utils/image-resize-worker.js.map +1 -1
  647. package/dist/utils/shell.d.ts.map +1 -1
  648. package/dist/utils/shell.js +9 -8
  649. package/dist/utils/shell.js.map +1 -1
  650. package/dist/utils/tools-manager.d.ts.map +1 -1
  651. package/dist/utils/tools-manager.js +23 -13
  652. package/dist/utils/tools-manager.js.map +1 -1
  653. package/dist/utils/version-check.d.ts.map +1 -1
  654. package/dist/utils/version-check.js +5 -1
  655. package/dist/utils/version-check.js.map +1 -1
  656. package/docs/keybindings.md +3 -0
  657. package/docs/quickstart.md +1 -1
  658. package/docs/settings.md +1 -0
  659. package/docs/terminal-setup.md +2 -3
  660. package/docs/usage.md +6 -5
  661. package/examples/extensions/with-deps/package-lock.json +2 -2
  662. package/examples/extensions/with-deps/package.json +1 -1
  663. package/examples/extensions/with-deps/plugin.json +1 -1
  664. package/package.json +1 -1
  665. package/dist/bundle/chunks/chunk-EALJ5DDX.js +0 -1452
@@ -1 +1 @@
1
- {"version":3,"file":"capability-runtime-guards.js","sourceRoot":"","sources":["../../../src/core/extensions/capability-runtime-guards.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@agent-forge/agent-core\";\nimport { SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES } from \"@agent-forge/protocol/subagent\";\nimport type { DurableServiceV1 } from \"../../durable/durable-service.ts\";\nimport type { AgentCompositionLifecycleDispatcher } from \"./agent-composition.ts\";\nimport { cancellationError } from \"./capability-runtime-operation.ts\";\nimport { definitionSnapshot, detachedSnapshot } from \"./capability-runtime-snapshot.ts\";\nimport {\n\tvalidateCredentialRequest,\n\tvalidateInteractionNotifyRequest,\n\tvalidateInteractionRequest,\n\tvalidateInteractionTimeoutMs,\n} from \"./capability-runtime-validation.ts\";\nimport {\n\ttype AgentCompositionAPI,\n\ttype AgentCompositionScopedHostBinding,\n\ttype AgentControllerLease,\n\ttype AgentDefinition,\n\ttype AgentHostPrimitivesFactory,\n\ttype AgentInstance,\n\ttype AgentTaskCreateRequest,\n\ttype AgentTaskHandle,\n\ttype AgentTaskHost,\n\ttype AgentTaskResultV1,\n\ttype AgentTaskStatus,\n\ttype AgentTaskWaitResult,\n\ttype CredentialAPI,\n\tcreateDisposableRegistration,\n\ttype DisposableRegistration,\n\ttype InteractionAPI,\n\ttype InteractionHostV1,\n\ttype InteractionOutcomeV1,\n\ttype OutputArtifactAPI,\n\ttype PluginManifest,\n\ttype SessionAPI,\n\ttype SessionExportArtifact,\n\ttype SessionMessageContent,\n} from \"./public-api.ts\";\n\nexport function guardedSession(\n\tsession: SessionAPI,\n\tassertUsable: () => void,\n\toptions: { allowExport: boolean; allowRevision: boolean },\n): SessionAPI {\n\tconst detachedExportArtifact = (artifact: SessionExportArtifact): SessionExportArtifact => ({\n\t\t...detachedSnapshot(artifact),\n\t\tbytes: new Uint8Array(artifact.bytes),\n\t});\n\tconst exportArtifact = session.exportArtifact;\n\tconst getRevision = session.getRevision;\n\tconst setSessionName = session.setSessionName;\n\tconst getSessionName = session.getSessionName;\n\tconst setLabel = session.setLabel;\n\tconst getLabel = session.getLabel;\n\tconst getActiveTools = session.getActiveTools;\n\tconst setActiveTools = session.setActiveTools;\n\tconst getAllTools = session.getAllTools;\n\tconst getCommands = session.getCommands;\n\tconst getModel = session.getModel;\n\tconst getScopedModels = session.getScopedModels;\n\tconst getThinkingLevel = session.getThinkingLevel;\n\tconst setThinkingLevel = session.setThinkingLevel;\n\tconst setModel = session.setModel;\n\tconst getSystemPrompt = session.getSystemPrompt;\n\tconst getSystemPromptOptions = session.getSystemPromptOptions;\n\tconst getContextUsage = session.getContextUsage;\n\tconst steer = session.steer;\n\tconst queueFollowUp = session.queueFollowUp;\n\tconst sendMessage = session.sendMessage;\n\treturn {\n\t\tgetSessionId: () => {\n\t\t\tassertUsable();\n\t\t\treturn session.getSessionId();\n\t\t},\n\t\t...(options.allowRevision && getRevision\n\t\t\t? {\n\t\t\t\t\tgetRevision: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getRevision());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tgetMessages: () => {\n\t\t\tassertUsable();\n\t\t\treturn detachedSnapshot(session.getMessages());\n\t\t},\n\t\tisIdle: () => {\n\t\t\tassertUsable();\n\t\t\treturn session.isIdle();\n\t\t},\n\t\tprompt: async (text) => {\n\t\t\tassertUsable();\n\t\t\treturn session.prompt(text);\n\t\t},\n\t\tabort: async () => {\n\t\t\tassertUsable();\n\t\t\tawait session.abort();\n\t\t},\n\t\twaitForIdle: async () => {\n\t\t\tassertUsable();\n\t\t\tawait session.waitForIdle();\n\t\t},\n\t\t...(session.compact\n\t\t\t? {\n\t\t\t\t\tcompact: async (customInstructions?: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn session.compact?.(customInstructions);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(session.navigateTree\n\t\t\t? {\n\t\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn session.navigateTree?.(targetId, options);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tappendEntry: (customType, data) => {\n\t\t\tassertUsable();\n\t\t\treturn session.appendEntry(customType, data);\n\t\t},\n\t\t...(setSessionName\n\t\t\t? {\n\t\t\t\t\tsetSessionName: (name: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetSessionName(name);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSessionName\n\t\t\t? {\n\t\t\t\t\tgetSessionName: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getSessionName();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setLabel\n\t\t\t? {\n\t\t\t\t\tsetLabel: (entryId: string, label: string | undefined) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn setLabel(entryId, label);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getLabel\n\t\t\t? {\n\t\t\t\t\tgetLabel: (entryId: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getLabel(entryId);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getActiveTools\n\t\t\t? {\n\t\t\t\t\tgetActiveTools: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getActiveTools();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setActiveTools\n\t\t\t? {\n\t\t\t\t\tsetActiveTools: (toolNames: string[]) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetActiveTools(toolNames);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// Tool parameters are TypeBox schemas carrying symbol values; detachedSnapshot's\n\t\t// structuredClone would throw DataCloneError, so the definition snapshot keeps\n\t\t// symbol values by reference instead.\n\t\t...(getAllTools\n\t\t\t? {\n\t\t\t\t\tgetAllTools: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn definitionSnapshot(getAllTools());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getCommands\n\t\t\t? {\n\t\t\t\t\tgetCommands: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getCommands());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// Model facts are plain data; detachedSnapshot's structuredClone is safe here.\n\t\t...(getModel\n\t\t\t? {\n\t\t\t\t\tgetModel: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getModel());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getScopedModels\n\t\t\t? {\n\t\t\t\t\tgetScopedModels: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getScopedModels());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getThinkingLevel\n\t\t\t? {\n\t\t\t\t\tgetThinkingLevel: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getThinkingLevel();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setThinkingLevel\n\t\t\t? {\n\t\t\t\t\tsetThinkingLevel: (level: ThinkingLevel) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetThinkingLevel(level);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setModel\n\t\t\t? {\n\t\t\t\t\tsetModel: async (modelId: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn setModel(modelId);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSystemPrompt\n\t\t\t? {\n\t\t\t\t\tgetSystemPrompt: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getSystemPrompt();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSystemPromptOptions\n\t\t\t? {\n\t\t\t\t\tgetSystemPromptOptions: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getSystemPromptOptions());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// ContextUsage 是纯数值投影事实;detachedSnapshot 让插件拿到的是冻结副本。\n\t\t...(getContextUsage\n\t\t\t? {\n\t\t\t\t\tgetContextUsage: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getContextUsage());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(steer\n\t\t\t? {\n\t\t\t\t\tsteer: async (text: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait steer(text);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(queueFollowUp\n\t\t\t? {\n\t\t\t\t\tqueueFollowUp: async (text: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait queueFollowUp(text);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// 逐字转发宿主 sendCustomMessage:不在此层发明校验或默认值。\n\t\t...(sendMessage\n\t\t\t? {\n\t\t\t\t\tsendMessage: async (\n\t\t\t\t\t\tmessage: { customType: string; content: SessionMessageContent; display: boolean },\n\t\t\t\t\t\toptions?: { triggerTurn?: boolean },\n\t\t\t\t\t) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait sendMessage(message, options);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tgetBranchEntries: () => {\n\t\t\tassertUsable();\n\t\t\treturn detachedSnapshot(session.getBranchEntries());\n\t\t},\n\t\t...(options.allowExport && exportArtifact\n\t\t\t? {\n\t\t\t\t\texportArtifact: (request) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedExportArtifact(exportArtifact(request));\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n}\n\nexport function guardedCredentials(credentials: CredentialAPI, assertUsable: () => void): CredentialAPI {\n\treturn {\n\t\tresolve: async (request) => {\n\t\t\tassertUsable();\n\t\t\tvalidateCredentialRequest(request);\n\t\t\tconst result = await credentials.resolve(request);\n\t\t\tassertUsable();\n\t\t\treturn result === undefined ? undefined : detachedSnapshot(result);\n\t\t},\n\t};\n}\n\n/**\n * Allowed host-resolved outcome shapes by status, per the frozen 1A.8\n * semantics of {@link InteractionOutcomeV1}.\n */\nconst HOST_INTERACTION_OUTCOME_KEYS: ReadonlyMap<string, readonly string[]> = new Map([\n\t[\"delivered\", [\"status\"]],\n\t[\"answered\", [\"status\", \"value\"]],\n\t[\"cancelled\", [\"status\"]],\n\t[\"timeout\", [\"status\"]],\n\t[\"unavailable\", [\"status\"]],\n]);\n\n/**\n * Validate a host-resolved interaction outcome before it crosses the plugin\n * boundary. The host side is app-owned, so a malformed result is a host bug:\n * it rejects the pending request() instead of silently passing broken data to\n * the plugin (previously any host-resolved value was accepted verbatim).\n * Beyond shape, the frozen production conditions are enforced: `timeout` is\n * only ever produced by `options.timeoutMs` (never by a host), and\n * `delivered` is only valid for notify-kind requests.\n */\nfunction validateHostInteractionOutcome(outcome: InteractionOutcomeV1, requestKind: string): void {\n\tif (!outcome || typeof outcome !== \"object\" || Array.isArray(outcome)) {\n\t\tthrow new Error(\"Interaction prompt outcome must be an object\");\n\t}\n\tconst record: Record<string, unknown> = outcome;\n\tconst status = record.status;\n\tif (typeof status !== \"string\" || !HOST_INTERACTION_OUTCOME_KEYS.has(status)) {\n\t\tthrow new Error(`Interaction prompt outcome has an unknown status: ${String(status)}`);\n\t}\n\tif (status === \"timeout\") {\n\t\tthrow new Error(\n\t\t\t\"Interaction prompt outcome timeout can only be produced by options.timeoutMs, never by the host\",\n\t\t);\n\t}\n\tif (status === \"delivered\" && requestKind !== \"notify\") {\n\t\tthrow new Error(\"Interaction prompt outcome delivered is only valid for notify requests\");\n\t}\n\tconst expectedKeys = HOST_INTERACTION_OUTCOME_KEYS.get(status) ?? [];\n\tconst unexpected = Object.keys(record).filter((key) => !expectedKeys.includes(key));\n\tif (unexpected.length > 0) {\n\t\tthrow new Error(`Interaction prompt outcome has unsupported fields: ${unexpected.join(\", \")}`);\n\t}\n\tif (status === \"answered\" && typeof record.value !== \"boolean\" && typeof record.value !== \"string\") {\n\t\tthrow new Error(\"Interaction prompt outcome answered requires a boolean or string value\");\n\t}\n}\n\n/**\n * Guard the host interaction surface for one plugin API. Requests and outcomes\n * cross the boundary as detached, deep-frozen snapshots, and every pending\n * request settles as \"cancelled\" when the wrapper's registration is disposed.\n * Cancellation is per request: `options.signal` aborts (and `timeoutMs`\n * expires) only the request that declared it — concurrent requests of the same\n * plugin are independent. Owner-level teardown (registration dispose) is the\n * only path that cancels all in-flight requests.\n */\nexport function guardedInteraction(\n\tinteraction: InteractionHostV1,\n\towner: string,\n\tassertUsable: () => void,\n\town: (registration: DisposableRegistration) => DisposableRegistration,\n): InteractionAPI {\n\tconst pendingControllers = new Set<AbortController>();\n\town(\n\t\tcreateDisposableRegistration(\n\t\t\t\"interaction\",\n\t\t\t() => {\n\t\t\t\tfor (const controller of pendingControllers) controller.abort();\n\t\t\t\tpendingControllers.clear();\n\t\t\t\treturn interaction.dispose?.();\n\t\t\t},\n\t\t\t`registration:${owner}:interaction`,\n\t\t),\n\t);\n\treturn {\n\t\tnotify: (request) => {\n\t\t\tassertUsable();\n\t\t\tvalidateInteractionNotifyRequest(request);\n\t\t\tinteraction.notify(detachedSnapshot(request));\n\t\t},\n\t\trequest: (request, options) => {\n\t\t\tassertUsable();\n\t\t\tvalidateInteractionRequest(request);\n\t\t\tvalidateInteractionTimeoutMs(options?.timeoutMs);\n\t\t\tconst externalSignal = options?.signal;\n\t\t\tif (externalSignal?.aborted) return Promise.resolve({ status: \"cancelled\" });\n\n\t\t\tconst hostRequest = detachedSnapshot(request);\n\t\t\tconst controller = new AbortController();\n\t\t\tpendingControllers.add(controller);\n\t\t\treturn new Promise<InteractionOutcomeV1>((resolve, reject) => {\n\t\t\t\tlet settled = false;\n\t\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\t\t\t\tconst onExternalAbort = (): void => {\n\t\t\t\t\t// Settle first so the internal-abort listener below cannot win the\n\t\t\t\t\t// race with \"cancelled\"; then propagate the abort so the host can\n\t\t\t\t\t// dismiss its dialog per its ctx.signal contract.\n\t\t\t\t\tsettle({ status: \"cancelled\" });\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t};\n\t\t\t\tconst onInternalAbort = (): void => settle({ status: \"cancelled\" });\n\t\t\t\tconst cleanup = (): void => {\n\t\t\t\t\tif (timeoutId !== undefined) clearTimeout(timeoutId);\n\t\t\t\t\texternalSignal?.removeEventListener(\"abort\", onExternalAbort);\n\t\t\t\t\tcontroller.signal.removeEventListener(\"abort\", onInternalAbort);\n\t\t\t\t\tpendingControllers.delete(controller);\n\t\t\t\t};\n\t\t\t\tconst settle = (outcome: InteractionOutcomeV1): void => {\n\t\t\t\t\tif (settled) return;\n\t\t\t\t\tsettled = true;\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(outcome);\n\t\t\t\t};\n\t\t\t\texternalSignal?.addEventListener(\"abort\", onExternalAbort, { once: true });\n\t\t\t\tcontroller.signal.addEventListener(\"abort\", onInternalAbort, { once: true });\n\t\t\t\tif (options?.timeoutMs !== undefined) {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tsettle({ status: \"timeout\" });\n\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t}, options.timeoutMs);\n\t\t\t\t}\n\t\t\t\tinteraction.prompt(hostRequest, { signal: controller.signal }).then(\n\t\t\t\t\t(outcome) => {\n\t\t\t\t\t\t// A late host result loses the race against local settlement\n\t\t\t\t\t\t// (external abort, timeout, revoke/dispose) and is discarded.\n\t\t\t\t\t\tif (settled) return;\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// A host result delivered to a plainly revoked API (revoke\n\t\t\t\t\t\t\t// without disposal) is the sanctioned request() rejection.\n\t\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\t\t// A malformed host outcome fails the request visibly\n\t\t\t\t\t\t\t// instead of reaching the plugin.\n\t\t\t\t\t\t\tvalidateHostInteractionOutcome(outcome, hostRequest.kind);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(detachedSnapshot(outcome));\n\t\t\t\t\t},\n\t\t\t\t\t() => settle({ status: \"unavailable\" }),\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport function guardedOutput(output: OutputArtifactAPI, assertUsable: () => void): OutputArtifactAPI {\n\treturn {\n\t\tput: async (input, options) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.put(input, options);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t\tstat: async (ref) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.stat(ref);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t\tread: async (ref, options) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.read(ref, options);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t};\n}\n\n/**\n * Terminal-state classification for agent task runs (D-044 §5.2): an\n * AbortError thrown out of the adapter's run is treated as a cancelled\n * terminal outcome, not a failure, so an aborted child prompt is never\n * recorded as succeeded.\n */\nfunction isCancellationClassError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n\n/** steer 结构化拒绝:带 code 的普通错误,调用方按码分支(未知任务/非运行态/无 steer 面)。 */\nfunction steerError(\n\tcode: \"subagent_message_too_large\" | \"subagent_not_running\" | \"subagent_steer_unsupported\",\n\tmessage: string,\n): Error {\n\treturn Object.assign(new Error(message), { code });\n}\n\nexport class RuntimeAgentTask implements AgentTaskHandle {\n\tpublic readonly id: string;\n\tpublic readonly parentSessionId: string;\n\tpublic readonly session: SessionAPI;\n\tprivate currentStatus: AgentTaskStatus = \"created\";\n\tprivate started = false;\n\tprivate disposed = false;\n\tprivate readonly controller = new AbortController();\n\tprivate runPromise: Promise<void> | undefined;\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly request: AgentTaskCreateRequest;\n\tprivate readonly host: AgentTaskHost;\n\tprivate readonly assertApiUsable: () => void;\n\tprivate readonly agentResults: { readonly store: DurableServiceV1; readonly writerId: string } | undefined;\n\t/**\n\t * Runtime-owned release hook: the runtime keeps each task in its live-task\n\t * set and on the parent fence signal so runtime/plugin disposal can still\n\t * reach in-flight work. Both references must be dropped when the task itself\n\t * is disposed, otherwise every settled task keeps its host — and with it the\n\t * whole child session graph — reachable for the rest of the parent session.\n\t */\n\tprivate readonly releaseRuntimeReferences: (() => void) | undefined;\n\tprivate terminalResult: AgentTaskResultV1 | undefined;\n\n\tconstructor(\n\t\tid: string,\n\t\tparentSessionId: string,\n\t\trequest: AgentTaskCreateRequest,\n\t\thost: AgentTaskHost,\n\t\tassertApiUsable: () => void,\n\t\tallowRevision: boolean,\n\t\tagentResults?: { readonly store: DurableServiceV1; readonly writerId: string },\n\t\treleaseRuntimeReferences?: () => void,\n\t) {\n\t\tthis.id = id;\n\t\tthis.parentSessionId = parentSessionId;\n\t\tthis.request = request;\n\t\tthis.host = host;\n\t\tthis.assertApiUsable = assertApiUsable;\n\t\tthis.agentResults = agentResults;\n\t\tthis.releaseRuntimeReferences = releaseRuntimeReferences;\n\t\tthis.session = guardedSession(host.session, () => this.assertUsable(), {\n\t\t\tallowExport: host.session.exportArtifact !== undefined,\n\t\t\tallowRevision,\n\t\t});\n\t}\n\n\tstatus(): AgentTaskStatus {\n\t\tthis.assertUsable();\n\t\treturn this.currentStatus;\n\t}\n\n\t/**\n\t * 父→子引导(D-060 S4):向**运行中**的任务宿主会话投递一条有界引导消息,\n\t * 复用会话自身 steer 语义,不新增队列。未启动/已终态/宿主无 steer 面都以\n\t * 带 code 的错误拒绝(`subagent_not_running` / `subagent_steer_unsupported`)。\n\t */\n\tasync steer(text: string): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (text.length === 0 || new TextEncoder().encode(text).length > SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES) {\n\t\t\tthrow steerError(\n\t\t\t\t\"subagent_message_too_large\",\n\t\t\t\t`steer text must be 1..${SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES} utf-8 bytes`,\n\t\t\t);\n\t\t}\n\t\tif (!this.started || this.currentStatus !== \"running\") {\n\t\t\tthrow steerError(\"subagent_not_running\", `Agent task is not running: ${this.id}`);\n\t\t}\n\t\tconst steerFn = this.host.session.steer;\n\t\tif (typeof steerFn !== \"function\") {\n\t\t\tthrow steerError(\"subagent_steer_unsupported\", `Agent task host session exposes no steer: ${this.id}`);\n\t\t}\n\t\tawait steerFn.call(this.host.session, text);\n\t}\n\n\t/**\n\t * Run the task's prompt on the host adapter exactly once. Resolves when the\n\t * run settles succeeded or cancelled; rejects only on failure or when a\n\t * terminal outcome could not be persisted. An AbortError escaping\n\t * `host.run` is a cancelled terminal state (D-044 §5.2), not a failure.\n\t */\n\trun(): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (this.started || this.currentStatus !== \"created\") {\n\t\t\tthrow new Error(`Agent task can only run once: ${this.id}`);\n\t\t}\n\t\tthis.started = true;\n\t\tthis.currentStatus = \"running\";\n\t\tthis.runPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.host.run(this.request.prompt, this.controller.signal);\n\t\t\t} catch (error) {\n\t\t\t\tif (this.currentStatus === \"cancelled\") return;\n\t\t\t\tif (isCancellationClassError(error)) {\n\t\t\t\t\tthis.currentStatus = \"cancelled\";\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.settleTerminalResult(\"cancelled\");\n\t\t\t\t\t} catch (persistError) {\n\t\t\t\t\t\t// The task's own cancellation stays the primary rejection;\n\t\t\t\t\t\t// the replay-channel failure is attached as its cause instead\n\t\t\t\t\t\t// of shadowing it.\n\t\t\t\t\t\tif (error instanceof Error && !(\"cause\" in error)) {\n\t\t\t\t\t\t\t(error as { cause?: unknown }).cause = persistError;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new Error(\"Agent task was cancelled and its result could not be persisted\", {\n\t\t\t\t\t\t\tcause: { task: error, persist: persistError },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.currentStatus = \"failed\";\n\t\t\t\ttry {\n\t\t\t\t\tawait this.settleTerminalResult(\"failed\");\n\t\t\t\t} catch (persistError) {\n\t\t\t\t\t// The task's own failure stays the primary rejection; the\n\t\t\t\t\t// replay-channel failure is attached as its cause instead of\n\t\t\t\t\t// shadowing it.\n\t\t\t\t\tif (error instanceof Error && !(\"cause\" in error)) {\n\t\t\t\t\t\t(error as { cause?: unknown }).cause = persistError;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new Error(\"Agent task failed and its result could not be persisted\", {\n\t\t\t\t\t\tcause: { task: error, persist: persistError },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (this.currentStatus === \"running\") {\n\t\t\t\tthis.currentStatus = \"succeeded\";\n\t\t\t\tawait this.settleTerminalResult(\"succeeded\");\n\t\t\t}\n\t\t})();\n\t\tvoid this.runPromise.catch(() => {});\n\t\treturn this.runPromise;\n\t}\n\n\twait(options?: { signal?: AbortSignal }): Promise<AgentTaskWaitResult> {\n\t\tthis.assertUsable();\n\t\tif (this.currentStatus === \"created\") throw new Error(`Agent task has not been started: ${this.id}`);\n\t\tconst completion = this.runPromise ?? Promise.resolve();\n\t\tconst result = completion.then(() => ({\n\t\t\tsessionId: this.host.session.getSessionId(),\n\t\t\tmessages: this.host.session.getMessages(),\n\t\t}));\n\t\tconst signal = options?.signal;\n\t\tif (!signal) return result;\n\t\tif (signal.aborted) return Promise.reject(cancellationError(signal.reason));\n\t\treturn Promise.race([\n\t\t\tresult,\n\t\t\tnew Promise<AgentTaskWaitResult>((_resolve, reject) => {\n\t\t\t\tsignal.addEventListener(\"abort\", () => reject(cancellationError(signal.reason)), { once: true });\n\t\t\t}),\n\t\t]);\n\t}\n\n\tasync cancel(reason = \"cancelled\"): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (this.currentStatus === \"succeeded\" || this.currentStatus === \"failed\" || this.currentStatus === \"cancelled\") {\n\t\t\treturn;\n\t\t}\n\t\tthis.currentStatus = \"cancelled\";\n\t\tthis.controller.abort(reason);\n\t\tawait this.host.cancel(reason);\n\t\tawait this.settleTerminalResult(\"cancelled\");\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= (async () => {\n\t\t\tthis.disposed = true;\n\t\t\ttry {\n\t\t\t\tif (this.currentStatus === \"created\" || this.currentStatus === \"running\") {\n\t\t\t\t\tthis.currentStatus = \"cancelled\";\n\t\t\t\t\tthis.controller.abort(\"agent task disposed\");\n\t\t\t\t\t// The terminal record captures the session messages before the\n\t\t\t\t\t// adapter disposes them; a settle after host.dispose() could read\n\t\t\t\t\t// already-released session state.\n\t\t\t\t\tawait this.settleTerminalResult(\"cancelled\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.host.cancel(\"agent task disposed\");\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tawait this.host.dispose();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait this.host.dispose();\n\t\t\t} finally {\n\t\t\t\t// Also on a failing host disposal: a disposed task must not stay\n\t\t\t\t// reachable from the runtime's live-task set or the parent fence.\n\t\t\t\tthis.releaseRuntimeReferences?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.disposePromise;\n\t}\n\n\tresult(): AgentTaskResultV1 | undefined {\n\t\t// Replay read: no liveness assertion, the frozen terminal outcome\n\t\t// stays readable after dispose.\n\t\treturn this.terminalResult;\n\t}\n\n\t/**\n\t * Capture the frozen terminal outcome at settle: the record is detached and\n\t * deep-frozen so the replay read survives dispose and shares no identity\n\t * with live session state. When a durable replay channel is configured, the\n\t * record is persisted under the deterministic artifact id\n\t * `agent-task:<taskId>`; a persist failure propagates verbatim from the\n\t * originating settle call (run/cancel/dispose) without affecting the\n\t * already-captured in-memory result.\n\t */\n\tprivate async settleTerminalResult(status: AgentTaskStatus): Promise<void> {\n\t\t// detachedSnapshot deep-clones and recursively freezes; the session\n\t\t// snapshot in public-api.ts clones without freezing, so the frozen\n\t\t// terminal outcome requires this projection.\n\t\tconst record = detachedSnapshot({\n\t\t\ttaskId: this.id,\n\t\t\tparentSessionId: this.parentSessionId,\n\t\t\tstatus,\n\t\t\tsessionId: this.host.session.getSessionId(),\n\t\t\tmessages: this.host.session.getMessages(),\n\t\t} as AgentTaskResultV1);\n\t\tthis.terminalResult = record;\n\t\tif (!this.agentResults) return;\n\t\tawait this.agentResults.store.persistArtifact({\n\t\t\twriterId: this.agentResults.writerId,\n\t\t\tartifactId: `agent-task:${this.id}`,\n\t\t\tsessionId: this.parentSessionId,\n\t\t\tdata: record,\n\t\t});\n\t}\n\n\tprivate assertUsable(): void {\n\t\tthis.assertApiUsable();\n\t\tif (this.disposed) throw new Error(`Agent task handle is disposed: ${this.id}`);\n\t}\n}\n\n/**\n * Normalize a capability tool's execute outcome into an AgentToolResult shape.\n *\n * Capability tools execute to plain domain objects ({memoryId, kind, ...}); the\n * agent core's tool-result message reads `result.content` and would surface an\n * empty result to the model. Strings become the text directly, objects without\n * a content array are serialized as stable pretty JSON, results that already\n * carry a content array pass through untouched, and undefined/null keep the\n * existing empty-content normalization the agent core performs.\n */\nexport function normalizeCapabilityToolResult(result: unknown): unknown {\n\tif (result === undefined || result === null) return result;\n\tif (typeof result === \"string\") {\n\t\treturn { content: [{ type: \"text\", text: result }], details: {} };\n\t}\n\tif (typeof result === \"object\" && Array.isArray((result as { content?: unknown }).content)) return result;\n\treturn { content: [{ type: \"text\", text: JSON.stringify(result, null, 2) }], details: {} };\n}\n\n/**\n * Wrap a listed tool definition's execute with {@link normalizeCapabilityToolResult}.\n *\n * listTools() is the only face the model-facing chain reads (the session's\n * capability tool registry), so wrapping here fixes the model result surface\n * for every capability tool at one point while runtime.invokeTool keeps\n * returning raw values to deterministic callers. The wrapper forwards all\n * arguments and propagates rejections untouched (the agent core already maps\n * thrown errors to error tool results).\n */\nexport function withNormalizedToolResultExecute(definition: unknown): unknown {\n\tif (!definition || typeof definition !== \"object\") return definition;\n\tconst execute = (definition as { execute?: unknown }).execute;\n\tif (typeof execute !== \"function\") return definition;\n\tconst run = execute as (...args: unknown[]) => unknown;\n\tconst wrapped = (...args: unknown[]): unknown => {\n\t\tconst outcome = run(...args);\n\t\tif (outcome instanceof Promise) return outcome.then(normalizeCapabilityToolResult);\n\t\treturn normalizeCapabilityToolResult(outcome);\n\t};\n\treturn Object.freeze({ ...(definition as Record<string, unknown>), execute: wrapped });\n}\n\nexport function guardedComposition(\n\tcomposition: AgentCompositionAPI,\n\tassertUsable: () => void,\n\ttrackInstance: (instance: AgentInstance) => void,\n\ttrackDefinition: (definition: AgentDefinition) => void,\n\thostPrimitivesFactory: AgentHostPrimitivesFactory,\n\tlifecycleDispatcher: AgentCompositionLifecycleDispatcher,\n\tmanifest: PluginManifest,\n): AgentCompositionAPI {\n\tconst declaredAgent = (id: string, version: number, role?: string): void => {\n\t\tconst declaration = manifest.agents?.find(\n\t\t\t(agent) => agent.id === id && agent.version === version && (role === undefined || agent.role === role),\n\t\t);\n\t\tif (!declaration) throw new Error(`Agent definition must be declared by plugin manifest: ${id}@${version}`);\n\t};\n\tconst assertOwnedDefinition = (definition: AgentDefinition): void => {\n\t\tdeclaredAgent(definition.id, definition.version, definition.role);\n\t\tif (definition.owner !== undefined && definition.owner !== manifest.id) {\n\t\t\tthrow new Error(`Agent definition owner must match plugin manifest: ${manifest.id}`);\n\t\t}\n\t};\n\tconst assertOwnedParent = (parentInstanceId: string | undefined): void => {\n\t\tif (parentInstanceId === undefined) return;\n\t\tconst parent = composition.listInstances().find((instance) => instance.id === parentInstanceId);\n\t\tif (!parent) return;\n\t\tconst definition = composition.get(parent.definitionId, parent.definitionVersion);\n\t\tif (definition.owner !== undefined && definition.owner !== manifest.id) {\n\t\t\tthrow new Error(`Parent Agent instance must belong to plugin manifest: ${parentInstanceId}`);\n\t\t}\n\t\tassertOwnedDefinition(definition);\n\t};\n\treturn Object.freeze({\n\t\tdefine: <TInput = unknown, TResult = unknown>(definition: AgentDefinition<TInput, TResult>) => {\n\t\t\tassertUsable();\n\t\t\tassertOwnedDefinition(definition);\n\t\t\tconst registered = composition.define({ ...definition, owner: manifest.id });\n\t\t\ttrackDefinition(registered);\n\t\t\treturn registered;\n\t\t},\n\t\tget: <TInput = unknown, TResult = unknown>(id: string, version: number) => {\n\t\t\tassertUsable();\n\t\t\tdeclaredAgent(id, version);\n\t\t\tconst definition = composition.get<TInput, TResult>(id, version);\n\t\t\tassertOwnedDefinition(definition);\n\t\t\treturn definition;\n\t\t},\n\t\tcreate: <TInput = unknown, TResult = unknown>(\n\t\t\tdefinition: AgentDefinition<TInput, TResult> | { id: string; version: number },\n\t\t\toptions?: { id?: string; parentInstanceId?: string },\n\t\t) => {\n\t\t\tassertUsable();\n\t\t\tif (\"run\" in definition) {\n\t\t\t\tassertOwnedDefinition(definition);\n\t\t\t} else {\n\t\t\t\tdeclaredAgent(definition.id, definition.version);\n\t\t\t\tassertOwnedDefinition(composition.get(definition.id, definition.version));\n\t\t\t}\n\t\t\tassertOwnedParent(options?.parentInstanceId);\n\t\t\tconst scopedBinding = composition as Partial<AgentCompositionScopedHostBinding> & {\n\t\t\t\tcreateWithHostPrimitives?: <TInput = unknown, TResult = unknown>(\n\t\t\t\t\tdefinition: AgentDefinition<TInput, TResult> | { id: string; version: number },\n\t\t\t\t\toptions: { id?: string; parentInstanceId?: string } | undefined,\n\t\t\t\t\thostPrimitivesFactory: AgentHostPrimitivesFactory,\n\t\t\t\t\tlifecycleDispatcher?: AgentCompositionLifecycleDispatcher,\n\t\t\t\t) => AgentInstance<TInput, TResult>;\n\t\t\t};\n\t\t\tif (!scopedBinding.createWithHostPrimitives) {\n\t\t\t\tthrow new Error(\"Agent composition runtime does not support owner-scoped host primitives\");\n\t\t\t}\n\t\t\tconst instance = scopedBinding.createWithHostPrimitives<TInput, TResult>(\n\t\t\t\tdefinition,\n\t\t\t\toptions,\n\t\t\t\thostPrimitivesFactory,\n\t\t\t\tlifecycleDispatcher,\n\t\t\t);\n\t\t\tconst guarded = Object.freeze({\n\t\t\t\tid: instance.id,\n\t\t\t\tdefinition: instance.definition,\n\t\t\t\tsnapshot: () => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.snapshot();\n\t\t\t\t},\n\t\t\t\tacquireControllerLease: (owner?: string) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.acquireControllerLease(owner);\n\t\t\t\t},\n\t\t\t\trun: (input: TInput, runOptions?: { lease?: AgentControllerLease; signal?: AbortSignal }) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.run(input, runOptions);\n\t\t\t\t},\n\t\t\t\twait: () => instance.wait(),\n\t\t\t\tcancel: (reason?: string) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.cancel(reason);\n\t\t\t\t},\n\t\t\t\tdispose: () => instance.dispose(),\n\t\t\t}) as AgentInstance<TInput, TResult>;\n\t\t\ttrackInstance(guarded);\n\t\t\treturn guarded;\n\t\t},\n\t\tlistInstances: () => {\n\t\t\tassertUsable();\n\t\t\treturn composition.listInstances().filter((instance) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn composition.get(instance.definitionId, instance.definitionVersion).owner === manifest.id;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t}) satisfies AgentCompositionAPI;\n}\n"]}
1
+ {"version":3,"file":"capability-runtime-guards.js","sourceRoot":"","sources":["../../../src/core/extensions/capability-runtime-guards.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ThinkingLevel } from \"@agent-forge/agent-core\";\nimport { SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES } from \"@agent-forge/protocol/subagent\";\nimport type { DurableServiceV1 } from \"../../durable/durable-service.ts\";\nimport { t } from \"../i18n/index.ts\";\nimport type { AgentCompositionLifecycleDispatcher } from \"./agent-composition.ts\";\nimport { cancellationError } from \"./capability-runtime-operation.ts\";\nimport { definitionSnapshot, detachedSnapshot } from \"./capability-runtime-snapshot.ts\";\nimport {\n\tvalidateCredentialRequest,\n\tvalidateInteractionNotifyRequest,\n\tvalidateInteractionRequest,\n\tvalidateInteractionTimeoutMs,\n} from \"./capability-runtime-validation.ts\";\nimport {\n\ttype AgentCompositionAPI,\n\ttype AgentCompositionScopedHostBinding,\n\ttype AgentControllerLease,\n\ttype AgentDefinition,\n\ttype AgentHostPrimitivesFactory,\n\ttype AgentInstance,\n\ttype AgentTaskCreateRequest,\n\ttype AgentTaskHandle,\n\ttype AgentTaskHost,\n\ttype AgentTaskResultV1,\n\ttype AgentTaskStatus,\n\ttype AgentTaskWaitResult,\n\ttype CredentialAPI,\n\tcreateDisposableRegistration,\n\ttype DisposableRegistration,\n\ttype InteractionAPI,\n\ttype InteractionHostV1,\n\ttype InteractionOutcomeV1,\n\ttype OutputArtifactAPI,\n\ttype PluginManifest,\n\ttype SessionAPI,\n\ttype SessionExportArtifact,\n\ttype SessionMessageContent,\n} from \"./public-api.ts\";\n\nexport function guardedSession(\n\tsession: SessionAPI,\n\tassertUsable: () => void,\n\toptions: { allowExport: boolean; allowRevision: boolean },\n): SessionAPI {\n\tconst detachedExportArtifact = (artifact: SessionExportArtifact): SessionExportArtifact => ({\n\t\t...detachedSnapshot(artifact),\n\t\tbytes: new Uint8Array(artifact.bytes),\n\t});\n\tconst exportArtifact = session.exportArtifact;\n\tconst getRevision = session.getRevision;\n\tconst setSessionName = session.setSessionName;\n\tconst getSessionName = session.getSessionName;\n\tconst setLabel = session.setLabel;\n\tconst getLabel = session.getLabel;\n\tconst getActiveTools = session.getActiveTools;\n\tconst setActiveTools = session.setActiveTools;\n\tconst getAllTools = session.getAllTools;\n\tconst getCommands = session.getCommands;\n\tconst getModel = session.getModel;\n\tconst getScopedModels = session.getScopedModels;\n\tconst getThinkingLevel = session.getThinkingLevel;\n\tconst setThinkingLevel = session.setThinkingLevel;\n\tconst setModel = session.setModel;\n\tconst getSystemPrompt = session.getSystemPrompt;\n\tconst getSystemPromptOptions = session.getSystemPromptOptions;\n\tconst getContextUsage = session.getContextUsage;\n\tconst steer = session.steer;\n\tconst queueFollowUp = session.queueFollowUp;\n\tconst sendMessage = session.sendMessage;\n\treturn {\n\t\tgetSessionId: () => {\n\t\t\tassertUsable();\n\t\t\treturn session.getSessionId();\n\t\t},\n\t\t...(options.allowRevision && getRevision\n\t\t\t? {\n\t\t\t\t\tgetRevision: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getRevision());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tgetMessages: () => {\n\t\t\tassertUsable();\n\t\t\treturn detachedSnapshot(session.getMessages());\n\t\t},\n\t\tisIdle: () => {\n\t\t\tassertUsable();\n\t\t\treturn session.isIdle();\n\t\t},\n\t\tprompt: async (text) => {\n\t\t\tassertUsable();\n\t\t\treturn session.prompt(text);\n\t\t},\n\t\tabort: async () => {\n\t\t\tassertUsable();\n\t\t\tawait session.abort();\n\t\t},\n\t\twaitForIdle: async () => {\n\t\t\tassertUsable();\n\t\t\tawait session.waitForIdle();\n\t\t},\n\t\t...(session.compact\n\t\t\t? {\n\t\t\t\t\tcompact: async (customInstructions?: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn session.compact?.(customInstructions);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(session.navigateTree\n\t\t\t? {\n\t\t\t\t\tnavigateTree: async (targetId, options) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn session.navigateTree?.(targetId, options);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tappendEntry: (customType, data) => {\n\t\t\tassertUsable();\n\t\t\treturn session.appendEntry(customType, data);\n\t\t},\n\t\t...(setSessionName\n\t\t\t? {\n\t\t\t\t\tsetSessionName: (name: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetSessionName(name);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSessionName\n\t\t\t? {\n\t\t\t\t\tgetSessionName: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getSessionName();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setLabel\n\t\t\t? {\n\t\t\t\t\tsetLabel: (entryId: string, label: string | undefined) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn setLabel(entryId, label);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getLabel\n\t\t\t? {\n\t\t\t\t\tgetLabel: (entryId: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getLabel(entryId);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getActiveTools\n\t\t\t? {\n\t\t\t\t\tgetActiveTools: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getActiveTools();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setActiveTools\n\t\t\t? {\n\t\t\t\t\tsetActiveTools: (toolNames: string[]) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetActiveTools(toolNames);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// Tool parameters are TypeBox schemas carrying symbol values; detachedSnapshot's\n\t\t// structuredClone would throw DataCloneError, so the definition snapshot keeps\n\t\t// symbol values by reference instead.\n\t\t...(getAllTools\n\t\t\t? {\n\t\t\t\t\tgetAllTools: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn definitionSnapshot(getAllTools());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getCommands\n\t\t\t? {\n\t\t\t\t\tgetCommands: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getCommands());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// Model facts are plain data; detachedSnapshot's structuredClone is safe here.\n\t\t...(getModel\n\t\t\t? {\n\t\t\t\t\tgetModel: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getModel());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getScopedModels\n\t\t\t? {\n\t\t\t\t\tgetScopedModels: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getScopedModels());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getThinkingLevel\n\t\t\t? {\n\t\t\t\t\tgetThinkingLevel: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getThinkingLevel();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setThinkingLevel\n\t\t\t? {\n\t\t\t\t\tsetThinkingLevel: (level: ThinkingLevel) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tsetThinkingLevel(level);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(setModel\n\t\t\t? {\n\t\t\t\t\tsetModel: async (modelId: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn setModel(modelId);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSystemPrompt\n\t\t\t? {\n\t\t\t\t\tgetSystemPrompt: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn getSystemPrompt();\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(getSystemPromptOptions\n\t\t\t? {\n\t\t\t\t\tgetSystemPromptOptions: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getSystemPromptOptions());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// ContextUsage 是纯数值投影事实;detachedSnapshot 让插件拿到的是冻结副本。\n\t\t...(getContextUsage\n\t\t\t? {\n\t\t\t\t\tgetContextUsage: () => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedSnapshot(getContextUsage());\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(steer\n\t\t\t? {\n\t\t\t\t\tsteer: async (text: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait steer(text);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(queueFollowUp\n\t\t\t? {\n\t\t\t\t\tqueueFollowUp: async (text: string) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait queueFollowUp(text);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\t// 逐字转发宿主 sendCustomMessage:不在此层发明校验或默认值。\n\t\t...(sendMessage\n\t\t\t? {\n\t\t\t\t\tsendMessage: async (\n\t\t\t\t\t\tmessage: { customType: string; content: SessionMessageContent; display: boolean },\n\t\t\t\t\t\toptions?: { triggerTurn?: boolean },\n\t\t\t\t\t) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\tawait sendMessage(message, options);\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t\tgetBranchEntries: () => {\n\t\t\tassertUsable();\n\t\t\treturn detachedSnapshot(session.getBranchEntries());\n\t\t},\n\t\t...(options.allowExport && exportArtifact\n\t\t\t? {\n\t\t\t\t\texportArtifact: (request) => {\n\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\treturn detachedExportArtifact(exportArtifact(request));\n\t\t\t\t\t},\n\t\t\t\t}\n\t\t\t: {}),\n\t};\n}\n\nexport function guardedCredentials(credentials: CredentialAPI, assertUsable: () => void): CredentialAPI {\n\treturn {\n\t\tresolve: async (request) => {\n\t\t\tassertUsable();\n\t\t\tvalidateCredentialRequest(request);\n\t\t\tconst result = await credentials.resolve(request);\n\t\t\tassertUsable();\n\t\t\treturn result === undefined ? undefined : detachedSnapshot(result);\n\t\t},\n\t};\n}\n\n/**\n * Allowed host-resolved outcome shapes by status, per the frozen 1A.8\n * semantics of {@link InteractionOutcomeV1}.\n */\nconst HOST_INTERACTION_OUTCOME_KEYS: ReadonlyMap<string, readonly string[]> = new Map([\n\t[\"delivered\", [\"status\"]],\n\t[\"answered\", [\"status\", \"value\"]],\n\t[\"cancelled\", [\"status\"]],\n\t[\"timeout\", [\"status\"]],\n\t[\"unavailable\", [\"status\"]],\n]);\n\n/**\n * Validate a host-resolved interaction outcome before it crosses the plugin\n * boundary. The host side is app-owned, so a malformed result is a host bug:\n * it rejects the pending request() instead of silently passing broken data to\n * the plugin (previously any host-resolved value was accepted verbatim).\n * Beyond shape, the frozen production conditions are enforced: `timeout` is\n * only ever produced by `options.timeoutMs` (never by a host), and\n * `delivered` is only valid for notify-kind requests.\n */\nfunction validateHostInteractionOutcome(outcome: InteractionOutcomeV1, requestKind: string): void {\n\tif (!outcome || typeof outcome !== \"object\" || Array.isArray(outcome)) {\n\t\tthrow new Error(t(\"Interaction prompt outcome must be an object\"));\n\t}\n\tconst record: Record<string, unknown> = outcome;\n\tconst status = record.status;\n\tif (typeof status !== \"string\" || !HOST_INTERACTION_OUTCOME_KEYS.has(status)) {\n\t\tthrow new Error(t(\"Interaction prompt outcome has an unknown status: {value}\", { value: String(status) }));\n\t}\n\tif (status === \"timeout\") {\n\t\tthrow new Error(\n\t\t\tt(\"Interaction prompt outcome timeout can only be produced by options.timeoutMs, never by the host\"),\n\t\t);\n\t}\n\tif (status === \"delivered\" && requestKind !== \"notify\") {\n\t\tthrow new Error(t(\"Interaction prompt outcome delivered is only valid for notify requests\"));\n\t}\n\tconst expectedKeys = HOST_INTERACTION_OUTCOME_KEYS.get(status) ?? [];\n\tconst unexpected = Object.keys(record).filter((key) => !expectedKeys.includes(key));\n\tif (unexpected.length > 0) {\n\t\tthrow new Error(\n\t\t\tt(\"Interaction prompt outcome has unsupported fields: {value}\", { value: unexpected.join(\", \") }),\n\t\t);\n\t}\n\tif (status === \"answered\" && typeof record.value !== \"boolean\" && typeof record.value !== \"string\") {\n\t\tthrow new Error(t(\"Interaction prompt outcome answered requires a boolean or string value\"));\n\t}\n}\n\n/**\n * Guard the host interaction surface for one plugin API. Requests and outcomes\n * cross the boundary as detached, deep-frozen snapshots, and every pending\n * request settles as \"cancelled\" when the wrapper's registration is disposed.\n * Cancellation is per request: `options.signal` aborts (and `timeoutMs`\n * expires) only the request that declared it — concurrent requests of the same\n * plugin are independent. Owner-level teardown (registration dispose) is the\n * only path that cancels all in-flight requests.\n */\nexport function guardedInteraction(\n\tinteraction: InteractionHostV1,\n\towner: string,\n\tassertUsable: () => void,\n\town: (registration: DisposableRegistration) => DisposableRegistration,\n): InteractionAPI {\n\tconst pendingControllers = new Set<AbortController>();\n\town(\n\t\tcreateDisposableRegistration(\n\t\t\t\"interaction\",\n\t\t\t() => {\n\t\t\t\tfor (const controller of pendingControllers) controller.abort();\n\t\t\t\tpendingControllers.clear();\n\t\t\t\treturn interaction.dispose?.();\n\t\t\t},\n\t\t\t`registration:${owner}:interaction`,\n\t\t),\n\t);\n\treturn {\n\t\tnotify: (request) => {\n\t\t\tassertUsable();\n\t\t\tvalidateInteractionNotifyRequest(request);\n\t\t\tinteraction.notify(detachedSnapshot(request));\n\t\t},\n\t\trequest: (request, options) => {\n\t\t\tassertUsable();\n\t\t\tvalidateInteractionRequest(request);\n\t\t\tvalidateInteractionTimeoutMs(options?.timeoutMs);\n\t\t\tconst externalSignal = options?.signal;\n\t\t\tif (externalSignal?.aborted) return Promise.resolve({ status: \"cancelled\" });\n\n\t\t\tconst hostRequest = detachedSnapshot(request);\n\t\t\tconst controller = new AbortController();\n\t\t\tpendingControllers.add(controller);\n\t\t\treturn new Promise<InteractionOutcomeV1>((resolve, reject) => {\n\t\t\t\tlet settled = false;\n\t\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | undefined;\n\t\t\t\tconst onExternalAbort = (): void => {\n\t\t\t\t\t// Settle first so the internal-abort listener below cannot win the\n\t\t\t\t\t// race with \"cancelled\"; then propagate the abort so the host can\n\t\t\t\t\t// dismiss its dialog per its ctx.signal contract.\n\t\t\t\t\tsettle({ status: \"cancelled\" });\n\t\t\t\t\tcontroller.abort();\n\t\t\t\t};\n\t\t\t\tconst onInternalAbort = (): void => settle({ status: \"cancelled\" });\n\t\t\t\tconst cleanup = (): void => {\n\t\t\t\t\tif (timeoutId !== undefined) clearTimeout(timeoutId);\n\t\t\t\t\texternalSignal?.removeEventListener(\"abort\", onExternalAbort);\n\t\t\t\t\tcontroller.signal.removeEventListener(\"abort\", onInternalAbort);\n\t\t\t\t\tpendingControllers.delete(controller);\n\t\t\t\t};\n\t\t\t\tconst settle = (outcome: InteractionOutcomeV1): void => {\n\t\t\t\t\tif (settled) return;\n\t\t\t\t\tsettled = true;\n\t\t\t\t\tcleanup();\n\t\t\t\t\tresolve(outcome);\n\t\t\t\t};\n\t\t\t\texternalSignal?.addEventListener(\"abort\", onExternalAbort, { once: true });\n\t\t\t\tcontroller.signal.addEventListener(\"abort\", onInternalAbort, { once: true });\n\t\t\t\tif (options?.timeoutMs !== undefined) {\n\t\t\t\t\ttimeoutId = setTimeout(() => {\n\t\t\t\t\t\tsettle({ status: \"timeout\" });\n\t\t\t\t\t\tcontroller.abort();\n\t\t\t\t\t}, options.timeoutMs);\n\t\t\t\t}\n\t\t\t\tinteraction.prompt(hostRequest, { signal: controller.signal }).then(\n\t\t\t\t\t(outcome) => {\n\t\t\t\t\t\t// A late host result loses the race against local settlement\n\t\t\t\t\t\t// (external abort, timeout, revoke/dispose) and is discarded.\n\t\t\t\t\t\tif (settled) return;\n\t\t\t\t\t\tsettled = true;\n\t\t\t\t\t\tcleanup();\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t// A host result delivered to a plainly revoked API (revoke\n\t\t\t\t\t\t\t// without disposal) is the sanctioned request() rejection.\n\t\t\t\t\t\t\tassertUsable();\n\t\t\t\t\t\t\t// A malformed host outcome fails the request visibly\n\t\t\t\t\t\t\t// instead of reaching the plugin.\n\t\t\t\t\t\t\tvalidateHostInteractionOutcome(outcome, hostRequest.kind);\n\t\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve(detachedSnapshot(outcome));\n\t\t\t\t\t},\n\t\t\t\t\t() => settle({ status: \"unavailable\" }),\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport function guardedOutput(output: OutputArtifactAPI, assertUsable: () => void): OutputArtifactAPI {\n\treturn {\n\t\tput: async (input, options) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.put(input, options);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t\tstat: async (ref) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.stat(ref);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t\tread: async (ref, options) => {\n\t\t\tassertUsable();\n\t\t\tconst result = await output.read(ref, options);\n\t\t\tassertUsable();\n\t\t\treturn result;\n\t\t},\n\t};\n}\n\n/**\n * Terminal-state classification for agent task runs (D-044 §5.2): an\n * AbortError thrown out of the adapter's run is treated as a cancelled\n * terminal outcome, not a failure, so an aborted child prompt is never\n * recorded as succeeded.\n */\nfunction isCancellationClassError(error: unknown): boolean {\n\treturn error instanceof Error && error.name === \"AbortError\";\n}\n\n/** steer 结构化拒绝:带 code 的普通错误,调用方按码分支(未知任务/非运行态/无 steer 面)。 */\nfunction steerError(\n\tcode: \"subagent_message_too_large\" | \"subagent_not_running\" | \"subagent_steer_unsupported\",\n\tmessage: string,\n): Error {\n\treturn Object.assign(new Error(message), { code });\n}\n\nexport class RuntimeAgentTask implements AgentTaskHandle {\n\tpublic readonly id: string;\n\tpublic readonly parentSessionId: string;\n\tpublic readonly session: SessionAPI;\n\tprivate currentStatus: AgentTaskStatus = \"created\";\n\tprivate started = false;\n\tprivate disposed = false;\n\tprivate readonly controller = new AbortController();\n\tprivate runPromise: Promise<void> | undefined;\n\tprivate disposePromise: Promise<void> | undefined;\n\tprivate readonly request: AgentTaskCreateRequest;\n\tprivate readonly host: AgentTaskHost;\n\tprivate readonly assertApiUsable: () => void;\n\tprivate readonly agentResults: { readonly store: DurableServiceV1; readonly writerId: string } | undefined;\n\t/**\n\t * Runtime-owned release hook: the runtime keeps each task in its live-task\n\t * set and on the parent fence signal so runtime/plugin disposal can still\n\t * reach in-flight work. Both references must be dropped when the task itself\n\t * is disposed, otherwise every settled task keeps its host — and with it the\n\t * whole child session graph — reachable for the rest of the parent session.\n\t */\n\tprivate readonly releaseRuntimeReferences: (() => void) | undefined;\n\tprivate terminalResult: AgentTaskResultV1 | undefined;\n\n\tconstructor(\n\t\tid: string,\n\t\tparentSessionId: string,\n\t\trequest: AgentTaskCreateRequest,\n\t\thost: AgentTaskHost,\n\t\tassertApiUsable: () => void,\n\t\tallowRevision: boolean,\n\t\tagentResults?: { readonly store: DurableServiceV1; readonly writerId: string },\n\t\treleaseRuntimeReferences?: () => void,\n\t) {\n\t\tthis.id = id;\n\t\tthis.parentSessionId = parentSessionId;\n\t\tthis.request = request;\n\t\tthis.host = host;\n\t\tthis.assertApiUsable = assertApiUsable;\n\t\tthis.agentResults = agentResults;\n\t\tthis.releaseRuntimeReferences = releaseRuntimeReferences;\n\t\tthis.session = guardedSession(host.session, () => this.assertUsable(), {\n\t\t\tallowExport: host.session.exportArtifact !== undefined,\n\t\t\tallowRevision,\n\t\t});\n\t}\n\n\tstatus(): AgentTaskStatus {\n\t\tthis.assertUsable();\n\t\treturn this.currentStatus;\n\t}\n\n\t/**\n\t * 父→子引导(D-060 S4):向**运行中**的任务宿主会话投递一条有界引导消息,\n\t * 复用会话自身 steer 语义,不新增队列。未启动/已终态/宿主无 steer 面都以\n\t * 带 code 的错误拒绝(`subagent_not_running` / `subagent_steer_unsupported`)。\n\t */\n\tasync steer(text: string): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (text.length === 0 || new TextEncoder().encode(text).length > SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES) {\n\t\t\tthrow steerError(\n\t\t\t\t\"subagent_message_too_large\",\n\t\t\t\t`steer text must be 1..${SUBAGENT_MAILBOX_MAX_MESSAGE_BYTES} utf-8 bytes`,\n\t\t\t);\n\t\t}\n\t\tif (!this.started || this.currentStatus !== \"running\") {\n\t\t\tthrow steerError(\"subagent_not_running\", `Agent task is not running: ${this.id}`);\n\t\t}\n\t\tconst steerFn = this.host.session.steer;\n\t\tif (typeof steerFn !== \"function\") {\n\t\t\tthrow steerError(\"subagent_steer_unsupported\", `Agent task host session exposes no steer: ${this.id}`);\n\t\t}\n\t\tawait steerFn.call(this.host.session, text);\n\t}\n\n\t/**\n\t * Run the task's prompt on the host adapter exactly once. Resolves when the\n\t * run settles succeeded or cancelled; rejects only on failure or when a\n\t * terminal outcome could not be persisted. An AbortError escaping\n\t * `host.run` is a cancelled terminal state (D-044 §5.2), not a failure.\n\t */\n\trun(): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (this.started || this.currentStatus !== \"created\") {\n\t\t\tthrow new Error(t(\"Agent task can only run once: {id}\", { id: this.id }));\n\t\t}\n\t\tthis.started = true;\n\t\tthis.currentStatus = \"running\";\n\t\tthis.runPromise = (async () => {\n\t\t\ttry {\n\t\t\t\tawait this.host.run(this.request.prompt, this.controller.signal);\n\t\t\t} catch (error) {\n\t\t\t\tif (this.currentStatus === \"cancelled\") return;\n\t\t\t\tif (isCancellationClassError(error)) {\n\t\t\t\t\tthis.currentStatus = \"cancelled\";\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.settleTerminalResult(\"cancelled\");\n\t\t\t\t\t} catch (persistError) {\n\t\t\t\t\t\t// The task's own cancellation stays the primary rejection;\n\t\t\t\t\t\t// the replay-channel failure is attached as its cause instead\n\t\t\t\t\t\t// of shadowing it.\n\t\t\t\t\t\tif (error instanceof Error && !(\"cause\" in error)) {\n\t\t\t\t\t\t\t(error as { cause?: unknown }).cause = persistError;\n\t\t\t\t\t\t\tthrow error;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow new Error(t(\"Agent task was cancelled and its result could not be persisted\"), {\n\t\t\t\t\t\t\tcause: { task: error, persist: persistError },\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.currentStatus = \"failed\";\n\t\t\t\ttry {\n\t\t\t\t\tawait this.settleTerminalResult(\"failed\");\n\t\t\t\t} catch (persistError) {\n\t\t\t\t\t// The task's own failure stays the primary rejection; the\n\t\t\t\t\t// replay-channel failure is attached as its cause instead of\n\t\t\t\t\t// shadowing it.\n\t\t\t\t\tif (error instanceof Error && !(\"cause\" in error)) {\n\t\t\t\t\t\t(error as { cause?: unknown }).cause = persistError;\n\t\t\t\t\t\tthrow error;\n\t\t\t\t\t}\n\t\t\t\t\tthrow new Error(t(\"Agent task failed and its result could not be persisted\"), {\n\t\t\t\t\t\tcause: { task: error, persist: persistError },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tif (this.currentStatus === \"running\") {\n\t\t\t\tthis.currentStatus = \"succeeded\";\n\t\t\t\tawait this.settleTerminalResult(\"succeeded\");\n\t\t\t}\n\t\t})();\n\t\tvoid this.runPromise.catch(() => {});\n\t\treturn this.runPromise;\n\t}\n\n\twait(options?: { signal?: AbortSignal }): Promise<AgentTaskWaitResult> {\n\t\tthis.assertUsable();\n\t\tif (this.currentStatus === \"created\")\n\t\t\tthrow new Error(t(\"Agent task has not been started: {id}\", { id: this.id }));\n\t\tconst completion = this.runPromise ?? Promise.resolve();\n\t\tconst result = completion.then(() => ({\n\t\t\tsessionId: this.host.session.getSessionId(),\n\t\t\tmessages: this.host.session.getMessages(),\n\t\t}));\n\t\tconst signal = options?.signal;\n\t\tif (!signal) return result;\n\t\tif (signal.aborted) return Promise.reject(cancellationError(signal.reason));\n\t\treturn Promise.race([\n\t\t\tresult,\n\t\t\tnew Promise<AgentTaskWaitResult>((_resolve, reject) => {\n\t\t\t\tsignal.addEventListener(\"abort\", () => reject(cancellationError(signal.reason)), { once: true });\n\t\t\t}),\n\t\t]);\n\t}\n\n\tasync cancel(reason = \"cancelled\"): Promise<void> {\n\t\tthis.assertUsable();\n\t\tif (this.currentStatus === \"succeeded\" || this.currentStatus === \"failed\" || this.currentStatus === \"cancelled\") {\n\t\t\treturn;\n\t\t}\n\t\tthis.currentStatus = \"cancelled\";\n\t\tthis.controller.abort(reason);\n\t\tawait this.host.cancel(reason);\n\t\tawait this.settleTerminalResult(\"cancelled\");\n\t}\n\n\tdispose(): Promise<void> {\n\t\tthis.disposePromise ??= (async () => {\n\t\t\tthis.disposed = true;\n\t\t\ttry {\n\t\t\t\tif (this.currentStatus === \"created\" || this.currentStatus === \"running\") {\n\t\t\t\t\tthis.currentStatus = \"cancelled\";\n\t\t\t\t\tthis.controller.abort(\"agent task disposed\");\n\t\t\t\t\t// The terminal record captures the session messages before the\n\t\t\t\t\t// adapter disposes them; a settle after host.dispose() could read\n\t\t\t\t\t// already-released session state.\n\t\t\t\t\tawait this.settleTerminalResult(\"cancelled\");\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait this.host.cancel(\"agent task disposed\");\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tawait this.host.dispose();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait this.host.dispose();\n\t\t\t} finally {\n\t\t\t\t// Also on a failing host disposal: a disposed task must not stay\n\t\t\t\t// reachable from the runtime's live-task set or the parent fence.\n\t\t\t\tthis.releaseRuntimeReferences?.();\n\t\t\t}\n\t\t})();\n\t\treturn this.disposePromise;\n\t}\n\n\tresult(): AgentTaskResultV1 | undefined {\n\t\t// Replay read: no liveness assertion, the frozen terminal outcome\n\t\t// stays readable after dispose.\n\t\treturn this.terminalResult;\n\t}\n\n\t/**\n\t * Capture the frozen terminal outcome at settle: the record is detached and\n\t * deep-frozen so the replay read survives dispose and shares no identity\n\t * with live session state. When a durable replay channel is configured, the\n\t * record is persisted under the deterministic artifact id\n\t * `agent-task:<taskId>`; a persist failure propagates verbatim from the\n\t * originating settle call (run/cancel/dispose) without affecting the\n\t * already-captured in-memory result.\n\t */\n\tprivate async settleTerminalResult(status: AgentTaskStatus): Promise<void> {\n\t\t// detachedSnapshot deep-clones and recursively freezes; the session\n\t\t// snapshot in public-api.ts clones without freezing, so the frozen\n\t\t// terminal outcome requires this projection.\n\t\tconst record = detachedSnapshot({\n\t\t\ttaskId: this.id,\n\t\t\tparentSessionId: this.parentSessionId,\n\t\t\tstatus,\n\t\t\tsessionId: this.host.session.getSessionId(),\n\t\t\tmessages: this.host.session.getMessages(),\n\t\t} as AgentTaskResultV1);\n\t\tthis.terminalResult = record;\n\t\tif (!this.agentResults) return;\n\t\tawait this.agentResults.store.persistArtifact({\n\t\t\twriterId: this.agentResults.writerId,\n\t\t\tartifactId: `agent-task:${this.id}`,\n\t\t\tsessionId: this.parentSessionId,\n\t\t\tdata: record,\n\t\t});\n\t}\n\n\tprivate assertUsable(): void {\n\t\tthis.assertApiUsable();\n\t\tif (this.disposed) throw new Error(t(\"Agent task handle is disposed: {id}\", { id: this.id }));\n\t}\n}\n\n/**\n * Normalize a capability tool's execute outcome into an AgentToolResult shape.\n *\n * Capability tools execute to plain domain objects ({memoryId, kind, ...}); the\n * agent core's tool-result message reads `result.content` and would surface an\n * empty result to the model. Strings become the text directly, objects without\n * a content array are serialized as stable pretty JSON, results that already\n * carry a content array pass through untouched, and undefined/null keep the\n * existing empty-content normalization the agent core performs.\n */\nexport function normalizeCapabilityToolResult(result: unknown): unknown {\n\tif (result === undefined || result === null) return result;\n\tif (typeof result === \"string\") {\n\t\treturn { content: [{ type: \"text\", text: result }], details: {} };\n\t}\n\tif (typeof result === \"object\" && Array.isArray((result as { content?: unknown }).content)) return result;\n\treturn { content: [{ type: \"text\", text: JSON.stringify(result, null, 2) }], details: {} };\n}\n\n/**\n * Wrap a listed tool definition's execute with {@link normalizeCapabilityToolResult}.\n *\n * listTools() is the only face the model-facing chain reads (the session's\n * capability tool registry), so wrapping here fixes the model result surface\n * for every capability tool at one point while runtime.invokeTool keeps\n * returning raw values to deterministic callers. The wrapper forwards all\n * arguments and propagates rejections untouched (the agent core already maps\n * thrown errors to error tool results).\n */\nexport function withNormalizedToolResultExecute(definition: unknown): unknown {\n\tif (!definition || typeof definition !== \"object\") return definition;\n\tconst execute = (definition as { execute?: unknown }).execute;\n\tif (typeof execute !== \"function\") return definition;\n\tconst run = execute as (...args: unknown[]) => unknown;\n\tconst wrapped = (...args: unknown[]): unknown => {\n\t\tconst outcome = run(...args);\n\t\tif (outcome instanceof Promise) return outcome.then(normalizeCapabilityToolResult);\n\t\treturn normalizeCapabilityToolResult(outcome);\n\t};\n\treturn Object.freeze({ ...(definition as Record<string, unknown>), execute: wrapped });\n}\n\nexport function guardedComposition(\n\tcomposition: AgentCompositionAPI,\n\tassertUsable: () => void,\n\ttrackInstance: (instance: AgentInstance) => void,\n\ttrackDefinition: (definition: AgentDefinition) => void,\n\thostPrimitivesFactory: AgentHostPrimitivesFactory,\n\tlifecycleDispatcher: AgentCompositionLifecycleDispatcher,\n\tmanifest: PluginManifest,\n): AgentCompositionAPI {\n\tconst declaredAgent = (id: string, version: number, role?: string): void => {\n\t\tconst declaration = manifest.agents?.find(\n\t\t\t(agent) => agent.id === id && agent.version === version && (role === undefined || agent.role === role),\n\t\t);\n\t\tif (!declaration)\n\t\t\tthrow new Error(t(\"Agent definition must be declared by plugin manifest: {id}@{version}\", { id, version }));\n\t};\n\tconst assertOwnedDefinition = (definition: AgentDefinition): void => {\n\t\tdeclaredAgent(definition.id, definition.version, definition.role);\n\t\tif (definition.owner !== undefined && definition.owner !== manifest.id) {\n\t\t\tthrow new Error(t(\"Agent definition owner must match plugin manifest: {id}\", { id: manifest.id }));\n\t\t}\n\t};\n\tconst assertOwnedParent = (parentInstanceId: string | undefined): void => {\n\t\tif (parentInstanceId === undefined) return;\n\t\tconst parent = composition.listInstances().find((instance) => instance.id === parentInstanceId);\n\t\tif (!parent) return;\n\t\tconst definition = composition.get(parent.definitionId, parent.definitionVersion);\n\t\tif (definition.owner !== undefined && definition.owner !== manifest.id) {\n\t\t\tthrow new Error(\n\t\t\t\tt(\"Parent Agent instance must belong to plugin manifest: {parentInstanceId}\", { parentInstanceId }),\n\t\t\t);\n\t\t}\n\t\tassertOwnedDefinition(definition);\n\t};\n\treturn Object.freeze({\n\t\tdefine: <TInput = unknown, TResult = unknown>(definition: AgentDefinition<TInput, TResult>) => {\n\t\t\tassertUsable();\n\t\t\tassertOwnedDefinition(definition);\n\t\t\tconst registered = composition.define({ ...definition, owner: manifest.id });\n\t\t\ttrackDefinition(registered);\n\t\t\treturn registered;\n\t\t},\n\t\tget: <TInput = unknown, TResult = unknown>(id: string, version: number) => {\n\t\t\tassertUsable();\n\t\t\tdeclaredAgent(id, version);\n\t\t\tconst definition = composition.get<TInput, TResult>(id, version);\n\t\t\tassertOwnedDefinition(definition);\n\t\t\treturn definition;\n\t\t},\n\t\tcreate: <TInput = unknown, TResult = unknown>(\n\t\t\tdefinition: AgentDefinition<TInput, TResult> | { id: string; version: number },\n\t\t\toptions?: { id?: string; parentInstanceId?: string },\n\t\t) => {\n\t\t\tassertUsable();\n\t\t\tif (\"run\" in definition) {\n\t\t\t\tassertOwnedDefinition(definition);\n\t\t\t} else {\n\t\t\t\tdeclaredAgent(definition.id, definition.version);\n\t\t\t\tassertOwnedDefinition(composition.get(definition.id, definition.version));\n\t\t\t}\n\t\t\tassertOwnedParent(options?.parentInstanceId);\n\t\t\tconst scopedBinding = composition as Partial<AgentCompositionScopedHostBinding> & {\n\t\t\t\tcreateWithHostPrimitives?: <TInput = unknown, TResult = unknown>(\n\t\t\t\t\tdefinition: AgentDefinition<TInput, TResult> | { id: string; version: number },\n\t\t\t\t\toptions: { id?: string; parentInstanceId?: string } | undefined,\n\t\t\t\t\thostPrimitivesFactory: AgentHostPrimitivesFactory,\n\t\t\t\t\tlifecycleDispatcher?: AgentCompositionLifecycleDispatcher,\n\t\t\t\t) => AgentInstance<TInput, TResult>;\n\t\t\t};\n\t\t\tif (!scopedBinding.createWithHostPrimitives) {\n\t\t\t\tthrow new Error(t(\"Agent composition runtime does not support owner-scoped host primitives\"));\n\t\t\t}\n\t\t\tconst instance = scopedBinding.createWithHostPrimitives<TInput, TResult>(\n\t\t\t\tdefinition,\n\t\t\t\toptions,\n\t\t\t\thostPrimitivesFactory,\n\t\t\t\tlifecycleDispatcher,\n\t\t\t);\n\t\t\tconst guarded = Object.freeze({\n\t\t\t\tid: instance.id,\n\t\t\t\tdefinition: instance.definition,\n\t\t\t\tsnapshot: () => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.snapshot();\n\t\t\t\t},\n\t\t\t\tacquireControllerLease: (owner?: string) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.acquireControllerLease(owner);\n\t\t\t\t},\n\t\t\t\trun: (input: TInput, runOptions?: { lease?: AgentControllerLease; signal?: AbortSignal }) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.run(input, runOptions);\n\t\t\t\t},\n\t\t\t\twait: () => instance.wait(),\n\t\t\t\tcancel: (reason?: string) => {\n\t\t\t\t\tassertUsable();\n\t\t\t\t\treturn instance.cancel(reason);\n\t\t\t\t},\n\t\t\t\tdispose: () => instance.dispose(),\n\t\t\t}) as AgentInstance<TInput, TResult>;\n\t\t\ttrackInstance(guarded);\n\t\t\treturn guarded;\n\t\t},\n\t\tlistInstances: () => {\n\t\t\tassertUsable();\n\t\t\treturn composition.listInstances().filter((instance) => {\n\t\t\t\ttry {\n\t\t\t\t\treturn composition.get(instance.definitionId, instance.definitionVersion).owner === manifest.id;\n\t\t\t\t} catch {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t}) satisfies AgentCompositionAPI;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"capability-runtime-manifest.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/capability-runtime-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAsCrF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAE/F;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAIpG;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAK1F;AAED,wBAAgB,kCAAkC,CACjD,YAAY,EAAE,SAAS,2BAA2B,EAAE,GAAG,SAAS,EAChE,KAAK,EAAE,MAAM,GACX,IAAI,CAgBN;AAED,wBAAgB,kCAAkC,CACjD,YAAY,EAAE,SAAS,2BAA2B,EAAE,GAAG,SAAS,EAChE,KAAK,EAAE,MAAM,GACX,IAAI,CAgBN;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAiCrF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,cAAc,EAAE,CAiD5G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAWD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAEjF","sourcesContent":["import type {\n\tHostCapabilities,\n\tPluginCapabilityDeclaration,\n\tPluginCapabilityRequirement,\n\tPluginConfig,\n\tPluginConfigValue,\n\tPluginManifest,\n} from \"./public-api.ts\";\nimport { EXPERIMENTAL_PUBLIC_API_VERSION } from \"./public-api.ts\";\n\nexport function assertManifest(manifest: PluginManifest, host: HostCapabilities): void {\n\tif (\n\t\t!manifest ||\n\t\ttypeof manifest.id !== \"string\" ||\n\t\t!manifest.id.trim() ||\n\t\ttypeof manifest.version !== \"string\" ||\n\t\t!manifest.version.trim() ||\n\t\ttypeof manifest.entry !== \"string\" ||\n\t\t!manifest.entry.trim()\n\t) {\n\t\tthrow new Error(\"Plugin manifest requires id, version, and entry\");\n\t}\n\tif (manifest.apiVersion !== EXPERIMENTAL_PUBLIC_API_VERSION) {\n\t\tthrow new Error(`Unsupported plugin API version: ${manifest.apiVersion}`);\n\t}\n\tif (manifest.config !== undefined && !isPluginConfig(manifest.config)) {\n\t\tthrow new Error(\"Plugin manifest config must be a JSON object\");\n\t}\n\tif (manifest.requiredCapabilities !== undefined && !Array.isArray(manifest.requiredCapabilities)) {\n\t\tthrow new Error(\"Plugin manifest requiredCapabilities must be an array\");\n\t}\n\tif (manifest.optionalCapabilities !== undefined && !Array.isArray(manifest.optionalCapabilities)) {\n\t\tthrow new Error(\"Plugin manifest optionalCapabilities must be an array\");\n\t}\n\tif (manifest.requiredCapabilities?.some((capability) => typeof capability !== \"string\")) {\n\t\tthrow new Error(\"Plugin manifest requiredCapabilities must be a string array\");\n\t}\n\tif (manifest.optionalCapabilities?.some((capability) => typeof capability !== \"string\")) {\n\t\tthrow new Error(\"Plugin manifest optionalCapabilities must be a string array\");\n\t}\n\tconst available = new Set(host.features);\n\tconst missing = manifest.requiredCapabilities?.filter((capability) => !available.has(capability)) ?? [];\n\tif (missing.length > 0) {\n\t\tthrow new Error(`Host is missing required capabilities: ${missing.join(\", \")}`);\n\t}\n\tassertPluginCapabilityDeclarations(manifest.provides, `Plugin manifest provides: ${manifest.id}`);\n\tassertPluginCapabilityRequirements(manifest.requires, `Plugin manifest requires: ${manifest.id}`);\n\tassertAgentDeclarations(manifest, `Plugin manifest: ${manifest.id}`);\n}\n\nexport function assertPluginCapabilityId(value: unknown, label: string): asserts value is string {\n\tif (typeof value !== \"string\" || !value.trim()) throw new Error(`${label} must be a non-empty string`);\n}\n\nexport function assertPluginCapabilityVersion(value: unknown, label: string): asserts value is number {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(`${label} must be a positive safe integer`);\n\t}\n}\n\nexport function capabilityKey(id: string, version: number): string {\n\treturn `${id}\\u0000${version}`;\n}\n\nexport function comparePluginManifests(left: PluginManifest, right: PluginManifest): number {\n\tif (left.id !== right.id) return left.id < right.id ? -1 : 1;\n\tif (left.version !== right.version) return left.version < right.version ? -1 : 1;\n\tif (left.entry !== right.entry) return left.entry < right.entry ? -1 : 1;\n\treturn 0;\n}\n\nexport function assertPluginCapabilityDeclarations(\n\tdeclarations: readonly PluginCapabilityDeclaration[] | undefined,\n\tlabel: string,\n): void {\n\tif (declarations === undefined) return;\n\tif (!Array.isArray(declarations)) throw new Error(`${label} must be an array`);\n\tconst keys = new Set<string>();\n\tfor (const declaration of declarations) {\n\t\tif (!declaration || typeof declaration !== \"object\") throw new Error(`${label} has an invalid declaration`);\n\t\tassertPluginCapabilityId(declaration.id, `${label}.id`);\n\t\tassertPluginCapabilityVersion(declaration.version, `${label}.version`);\n\t\tif (declaration.kind !== \"service\" && declaration.kind !== \"contribution\" && declaration.kind !== \"transform\") {\n\t\t\tthrow new Error(`${label}.kind is invalid`);\n\t\t}\n\t\tconst key = capabilityKey(declaration.id, declaration.version);\n\t\tif (keys.has(key))\n\t\t\tthrow new Error(`${label} declares capability more than once: ${declaration.id}@${declaration.version}`);\n\t\tkeys.add(key);\n\t}\n}\n\nexport function assertPluginCapabilityRequirements(\n\trequirements: readonly PluginCapabilityRequirement[] | undefined,\n\tlabel: string,\n): void {\n\tif (requirements === undefined) return;\n\tif (!Array.isArray(requirements)) throw new Error(`${label} must be an array`);\n\tconst keys = new Set<string>();\n\tfor (const requirement of requirements) {\n\t\tif (!requirement || typeof requirement !== \"object\") throw new Error(`${label} has an invalid requirement`);\n\t\tassertPluginCapabilityId(requirement.id, `${label}.id`);\n\t\tassertPluginCapabilityVersion(requirement.version, `${label}.version`);\n\t\tif (requirement.optional !== undefined && typeof requirement.optional !== \"boolean\") {\n\t\t\tthrow new Error(`${label}.optional must be a boolean`);\n\t\t}\n\t\tconst key = capabilityKey(requirement.id, requirement.version);\n\t\tif (keys.has(key))\n\t\t\tthrow new Error(`${label} requires capability more than once: ${requirement.id}@${requirement.version}`);\n\t\tkeys.add(key);\n\t}\n}\n\nexport function assertAgentDeclarations(manifest: PluginManifest, label: string): void {\n\tif (manifest.roles !== undefined) {\n\t\tif (!Array.isArray(manifest.roles)) throw new Error(`${label}.roles must be an array`);\n\t\tconst seen = new Set<string>();\n\t\tfor (const role of manifest.roles) {\n\t\t\tif (role !== \"root-agent-controller\" && role !== \"child-agent-controller\") {\n\t\t\t\tthrow new Error(`${label}.roles contains an invalid role`);\n\t\t\t}\n\t\t\tif (seen.has(role)) throw new Error(`${label}.roles declares role more than once: ${role}`);\n\t\t\tseen.add(role);\n\t\t}\n\t}\n\tif (manifest.agents === undefined) return;\n\tif (!Array.isArray(manifest.agents)) throw new Error(`${label}.agents must be an array`);\n\tconst seen = new Set<string>();\n\tfor (const agent of manifest.agents) {\n\t\tif (!agent || typeof agent !== \"object\") throw new Error(`${label}.agents has an invalid declaration`);\n\t\tassertPluginCapabilityId(agent.id, `${label}.agents.id`);\n\t\tassertPluginCapabilityVersion(agent.version, `${label}.agents.version`);\n\t\tif (agent.role !== \"root-agent-controller\" && agent.role !== \"child-agent-controller\") {\n\t\t\tthrow new Error(`${label}.agents.role is invalid`);\n\t\t}\n\t\tif (typeof agent.entry !== \"string\" || !agent.entry.trim()) {\n\t\t\tthrow new Error(`${label}.agents.entry must be a non-empty string`);\n\t\t}\n\t\tif (manifest.roles !== undefined && !manifest.roles.includes(agent.role)) {\n\t\t\tthrow new Error(`${label}.agents.role is not declared in roles`);\n\t\t}\n\t\tconst key = capabilityKey(agent.id, agent.version);\n\t\tif (seen.has(key))\n\t\t\tthrow new Error(`${label}.agents declares definition more than once: ${agent.id}@${agent.version}`);\n\t\tseen.add(key);\n\t}\n}\n\n/**\n * Validate a manifest set before factories execute and return its deterministic\n * dependency order. Plugin capability versions match exactly; a capability\n * identity has one provider in a single load set.\n */\nexport function resolvePluginCapabilityOrder(manifests: readonly PluginManifest[]): readonly PluginManifest[] {\n\tconst providers = new Map<string, PluginManifest>();\n\tfor (const manifest of manifests) {\n\t\tassertPluginCapabilityDeclarations(manifest.provides, `Plugin manifest provides: ${manifest.id}`);\n\t\tassertPluginCapabilityRequirements(manifest.requires, `Plugin manifest requires: ${manifest.id}`);\n\t\tfor (const declaration of manifest.provides ?? []) {\n\t\t\tconst key = capabilityKey(declaration.id, declaration.version);\n\t\t\tconst prior = providers.get(key);\n\t\t\tif (prior) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Plugin capability is provided more than once: ${declaration.id}@${declaration.version} (${prior.id}, ${manifest.id})`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tproviders.set(key, manifest);\n\t\t}\n\t}\n\n\tconst dependencies = new Map<PluginManifest, Set<PluginManifest>>();\n\tfor (const manifest of manifests) {\n\t\tconst required = new Set<PluginManifest>();\n\t\tfor (const requirement of manifest.requires ?? []) {\n\t\t\tconst provider = providers.get(capabilityKey(requirement.id, requirement.version));\n\t\t\tif (!provider) {\n\t\t\t\tif (requirement.optional) continue;\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Plugin capability is required but unavailable: ${requirement.id}@${requirement.version} (${manifest.id})`,\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (provider !== manifest) required.add(provider);\n\t\t}\n\t\tdependencies.set(manifest, required);\n\t}\n\n\tconst ordered: PluginManifest[] = [];\n\tconst pending = new Set(manifests);\n\twhile (pending.size > 0) {\n\t\tconst ready = [...pending]\n\t\t\t.filter((manifest) => [...(dependencies.get(manifest) ?? [])].every((dependency) => !pending.has(dependency)))\n\t\t\t.sort(comparePluginManifests);\n\t\tif (ready.length === 0) {\n\t\t\tconst cycle = [...pending].sort(comparePluginManifests).map((manifest) => manifest.id);\n\t\t\tthrow new Error(`Plugin capability dependency cycle: ${cycle.join(\", \")}`);\n\t\t}\n\t\tfor (const manifest of ready) {\n\t\t\tpending.delete(manifest);\n\t\t\tordered.push(manifest);\n\t\t}\n\t}\n\treturn Object.freeze(ordered);\n}\n\nexport function isPluginConfigValue(value: unknown): value is PluginConfigValue {\n\tif (value === null || typeof value === \"boolean\" || typeof value === \"string\") return true;\n\tif (typeof value === \"number\") return Number.isFinite(value);\n\tif (Array.isArray(value)) return value.every(isPluginConfigValue);\n\tif (!value || typeof value !== \"object\" || Object.getPrototypeOf(value) !== Object.prototype) return false;\n\treturn Object.values(value).every(isPluginConfigValue);\n}\n\nexport function isPluginConfig(value: unknown): value is PluginConfig {\n\treturn !!value && typeof value === \"object\" && !Array.isArray(value) && isPluginConfigValue(value);\n}\n\nfunction freezePluginConfig<T extends PluginConfigValue>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of value) freezePluginConfig(item);\n\t} else if (value && typeof value === \"object\") {\n\t\tfor (const item of Object.values(value)) freezePluginConfig(item);\n\t}\n\treturn Object.freeze(value);\n}\n\nexport function createPluginConfig(config: PluginConfig | undefined): PluginConfig {\n\treturn freezePluginConfig(structuredClone(config ?? {})) as PluginConfig;\n}\n"]}
1
+ {"version":3,"file":"capability-runtime-manifest.d.ts","sourceRoot":"","sources":["../../../src/core/extensions/capability-runtime-manifest.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,gBAAgB,EAChB,2BAA2B,EAC3B,2BAA2B,EAC3B,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,MAAM,iBAAiB,CAAC;AAGzB,wBAAgB,cAAc,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAsCrF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAE/F;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAIpG;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,MAAM,CAK1F;AAED,wBAAgB,kCAAkC,CACjD,YAAY,EAAE,SAAS,2BAA2B,EAAE,GAAG,SAAS,EAChE,KAAK,EAAE,MAAM,GACX,IAAI,CAuBN;AAED,wBAAgB,kCAAkC,CACjD,YAAY,EAAE,SAAS,2BAA2B,EAAE,GAAG,SAAS,EAChE,KAAK,EAAE,MAAM,GACX,IAAI,CAuBN;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAwCrF;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,SAAS,EAAE,SAAS,cAAc,EAAE,GAAG,SAAS,cAAc,EAAE,CA0D5G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAM9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE;AAWD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,YAAY,CAEjF","sourcesContent":["import { t } from \"../i18n/index.ts\";\nimport type {\n\tHostCapabilities,\n\tPluginCapabilityDeclaration,\n\tPluginCapabilityRequirement,\n\tPluginConfig,\n\tPluginConfigValue,\n\tPluginManifest,\n} from \"./public-api.ts\";\nimport { EXPERIMENTAL_PUBLIC_API_VERSION } from \"./public-api.ts\";\n\nexport function assertManifest(manifest: PluginManifest, host: HostCapabilities): void {\n\tif (\n\t\t!manifest ||\n\t\ttypeof manifest.id !== \"string\" ||\n\t\t!manifest.id.trim() ||\n\t\ttypeof manifest.version !== \"string\" ||\n\t\t!manifest.version.trim() ||\n\t\ttypeof manifest.entry !== \"string\" ||\n\t\t!manifest.entry.trim()\n\t) {\n\t\tthrow new Error(t(\"Plugin manifest requires id, version, and entry\"));\n\t}\n\tif (manifest.apiVersion !== EXPERIMENTAL_PUBLIC_API_VERSION) {\n\t\tthrow new Error(t(\"Unsupported plugin API version: {apiVersion}\", { apiVersion: manifest.apiVersion }));\n\t}\n\tif (manifest.config !== undefined && !isPluginConfig(manifest.config)) {\n\t\tthrow new Error(t(\"Plugin manifest config must be a JSON object\"));\n\t}\n\tif (manifest.requiredCapabilities !== undefined && !Array.isArray(manifest.requiredCapabilities)) {\n\t\tthrow new Error(t(\"Plugin manifest requiredCapabilities must be an array\"));\n\t}\n\tif (manifest.optionalCapabilities !== undefined && !Array.isArray(manifest.optionalCapabilities)) {\n\t\tthrow new Error(t(\"Plugin manifest optionalCapabilities must be an array\"));\n\t}\n\tif (manifest.requiredCapabilities?.some((capability) => typeof capability !== \"string\")) {\n\t\tthrow new Error(t(\"Plugin manifest requiredCapabilities must be a string array\"));\n\t}\n\tif (manifest.optionalCapabilities?.some((capability) => typeof capability !== \"string\")) {\n\t\tthrow new Error(t(\"Plugin manifest optionalCapabilities must be a string array\"));\n\t}\n\tconst available = new Set(host.features);\n\tconst missing = manifest.requiredCapabilities?.filter((capability) => !available.has(capability)) ?? [];\n\tif (missing.length > 0) {\n\t\tthrow new Error(t(\"Host is missing required capabilities: {value}\", { value: missing.join(\", \") }));\n\t}\n\tassertPluginCapabilityDeclarations(manifest.provides, `Plugin manifest provides: ${manifest.id}`);\n\tassertPluginCapabilityRequirements(manifest.requires, `Plugin manifest requires: ${manifest.id}`);\n\tassertAgentDeclarations(manifest, `Plugin manifest: ${manifest.id}`);\n}\n\nexport function assertPluginCapabilityId(value: unknown, label: string): asserts value is string {\n\tif (typeof value !== \"string\" || !value.trim()) throw new Error(t(\"{label} must be a non-empty string\", { label }));\n}\n\nexport function assertPluginCapabilityVersion(value: unknown, label: string): asserts value is number {\n\tif (typeof value !== \"number\" || !Number.isSafeInteger(value) || value < 1) {\n\t\tthrow new Error(t(\"{label} must be a positive safe integer\", { label }));\n\t}\n}\n\nexport function capabilityKey(id: string, version: number): string {\n\treturn `${id}\\u0000${version}`;\n}\n\nexport function comparePluginManifests(left: PluginManifest, right: PluginManifest): number {\n\tif (left.id !== right.id) return left.id < right.id ? -1 : 1;\n\tif (left.version !== right.version) return left.version < right.version ? -1 : 1;\n\tif (left.entry !== right.entry) return left.entry < right.entry ? -1 : 1;\n\treturn 0;\n}\n\nexport function assertPluginCapabilityDeclarations(\n\tdeclarations: readonly PluginCapabilityDeclaration[] | undefined,\n\tlabel: string,\n): void {\n\tif (declarations === undefined) return;\n\tif (!Array.isArray(declarations)) throw new Error(t(\"{label} must be an array\", { label }));\n\tconst keys = new Set<string>();\n\tfor (const declaration of declarations) {\n\t\tif (!declaration || typeof declaration !== \"object\")\n\t\t\tthrow new Error(t(\"{label} has an invalid declaration\", { label }));\n\t\tassertPluginCapabilityId(declaration.id, `${label}.id`);\n\t\tassertPluginCapabilityVersion(declaration.version, `${label}.version`);\n\t\tif (declaration.kind !== \"service\" && declaration.kind !== \"contribution\" && declaration.kind !== \"transform\") {\n\t\t\tthrow new Error(t(\"{label}.kind is invalid\", { label }));\n\t\t}\n\t\tconst key = capabilityKey(declaration.id, declaration.version);\n\t\tif (keys.has(key))\n\t\t\tthrow new Error(\n\t\t\t\tt(\"{label} declares capability more than once: {id}@{version}\", {\n\t\t\t\t\tlabel,\n\t\t\t\t\tid: declaration.id,\n\t\t\t\t\tversion: declaration.version,\n\t\t\t\t}),\n\t\t\t);\n\t\tkeys.add(key);\n\t}\n}\n\nexport function assertPluginCapabilityRequirements(\n\trequirements: readonly PluginCapabilityRequirement[] | undefined,\n\tlabel: string,\n): void {\n\tif (requirements === undefined) return;\n\tif (!Array.isArray(requirements)) throw new Error(t(\"{label} must be an array\", { label }));\n\tconst keys = new Set<string>();\n\tfor (const requirement of requirements) {\n\t\tif (!requirement || typeof requirement !== \"object\")\n\t\t\tthrow new Error(t(\"{label} has an invalid requirement\", { label }));\n\t\tassertPluginCapabilityId(requirement.id, `${label}.id`);\n\t\tassertPluginCapabilityVersion(requirement.version, `${label}.version`);\n\t\tif (requirement.optional !== undefined && typeof requirement.optional !== \"boolean\") {\n\t\t\tthrow new Error(t(\"{label}.optional must be a boolean\", { label }));\n\t\t}\n\t\tconst key = capabilityKey(requirement.id, requirement.version);\n\t\tif (keys.has(key))\n\t\t\tthrow new Error(\n\t\t\t\tt(\"{label} requires capability more than once: {id}@{version}\", {\n\t\t\t\t\tlabel,\n\t\t\t\t\tid: requirement.id,\n\t\t\t\t\tversion: requirement.version,\n\t\t\t\t}),\n\t\t\t);\n\t\tkeys.add(key);\n\t}\n}\n\nexport function assertAgentDeclarations(manifest: PluginManifest, label: string): void {\n\tif (manifest.roles !== undefined) {\n\t\tif (!Array.isArray(manifest.roles)) throw new Error(t(\"{label}.roles must be an array\", { label }));\n\t\tconst seen = new Set<string>();\n\t\tfor (const role of manifest.roles) {\n\t\t\tif (role !== \"root-agent-controller\" && role !== \"child-agent-controller\") {\n\t\t\t\tthrow new Error(t(\"{label}.roles contains an invalid role\", { label }));\n\t\t\t}\n\t\t\tif (seen.has(role)) throw new Error(t(\"{label}.roles declares role more than once: {role}\", { label, role }));\n\t\t\tseen.add(role);\n\t\t}\n\t}\n\tif (manifest.agents === undefined) return;\n\tif (!Array.isArray(manifest.agents)) throw new Error(t(\"{label}.agents must be an array\", { label }));\n\tconst seen = new Set<string>();\n\tfor (const agent of manifest.agents) {\n\t\tif (!agent || typeof agent !== \"object\")\n\t\t\tthrow new Error(t(\"{label}.agents has an invalid declaration\", { label }));\n\t\tassertPluginCapabilityId(agent.id, `${label}.agents.id`);\n\t\tassertPluginCapabilityVersion(agent.version, `${label}.agents.version`);\n\t\tif (agent.role !== \"root-agent-controller\" && agent.role !== \"child-agent-controller\") {\n\t\t\tthrow new Error(t(\"{label}.agents.role is invalid\", { label }));\n\t\t}\n\t\tif (typeof agent.entry !== \"string\" || !agent.entry.trim()) {\n\t\t\tthrow new Error(t(\"{label}.agents.entry must be a non-empty string\", { label }));\n\t\t}\n\t\tif (manifest.roles !== undefined && !manifest.roles.includes(agent.role)) {\n\t\t\tthrow new Error(t(\"{label}.agents.role is not declared in roles\", { label }));\n\t\t}\n\t\tconst key = capabilityKey(agent.id, agent.version);\n\t\tif (seen.has(key))\n\t\t\tthrow new Error(\n\t\t\t\tt(\"{label}.agents declares definition more than once: {id}@{version}\", {\n\t\t\t\t\tlabel,\n\t\t\t\t\tid: agent.id,\n\t\t\t\t\tversion: agent.version,\n\t\t\t\t}),\n\t\t\t);\n\t\tseen.add(key);\n\t}\n}\n\n/**\n * Validate a manifest set before factories execute and return its deterministic\n * dependency order. Plugin capability versions match exactly; a capability\n * identity has one provider in a single load set.\n */\nexport function resolvePluginCapabilityOrder(manifests: readonly PluginManifest[]): readonly PluginManifest[] {\n\tconst providers = new Map<string, PluginManifest>();\n\tfor (const manifest of manifests) {\n\t\tassertPluginCapabilityDeclarations(manifest.provides, `Plugin manifest provides: ${manifest.id}`);\n\t\tassertPluginCapabilityRequirements(manifest.requires, `Plugin manifest requires: ${manifest.id}`);\n\t\tfor (const declaration of manifest.provides ?? []) {\n\t\t\tconst key = capabilityKey(declaration.id, declaration.version);\n\t\t\tconst prior = providers.get(key);\n\t\t\tif (prior) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\tt(\"Plugin capability is provided more than once: {id}@{version} ({priorId}, {manifestId})\", {\n\t\t\t\t\t\tid: declaration.id,\n\t\t\t\t\t\tversion: declaration.version,\n\t\t\t\t\t\tpriorId: prior.id,\n\t\t\t\t\t\tmanifestId: manifest.id,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tproviders.set(key, manifest);\n\t\t}\n\t}\n\n\tconst dependencies = new Map<PluginManifest, Set<PluginManifest>>();\n\tfor (const manifest of manifests) {\n\t\tconst required = new Set<PluginManifest>();\n\t\tfor (const requirement of manifest.requires ?? []) {\n\t\t\tconst provider = providers.get(capabilityKey(requirement.id, requirement.version));\n\t\t\tif (!provider) {\n\t\t\t\tif (requirement.optional) continue;\n\t\t\t\tthrow new Error(\n\t\t\t\t\tt(\"Plugin capability is required but unavailable: {capabilityId}@{version} ({pluginId})\", {\n\t\t\t\t\t\tcapabilityId: requirement.id,\n\t\t\t\t\t\tversion: requirement.version,\n\t\t\t\t\t\tpluginId: manifest.id,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (provider !== manifest) required.add(provider);\n\t\t}\n\t\tdependencies.set(manifest, required);\n\t}\n\n\tconst ordered: PluginManifest[] = [];\n\tconst pending = new Set(manifests);\n\twhile (pending.size > 0) {\n\t\tconst ready = [...pending]\n\t\t\t.filter((manifest) => [...(dependencies.get(manifest) ?? [])].every((dependency) => !pending.has(dependency)))\n\t\t\t.sort(comparePluginManifests);\n\t\tif (ready.length === 0) {\n\t\t\tconst cycle = [...pending].sort(comparePluginManifests).map((manifest) => manifest.id);\n\t\t\tthrow new Error(t(\"Plugin capability dependency cycle: {value}\", { value: cycle.join(\", \") }));\n\t\t}\n\t\tfor (const manifest of ready) {\n\t\t\tpending.delete(manifest);\n\t\t\tordered.push(manifest);\n\t\t}\n\t}\n\treturn Object.freeze(ordered);\n}\n\nexport function isPluginConfigValue(value: unknown): value is PluginConfigValue {\n\tif (value === null || typeof value === \"boolean\" || typeof value === \"string\") return true;\n\tif (typeof value === \"number\") return Number.isFinite(value);\n\tif (Array.isArray(value)) return value.every(isPluginConfigValue);\n\tif (!value || typeof value !== \"object\" || Object.getPrototypeOf(value) !== Object.prototype) return false;\n\treturn Object.values(value).every(isPluginConfigValue);\n}\n\nexport function isPluginConfig(value: unknown): value is PluginConfig {\n\treturn !!value && typeof value === \"object\" && !Array.isArray(value) && isPluginConfigValue(value);\n}\n\nfunction freezePluginConfig<T extends PluginConfigValue>(value: T): T {\n\tif (Array.isArray(value)) {\n\t\tfor (const item of value) freezePluginConfig(item);\n\t} else if (value && typeof value === \"object\") {\n\t\tfor (const item of Object.values(value)) freezePluginConfig(item);\n\t}\n\treturn Object.freeze(value);\n}\n\nexport function createPluginConfig(config: PluginConfig | undefined): PluginConfig {\n\treturn freezePluginConfig(structuredClone(config ?? {})) as PluginConfig;\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import { t } from "../i18n/index.js";
1
2
  import { EXPERIMENTAL_PUBLIC_API_VERSION } from "./public-api.js";
2
3
  export function assertManifest(manifest, host) {
3
4
  if (!manifest ||
@@ -7,30 +8,30 @@ export function assertManifest(manifest, host) {
7
8
  !manifest.version.trim() ||
8
9
  typeof manifest.entry !== "string" ||
9
10
  !manifest.entry.trim()) {
10
- throw new Error("Plugin manifest requires id, version, and entry");
11
+ throw new Error(t("Plugin manifest requires id, version, and entry"));
11
12
  }
12
13
  if (manifest.apiVersion !== EXPERIMENTAL_PUBLIC_API_VERSION) {
13
- throw new Error(`Unsupported plugin API version: ${manifest.apiVersion}`);
14
+ throw new Error(t("Unsupported plugin API version: {apiVersion}", { apiVersion: manifest.apiVersion }));
14
15
  }
15
16
  if (manifest.config !== undefined && !isPluginConfig(manifest.config)) {
16
- throw new Error("Plugin manifest config must be a JSON object");
17
+ throw new Error(t("Plugin manifest config must be a JSON object"));
17
18
  }
18
19
  if (manifest.requiredCapabilities !== undefined && !Array.isArray(manifest.requiredCapabilities)) {
19
- throw new Error("Plugin manifest requiredCapabilities must be an array");
20
+ throw new Error(t("Plugin manifest requiredCapabilities must be an array"));
20
21
  }
21
22
  if (manifest.optionalCapabilities !== undefined && !Array.isArray(manifest.optionalCapabilities)) {
22
- throw new Error("Plugin manifest optionalCapabilities must be an array");
23
+ throw new Error(t("Plugin manifest optionalCapabilities must be an array"));
23
24
  }
24
25
  if (manifest.requiredCapabilities?.some((capability) => typeof capability !== "string")) {
25
- throw new Error("Plugin manifest requiredCapabilities must be a string array");
26
+ throw new Error(t("Plugin manifest requiredCapabilities must be a string array"));
26
27
  }
27
28
  if (manifest.optionalCapabilities?.some((capability) => typeof capability !== "string")) {
28
- throw new Error("Plugin manifest optionalCapabilities must be a string array");
29
+ throw new Error(t("Plugin manifest optionalCapabilities must be a string array"));
29
30
  }
30
31
  const available = new Set(host.features);
31
32
  const missing = manifest.requiredCapabilities?.filter((capability) => !available.has(capability)) ?? [];
32
33
  if (missing.length > 0) {
33
- throw new Error(`Host is missing required capabilities: ${missing.join(", ")}`);
34
+ throw new Error(t("Host is missing required capabilities: {value}", { value: missing.join(", ") }));
34
35
  }
35
36
  assertPluginCapabilityDeclarations(manifest.provides, `Plugin manifest provides: ${manifest.id}`);
36
37
  assertPluginCapabilityRequirements(manifest.requires, `Plugin manifest requires: ${manifest.id}`);
@@ -38,11 +39,11 @@ export function assertManifest(manifest, host) {
38
39
  }
39
40
  export function assertPluginCapabilityId(value, label) {
40
41
  if (typeof value !== "string" || !value.trim())
41
- throw new Error(`${label} must be a non-empty string`);
42
+ throw new Error(t("{label} must be a non-empty string", { label }));
42
43
  }
43
44
  export function assertPluginCapabilityVersion(value, label) {
44
45
  if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) {
45
- throw new Error(`${label} must be a positive safe integer`);
46
+ throw new Error(t("{label} must be a positive safe integer", { label }));
46
47
  }
47
48
  }
48
49
  export function capabilityKey(id, version) {
@@ -61,19 +62,23 @@ export function assertPluginCapabilityDeclarations(declarations, label) {
61
62
  if (declarations === undefined)
62
63
  return;
63
64
  if (!Array.isArray(declarations))
64
- throw new Error(`${label} must be an array`);
65
+ throw new Error(t("{label} must be an array", { label }));
65
66
  const keys = new Set();
66
67
  for (const declaration of declarations) {
67
68
  if (!declaration || typeof declaration !== "object")
68
- throw new Error(`${label} has an invalid declaration`);
69
+ throw new Error(t("{label} has an invalid declaration", { label }));
69
70
  assertPluginCapabilityId(declaration.id, `${label}.id`);
70
71
  assertPluginCapabilityVersion(declaration.version, `${label}.version`);
71
72
  if (declaration.kind !== "service" && declaration.kind !== "contribution" && declaration.kind !== "transform") {
72
- throw new Error(`${label}.kind is invalid`);
73
+ throw new Error(t("{label}.kind is invalid", { label }));
73
74
  }
74
75
  const key = capabilityKey(declaration.id, declaration.version);
75
76
  if (keys.has(key))
76
- throw new Error(`${label} declares capability more than once: ${declaration.id}@${declaration.version}`);
77
+ throw new Error(t("{label} declares capability more than once: {id}@{version}", {
78
+ label,
79
+ id: declaration.id,
80
+ version: declaration.version,
81
+ }));
77
82
  keys.add(key);
78
83
  }
79
84
  }
@@ -81,58 +86,66 @@ export function assertPluginCapabilityRequirements(requirements, label) {
81
86
  if (requirements === undefined)
82
87
  return;
83
88
  if (!Array.isArray(requirements))
84
- throw new Error(`${label} must be an array`);
89
+ throw new Error(t("{label} must be an array", { label }));
85
90
  const keys = new Set();
86
91
  for (const requirement of requirements) {
87
92
  if (!requirement || typeof requirement !== "object")
88
- throw new Error(`${label} has an invalid requirement`);
93
+ throw new Error(t("{label} has an invalid requirement", { label }));
89
94
  assertPluginCapabilityId(requirement.id, `${label}.id`);
90
95
  assertPluginCapabilityVersion(requirement.version, `${label}.version`);
91
96
  if (requirement.optional !== undefined && typeof requirement.optional !== "boolean") {
92
- throw new Error(`${label}.optional must be a boolean`);
97
+ throw new Error(t("{label}.optional must be a boolean", { label }));
93
98
  }
94
99
  const key = capabilityKey(requirement.id, requirement.version);
95
100
  if (keys.has(key))
96
- throw new Error(`${label} requires capability more than once: ${requirement.id}@${requirement.version}`);
101
+ throw new Error(t("{label} requires capability more than once: {id}@{version}", {
102
+ label,
103
+ id: requirement.id,
104
+ version: requirement.version,
105
+ }));
97
106
  keys.add(key);
98
107
  }
99
108
  }
100
109
  export function assertAgentDeclarations(manifest, label) {
101
110
  if (manifest.roles !== undefined) {
102
111
  if (!Array.isArray(manifest.roles))
103
- throw new Error(`${label}.roles must be an array`);
112
+ throw new Error(t("{label}.roles must be an array", { label }));
104
113
  const seen = new Set();
105
114
  for (const role of manifest.roles) {
106
115
  if (role !== "root-agent-controller" && role !== "child-agent-controller") {
107
- throw new Error(`${label}.roles contains an invalid role`);
116
+ throw new Error(t("{label}.roles contains an invalid role", { label }));
108
117
  }
109
118
  if (seen.has(role))
110
- throw new Error(`${label}.roles declares role more than once: ${role}`);
119
+ throw new Error(t("{label}.roles declares role more than once: {role}", { label, role }));
111
120
  seen.add(role);
112
121
  }
113
122
  }
114
123
  if (manifest.agents === undefined)
115
124
  return;
116
125
  if (!Array.isArray(manifest.agents))
117
- throw new Error(`${label}.agents must be an array`);
126
+ throw new Error(t("{label}.agents must be an array", { label }));
118
127
  const seen = new Set();
119
128
  for (const agent of manifest.agents) {
120
129
  if (!agent || typeof agent !== "object")
121
- throw new Error(`${label}.agents has an invalid declaration`);
130
+ throw new Error(t("{label}.agents has an invalid declaration", { label }));
122
131
  assertPluginCapabilityId(agent.id, `${label}.agents.id`);
123
132
  assertPluginCapabilityVersion(agent.version, `${label}.agents.version`);
124
133
  if (agent.role !== "root-agent-controller" && agent.role !== "child-agent-controller") {
125
- throw new Error(`${label}.agents.role is invalid`);
134
+ throw new Error(t("{label}.agents.role is invalid", { label }));
126
135
  }
127
136
  if (typeof agent.entry !== "string" || !agent.entry.trim()) {
128
- throw new Error(`${label}.agents.entry must be a non-empty string`);
137
+ throw new Error(t("{label}.agents.entry must be a non-empty string", { label }));
129
138
  }
130
139
  if (manifest.roles !== undefined && !manifest.roles.includes(agent.role)) {
131
- throw new Error(`${label}.agents.role is not declared in roles`);
140
+ throw new Error(t("{label}.agents.role is not declared in roles", { label }));
132
141
  }
133
142
  const key = capabilityKey(agent.id, agent.version);
134
143
  if (seen.has(key))
135
- throw new Error(`${label}.agents declares definition more than once: ${agent.id}@${agent.version}`);
144
+ throw new Error(t("{label}.agents declares definition more than once: {id}@{version}", {
145
+ label,
146
+ id: agent.id,
147
+ version: agent.version,
148
+ }));
136
149
  seen.add(key);
137
150
  }
138
151
  }
@@ -150,7 +163,12 @@ export function resolvePluginCapabilityOrder(manifests) {
150
163
  const key = capabilityKey(declaration.id, declaration.version);
151
164
  const prior = providers.get(key);
152
165
  if (prior) {
153
- throw new Error(`Plugin capability is provided more than once: ${declaration.id}@${declaration.version} (${prior.id}, ${manifest.id})`);
166
+ throw new Error(t("Plugin capability is provided more than once: {id}@{version} ({priorId}, {manifestId})", {
167
+ id: declaration.id,
168
+ version: declaration.version,
169
+ priorId: prior.id,
170
+ manifestId: manifest.id,
171
+ }));
154
172
  }
155
173
  providers.set(key, manifest);
156
174
  }
@@ -163,7 +181,11 @@ export function resolvePluginCapabilityOrder(manifests) {
163
181
  if (!provider) {
164
182
  if (requirement.optional)
165
183
  continue;
166
- throw new Error(`Plugin capability is required but unavailable: ${requirement.id}@${requirement.version} (${manifest.id})`);
184
+ throw new Error(t("Plugin capability is required but unavailable: {capabilityId}@{version} ({pluginId})", {
185
+ capabilityId: requirement.id,
186
+ version: requirement.version,
187
+ pluginId: manifest.id,
188
+ }));
167
189
  }
168
190
  if (provider !== manifest)
169
191
  required.add(provider);
@@ -178,7 +200,7 @@ export function resolvePluginCapabilityOrder(manifests) {
178
200
  .sort(comparePluginManifests);
179
201
  if (ready.length === 0) {
180
202
  const cycle = [...pending].sort(comparePluginManifests).map((manifest) => manifest.id);
181
- throw new Error(`Plugin capability dependency cycle: ${cycle.join(", ")}`);
203
+ throw new Error(t("Plugin capability dependency cycle: {value}", { value: cycle.join(", ") }));
182
204
  }
183
205
  for (const manifest of ready) {
184
206
  pending.delete(manifest);