@ai-agent-forge/agent-forge 0.86.7 → 0.88.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 (717) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/README.md +10 -11
  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 +430 -413
  7. package/dist/bundle/chunks/{chunk-A7GUOX2H.js → chunk-6ZKDNZHA.js} +5 -1
  8. package/dist/bundle/chunks/chunk-HLJEVRWP.js +13 -0
  9. package/dist/bundle/chunks/chunk-YGHQME4V.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 +17 -4
  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 +5 -3
  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 +6 -10
  54. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  55. package/dist/core/agent-session-compaction.js +35 -133
  56. package/dist/core/agent-session-compaction.js.map +1 -1
  57. package/dist/core/agent-session-context.d.ts.map +1 -1
  58. package/dist/core/agent-session-context.js +18 -13
  59. package/dist/core/agent-session-context.js.map +1 -1
  60. package/dist/core/agent-session-internal.d.ts +0 -6
  61. package/dist/core/agent-session-internal.d.ts.map +1 -1
  62. package/dist/core/agent-session-internal.js.map +1 -1
  63. package/dist/core/agent-session-model.d.ts.map +1 -1
  64. package/dist/core/agent-session-model.js +2 -1
  65. package/dist/core/agent-session-model.js.map +1 -1
  66. package/dist/core/agent-session-retry.d.ts.map +1 -1
  67. package/dist/core/agent-session-retry.js +3 -3
  68. package/dist/core/agent-session-retry.js.map +1 -1
  69. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  70. package/dist/core/agent-session-runtime.js +7 -6
  71. package/dist/core/agent-session-runtime.js.map +1 -1
  72. package/dist/core/agent-session-services.d.ts +1 -1
  73. package/dist/core/agent-session-services.d.ts.map +1 -1
  74. package/dist/core/agent-session-services.js.map +1 -1
  75. package/dist/core/agent-session-tools.d.ts.map +1 -1
  76. package/dist/core/agent-session-tools.js +3 -2
  77. package/dist/core/agent-session-tools.js.map +1 -1
  78. package/dist/core/agent-session.d.ts +40 -22
  79. package/dist/core/agent-session.d.ts.map +1 -1
  80. package/dist/core/agent-session.js +147 -67
  81. package/dist/core/agent-session.js.map +1 -1
  82. package/dist/core/auth-guidance.d.ts.map +1 -1
  83. package/dist/core/auth-guidance.js +11 -5
  84. package/dist/core/auth-guidance.js.map +1 -1
  85. package/dist/core/auth-storage.d.ts.map +1 -1
  86. package/dist/core/auth-storage.js +9 -6
  87. package/dist/core/auth-storage.js.map +1 -1
  88. package/dist/core/compaction/compaction.d.ts.map +1 -1
  89. package/dist/core/compaction/compaction.js +2 -1
  90. package/dist/core/compaction/compaction.js.map +1 -1
  91. package/dist/core/embedded-sdk.d.ts.map +1 -1
  92. package/dist/core/embedded-sdk.js +10 -6
  93. package/dist/core/embedded-sdk.js.map +1 -1
  94. package/dist/core/export-html/index.d.ts.map +1 -1
  95. package/dist/core/export-html/index.js +9 -4
  96. package/dist/core/export-html/index.js.map +1 -1
  97. package/dist/core/extensions/agent-composition.d.ts.map +1 -1
  98. package/dist/core/extensions/agent-composition.js +26 -19
  99. package/dist/core/extensions/agent-composition.js.map +1 -1
  100. package/dist/core/extensions/bootstrap-agent-loop.d.ts.map +1 -1
  101. package/dist/core/extensions/bootstrap-agent-loop.js +3 -2
  102. package/dist/core/extensions/bootstrap-agent-loop.js.map +1 -1
  103. package/dist/core/extensions/bootstrap-compaction-policy.d.ts.map +1 -1
  104. package/dist/core/extensions/bootstrap-compaction-policy.js +0 -34
  105. package/dist/core/extensions/bootstrap-compaction-policy.js.map +1 -1
  106. package/dist/core/extensions/bootstrap-lifecycle.d.ts.map +1 -1
  107. package/dist/core/extensions/bootstrap-lifecycle.js +20 -17
  108. package/dist/core/extensions/bootstrap-lifecycle.js.map +1 -1
  109. package/dist/core/extensions/bootstrap-overflow-policy.d.ts.map +1 -1
  110. package/dist/core/extensions/bootstrap-overflow-policy.js +2 -1
  111. package/dist/core/extensions/bootstrap-overflow-policy.js.map +1 -1
  112. package/dist/core/extensions/bootstrap-retry-policy.d.ts.map +1 -1
  113. package/dist/core/extensions/bootstrap-retry-policy.js +4 -3
  114. package/dist/core/extensions/bootstrap-retry-policy.js.map +1 -1
  115. package/dist/core/extensions/bootstrap-skills.d.ts.map +1 -1
  116. package/dist/core/extensions/bootstrap-skills.js +7 -6
  117. package/dist/core/extensions/bootstrap-skills.js.map +1 -1
  118. package/dist/core/extensions/bootstrap-tools.d.ts.map +1 -1
  119. package/dist/core/extensions/bootstrap-tools.js +2 -1
  120. package/dist/core/extensions/bootstrap-tools.js.map +1 -1
  121. package/dist/core/extensions/capability-plugin.d.ts.map +1 -1
  122. package/dist/core/extensions/capability-plugin.js +37 -13
  123. package/dist/core/extensions/capability-plugin.js.map +1 -1
  124. package/dist/core/extensions/capability-runtime-events.d.ts.map +1 -1
  125. package/dist/core/extensions/capability-runtime-events.js +17 -13
  126. package/dist/core/extensions/capability-runtime-events.js.map +1 -1
  127. package/dist/core/extensions/capability-runtime-guards.d.ts.map +1 -1
  128. package/dist/core/extensions/capability-runtime-guards.js +16 -15
  129. package/dist/core/extensions/capability-runtime-guards.js.map +1 -1
  130. package/dist/core/extensions/capability-runtime-manifest.d.ts.map +1 -1
  131. package/dist/core/extensions/capability-runtime-manifest.js +52 -30
  132. package/dist/core/extensions/capability-runtime-manifest.js.map +1 -1
  133. package/dist/core/extensions/capability-runtime-validation.d.ts.map +1 -1
  134. package/dist/core/extensions/capability-runtime-validation.js +66 -65
  135. package/dist/core/extensions/capability-runtime-validation.js.map +1 -1
  136. package/dist/core/extensions/capability-runtime.d.ts.map +1 -1
  137. package/dist/core/extensions/capability-runtime.js +147 -127
  138. package/dist/core/extensions/capability-runtime.js.map +1 -1
  139. package/dist/core/extensions/compaction-memory-failure-mode.d.ts.map +1 -1
  140. package/dist/core/extensions/compaction-memory-failure-mode.js +3 -2
  141. package/dist/core/extensions/compaction-memory-failure-mode.js.map +1 -1
  142. package/dist/core/extensions/context-strategy-binding.d.ts.map +1 -1
  143. package/dist/core/extensions/context-strategy-binding.js +7 -4
  144. package/dist/core/extensions/context-strategy-binding.js.map +1 -1
  145. package/dist/core/extensions/lifecycle-catalog.d.ts.map +1 -1
  146. package/dist/core/extensions/lifecycle-catalog.js +290 -279
  147. package/dist/core/extensions/lifecycle-catalog.js.map +1 -1
  148. package/dist/core/extensions/lifecycle-delivery-queue.d.ts.map +1 -1
  149. package/dist/core/extensions/lifecycle-delivery-queue.js +3 -2
  150. package/dist/core/extensions/lifecycle-delivery-queue.js.map +1 -1
  151. package/dist/core/extensions/provider-failover.d.ts +7 -3
  152. package/dist/core/extensions/provider-failover.d.ts.map +1 -1
  153. package/dist/core/extensions/provider-failover.js +9 -8
  154. package/dist/core/extensions/provider-failover.js.map +1 -1
  155. package/dist/core/facade/coding-agent-facade.d.ts +6 -6
  156. package/dist/core/facade/coding-agent-facade.d.ts.map +1 -1
  157. package/dist/core/facade/coding-agent-facade.js +2 -3
  158. package/dist/core/facade/coding-agent-facade.js.map +1 -1
  159. package/dist/core/http-dispatcher.d.ts.map +1 -1
  160. package/dist/core/http-dispatcher.js +2 -1
  161. package/dist/core/http-dispatcher.js.map +1 -1
  162. package/dist/core/i18n/index.d.ts +14 -0
  163. package/dist/core/i18n/index.d.ts.map +1 -0
  164. package/dist/core/i18n/index.js +67 -0
  165. package/dist/core/i18n/index.js.map +1 -0
  166. package/dist/core/i18n/locales/en/example.d.ts +7 -0
  167. package/dist/core/i18n/locales/en/example.d.ts.map +1 -0
  168. package/dist/core/i18n/locales/en/example.js +7 -0
  169. package/dist/core/i18n/locales/en/example.js.map +1 -0
  170. package/dist/core/i18n/locales/zh-cn/cli.d.ts +8 -0
  171. package/dist/core/i18n/locales/zh-cn/cli.d.ts.map +1 -0
  172. package/dist/core/i18n/locales/zh-cn/cli.js +229 -0
  173. package/dist/core/i18n/locales/zh-cn/cli.js.map +1 -0
  174. package/dist/core/i18n/locales/zh-cn/common.d.ts +6 -0
  175. package/dist/core/i18n/locales/zh-cn/common.d.ts.map +1 -0
  176. package/dist/core/i18n/locales/zh-cn/common.js +6 -0
  177. package/dist/core/i18n/locales/zh-cn/common.js.map +1 -0
  178. package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts +13 -0
  179. package/dist/core/i18n/locales/zh-cn/core-contract-core.d.ts.map +1 -0
  180. package/dist/core/i18n/locales/zh-cn/core-contract-core.js +173 -0
  181. package/dist/core/i18n/locales/zh-cn/core-contract-core.js.map +1 -0
  182. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts +12 -0
  183. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.d.ts.map +1 -0
  184. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js +582 -0
  185. package/dist/core/i18n/locales/zh-cn/core-contract-extensions.js.map +1 -0
  186. package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts +9 -0
  187. package/dist/core/i18n/locales/zh-cn/core-contract-final.d.ts.map +1 -0
  188. package/dist/core/i18n/locales/zh-cn/core-contract-final.js +55 -0
  189. package/dist/core/i18n/locales/zh-cn/core-contract-final.js.map +1 -0
  190. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts +11 -0
  191. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.d.ts.map +1 -0
  192. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js +455 -0
  193. package/dist/core/i18n/locales/zh-cn/core-contract-plugins.js.map +1 -0
  194. package/dist/core/i18n/locales/zh-cn/core-errors.d.ts +9 -0
  195. package/dist/core/i18n/locales/zh-cn/core-errors.d.ts.map +1 -0
  196. package/dist/core/i18n/locales/zh-cn/core-errors.js +191 -0
  197. package/dist/core/i18n/locales/zh-cn/core-errors.js.map +1 -0
  198. package/dist/core/i18n/locales/zh-cn/example.d.ts +7 -0
  199. package/dist/core/i18n/locales/zh-cn/example.d.ts.map +1 -0
  200. package/dist/core/i18n/locales/zh-cn/example.js +10 -0
  201. package/dist/core/i18n/locales/zh-cn/example.js.map +1 -0
  202. package/dist/core/i18n/locales/zh-cn/index.d.ts +2 -0
  203. package/dist/core/i18n/locales/zh-cn/index.d.ts.map +1 -0
  204. package/dist/core/i18n/locales/zh-cn/index.js +41 -0
  205. package/dist/core/i18n/locales/zh-cn/index.js.map +1 -0
  206. package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts +10 -0
  207. package/dist/core/i18n/locales/zh-cn/interactive-mode.d.ts.map +1 -0
  208. package/dist/core/i18n/locales/zh-cn/interactive-mode.js +267 -0
  209. package/dist/core/i18n/locales/zh-cn/interactive-mode.js.map +1 -0
  210. package/dist/core/i18n/locales/zh-cn/keybindings.d.ts +11 -0
  211. package/dist/core/i18n/locales/zh-cn/keybindings.d.ts.map +1 -0
  212. package/dist/core/i18n/locales/zh-cn/keybindings.js +67 -0
  213. package/dist/core/i18n/locales/zh-cn/keybindings.js.map +1 -0
  214. package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts +7 -0
  215. package/dist/core/i18n/locales/zh-cn/slash-commands.d.ts.map +1 -0
  216. package/dist/core/i18n/locales/zh-cn/slash-commands.js +39 -0
  217. package/dist/core/i18n/locales/zh-cn/slash-commands.js.map +1 -0
  218. package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts +10 -0
  219. package/dist/core/i18n/locales/zh-cn/tui-builtin.d.ts.map +1 -0
  220. package/dist/core/i18n/locales/zh-cn/tui-builtin.js +15 -0
  221. package/dist/core/i18n/locales/zh-cn/tui-builtin.js.map +1 -0
  222. package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts +13 -0
  223. package/dist/core/i18n/locales/zh-cn/tui-components-misc.d.ts.map +1 -0
  224. package/dist/core/i18n/locales/zh-cn/tui-components-misc.js +102 -0
  225. package/dist/core/i18n/locales/zh-cn/tui-components-misc.js.map +1 -0
  226. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts +12 -0
  227. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.d.ts.map +1 -0
  228. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js +286 -0
  229. package/dist/core/i18n/locales/zh-cn/tui-components-selectors.js.map +1 -0
  230. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts +9 -0
  231. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.d.ts.map +1 -0
  232. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js +79 -0
  233. package/dist/core/i18n/locales/zh-cn/tui-interactive-misc.js.map +1 -0
  234. package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts +8 -0
  235. package/dist/core/i18n/locales/zh-cn/tui-self-owned.d.ts.map +1 -0
  236. package/dist/core/i18n/locales/zh-cn/tui-self-owned.js +72 -0
  237. package/dist/core/i18n/locales/zh-cn/tui-self-owned.js.map +1 -0
  238. package/dist/core/keybindings.d.ts +15 -0
  239. package/dist/core/keybindings.d.ts.map +1 -1
  240. package/dist/core/keybindings.js +18 -0
  241. package/dist/core/keybindings.js.map +1 -1
  242. package/dist/core/logger.d.ts.map +1 -1
  243. package/dist/core/logger.js +5 -1
  244. package/dist/core/logger.js.map +1 -1
  245. package/dist/core/model-config.d.ts +0 -1
  246. package/dist/core/model-config.d.ts.map +1 -1
  247. package/dist/core/model-config.js +9 -1
  248. package/dist/core/model-config.js.map +1 -1
  249. package/dist/core/model-registry.d.ts.map +1 -1
  250. package/dist/core/model-registry.js +2 -1
  251. package/dist/core/model-registry.js.map +1 -1
  252. package/dist/core/model-runtime.d.ts.map +1 -1
  253. package/dist/core/model-runtime.js +11 -7
  254. package/dist/core/model-runtime.js.map +1 -1
  255. package/dist/core/package-install-host.d.ts.map +1 -1
  256. package/dist/core/package-install-host.js +4 -3
  257. package/dist/core/package-install-host.js.map +1 -1
  258. package/dist/core/package-manager.d.ts.map +1 -1
  259. package/dist/core/package-manager.js +15 -10
  260. package/dist/core/package-manager.js.map +1 -1
  261. package/dist/core/package-resource-collection.d.ts.map +1 -1
  262. package/dist/core/package-resource-collection.js +2 -1
  263. package/dist/core/package-resource-collection.js.map +1 -1
  264. package/dist/core/package-source.d.ts.map +1 -1
  265. package/dist/core/package-source.js +3 -2
  266. package/dist/core/package-source.js.map +1 -1
  267. package/dist/core/provider-composer.d.ts +2 -2
  268. package/dist/core/provider-composer.d.ts.map +1 -1
  269. package/dist/core/provider-composer.js +29 -21
  270. package/dist/core/provider-composer.js.map +1 -1
  271. package/dist/core/remote-catalog-provider.d.ts.map +1 -1
  272. package/dist/core/remote-catalog-provider.js +6 -2
  273. package/dist/core/remote-catalog-provider.js.map +1 -1
  274. package/dist/core/resolve-config-value.d.ts.map +1 -1
  275. package/dist/core/resolve-config-value.js +15 -5
  276. package/dist/core/resolve-config-value.js.map +1 -1
  277. package/dist/core/sdk.d.ts +27 -5
  278. package/dist/core/sdk.d.ts.map +1 -1
  279. package/dist/core/sdk.js +80 -55
  280. package/dist/core/sdk.js.map +1 -1
  281. package/dist/core/session-cwd.d.ts.map +1 -1
  282. package/dist/core/session-cwd.js +5 -2
  283. package/dist/core/session-cwd.js.map +1 -1
  284. package/dist/core/session-export.d.ts.map +1 -1
  285. package/dist/core/session-export.js +2 -1
  286. package/dist/core/session-export.js.map +1 -1
  287. package/dist/core/session-manager.d.ts.map +1 -1
  288. package/dist/core/session-manager.js +39 -29
  289. package/dist/core/session-manager.js.map +1 -1
  290. package/dist/core/session-storage.d.ts.map +1 -1
  291. package/dist/core/session-storage.js +3 -3
  292. package/dist/core/session-storage.js.map +1 -1
  293. package/dist/core/settings-manager.d.ts +20 -20
  294. package/dist/core/settings-manager.d.ts.map +1 -1
  295. package/dist/core/settings-manager.js +47 -59
  296. package/dist/core/settings-manager.js.map +1 -1
  297. package/dist/core/slash-commands.d.ts.map +1 -1
  298. package/dist/core/slash-commands.js +53 -32
  299. package/dist/core/slash-commands.js.map +1 -1
  300. package/dist/core/system-prompt.d.ts.map +1 -1
  301. package/dist/core/system-prompt.js +25 -2
  302. package/dist/core/system-prompt.js.map +1 -1
  303. package/dist/core/tools/bash.d.ts.map +1 -1
  304. package/dist/core/tools/bash.js +11 -7
  305. package/dist/core/tools/bash.js.map +1 -1
  306. package/dist/core/tools/edit-diff.d.ts.map +1 -1
  307. package/dist/core/tools/edit-diff.js +9 -4
  308. package/dist/core/tools/edit-diff.js.map +1 -1
  309. package/dist/core/tools/edit.d.ts.map +1 -1
  310. package/dist/core/tools/edit.js +4 -3
  311. package/dist/core/tools/edit.js.map +1 -1
  312. package/dist/core/tools/index.d.ts.map +1 -1
  313. package/dist/core/tools/index.js +3 -2
  314. package/dist/core/tools/index.js.map +1 -1
  315. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  316. package/dist/core/tools/output-accumulator.js +2 -1
  317. package/dist/core/tools/output-accumulator.js.map +1 -1
  318. package/dist/core/tools/read.d.ts.map +1 -1
  319. package/dist/core/tools/read.js +6 -2
  320. package/dist/core/tools/read.js.map +1 -1
  321. package/dist/core/tools/write.d.ts.map +1 -1
  322. package/dist/core/tools/write.js +2 -1
  323. package/dist/core/tools/write.js.map +1 -1
  324. package/dist/durable/durable-service.d.ts.map +1 -1
  325. package/dist/durable/durable-service.js +25 -18
  326. package/dist/durable/durable-service.js.map +1 -1
  327. package/dist/host/checkpoint-commit.d.ts.map +1 -1
  328. package/dist/host/checkpoint-commit.js +2 -1
  329. package/dist/host/checkpoint-commit.js.map +1 -1
  330. package/dist/host/manual-compaction.d.ts.map +1 -1
  331. package/dist/host/manual-compaction.js +2 -1
  332. package/dist/host/manual-compaction.js.map +1 -1
  333. package/dist/host/output-projection.d.ts +0 -13
  334. package/dist/host/output-projection.d.ts.map +1 -1
  335. package/dist/host/output-projection.js +16 -2
  336. package/dist/host/output-projection.js.map +1 -1
  337. package/dist/host/summary-retry.d.ts.map +1 -1
  338. package/dist/host/summary-retry.js +3 -2
  339. package/dist/host/summary-retry.js.map +1 -1
  340. package/dist/main.d.ts.map +1 -1
  341. package/dist/main.js +97 -60
  342. package/dist/main.js.map +1 -1
  343. package/dist/modes/interactive/components/agents-view.d.ts.map +1 -1
  344. package/dist/modes/interactive/components/agents-view.js +18 -15
  345. package/dist/modes/interactive/components/agents-view.js.map +1 -1
  346. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  347. package/dist/modes/interactive/components/assistant-message.js +6 -5
  348. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  349. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  350. package/dist/modes/interactive/components/bash-execution.js +12 -7
  351. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  352. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  353. package/dist/modes/interactive/components/bordered-loader.js +2 -1
  354. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  355. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  356. package/dist/modes/interactive/components/branch-summary-message.js +6 -5
  357. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  358. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  359. package/dist/modes/interactive/components/compaction-summary-message.js +9 -5
  360. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  361. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  362. package/dist/modes/interactive/components/config-selector.js +18 -15
  363. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  364. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -1
  365. package/dist/modes/interactive/components/custom-entry.js +2 -1
  366. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  367. package/dist/modes/interactive/components/dialog-editor.d.ts.map +1 -1
  368. package/dist/modes/interactive/components/dialog-editor.js +5 -4
  369. package/dist/modes/interactive/components/dialog-editor.js.map +1 -1
  370. package/dist/modes/interactive/components/dialog-input.d.ts.map +1 -1
  371. package/dist/modes/interactive/components/dialog-input.js +2 -1
  372. package/dist/modes/interactive/components/dialog-input.js.map +1 -1
  373. package/dist/modes/interactive/components/dialog-selector.d.ts.map +1 -1
  374. package/dist/modes/interactive/components/dialog-selector.js +4 -3
  375. package/dist/modes/interactive/components/dialog-selector.js.map +1 -1
  376. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -1
  377. package/dist/modes/interactive/components/first-time-setup.js +11 -10
  378. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  379. package/dist/modes/interactive/components/footer.d.ts +0 -2
  380. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  381. package/dist/modes/interactive/components/footer.js +8 -10
  382. package/dist/modes/interactive/components/footer.js.map +1 -1
  383. package/dist/modes/interactive/components/index.d.ts +1 -0
  384. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  385. package/dist/modes/interactive/components/index.js +1 -0
  386. package/dist/modes/interactive/components/index.js.map +1 -1
  387. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  388. package/dist/modes/interactive/components/keybinding-hints.js +3 -2
  389. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  390. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  391. package/dist/modes/interactive/components/login-dialog.js +12 -11
  392. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  393. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -1
  394. package/dist/modes/interactive/components/mermaid.js +6 -2
  395. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  396. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  397. package/dist/modes/interactive/components/model-selector.js +28 -16
  398. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  399. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  400. package/dist/modes/interactive/components/oauth-selector.js +10 -9
  401. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  402. package/dist/modes/interactive/components/plugin-manager-entry.d.ts.map +1 -1
  403. package/dist/modes/interactive/components/plugin-manager-entry.js +22 -13
  404. package/dist/modes/interactive/components/plugin-manager-entry.js.map +1 -1
  405. package/dist/modes/interactive/components/plugin-selection-entry.d.ts.map +1 -1
  406. package/dist/modes/interactive/components/plugin-selection-entry.js +27 -12
  407. package/dist/modes/interactive/components/plugin-selection-entry.js.map +1 -1
  408. package/dist/modes/interactive/components/queue-manager-selector.d.ts +60 -0
  409. package/dist/modes/interactive/components/queue-manager-selector.d.ts.map +1 -0
  410. package/dist/modes/interactive/components/queue-manager-selector.js +166 -0
  411. package/dist/modes/interactive/components/queue-manager-selector.js.map +1 -0
  412. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  413. package/dist/modes/interactive/components/scoped-models-selector.js +16 -14
  414. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  415. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  416. package/dist/modes/interactive/components/session-selector.js +43 -31
  417. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  418. package/dist/modes/interactive/components/settings-selector.d.ts +4 -6
  419. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  420. package/dist/modes/interactive/components/settings-selector.js +115 -120
  421. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  422. package/dist/modes/interactive/components/settings-submenu.d.ts.map +1 -1
  423. package/dist/modes/interactive/components/settings-submenu.js +5 -4
  424. package/dist/modes/interactive/components/settings-submenu.js.map +1 -1
  425. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  426. package/dist/modes/interactive/components/show-images-selector.js +3 -2
  427. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  428. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  429. package/dist/modes/interactive/components/skill-invocation-message.js +4 -3
  430. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  431. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -1
  432. package/dist/modes/interactive/components/status-indicator.js +14 -5
  433. package/dist/modes/interactive/components/status-indicator.js.map +1 -1
  434. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  435. package/dist/modes/interactive/components/theme-selector.js +2 -1
  436. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  437. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  438. package/dist/modes/interactive/components/thinking-selector.js +11 -4
  439. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  440. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  441. package/dist/modes/interactive/components/tool-execution.js +8 -3
  442. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  443. package/dist/modes/interactive/components/tree-list.d.ts.map +1 -1
  444. package/dist/modes/interactive/components/tree-list.js +7 -6
  445. package/dist/modes/interactive/components/tree-list.js.map +1 -1
  446. package/dist/modes/interactive/components/tree-render.d.ts.map +1 -1
  447. package/dist/modes/interactive/components/tree-render.js +28 -23
  448. package/dist/modes/interactive/components/tree-render.js.map +1 -1
  449. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  450. package/dist/modes/interactive/components/tree-selector.js +9 -7
  451. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  452. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  453. package/dist/modes/interactive/components/user-message-selector.js +5 -4
  454. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  455. package/dist/modes/interactive/components/workflow-view.d.ts.map +1 -1
  456. package/dist/modes/interactive/components/workflow-view.js +36 -21
  457. package/dist/modes/interactive/components/workflow-view.js.map +1 -1
  458. package/dist/modes/interactive/external-editor.d.ts.map +1 -1
  459. package/dist/modes/interactive/external-editor.js +2 -1
  460. package/dist/modes/interactive/external-editor.js.map +1 -1
  461. package/dist/modes/interactive/interactive-auth.d.ts.map +1 -1
  462. package/dist/modes/interactive/interactive-auth.js +71 -40
  463. package/dist/modes/interactive/interactive-auth.js.map +1 -1
  464. package/dist/modes/interactive/interactive-commands.d.ts +1 -0
  465. package/dist/modes/interactive/interactive-commands.d.ts.map +1 -1
  466. package/dist/modes/interactive/interactive-commands.js +3 -0
  467. package/dist/modes/interactive/interactive-commands.js.map +1 -1
  468. package/dist/modes/interactive/interactive-dialog-ui.d.ts.map +1 -1
  469. package/dist/modes/interactive/interactive-dialog-ui.js +5 -5
  470. package/dist/modes/interactive/interactive-dialog-ui.js.map +1 -1
  471. package/dist/modes/interactive/interactive-format.d.ts.map +1 -1
  472. package/dist/modes/interactive/interactive-format.js +34 -18
  473. package/dist/modes/interactive/interactive-format.js.map +1 -1
  474. package/dist/modes/interactive/interactive-helpers.d.ts.map +1 -1
  475. package/dist/modes/interactive/interactive-helpers.js +7 -2
  476. package/dist/modes/interactive/interactive-helpers.js.map +1 -1
  477. package/dist/modes/interactive/interactive-mode.d.ts +4 -2
  478. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  479. package/dist/modes/interactive/interactive-mode.js +350 -279
  480. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  481. package/dist/modes/interactive/interactive-selectors.d.ts +9 -0
  482. package/dist/modes/interactive/interactive-selectors.d.ts.map +1 -1
  483. package/dist/modes/interactive/interactive-selectors.js +79 -25
  484. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  485. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  486. package/dist/modes/interactive/theme/theme-controller.js +5 -1
  487. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  488. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  489. package/dist/modes/interactive/theme/theme.js +26 -23
  490. package/dist/modes/interactive/theme/theme.js.map +1 -1
  491. package/dist/modes/json-event.d.ts.map +1 -1
  492. package/dist/modes/json-event.js +3 -2
  493. package/dist/modes/json-event.js.map +1 -1
  494. package/dist/modes/print-mode.d.ts.map +1 -1
  495. package/dist/modes/print-mode.js +3 -2
  496. package/dist/modes/print-mode.js.map +1 -1
  497. package/dist/modes/rpc/rpc-client.d.ts +0 -8
  498. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  499. package/dist/modes/rpc/rpc-client.js +3 -14
  500. package/dist/modes/rpc/rpc-client.js.map +1 -1
  501. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  502. package/dist/modes/rpc/rpc-mode.js +0 -9
  503. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  504. package/dist/modes/rpc/rpc-types.d.ts +0 -19
  505. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  506. package/dist/modes/rpc/rpc-types.js.map +1 -1
  507. package/dist/package-manager-cli.d.ts.map +1 -1
  508. package/dist/package-manager-cli.js +28 -13
  509. package/dist/package-manager-cli.js.map +1 -1
  510. package/dist/plugins/ecosystem/catalog.d.ts.map +1 -1
  511. package/dist/plugins/ecosystem/catalog.js +3 -2
  512. package/dist/plugins/ecosystem/catalog.js.map +1 -1
  513. package/dist/plugins/ecosystem/cli.d.ts.map +1 -1
  514. package/dist/plugins/ecosystem/cli.js +2 -1
  515. package/dist/plugins/ecosystem/cli.js.map +1 -1
  516. package/dist/plugins/ecosystem/default-plugin-market.d.ts.map +1 -1
  517. package/dist/plugins/ecosystem/default-plugin-market.js +3 -2
  518. package/dist/plugins/ecosystem/default-plugin-market.js.map +1 -1
  519. package/dist/plugins/ecosystem/distribution.d.ts.map +1 -1
  520. package/dist/plugins/ecosystem/distribution.js +2 -1
  521. package/dist/plugins/ecosystem/distribution.js.map +1 -1
  522. package/dist/plugins/ecosystem/installer.d.ts.map +1 -1
  523. package/dist/plugins/ecosystem/installer.js +3 -2
  524. package/dist/plugins/ecosystem/installer.js.map +1 -1
  525. package/dist/plugins/ecosystem/node-disk-registry-source.d.ts.map +1 -1
  526. package/dist/plugins/ecosystem/node-disk-registry-source.js +20 -17
  527. package/dist/plugins/ecosystem/node-disk-registry-source.js.map +1 -1
  528. package/dist/plugins/ecosystem/node-distribution-host.d.ts.map +1 -1
  529. package/dist/plugins/ecosystem/node-distribution-host.js +35 -34
  530. package/dist/plugins/ecosystem/node-distribution-host.js.map +1 -1
  531. package/dist/plugins/ecosystem/node-npm-registry-source.d.ts.map +1 -1
  532. package/dist/plugins/ecosystem/node-npm-registry-source.js +35 -34
  533. package/dist/plugins/ecosystem/node-npm-registry-source.js.map +1 -1
  534. package/dist/plugins/ecosystem/node-package-install-host.d.ts.map +1 -1
  535. package/dist/plugins/ecosystem/node-package-install-host.js +9 -8
  536. package/dist/plugins/ecosystem/node-package-install-host.js.map +1 -1
  537. package/dist/plugins/ecosystem/node-package-install-persistence.d.ts.map +1 -1
  538. package/dist/plugins/ecosystem/node-package-install-persistence.js +4 -3
  539. package/dist/plugins/ecosystem/node-package-install-persistence.js.map +1 -1
  540. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts +9 -2
  541. package/dist/plugins/ecosystem/node-plugin-bootstrap.d.ts.map +1 -1
  542. package/dist/plugins/ecosystem/node-plugin-bootstrap.js +44 -5
  543. package/dist/plugins/ecosystem/node-plugin-bootstrap.js.map +1 -1
  544. package/dist/plugins/ecosystem/node-plugin-trust-root.d.ts.map +1 -1
  545. package/dist/plugins/ecosystem/node-plugin-trust-root.js +10 -9
  546. package/dist/plugins/ecosystem/node-plugin-trust-root.js.map +1 -1
  547. package/dist/plugins/ecosystem/node-registry-source.d.ts.map +1 -1
  548. package/dist/plugins/ecosystem/node-registry-source.js +31 -30
  549. package/dist/plugins/ecosystem/node-registry-source.js.map +1 -1
  550. package/dist/plugins/ecosystem/node-release-package-source.d.ts.map +1 -1
  551. package/dist/plugins/ecosystem/node-release-package-source.js +30 -29
  552. package/dist/plugins/ecosystem/node-release-package-source.js.map +1 -1
  553. package/dist/plugins/ecosystem/node-tar-writer.d.ts.map +1 -1
  554. package/dist/plugins/ecosystem/node-tar-writer.js +11 -10
  555. package/dist/plugins/ecosystem/node-tar-writer.js.map +1 -1
  556. package/dist/plugins/ecosystem/node-url-package-source.d.ts.map +1 -1
  557. package/dist/plugins/ecosystem/node-url-package-source.js +21 -20
  558. package/dist/plugins/ecosystem/node-url-package-source.js.map +1 -1
  559. package/dist/plugins/ecosystem/plugin-acquisition.d.ts.map +1 -1
  560. package/dist/plugins/ecosystem/plugin-acquisition.js +3 -2
  561. package/dist/plugins/ecosystem/plugin-acquisition.js.map +1 -1
  562. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts +9 -1
  563. package/dist/plugins/ecosystem/plugin-bootstrap.d.ts.map +1 -1
  564. package/dist/plugins/ecosystem/plugin-bootstrap.js +5 -0
  565. package/dist/plugins/ecosystem/plugin-bootstrap.js.map +1 -1
  566. package/dist/plugins/ecosystem/registry-cli-adapter.d.ts.map +1 -1
  567. package/dist/plugins/ecosystem/registry-cli-adapter.js +2 -1
  568. package/dist/plugins/ecosystem/registry-cli-adapter.js.map +1 -1
  569. package/dist/plugins/ecosystem/registry.d.ts.map +1 -1
  570. package/dist/plugins/ecosystem/registry.js +35 -32
  571. package/dist/plugins/ecosystem/registry.js.map +1 -1
  572. package/dist/plugins/ecosystem/resolver.d.ts.map +1 -1
  573. package/dist/plugins/ecosystem/resolver.js +3 -2
  574. package/dist/plugins/ecosystem/resolver.js.map +1 -1
  575. package/dist/plugins/ecosystem/selection-store.d.ts.map +1 -1
  576. package/dist/plugins/ecosystem/selection-store.js +11 -10
  577. package/dist/plugins/ecosystem/selection-store.js.map +1 -1
  578. package/dist/plugins/ecosystem/selection.d.ts.map +1 -1
  579. package/dist/plugins/ecosystem/selection.js +8 -7
  580. package/dist/plugins/ecosystem/selection.js.map +1 -1
  581. package/dist/plugins/ecosystem/state.d.ts.map +1 -1
  582. package/dist/plugins/ecosystem/state.js +24 -23
  583. package/dist/plugins/ecosystem/state.js.map +1 -1
  584. package/dist/plugins/ecosystem/updates.d.ts.map +1 -1
  585. package/dist/plugins/ecosystem/updates.js +5 -4
  586. package/dist/plugins/ecosystem/updates.js.map +1 -1
  587. package/dist/plugins/mcp-http.d.ts +0 -17
  588. package/dist/plugins/mcp-http.d.ts.map +1 -1
  589. package/dist/plugins/mcp-http.js +30 -7
  590. package/dist/plugins/mcp-http.js.map +1 -1
  591. package/dist/plugins/plugin-supervisor.d.ts.map +1 -1
  592. package/dist/plugins/plugin-supervisor.js +19 -1
  593. package/dist/plugins/plugin-supervisor.js.map +1 -1
  594. package/dist/profile/first-roles.d.ts.map +1 -1
  595. package/dist/profile/first-roles.js +10 -1
  596. package/dist/profile/first-roles.js.map +1 -1
  597. package/dist/profile/goal-plugin.d.ts.map +1 -1
  598. package/dist/profile/goal-plugin.js +24 -5
  599. package/dist/profile/goal-plugin.js.map +1 -1
  600. package/dist/profile/identity.d.ts.map +1 -1
  601. package/dist/profile/identity.js +7 -6
  602. package/dist/profile/identity.js.map +1 -1
  603. package/dist/profile/lock.d.ts.map +1 -1
  604. package/dist/profile/lock.js +15 -1
  605. package/dist/profile/lock.js.map +1 -1
  606. package/dist/profile/plan-plugin.d.ts.map +1 -1
  607. package/dist/profile/plan-plugin.js +26 -13
  608. package/dist/profile/plan-plugin.js.map +1 -1
  609. package/dist/profile/plugin-profiles.d.ts.map +1 -1
  610. package/dist/profile/plugin-profiles.js +2 -1
  611. package/dist/profile/plugin-profiles.js.map +1 -1
  612. package/dist/profile/policy-manifest.d.ts.map +1 -1
  613. package/dist/profile/policy-manifest.js +5 -4
  614. package/dist/profile/policy-manifest.js.map +1 -1
  615. package/dist/profile/profile-registry.d.ts +0 -12
  616. package/dist/profile/profile-registry.d.ts.map +1 -1
  617. package/dist/profile/profile-registry.js +14 -1
  618. package/dist/profile/profile-registry.js.map +1 -1
  619. package/dist/profile/role-catalog.d.ts +0 -1
  620. package/dist/profile/role-catalog.d.ts.map +1 -1
  621. package/dist/profile/role-catalog.js +17 -15
  622. package/dist/profile/role-catalog.js.map +1 -1
  623. package/dist/profile/role-orchestrator.d.ts.map +1 -1
  624. package/dist/profile/role-orchestrator.js +8 -7
  625. package/dist/profile/role-orchestrator.js.map +1 -1
  626. package/dist/profile/role-runner.d.ts.map +1 -1
  627. package/dist/profile/role-runner.js +3 -2
  628. package/dist/profile/role-runner.js.map +1 -1
  629. package/dist/profile/root-facade.d.ts.map +1 -1
  630. package/dist/profile/root-facade.js +2 -1
  631. package/dist/profile/root-facade.js.map +1 -1
  632. package/dist/profile/skill-discovery-wiring.d.ts.map +1 -1
  633. package/dist/profile/skill-discovery-wiring.js +7 -2
  634. package/dist/profile/skill-discovery-wiring.js.map +1 -1
  635. package/dist/profile/state-store.d.ts.map +1 -1
  636. package/dist/profile/state-store.js +13 -9
  637. package/dist/profile/state-store.js.map +1 -1
  638. package/dist/profile/todo-plugin.d.ts.map +1 -1
  639. package/dist/profile/todo-plugin.js +9 -4
  640. package/dist/profile/todo-plugin.js.map +1 -1
  641. package/dist/profiles/builtin-suites.d.ts +13 -6
  642. package/dist/profiles/builtin-suites.d.ts.map +1 -1
  643. package/dist/profiles/builtin-suites.js +15 -6
  644. package/dist/profiles/builtin-suites.js.map +1 -1
  645. package/dist/profiles/suite-loader.d.ts +25 -1
  646. package/dist/profiles/suite-loader.d.ts.map +1 -1
  647. package/dist/profiles/suite-loader.js +34 -9
  648. package/dist/profiles/suite-loader.js.map +1 -1
  649. package/dist/remote/server-entry.d.ts.map +1 -1
  650. package/dist/remote/server-entry.js +3 -2
  651. package/dist/remote/server-entry.js.map +1 -1
  652. package/dist/remote/session-source.d.ts.map +1 -1
  653. package/dist/remote/session-source.js +8 -4
  654. package/dist/remote/session-source.js.map +1 -1
  655. package/dist/share/session-share.d.ts.map +1 -1
  656. package/dist/share/session-share.js +14 -2
  657. package/dist/share/session-share.js.map +1 -1
  658. package/dist/testing/plugin-testkit.d.ts.map +1 -1
  659. package/dist/testing/plugin-testkit.js +4 -3
  660. package/dist/testing/plugin-testkit.js.map +1 -1
  661. package/dist/testing/runtime-delivery-queue.d.ts.map +1 -1
  662. package/dist/testing/runtime-delivery-queue.js +2 -1
  663. package/dist/testing/runtime-delivery-queue.js.map +1 -1
  664. package/dist/testing/session-plugin-testkit.d.ts.map +1 -1
  665. package/dist/testing/session-plugin-testkit.js +10 -7
  666. package/dist/testing/session-plugin-testkit.js.map +1 -1
  667. package/dist/utils/ansi.d.ts.map +1 -1
  668. package/dist/utils/ansi.js +2 -1
  669. package/dist/utils/ansi.js.map +1 -1
  670. package/dist/utils/clipboard.d.ts.map +1 -1
  671. package/dist/utils/clipboard.js +7 -6
  672. package/dist/utils/clipboard.js.map +1 -1
  673. package/dist/utils/image-resize-worker.d.ts.map +1 -1
  674. package/dist/utils/image-resize-worker.js +3 -2
  675. package/dist/utils/image-resize-worker.js.map +1 -1
  676. package/dist/utils/photon.d.ts +2 -2
  677. package/dist/utils/photon.d.ts.map +1 -1
  678. package/dist/utils/photon.js +2 -2
  679. package/dist/utils/photon.js.map +1 -1
  680. package/dist/utils/shell.d.ts.map +1 -1
  681. package/dist/utils/shell.js +9 -8
  682. package/dist/utils/shell.js.map +1 -1
  683. package/dist/utils/tools-manager.d.ts.map +1 -1
  684. package/dist/utils/tools-manager.js +23 -13
  685. package/dist/utils/tools-manager.js.map +1 -1
  686. package/dist/utils/version-check.d.ts.map +1 -1
  687. package/dist/utils/version-check.js +5 -1
  688. package/dist/utils/version-check.js.map +1 -1
  689. package/docs/compaction.md +1 -3
  690. package/docs/docs.json +4 -0
  691. package/docs/index.md +1 -0
  692. package/docs/keybindings.md +3 -0
  693. package/docs/mcp.md +103 -0
  694. package/docs/models.md +14 -22
  695. package/docs/providers.md +0 -1
  696. package/docs/quickstart.md +1 -1
  697. package/docs/rpc.md +1 -26
  698. package/docs/sdk.md +4 -6
  699. package/docs/settings.md +10 -12
  700. package/docs/skills.md +1 -9
  701. package/docs/terminal-setup.md +2 -3
  702. package/docs/usage.md +7 -6
  703. package/examples/extensions/with-deps/package-lock.json +2 -2
  704. package/examples/extensions/with-deps/package.json +1 -1
  705. package/examples/extensions/with-deps/plugin.json +1 -1
  706. package/examples/sdk/10-settings.ts +2 -4
  707. package/examples/sdk/12-full-control.ts +1 -2
  708. package/package.json +1 -3
  709. package/dist/bundle/chunks/chunk-EALJ5DDX.js +0 -1452
  710. package/dist/core/extensions/microcompact.d.ts +0 -80
  711. package/dist/core/extensions/microcompact.d.ts.map +0 -1
  712. package/dist/core/extensions/microcompact.js +0 -134
  713. package/dist/core/extensions/microcompact.js.map +0 -1
  714. package/dist/server/create-harness.d.ts +0 -26
  715. package/dist/server/create-harness.d.ts.map +0 -1
  716. package/dist/server/create-harness.js +0 -106
  717. package/dist/server/create-harness.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { performance } from "node:perf_hooks";
3
+ import { t } from "../i18n/index.js";
3
4
  import { createLifecycleRuntime } from "./capability-runtime-events.js";
4
5
  import { guardedComposition, guardedCredentials, guardedInteraction, guardedOutput, guardedSession, RuntimeAgentTask, withNormalizedToolResultExecute, } from "./capability-runtime-guards.js";
5
6
  import { createRuntimeInspector } from "./capability-runtime-inspect.js";
@@ -48,55 +49,55 @@ export function createCapabilityRuntime(inputHost, options = {}) {
48
49
  const hasSessionExport = host.features.includes("session-export");
49
50
  const hasSessionRevision = host.features.includes("session-revision-v1");
50
51
  if (hasSession && !options.session) {
51
- throw new Error("Host declares session capability without a SessionAPI");
52
+ throw new Error(t("Host declares session capability without a SessionAPI"));
52
53
  }
53
54
  if (!hasSession && options.session) {
54
- throw new Error("Host provides a SessionAPI without the session capability");
55
+ throw new Error(t("Host provides a SessionAPI without the session capability"));
55
56
  }
56
57
  if (hasSessionExport && !hasSession) {
57
- throw new Error("Host declares session-export capability without the session capability");
58
+ throw new Error(t("Host declares session-export capability without the session capability"));
58
59
  }
59
60
  if (hasSessionExport && !options.session?.exportArtifact) {
60
- throw new Error("Host declares session-export capability without SessionAPI.exportArtifact");
61
+ throw new Error(t("Host declares session-export capability without SessionAPI.exportArtifact"));
61
62
  }
62
63
  if (hasSessionRevision && !hasSession) {
63
- throw new Error("Host declares session-revision-v1 capability without the session capability");
64
+ throw new Error(t("Host declares session-revision-v1 capability without the session capability"));
64
65
  }
65
66
  if (hasSessionRevision && !options.session?.getRevision) {
66
- throw new Error("Host declares session-revision-v1 capability without SessionAPI.getRevision");
67
+ throw new Error(t("Host declares session-revision-v1 capability without SessionAPI.getRevision"));
67
68
  }
68
69
  if (host.features.includes("agents") && !options.session) {
69
- throw new Error("Host declares agents capability without a parent SessionAPI");
70
+ throw new Error(t("Host declares agents capability without a parent SessionAPI"));
70
71
  }
71
72
  if (host.features.includes("agents") &&
72
73
  !options.agents &&
73
74
  options.agentSessionReader === undefined &&
74
75
  options.agentSessionLister === undefined) {
75
- throw new Error("Host declares agents capability without an AgentTaskAdapter or a session reader/lister");
76
+ throw new Error(t("Host declares agents capability without an AgentTaskAdapter or a session reader/lister"));
76
77
  }
77
78
  if (options.agents && !host.features.includes("agents")) {
78
- throw new Error("Host provides an AgentTaskAdapter without the agents capability");
79
+ throw new Error(t("Host provides an AgentTaskAdapter without the agents capability"));
79
80
  }
80
81
  if (options.agentResults && !host.features.includes("agent-result-replay-v1")) {
81
- throw new Error("Host provides an agentResults option without the agent-result-replay-v1 capability");
82
+ throw new Error(t("Host provides an agentResults option without the agent-result-replay-v1 capability"));
82
83
  }
83
84
  if (host.features.includes("agent-result-replay-v1") && !options.agentResults) {
84
- throw new Error("Host declares agent-result-replay-v1 capability without an agentResults option");
85
+ throw new Error(t("Host declares agent-result-replay-v1 capability without an agentResults option"));
85
86
  }
86
87
  if (host.features.includes("credentials") && !options.credentials) {
87
- throw new Error("Host declares credentials capability without a CredentialAPI");
88
+ throw new Error(t("Host declares credentials capability without a CredentialAPI"));
88
89
  }
89
90
  if (options.credentials && !host.features.includes("credentials")) {
90
- throw new Error("Host provides a CredentialAPI without the credentials capability");
91
+ throw new Error(t("Host provides a CredentialAPI without the credentials capability"));
91
92
  }
92
93
  if (host.features.includes("interaction") && !options.interaction) {
93
- throw new Error("Host declares interaction capability without an InteractionHostV1");
94
+ throw new Error(t("Host declares interaction capability without an InteractionHostV1"));
94
95
  }
95
96
  if (options.interaction && !host.features.includes("interaction")) {
96
- throw new Error("Host provides an InteractionHostV1 without the interaction capability");
97
+ throw new Error(t("Host provides an InteractionHostV1 without the interaction capability"));
97
98
  }
98
99
  if (host.features.includes("agent-result-replay-v1") && !host.features.includes("agents")) {
99
- throw new Error("Host declares the agent-result-replay-v1 feature without the agents capability");
100
+ throw new Error(t("Host declares the agent-result-replay-v1 feature without the agents capability"));
100
101
  }
101
102
  const clock = options.clock ?? (() => 0);
102
103
  // Per-runtime unique segment for generated agent task ids: without an
@@ -128,7 +129,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
128
129
  return fallback;
129
130
  const id = options.idFactory(kind, sequence);
130
131
  if (typeof id !== "string" || !id.trim()) {
131
- throw new Error(`Runtime idFactory must return a non-empty string for ${kind}`);
132
+ throw new Error(t("Runtime idFactory must return a non-empty string for {kind}", { kind }));
132
133
  }
133
134
  return id;
134
135
  };
@@ -285,12 +286,12 @@ export function createCapabilityRuntime(inputHost, options = {}) {
285
286
  };
286
287
  const assertStateKey = (key) => {
287
288
  if (typeof key !== "string" || !key.trim())
288
- throw new Error("State key must be a non-empty string");
289
+ throw new Error(t("State key must be a non-empty string"));
289
290
  };
290
291
  const assertStateOptions = (options) => {
291
292
  if (options?.expectedRevision !== undefined &&
292
293
  (!Number.isSafeInteger(options.expectedRevision) || options.expectedRevision < 0)) {
293
- throw new Error("State expectedRevision must be a non-negative safe integer");
294
+ throw new Error(t("State expectedRevision must be a non-negative safe integer"));
294
295
  }
295
296
  };
296
297
  const stateSnapshot = (key, state) => detachedSnapshot({ key, revision: state.revision, value: state.value });
@@ -313,9 +314,9 @@ export function createCapabilityRuntime(inputHost, options = {}) {
313
314
  const notifyStateWatchers = (owner, change) => dispatchStateChange(stateWatchers.get(owner), owner, change);
314
315
  const recordLog = (level, owner, message, fields, cause) => {
315
316
  if (typeof message !== "string" || !message.trim())
316
- throw new Error("Logger message must be non-empty");
317
+ throw new Error(t("Logger message must be non-empty"));
317
318
  if (fields !== undefined && !isPluginConfigValue(fields))
318
- throw new Error("Logger fields must be serializable");
319
+ throw new Error(t("Logger fields must be serializable"));
319
320
  const record = {
320
321
  version: 1,
321
322
  level,
@@ -436,12 +437,12 @@ export function createCapabilityRuntime(inputHost, options = {}) {
436
437
  assertStateKey(key);
437
438
  assertStateOptions(options);
438
439
  if (!isPluginConfigValue(value))
439
- throw new Error("State value must be serializable");
440
+ throw new Error(t("State value must be serializable"));
440
441
  const namespace = view.ensureNamespace();
441
442
  const revisions = view.ensureRevisions();
442
443
  const currentRevision = revisions.get(key) ?? 0;
443
444
  if (options?.expectedRevision !== undefined && options.expectedRevision !== currentRevision)
444
- throw new Error(`State revision conflict: ${view.conflictScope}/${key}`);
445
+ throw new Error(t("State revision conflict: {conflictScope}/{key}", { conflictScope: view.conflictScope, key }));
445
446
  const revision = currentRevision + 1;
446
447
  revisions.set(key, revision);
447
448
  namespace.set(key, { revision, value: detachedSnapshot(value) });
@@ -463,7 +464,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
463
464
  const revisions = view.ensureRevisions();
464
465
  const currentRevision = revisions.get(key) ?? 0;
465
466
  if (options?.expectedRevision !== undefined && options.expectedRevision !== currentRevision)
466
- throw new Error(`State revision conflict: ${view.conflictScope}/${key}`);
467
+ throw new Error(t("State revision conflict: {conflictScope}/{key}", { conflictScope: view.conflictScope, key }));
467
468
  const revision = currentRevision + 1;
468
469
  revisions.set(key, revision);
469
470
  namespace.delete(key);
@@ -479,7 +480,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
479
480
  list: (prefix) => {
480
481
  assertUsable();
481
482
  if (prefix !== undefined && typeof prefix !== "string")
482
- throw new Error("State prefix must be a string");
483
+ throw new Error(t("State prefix must be a string"));
483
484
  return view
484
485
  .listEntries()
485
486
  .filter(([key]) => prefix === undefined || key.startsWith(prefix))
@@ -489,9 +490,9 @@ export function createCapabilityRuntime(inputHost, options = {}) {
489
490
  watch: (prefix, handler) => {
490
491
  assertUsable();
491
492
  if (prefix !== undefined && typeof prefix !== "string")
492
- throw new Error("State prefix must be a string");
493
+ throw new Error(t("State prefix must be a string"));
493
494
  if (typeof handler !== "function")
494
- throw new Error("State watcher requires a handler");
495
+ throw new Error(t("State watcher requires a handler"));
495
496
  const watchers = view.ensureWatchers();
496
497
  const sequence = ++stateWatcherSequence;
497
498
  const id = createRuntimeId("state-watcher", sequence, `state-watcher:${view.watchScope}:${sequence}`);
@@ -589,7 +590,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
589
590
  const entry = { owner, ownerToken, value };
590
591
  if (registry.has(name)) {
591
592
  if (!replaceable)
592
- throw new Error(`${kind} is already registered: ${name}`);
593
+ throw new Error(t("{kind} is already registered: {name}", { kind, name }));
593
594
  const replaced = registry.get(name);
594
595
  // 同 owner 重注册 = 更新自身注册,不进替换链;恢复语义只跨 owner 生效。
595
596
  if (replaced.ownerToken !== ownerToken) {
@@ -631,7 +632,11 @@ export function createCapabilityRuntime(inputHost, options = {}) {
631
632
  continue;
632
633
  if (requirement.optional)
633
634
  continue;
634
- throw new Error(`Plugin capability is required but unavailable: ${requirement.id}@${requirement.version} (${manifest.id})`);
635
+ throw new Error(t("Plugin capability is required but unavailable: {capabilityId}@{version} ({pluginId})", {
636
+ capabilityId: requirement.id,
637
+ version: requirement.version,
638
+ pluginId: manifest.id,
639
+ }));
635
640
  }
636
641
  };
637
642
  const listContributionEntries = (point) => Array.from(point.entries.values())
@@ -669,10 +674,10 @@ export function createCapabilityRuntime(inputHost, options = {}) {
669
674
  async add(input) {
670
675
  assertPointActive();
671
676
  if (!input || typeof input.id !== "string" || !input.id.trim()) {
672
- throw new Error(`Contribution requires a non-empty id: ${pointId}`);
677
+ throw new Error(t("Contribution requires a non-empty id: {pointId}", { pointId }));
673
678
  }
674
679
  if (point.entries.has(input.id)) {
675
- throw new Error(`Contribution is already registered: ${pointId}@${version}:${input.id}`);
680
+ throw new Error(t("Contribution is already registered: {pointId}@{version}:{id}", { pointId, version, id: input.id }));
676
681
  }
677
682
  const value = detachedSnapshot(point.definition.validate(detachedSnapshot(input.value)));
678
683
  const entry = Object.freeze({ id: input.id, pointId, version, owner, ownerToken, lifecycle, value });
@@ -712,9 +717,13 @@ export function createCapabilityRuntime(inputHost, options = {}) {
712
717
  assertPointActive();
713
718
  const entry = point.entries.get(id);
714
719
  if (!entry)
715
- throw new Error(`Contribution is not registered: ${pointId}@${version}:${id}`);
720
+ throw new Error(t("Contribution is not registered: {pointId}@{version}:{id}", { pointId, version, id }));
716
721
  if (entry.ownerToken !== ownerToken)
717
- throw new Error(`Contribution can only be removed by its owner: ${pointId}@${version}:${id}`);
722
+ throw new Error(t("Contribution can only be removed by its owner: {pointId}@{version}:{id}", {
723
+ pointId,
724
+ version,
725
+ id,
726
+ }));
718
727
  point.entries.delete(id);
719
728
  await notifyContributionSubscribers(point, {
720
729
  pointId,
@@ -731,7 +740,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
731
740
  subscribe: (handler) => {
732
741
  assertPointActive();
733
742
  if (typeof handler !== "function")
734
- throw new Error(`Contribution subscriber must be callable: ${pointId}`);
743
+ throw new Error(t("Contribution subscriber must be callable: {pointId}", { pointId }));
735
744
  const sequence = ++contributionSubscriptionSequence;
736
745
  const id = createRuntimeId("contribution-subscription", sequence, `contribution-subscription:${owner}:${pointId}@${version}:${sequence}`);
737
746
  point.subscribers.set(id, { ownerToken, handler });
@@ -744,15 +753,15 @@ export function createCapabilityRuntime(inputHost, options = {}) {
744
753
  const lifecycleReference = (event, version) => {
745
754
  if (typeof event === "string") {
746
755
  if (typeof version !== "number" || !Number.isSafeInteger(version) || version < 1) {
747
- throw new Error("Lifecycle event version must be provided as a positive safe integer");
756
+ throw new Error(t("Lifecycle event version must be provided as a positive safe integer"));
748
757
  }
749
758
  return { id: event, version };
750
759
  }
751
760
  if (!event || typeof event !== "object" || typeof event.id !== "string" || !event.id.trim()) {
752
- throw new Error("Lifecycle event reference requires a non-empty id");
761
+ throw new Error(t("Lifecycle event reference requires a non-empty id"));
753
762
  }
754
763
  if (!Number.isSafeInteger(event.version) || event.version < 1) {
755
- throw new Error("Lifecycle event version must be a positive safe integer");
764
+ throw new Error(t("Lifecycle event version must be a positive safe integer"));
756
765
  }
757
766
  return { id: event.id, version: event.version };
758
767
  };
@@ -760,32 +769,34 @@ export function createCapabilityRuntime(inputHost, options = {}) {
760
769
  const reference = lifecycleReference(event, version);
761
770
  const stored = lifecycleDefinitions.get(lifecycleEventKey(reference.id, reference.version));
762
771
  if (!stored || !activeOwnerTokens.has(stored.ownerToken)) {
763
- throw new Error(`Lifecycle event is not defined: ${reference.id}@${reference.version}`);
772
+ throw new Error(t("Lifecycle event is not defined: {id}@{version}", { id: reference.id, version: reference.version }));
764
773
  }
765
774
  return stored;
766
775
  };
767
776
  const lifecycleRegistration = (kind, event, handler, version, owner, ownerToken, assertUsable, own, deliveryOptions) => {
768
777
  assertUsable();
769
778
  if (!lifecycleRegistrationKinds.has(kind) || typeof handler !== "function") {
770
- throw new Error(`Lifecycle ${kind} registration requires a callable handler`);
779
+ throw new Error(t("Lifecycle {kind} registration requires a callable handler", { kind }));
771
780
  }
772
781
  const stored = lifecycleDefinitionFor(event, version);
773
782
  if (stored.definition.allowedRegistrationKinds?.includes(kind) === false) {
774
- throw new Error(`Lifecycle ${kind} registration is not allowed: ${stored.definition.id}`);
783
+ throw new Error(t("Lifecycle {kind} registration is not allowed: {id}", { kind, id: stored.definition.id }));
775
784
  }
776
785
  if (kind === "transform" &&
777
786
  !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("candidate")) {
778
- throw new Error(`Lifecycle transform requires a candidate event: ${stored.definition.id}`);
787
+ throw new Error(t("Lifecycle transform requires a candidate event: {id}", { id: stored.definition.id }));
779
788
  }
780
789
  if (kind === "execute" && !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("committed")) {
781
- throw new Error(`Lifecycle execute requires a committed event: ${stored.definition.id}`);
790
+ throw new Error(t("Lifecycle execute requires a committed event: {id}", { id: stored.definition.id }));
782
791
  }
783
792
  if (kind === "after-commit" &&
784
793
  !(stored.definition.allowedPhases ?? [stored.definition.phase]).includes("committed")) {
785
- throw new Error(`Lifecycle after-commit requires a committed event: ${stored.definition.id}`);
794
+ throw new Error(t("Lifecycle after-commit requires a committed event: {id}", { id: stored.definition.id }));
786
795
  }
787
796
  if (deliveryOptions !== undefined && kind !== "observe" && kind !== "after-commit") {
788
- throw new Error(`Lifecycle delivery options are only supported for observation registrations: ${stored.definition.id}`);
797
+ throw new Error(t("Lifecycle delivery options are only supported for observation registrations: {id}", {
798
+ id: stored.definition.id,
799
+ }));
789
800
  }
790
801
  const key = lifecycleEventKey(stored.definition.id, stored.definition.version);
791
802
  const sequence = ++lifecycleRegistrationSequence;
@@ -809,7 +820,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
809
820
  measureBytes: (delivery) => {
810
821
  const serialized = JSON.stringify(delivery.event);
811
822
  if (serialized === undefined)
812
- throw new Error("Lifecycle event is not serializable");
823
+ throw new Error(t("Lifecycle event is not serializable"));
813
824
  return new TextEncoder().encode(serialized).byteLength || 1;
814
825
  },
815
826
  deliver: (delivery) => {
@@ -933,11 +944,11 @@ export function createCapabilityRuntime(inputHost, options = {}) {
933
944
  start: (name, attributes, parentSpanId) => {
934
945
  assertUsable();
935
946
  if (typeof name !== "string" || !name.trim())
936
- throw new Error("Diagnostic span name must be non-empty");
947
+ throw new Error(t("Diagnostic span name must be non-empty"));
937
948
  if (attributes !== undefined && !isPluginConfigValue(attributes))
938
- throw new Error("Diagnostic attributes must be serializable");
949
+ throw new Error(t("Diagnostic attributes must be serializable"));
939
950
  if (parentSpanId !== undefined && (typeof parentSpanId !== "string" || !parentSpanId.trim()))
940
- throw new Error("Diagnostic parentSpanId must be non-empty");
951
+ throw new Error(t("Diagnostic parentSpanId must be non-empty"));
941
952
  const spanSequenceValue = ++spanSequence;
942
953
  const spanId = createRuntimeId("span", spanSequenceValue, `span:${owner}:${spanSequenceValue}`);
943
954
  const traceId = parentSpanId
@@ -970,12 +981,12 @@ export function createCapabilityRuntime(inputHost, options = {}) {
970
981
  annotate(fields) {
971
982
  assertUsable();
972
983
  if (ended)
973
- throw new Error(`Diagnostic span is already ended: ${spanId}`);
984
+ throw new Error(t("Diagnostic span is already ended: {spanId}", { spanId }));
974
985
  if (!fields || typeof fields !== "object" || Array.isArray(fields) || !isPluginConfigValue(fields))
975
- throw new Error("Diagnostic annotations must be a plain object");
986
+ throw new Error(t("Diagnostic annotations must be a plain object"));
976
987
  const current = spans.get(spanId);
977
988
  if (!current)
978
- throw new Error(`Diagnostic span is not available: ${spanId}`);
989
+ throw new Error(t("Diagnostic span is not available: {spanId}", { spanId }));
979
990
  current.attributes = detachedSnapshot({
980
991
  ...current.attributes,
981
992
  ...fields,
@@ -984,14 +995,14 @@ export function createCapabilityRuntime(inputHost, options = {}) {
984
995
  end(outcome = { status: "ok" }) {
985
996
  assertUsable();
986
997
  if (ended)
987
- throw new Error(`Diagnostic span is already ended: ${spanId}`);
998
+ throw new Error(t("Diagnostic span is already ended: {spanId}", { spanId }));
988
999
  if (!["ok", "error", "cancelled"].includes(outcome.status))
989
- throw new Error("Diagnostic span status is invalid");
1000
+ throw new Error(t("Diagnostic span status is invalid"));
990
1001
  if (outcome.result !== undefined && !isPluginConfigValue(outcome.result))
991
- throw new Error("Diagnostic span result must be serializable");
1002
+ throw new Error(t("Diagnostic span result must be serializable"));
992
1003
  const current = spans.get(spanId);
993
1004
  if (!current)
994
- throw new Error(`Diagnostic span is not available: ${spanId}`);
1005
+ throw new Error(t("Diagnostic span is not available: {spanId}", { spanId }));
995
1006
  ended = true;
996
1007
  current.status = outcome.status;
997
1008
  current.endedAt = clock();
@@ -1021,14 +1032,21 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1021
1032
  assertUsable();
1022
1033
  assertPluginCapabilityDeclarations([declaration], `Plugin capability declaration: ${owner}`);
1023
1034
  if (typeof handler !== "function")
1024
- throw new Error("Plugin capability provider requires a callable handler");
1035
+ throw new Error(t("Plugin capability provider requires a callable handler"));
1025
1036
  const declared = manifestSnapshot.provides?.some((item) => item.id === declaration.id && item.version === declaration.version && item.kind === declaration.kind);
1026
1037
  if (!declared) {
1027
- throw new Error(`Plugin capability must be declared by its manifest: ${declaration.id}@${declaration.version} (${owner})`);
1038
+ throw new Error(t("Plugin capability must be declared by its manifest: {id}@{version} ({owner})", {
1039
+ id: declaration.id,
1040
+ version: declaration.version,
1041
+ owner,
1042
+ }));
1028
1043
  }
1029
1044
  const key = capabilityKey(declaration.id, declaration.version);
1030
1045
  if (pluginCapabilities.has(key)) {
1031
- throw new Error(`Plugin capability is already provided: ${declaration.id}@${declaration.version}`);
1046
+ throw new Error(t("Plugin capability is already provided: {id}@{version}", {
1047
+ id: declaration.id,
1048
+ version: declaration.version,
1049
+ }));
1032
1050
  }
1033
1051
  const registered = {
1034
1052
  declaration: detachedSnapshot(declaration),
@@ -1049,7 +1067,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1049
1067
  assertPluginCapabilityVersion(version, "Plugin capability version");
1050
1068
  const registered = pluginCapabilities.get(capabilityKey(id, version));
1051
1069
  if (!registered)
1052
- throw new Error(`Plugin capability is not available: ${id}@${version}`);
1070
+ throw new Error(t("Plugin capability is not available: {id}@{version}", { id, version }));
1053
1071
  const declaration = detachedSnapshot(registered.declaration);
1054
1072
  return Object.freeze({
1055
1073
  declaration,
@@ -1096,7 +1114,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1096
1114
  const validated = validateContributionPointDefinition(definition);
1097
1115
  const key = contributionPointKey(validated.id, validated.version);
1098
1116
  if (contributionPoints.has(key))
1099
- throw new Error(`Contribution point is already defined: ${key}`);
1117
+ throw new Error(t("Contribution point is already defined: {key}", { key }));
1100
1118
  const point = {
1101
1119
  owner,
1102
1120
  ownerToken,
@@ -1135,7 +1153,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1135
1153
  const adapter = options.agents;
1136
1154
  const session = options.session;
1137
1155
  if (!adapter || !session)
1138
- throw new Error("Agent task capability is not available from this host");
1156
+ throw new Error(t("Agent task capability is not available from this host"));
1139
1157
  const hostTask = await adapter.create(request);
1140
1158
  try {
1141
1159
  assertUsable();
@@ -1345,7 +1363,9 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1345
1363
  get: () => sessionApi.getContextSnapshot(),
1346
1364
  commit: async (request) => {
1347
1365
  if (request.operationId !== operationId) {
1348
- throw new Error(`Agent context operationId must match active operation: ${operationId}`);
1366
+ throw new Error(t("Agent context operationId must match active operation: {operationId}", {
1367
+ operationId,
1368
+ }));
1349
1369
  }
1350
1370
  return sessionApi.commitContext({ ...request, signal: request.signal ?? signal });
1351
1371
  },
@@ -1356,13 +1376,13 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1356
1376
  ...stateApi,
1357
1377
  set: (key, value, options) => {
1358
1378
  if (options?.operationId !== undefined && options.operationId !== operationId) {
1359
- throw new Error(`Agent state operationId must match active operation: ${operationId}`);
1379
+ throw new Error(t("Agent state operationId must match active operation: {operationId}", { operationId }));
1360
1380
  }
1361
1381
  return stateApi.set(key, value, { ...options, operationId });
1362
1382
  },
1363
1383
  delete: (key, options) => {
1364
1384
  if (options?.operationId !== undefined && options.operationId !== operationId) {
1365
- throw new Error(`Agent state operationId must match active operation: ${operationId}`);
1385
+ throw new Error(t("Agent state operationId must match active operation: {operationId}", { operationId }));
1366
1386
  }
1367
1387
  return stateApi.delete(key, { ...options, operationId });
1368
1388
  },
@@ -1402,14 +1422,14 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1402
1422
  const runtime = options.modelRuntime;
1403
1423
  const resolved = runtime.getModelFacts();
1404
1424
  if (!resolved)
1405
- throw new Error("No model is set on this session's agent");
1425
+ throw new Error(t("No model is set on this session's agent"));
1406
1426
  return resolved;
1407
1427
  },
1408
1428
  invocation: {
1409
1429
  invoke: async (input, signal) => {
1410
1430
  const runtime = options.modelRuntime;
1411
1431
  if (!runtime)
1412
- throw new Error("Agent model runtime is not available");
1432
+ throw new Error(t("Agent model runtime is not available"));
1413
1433
  return runtime.invoke({
1414
1434
  ...(input.systemPrompt === undefined ? {} : { systemPrompt: input.systemPrompt }),
1415
1435
  prompt: input.prompt,
@@ -1439,7 +1459,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1439
1459
  assertUsable();
1440
1460
  const registered = tools.get(name);
1441
1461
  if (!registered || !activeOwnerTokens.has(registered.ownerToken)) {
1442
- throw new Error(`Agent tool is not registered: ${name}`);
1462
+ throw new Error(t("Agent tool is not registered: {name}", { name }));
1443
1463
  }
1444
1464
  return invokeRegisteredCapability(registered, (value) => invokeCapabilityTool(asHandler(value, "Tool"), input, toolExecutionContext, invokeOptions?.signal));
1445
1465
  },
@@ -1462,7 +1482,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1462
1482
  const normalized = validateLifecycleEventDefinition(definition);
1463
1483
  const key = lifecycleEventKey(normalized.id, normalized.version);
1464
1484
  if (lifecycleDefinitions.has(key))
1465
- throw new Error(`Lifecycle event is already defined: ${key}`);
1485
+ throw new Error(t("Lifecycle event is already defined: {key}", { key }));
1466
1486
  lifecycleDefinitions.set(key, { owner, ownerToken, definition: normalized });
1467
1487
  const registration = own(createDisposableRegistration("lifecycle-definition", () => {
1468
1488
  const current = lifecycleDefinitions.get(key);
@@ -1602,33 +1622,33 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1602
1622
  registerOperation(name, handler) {
1603
1623
  assertUsable();
1604
1624
  if (!name)
1605
- throw new Error("Operation requires a non-empty name");
1625
+ throw new Error(t("Operation requires a non-empty name"));
1606
1626
  return own(register("operation", name, handler, owner, ownerToken, operations));
1607
1627
  },
1608
1628
  registerRpcMethod(name, handler) {
1609
1629
  assertUsable();
1610
1630
  if (!name)
1611
- throw new Error("RPC method requires a non-empty name");
1631
+ throw new Error(t("RPC method requires a non-empty name"));
1612
1632
  return own(register("rpc", name, handler, owner, ownerToken, rpcMethods));
1613
1633
  },
1614
1634
  registerContextStrategy(name, strategy) {
1615
1635
  assertUsable();
1616
1636
  if (!name)
1617
- throw new Error("Context strategy requires a non-empty name");
1637
+ throw new Error(t("Context strategy requires a non-empty name"));
1618
1638
  return own(register("context-strategy", name, strategy, owner, ownerToken, contextStrategies));
1619
1639
  },
1620
1640
  registerEntryProjection(projection) {
1621
1641
  assertUsable();
1622
1642
  if (!projection?.customType)
1623
- throw new Error("Entry projection requires a non-empty customType");
1643
+ throw new Error(t("Entry projection requires a non-empty customType"));
1624
1644
  if (typeof projection.project !== "function") {
1625
- throw new Error("Entry projection requires a callable project");
1645
+ throw new Error(t("Entry projection requires a callable project"));
1626
1646
  }
1627
1647
  // 转发到宿主 SessionAPI(SessionManager 持有注册表并应用于上下文投影)。
1628
1648
  // 宿主未支持时显式失败——第三方与第一方看到同一个错误。
1629
1649
  const register = options.session?.registerEntryProjection;
1630
1650
  if (register === undefined) {
1631
- throw new Error("Entry projections require a host with entry projection support");
1651
+ throw new Error(t("Entry projections require a host with entry projection support"));
1632
1652
  }
1633
1653
  const wrapped = {
1634
1654
  customType: projection.customType,
@@ -1646,18 +1666,18 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1646
1666
  registerProviderHeaderTransform(name, transform) {
1647
1667
  assertUsable();
1648
1668
  if (!name)
1649
- throw new Error("Provider header transform requires a non-empty name");
1669
+ throw new Error(t("Provider header transform requires a non-empty name"));
1650
1670
  if (typeof transform !== "function") {
1651
- throw new Error("Provider header transform requires a callable transform");
1671
+ throw new Error(t("Provider header transform requires a callable transform"));
1652
1672
  }
1653
1673
  return own(register("provider-header-transform", name, transform, owner, ownerToken, providerHeaderTransforms));
1654
1674
  },
1655
1675
  registerStreamFnWrapper(name, wrapper) {
1656
1676
  assertUsable();
1657
1677
  if (!name)
1658
- throw new Error("Stream function wrapper requires a non-empty name");
1678
+ throw new Error(t("Stream function wrapper requires a non-empty name"));
1659
1679
  if (typeof wrapper !== "function") {
1660
- throw new Error("Stream function wrapper requires a callable wrapper");
1680
+ throw new Error(t("Stream function wrapper requires a callable wrapper"));
1661
1681
  }
1662
1682
  return own(register("stream-fn-wrapper", name, wrapper, owner, ownerToken, streamFnWrappers));
1663
1683
  },
@@ -1665,49 +1685,49 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1665
1685
  assertUsable();
1666
1686
  const name = capabilityName(definition, "Skill");
1667
1687
  if (typeof definition.description !== "string" || !definition.description.trim()) {
1668
- throw new Error("Skill definition requires a non-empty description");
1688
+ throw new Error(t("Skill definition requires a non-empty description"));
1669
1689
  }
1670
1690
  if (typeof definition.filePath !== "string" || !definition.filePath) {
1671
- throw new Error("Skill definition requires a filePath");
1691
+ throw new Error(t("Skill definition requires a filePath"));
1672
1692
  }
1673
1693
  if (typeof definition.baseDir !== "string" || !definition.baseDir) {
1674
- throw new Error("Skill definition requires a baseDir");
1694
+ throw new Error(t("Skill definition requires a baseDir"));
1675
1695
  }
1676
1696
  return own(register("skill", name, definition, owner, ownerToken, skills));
1677
1697
  },
1678
1698
  registerRetryPolicy(name, policy) {
1679
1699
  assertUsable();
1680
1700
  if (!name)
1681
- throw new Error("Retry policy requires a non-empty name");
1701
+ throw new Error(t("Retry policy requires a non-empty name"));
1682
1702
  if (!policy || typeof policy.decide !== "function") {
1683
- throw new Error("Retry policy requires a decide function");
1703
+ throw new Error(t("Retry policy requires a decide function"));
1684
1704
  }
1685
1705
  return own(register("retry-policy", name, policy, owner, ownerToken, retryPolicies));
1686
1706
  },
1687
1707
  registerCompactionPolicy(name, policy) {
1688
1708
  assertUsable();
1689
1709
  if (!name)
1690
- throw new Error("Compaction policy requires a non-empty name");
1710
+ throw new Error(t("Compaction policy requires a non-empty name"));
1691
1711
  if (!policy || typeof policy.decide !== "function") {
1692
- throw new Error("Compaction policy requires a decide function");
1712
+ throw new Error(t("Compaction policy requires a decide function"));
1693
1713
  }
1694
1714
  return own(register("compaction-policy", name, policy, owner, ownerToken, compactionPolicies));
1695
1715
  },
1696
1716
  registerOverflowPolicy(name, policy) {
1697
1717
  assertUsable();
1698
1718
  if (!name)
1699
- throw new Error("Overflow policy requires a non-empty name");
1719
+ throw new Error(t("Overflow policy requires a non-empty name"));
1700
1720
  if (!policy || typeof policy.decide !== "function") {
1701
- throw new Error("Overflow policy requires a decide function");
1721
+ throw new Error(t("Overflow policy requires a decide function"));
1702
1722
  }
1703
1723
  return own(register("overflow-policy", name, policy, owner, ownerToken, overflowPolicies));
1704
1724
  },
1705
1725
  registerBranchSummaryPolicy(name, policy) {
1706
1726
  assertUsable();
1707
1727
  if (!name)
1708
- throw new Error("Branch summary policy requires a non-empty name");
1728
+ throw new Error(t("Branch summary policy requires a non-empty name"));
1709
1729
  if (!policy || typeof policy.summarize !== "function") {
1710
- throw new Error("Branch summary policy requires a summarize function");
1730
+ throw new Error(t("Branch summary policy requires a summarize function"));
1711
1731
  }
1712
1732
  return own(register("branch-summary-policy", name, policy, owner, ownerToken, branchSummaryPolicies));
1713
1733
  },
@@ -1722,10 +1742,10 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1722
1742
  "shouldStopAfterTurn",
1723
1743
  ];
1724
1744
  if (!positions.includes(position)) {
1725
- throw new Error(`Agent loop hook position is invalid: ${String(position)}`);
1745
+ throw new Error(t("Agent loop hook position is invalid: {value}", { value: String(position) }));
1726
1746
  }
1727
1747
  if (typeof handler !== "function") {
1728
- throw new Error("Agent loop hook requires a callable handler");
1748
+ throw new Error(t("Agent loop hook requires a callable handler"));
1729
1749
  }
1730
1750
  const entries = loopHooks.get(position) ?? [];
1731
1751
  loopHooks.set(position, entries);
@@ -1746,16 +1766,16 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1746
1766
  registerRunLoopStrategy(name, strategy) {
1747
1767
  assertUsable();
1748
1768
  if (!name)
1749
- throw new Error("Run loop strategy requires a non-empty name");
1769
+ throw new Error(t("Run loop strategy requires a non-empty name"));
1750
1770
  if (!strategy || typeof strategy.decideNextCycle !== "function") {
1751
- throw new Error("Run loop strategy requires a decideNextCycle function");
1771
+ throw new Error(t("Run loop strategy requires a decideNextCycle function"));
1752
1772
  }
1753
1773
  return own(register("run-loop-strategy", name, strategy, owner, ownerToken, runLoopStrategies));
1754
1774
  },
1755
1775
  subscribe(type, handler) {
1756
1776
  assertUsable();
1757
1777
  if (!type)
1758
- throw new Error("Event type requires a non-empty name");
1778
+ throw new Error(t("Event type requires a non-empty name"));
1759
1779
  const handlers = subscribers.get(type) ?? new Map();
1760
1780
  subscribers.set(type, handlers);
1761
1781
  const sequence = ++subscriptionSequence;
@@ -1810,7 +1830,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1810
1830
  assertUsable();
1811
1831
  const registered = operations.get(operation);
1812
1832
  if (!registered)
1813
- throw new Error(`Operation is not registered: ${operation}`);
1833
+ throw new Error(t("Operation is not registered: {operation}", { operation }));
1814
1834
  assertRegisteredCapabilityActive(registered);
1815
1835
  const sequence = ++operationSequence;
1816
1836
  const id = createRuntimeId("operation", sequence, `operation:${owner}:${operation}:${sequence}`);
@@ -1887,7 +1907,7 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1887
1907
  const result = registration.dispose();
1888
1908
  if (result && typeof result.then === "function") {
1889
1909
  observeUnexpectedAsyncCleanup(result, id);
1890
- throw new Error(`Capability plugin ${id} has asynchronous cleanup; use the async loader`);
1910
+ throw new Error(t("Capability plugin {id} has asynchronous cleanup; use the async loader", { id }));
1891
1911
  }
1892
1912
  }
1893
1913
  catch (error) {
@@ -1998,25 +2018,25 @@ export function createCapabilityRuntime(inputHost, options = {}) {
1998
2018
  async classifyRetry(name, request) {
1999
2019
  const policy = retryPolicies.get(name);
2000
2020
  if (!policy)
2001
- throw new Error(`Retry policy is not registered: ${name}`);
2021
+ throw new Error(t("Retry policy is not registered: {name}", { name }));
2002
2022
  if (!policy.value.classify)
2003
- throw new Error(`Retry policy does not support classification: ${name}`);
2023
+ throw new Error(t("Retry policy does not support classification: {name}", { name }));
2004
2024
  const retryable = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.classify?.(request));
2005
2025
  if (typeof retryable !== "boolean") {
2006
- throw new Error(`Retry policy returned an invalid classification: ${name}`);
2026
+ throw new Error(t("Retry policy returned an invalid classification: {name}", { name }));
2007
2027
  }
2008
2028
  return retryable;
2009
2029
  },
2010
2030
  async decideRetry(name, request) {
2011
2031
  const policy = retryPolicies.get(name);
2012
2032
  if (!policy)
2013
- throw new Error(`Retry policy is not registered: ${name}`);
2033
+ throw new Error(t("Retry policy is not registered: {name}", { name }));
2014
2034
  const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2015
2035
  if (!decision || typeof decision.retry !== "boolean") {
2016
- throw new Error(`Retry policy returned an invalid decision: ${name}`);
2036
+ throw new Error(t("Retry policy returned an invalid decision: {name}", { name }));
2017
2037
  }
2018
2038
  if (decision.delayMs !== undefined && (!Number.isFinite(decision.delayMs) || decision.delayMs < 0)) {
2019
- throw new Error(`Retry policy returned an invalid delayMs: ${name}`);
2039
+ throw new Error(t("Retry policy returned an invalid delayMs: {name}", { name }));
2020
2040
  }
2021
2041
  return decision;
2022
2042
  },
@@ -2024,19 +2044,19 @@ export function createCapabilityRuntime(inputHost, options = {}) {
2024
2044
  async prepareCompaction(name, request) {
2025
2045
  const policy = compactionPolicies.get(name);
2026
2046
  if (!policy)
2027
- throw new Error(`Compaction policy is not registered: ${name}`);
2047
+ throw new Error(t("Compaction policy is not registered: {name}", { name }));
2028
2048
  if (!policy.value.prepare)
2029
- throw new Error(`Compaction policy does not support preparation: ${name}`);
2049
+ throw new Error(t("Compaction policy does not support preparation: {name}", { name }));
2030
2050
  return invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.prepare?.(request));
2031
2051
  },
2032
2052
  hasBranchSummaryPolicy: (name) => branchSummaryPolicies.has(name),
2033
2053
  async summarizeBranch(name, request) {
2034
2054
  const policy = branchSummaryPolicies.get(name);
2035
2055
  if (!policy)
2036
- throw new Error(`Branch summary policy is not registered: ${name}`);
2056
+ throw new Error(t("Branch summary policy is not registered: {name}", { name }));
2037
2057
  const result = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.summarize(request));
2038
2058
  if (!result || typeof result !== "object") {
2039
- throw new Error(`Branch summary policy returned an invalid result: ${name}`);
2059
+ throw new Error(t("Branch summary policy returned an invalid result: {name}", { name }));
2040
2060
  }
2041
2061
  return result;
2042
2062
  },
@@ -2052,42 +2072,42 @@ export function createCapabilityRuntime(inputHost, options = {}) {
2052
2072
  async decideRunLoop(name, request) {
2053
2073
  const strategy = runLoopStrategies.get(name);
2054
2074
  if (!strategy)
2055
- throw new Error(`Run loop strategy is not registered: ${name}`);
2075
+ throw new Error(t("Run loop strategy is not registered: {name}", { name }));
2056
2076
  const decision = await invokeRegisteredCapabilityWithSignal(strategy, request.signal, (value) => value.decideNextCycle(request));
2057
2077
  if (!decision || typeof decision.continueLoop !== "boolean") {
2058
- throw new Error(`Run loop strategy returned an invalid decision: ${name}`);
2078
+ throw new Error(t("Run loop strategy returned an invalid decision: {name}", { name }));
2059
2079
  }
2060
2080
  return decision;
2061
2081
  },
2062
2082
  async decideCompaction(name, request) {
2063
2083
  const policy = compactionPolicies.get(name);
2064
2084
  if (!policy)
2065
- throw new Error(`Compaction policy is not registered: ${name}`);
2085
+ throw new Error(t("Compaction policy is not registered: {name}", { name }));
2066
2086
  const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2067
2087
  if (!decision || typeof decision.compact !== "boolean") {
2068
- throw new Error(`Compaction policy returned an invalid decision: ${name}`);
2088
+ throw new Error(t("Compaction policy returned an invalid decision: {name}", { name }));
2069
2089
  }
2070
2090
  if (decision.retry !== undefined && typeof decision.retry !== "boolean") {
2071
- throw new Error(`Compaction policy returned an invalid retry value: ${name}`);
2091
+ throw new Error(t("Compaction policy returned an invalid retry value: {name}", { name }));
2072
2092
  }
2073
2093
  if (decision.failureMessage !== undefined && typeof decision.failureMessage !== "string") {
2074
- throw new Error(`Compaction policy returned an invalid failureMessage: ${name}`);
2094
+ throw new Error(t("Compaction policy returned an invalid failureMessage: {name}", { name }));
2075
2095
  }
2076
2096
  return decision;
2077
2097
  },
2078
2098
  async summarizeCompaction(name, request) {
2079
2099
  const policy = compactionPolicies.get(name);
2080
2100
  if (!policy)
2081
- throw new Error(`Compaction policy is not registered: ${name}`);
2101
+ throw new Error(t("Compaction policy is not registered: {name}", { name }));
2082
2102
  if (!policy.value.summarize)
2083
- throw new Error(`Compaction policy does not support summaries: ${name}`);
2103
+ throw new Error(t("Compaction policy does not support summaries: {name}", { name }));
2084
2104
  const result = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.summarize?.(request));
2085
2105
  if (!result ||
2086
2106
  typeof result.summary !== "string" ||
2087
2107
  !result.summary ||
2088
2108
  typeof result.firstKeptEntryId !== "string" ||
2089
2109
  !Number.isFinite(result.tokensBefore)) {
2090
- throw new Error(`Compaction policy returned an invalid summary: ${name}`);
2110
+ throw new Error(t("Compaction policy returned an invalid summary: {name}", { name }));
2091
2111
  }
2092
2112
  return result;
2093
2113
  },
@@ -2095,19 +2115,19 @@ export function createCapabilityRuntime(inputHost, options = {}) {
2095
2115
  async decideOverflow(name, request) {
2096
2116
  const policy = overflowPolicies.get(name);
2097
2117
  if (!policy)
2098
- throw new Error(`Overflow policy is not registered: ${name}`);
2118
+ throw new Error(t("Overflow policy is not registered: {name}", { name }));
2099
2119
  const decision = await invokeRegisteredCapabilityWithSignal(policy, request.signal, (value) => value.decide(request));
2100
2120
  if (!decision ||
2101
2121
  typeof decision.contextOverflow !== "boolean" ||
2102
2122
  typeof decision.recoverableLength !== "boolean") {
2103
- throw new Error(`Overflow policy returned an invalid decision: ${name}`);
2123
+ throw new Error(t("Overflow policy returned an invalid decision: {name}", { name }));
2104
2124
  }
2105
2125
  return decision;
2106
2126
  },
2107
2127
  async invokeTool(name, input, options) {
2108
2128
  const registered = tools.get(name);
2109
2129
  if (!registered)
2110
- throw new Error(`Tool is not registered: ${name}`);
2130
+ throw new Error(t("Tool is not registered: {name}", { name }));
2111
2131
  return invokeRegisteredCapability(registered, (value) => invokeCapabilityTool(asHandler(value, "Tool"), input, toolExecutionContext, options?.signal));
2112
2132
  },
2113
2133
  // 中断分级读面(设计 §4.2,2026-10-02):活任务集合的有界投影。已终态
@@ -2134,45 +2154,45 @@ export function createCapabilityRuntime(inputHost, options = {}) {
2134
2154
  async invokeCommand(name, args, options) {
2135
2155
  const registered = commands.get(name);
2136
2156
  if (!registered)
2137
- throw new Error(`Command is not registered: ${name}`);
2157
+ throw new Error(t("Command is not registered: {name}", { name }));
2138
2158
  return validateCommandResult(await invokeRegisteredCapability(registered, (value) => value.execute(args, options ?? { signal: new AbortController().signal })), name);
2139
2159
  },
2140
2160
  hasRpcMethod: (name) => rpcMethods.has(name),
2141
2161
  async dispatchRpc(name, input) {
2142
2162
  const registered = rpcMethods.get(name);
2143
2163
  if (!registered)
2144
- throw new Error(`RPC method is not registered: ${name}`);
2164
+ throw new Error(t("RPC method is not registered: {name}", { name }));
2145
2165
  return invokeRegisteredCapability(registered, (value) => value(input));
2146
2166
  },
2147
2167
  hasContextStrategy: (name) => contextStrategies.has(name),
2148
2168
  async transformContext(name, context, options) {
2149
2169
  const strategy = contextStrategies.get(name);
2150
2170
  if (!strategy)
2151
- throw new Error(`Context strategy is not registered: ${name}`);
2171
+ throw new Error(t("Context strategy is not registered: {name}", { name }));
2152
2172
  return invokeRegisteredCapability(strategy, (value) => value.transform(context, options));
2153
2173
  },
2154
2174
  async snapshotContext(name, context, options) {
2155
2175
  const registered = contextStrategies.get(name);
2156
2176
  if (!registered)
2157
- throw new Error(`Context strategy is not registered: ${name}`);
2177
+ throw new Error(t("Context strategy is not registered: {name}", { name }));
2158
2178
  if (!registered.value.snapshot)
2159
- throw new Error(`Context strategy does not support snapshots: ${name}`);
2179
+ throw new Error(t("Context strategy does not support snapshots: {name}", { name }));
2160
2180
  return invokeRegisteredCapability(registered, (value) => value.snapshot?.(context, options));
2161
2181
  },
2162
2182
  async restoreContext(name, snapshot, options) {
2163
2183
  const registered = contextStrategies.get(name);
2164
2184
  if (!registered)
2165
- throw new Error(`Context strategy is not registered: ${name}`);
2185
+ throw new Error(t("Context strategy is not registered: {name}", { name }));
2166
2186
  if (!registered.value.restore)
2167
- throw new Error(`Context strategy does not support restore: ${name}`);
2187
+ throw new Error(t("Context strategy does not support restore: {name}", { name }));
2168
2188
  return invokeRegisteredCapability(registered, (value) => value.restore?.(snapshot, options));
2169
2189
  },
2170
2190
  async replaceContext(name, context, options) {
2171
2191
  const registered = contextStrategies.get(name);
2172
2192
  if (!registered)
2173
- throw new Error(`Context strategy is not registered: ${name}`);
2193
+ throw new Error(t("Context strategy is not registered: {name}", { name }));
2174
2194
  if (!registered.value.replace)
2175
- throw new Error(`Context strategy does not support replacement: ${name}`);
2195
+ throw new Error(t("Context strategy does not support replacement: {name}", { name }));
2176
2196
  return invokeRegisteredCapability(registered, (value) => value.replace?.(context, options));
2177
2197
  },
2178
2198
  async transformProviderHeaders(request) {