@xopcai/xopc 0.0.369 → 0.0.371

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 (418) hide show
  1. package/README.md +59 -174
  2. package/README.zh-CN.md +59 -174
  3. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_md.js +131 -0
  4. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/_u64.js +30 -0
  5. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha2.js +252 -0
  6. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/sha256.js +16 -0
  7. package/dist/.pnpm/@noble_hashes@1.8.0/node_modules/@noble/hashes/esm/utils.js +66 -0
  8. package/dist/browser-ext/dist/sidepanel.js +21 -1
  9. package/dist/browser-ext/manifest.json +1 -1
  10. package/dist/extensions/telegram/xopc.extension.json +1 -1
  11. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Stj17S9u.js → agent-avatar-dicebear-C8MqXy6W.js} +1 -1
  12. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-BLaL4law.js +1 -0
  13. package/dist/gateway/static/root/assets/agent-plugin-dialog-BrysdA6F.js +1 -0
  14. package/dist/gateway/static/root/assets/agents-BJRyMNx2.js +66 -0
  15. package/dist/gateway/static/root/assets/{app-management-settings-panel-pJFe6M6c.js → app-management-settings-panel-Bi02swpZ.js} +1 -1
  16. package/dist/gateway/static/root/assets/{appearance-settings-BrxSpBWa.js → appearance-settings-rr0qirDm.js} +1 -1
  17. package/dist/gateway/static/root/assets/{apps-page-DegSl5Lh.js → apps-page-Sz3wl3lV.js} +1 -1
  18. package/dist/gateway/static/root/assets/{automations-page-BZQ_VHjp.js → automations-page-DqdbP0hD.js} +1 -1
  19. package/dist/gateway/static/root/assets/automations-workspace-CxgKlA5d.js +6 -0
  20. package/dist/gateway/static/root/assets/{block-editor-3XjFv3kK.js → block-editor-CfVR1zGa.js} +3 -3
  21. package/dist/gateway/static/root/assets/browser-automations-page-DeYnh3mY.js +3 -0
  22. package/dist/gateway/static/root/assets/{browser-settings-page-ch2_bQF0.js → browser-settings-page-DDZvlGCD.js} +2 -2
  23. package/dist/gateway/static/root/assets/{capabilities-DO-vfNKI.js → capabilities-CY4SiHcP.js} +1 -1
  24. package/dist/gateway/static/root/assets/{capabilities-B48r0DDa.js → capabilities-gjQtMhKu.js} +1 -1
  25. package/dist/gateway/static/root/assets/capabilities-page-Bl6PZqx3.js +2 -0
  26. package/dist/gateway/static/root/assets/{capabilities-settings-panel-NckMsJ5N.js → capabilities-settings-panel-B-MM4LJA.js} +4 -4
  27. package/dist/gateway/static/root/assets/{capability-header-actions-CY8KCO9j.js → capability-header-actions-CAiY7HK1.js} +1 -1
  28. package/dist/gateway/static/root/assets/{channels-CHOS2CGa.js → channels-D1_fDkhu.js} +1 -1
  29. package/dist/gateway/static/root/assets/{chat-terminal-dock-Bwknnb4c.js → chat-terminal-dock-D6slpF2a.js} +2 -2
  30. package/dist/gateway/static/root/assets/{computer-settings-page-B2xeFCSt.js → computer-settings-page-D1n_uQHN.js} +1 -1
  31. package/dist/gateway/static/root/assets/{connector-service-page-C83DnAqK.js → connector-service-page-FvSCyJzn.js} +1 -1
  32. package/dist/gateway/static/root/assets/connectors-page-DroD-gQn.js +1 -0
  33. package/dist/gateway/static/root/assets/copy-text-row-C1gaJwlZ.js +1 -0
  34. package/dist/gateway/static/root/assets/{date-picker-Bq9GR-DU.js → date-picker-Bl-HqvGU.js} +1 -1
  35. package/dist/gateway/static/root/assets/dependency-picker-DY4nU-HL.js +1 -0
  36. package/dist/gateway/static/root/assets/{desktop-pet-BwsbQw8V.js → desktop-pet-_A89B2xw.js} +1 -1
  37. package/dist/gateway/static/root/assets/{desktop-pet-settings-sL9i44pP.js → desktop-pet-settings-BJWkGynu.js} +1 -1
  38. package/dist/gateway/static/root/assets/device-pairing-wizard-DJ_ITvkI.js +1 -0
  39. package/dist/gateway/static/root/assets/{directory-picker-path-field-BFlDmsS5.js → directory-picker-path-field-Bj2Cpmxs.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-debug-page-7Z1Tp7-w.js → extension-debug-page-BfAtjhoK.js} +1 -1
  41. package/dist/gateway/static/root/assets/{extension-page-uGqvb8QX.js → extension-page-BFjc1zDp.js} +1 -1
  42. package/dist/gateway/static/root/assets/{extension-provider-xlSyz4Z6.js → extension-provider-Br6LXyIj.js} +1 -1
  43. package/dist/gateway/static/root/assets/{extension-settings-page-CKHgrjOs.js → extension-settings-page-oAwllsMb.js} +1 -1
  44. package/dist/gateway/static/root/assets/{fallback-models-BwQg0G1D.js → fallback-models-KHd6tw_t.js} +1 -1
  45. package/dist/gateway/static/root/assets/gateway-realtime-F6D4A7N5.js +1 -0
  46. package/dist/gateway/static/root/assets/{gateway-settings-BAQnSEMJ.js → gateway-settings-BIyhyiOq.js} +1 -1
  47. package/dist/gateway/static/root/assets/home-page-CEjaIUTF.js +2 -0
  48. package/dist/gateway/static/root/assets/{imports-page-re1_Nh64.js → imports-page-ClFqRiGQ.js} +1 -1
  49. package/dist/gateway/static/root/assets/index-BGBkIIzM.css +1 -0
  50. package/dist/gateway/static/root/assets/index-GBFmI8im.js +106 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B_xja9LN.js → keyboard-shortcuts-settings-Ca9_GJSQ.js} +1 -1
  52. package/dist/gateway/static/root/assets/{local-app-workbench-page-CErdCrPX.js → local-app-workbench-page-BaK9zX1-.js} +1 -1
  53. package/dist/gateway/static/root/assets/{local-apps-page-BPL2RXdK.js → local-apps-page-1CjSftZ3.js} +1 -1
  54. package/dist/gateway/static/root/assets/local-session-drafts-pox8evDV.js +1 -0
  55. package/dist/gateway/static/root/assets/logs-page-6joZBbcx.js +2 -0
  56. package/dist/gateway/static/root/assets/management-settings-Cnubkklb.js +1 -0
  57. package/dist/gateway/static/root/assets/note-detail-panel-B6DHbMzT.js +5 -0
  58. package/dist/gateway/static/root/assets/notes-page-CGZkIKdi.js +8 -0
  59. package/dist/gateway/static/root/assets/{page-context-capture-button-tf77xIz3.js → page-context-capture-button-y3QmhTu2.js} +1 -1
  60. package/dist/gateway/static/root/assets/personal-page-C_roXCJB.js +1 -0
  61. package/dist/gateway/static/root/assets/{product-open-page-Dc3Y-Y7J.js → product-open-page-CSRYWt0f.js} +1 -1
  62. package/dist/gateway/static/root/assets/{product-preview-content-MG_hmVA3.js → product-preview-content-DuOML6gs.js} +1 -1
  63. package/dist/gateway/static/root/assets/project-detail-page-v7xtnvha.js +1 -0
  64. package/dist/gateway/static/root/assets/{projects-page-MllfNLGA.js → projects-page-BuJCBT6n.js} +1 -1
  65. package/dist/gateway/static/root/assets/{remote-access-hub-Bs-C70el.js → remote-access-hub-DpHnyBnG.js} +1 -1
  66. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DpJ5jNzR.js → runtime-tools-settings-panel-DTMTL0hy.js} +1 -1
  67. package/dist/gateway/static/root/assets/{scenes-page-Dpxamkw6.js → scenes-page-B0JqO_fM.js} +2 -2
  68. package/dist/gateway/static/root/assets/{schema-form-DUeyQ1zh.js → schema-form-g4z7GH4W.js} +1 -1
  69. package/dist/gateway/static/root/assets/{send-session-input-Dgn4BRk_.js → send-session-input-BW40VHiL.js} +1 -1
  70. package/dist/gateway/static/root/assets/session-manager-BqlvrjPE.js +16 -0
  71. package/dist/gateway/static/root/assets/sessions-page-CftImbH7.js +1 -0
  72. package/dist/gateway/static/root/assets/settings-advanced-gate-BkvbSieZ.js +1 -0
  73. package/dist/gateway/static/root/assets/{settings-page-DouHuBXt.js → settings-page-YD-U8BVw.js} +1 -1
  74. package/dist/gateway/static/root/assets/setup-status-panel-q_X3kxw2.js +1 -0
  75. package/dist/gateway/static/root/assets/{share-link-dialog-DJTabLAM.js → share-link-dialog-HCHM8qnf.js} +1 -1
  76. package/dist/gateway/static/root/assets/{share-preview-page-jw7h4t_B.js → share-preview-page-Ce6FNWt1.js} +1 -1
  77. package/dist/gateway/static/root/assets/shares-settings-KHRg_-03.js +1 -0
  78. package/dist/gateway/static/root/assets/{skill-api-CfyX_0zN.js → skill-api-BpqDMkNB.js} +1 -1
  79. package/dist/gateway/static/root/assets/skills-page-Bnfn51ks.js +2 -0
  80. package/dist/gateway/static/root/assets/{system-settings-panel-DWf256TE.js → system-settings-panel-CncvC2CI.js} +1 -1
  81. package/dist/gateway/static/root/assets/{task-detail-page-DE6N1ZQe.js → task-detail-page-BVJKdnMC.js} +2 -2
  82. package/dist/gateway/static/root/assets/{tunnel-api-BBm9esrY.js → tunnel-api-g7etuoaT.js} +1 -1
  83. package/dist/gateway/static/root/assets/{usage-page-C93x89uW.js → usage-page-Dao1I-5F.js} +1 -1
  84. package/dist/gateway/static/root/assets/{use-composer-attachments-C7Gaaai1.js → use-composer-attachments-DJya1hIL.js} +1 -1
  85. package/dist/gateway/static/root/assets/use-file-preview-expanded-C5ONO7sF.js +2 -0
  86. package/dist/gateway/static/root/assets/user-model-page-jr986ucl.js +2 -0
  87. package/dist/gateway/static/root/assets/{work-discovery-overlay-Bs2MKiTv.js → work-discovery-overlay-CC3mr7tX.js} +1 -1
  88. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BR_U_snV.js → workflow-run-setup-panel-CqpXZJxs.js} +2 -2
  89. package/dist/gateway/static/root/assets/workflows-page-DOk6tBbK.js +6 -0
  90. package/dist/gateway/static/root/assets/{workspace-api-Si2o3inw.js → workspace-api-WhbMvdBE.js} +2 -2
  91. package/dist/gateway/static/root/index.html +18 -20
  92. package/dist/package.js +1 -1
  93. package/dist/packages/endpoint-tools-client/src/index.js +189 -0
  94. package/dist/packages/endpoint-tools-protocol/src/bridge.js +105 -0
  95. package/dist/packages/endpoint-tools-protocol/src/index.js +95 -2
  96. package/dist/packages/endpoint-tools-protocol/src/location.js +109 -0
  97. package/dist/packages/endpoint-tools-protocol/src/personal.js +149 -0
  98. package/dist/packages/gateway-contract/src/session-input-command.js +30 -5
  99. package/dist/src/agent/agent-manager.js +23 -27
  100. package/dist/src/agent/background-review/run-background-review.js +1 -1
  101. package/dist/src/agent/embedded/codemode-extension.d.ts +7 -0
  102. package/dist/src/agent/embedded/codemode-extension.js +232 -0
  103. package/dist/src/agent/embedded/codemode-output.d.ts +2 -0
  104. package/dist/src/agent/embedded/codemode-output.js +34 -0
  105. package/dist/src/agent/embedded/external-tool-discovery.d.ts +6 -0
  106. package/dist/src/agent/embedded/external-tool-discovery.js +60 -0
  107. package/dist/src/agent/embedded/model-runtime.js +5 -2
  108. package/dist/src/agent/embedded/run-for-session.js +10 -1
  109. package/dist/src/agent/embedded/run-turn.js +10 -3
  110. package/dist/src/agent/embedded/session-runner.d.ts +9 -1
  111. package/dist/src/agent/embedded/session-runner.js +111 -23
  112. package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -0
  113. package/dist/src/agent/embedded/session-tool-result-guard.js +17 -0
  114. package/dist/src/agent/embedded/subscribe-session.js +14 -4
  115. package/dist/src/agent/embedded/tool-metadata.d.ts +15 -0
  116. package/dist/src/agent/embedded/tool-metadata.js +38 -0
  117. package/dist/src/agent/embedded/tool-search-extension.d.ts +5 -0
  118. package/dist/src/agent/embedded/tool-search-extension.js +31 -0
  119. package/dist/src/agent/embedded/types.d.ts +7 -0
  120. package/dist/src/agent/embedded/xopc-tools-bridge.js +6 -0
  121. package/dist/src/agent/external-tools/endpoint-provider.d.ts +1 -1
  122. package/dist/src/agent/external-tools/endpoint-provider.js +174 -53
  123. package/dist/src/agent/external-tools/extension-provider.js +8 -1
  124. package/dist/src/agent/external-tools/gateway-tools.d.ts +1 -1
  125. package/dist/src/agent/external-tools/gateway-tools.js +45 -22
  126. package/dist/src/agent/external-tools/index.js +46 -14
  127. package/dist/src/agent/external-tools/memory-provider.js +8 -1
  128. package/dist/src/agent/external-tools/read-policy.js +2 -1
  129. package/dist/src/agent/external-tools/service.d.ts +2 -0
  130. package/dist/src/agent/external-tools/service.js +25 -3
  131. package/dist/src/agent/external-tools/tool-registry.d.ts +14 -0
  132. package/dist/src/agent/external-tools/tool-registry.js +14 -0
  133. package/dist/src/agent/external-tools/types.d.ts +8 -1
  134. package/dist/src/agent/external-tools/types.js +0 -1
  135. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  136. package/dist/src/agent/mcp/config.d.ts +18 -0
  137. package/dist/src/agent/mcp/{bundle-mcp-config.js → config.js} +8 -25
  138. package/dist/src/agent/mcp/native-mcp.d.ts +6 -0
  139. package/dist/src/agent/mcp/native-mcp.js +73 -0
  140. package/dist/src/agent/service.js +3 -6
  141. package/dist/src/agent/skills/index.js +1 -1
  142. package/dist/src/agent/skills/installer.js +1 -1
  143. package/dist/src/agent/skills/managed-store.js +1 -1
  144. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  145. package/dist/src/agent/skills/skill-manager.js +1 -1
  146. package/dist/src/agent/skills/skill-sources.js +1 -1
  147. package/dist/src/agent/source-context/index.d.ts +0 -1
  148. package/dist/src/agent/source-context/index.js +1 -2
  149. package/dist/src/agent/source-context/injector.js +1 -0
  150. package/dist/src/agent/source-context/types.d.ts +2 -2
  151. package/dist/src/agent/source-context/types.js +1 -1
  152. package/dist/src/agent/tools/cli-clarify.js +1 -1
  153. package/dist/src/agent/tools/codemode-permissions.d.ts +4 -0
  154. package/dist/src/agent/tools/codemode-permissions.js +23 -0
  155. package/dist/src/agent/tools/dataBatch.js +3 -1
  156. package/dist/src/agent/tools/delegation-parent-policy.js +1 -4
  157. package/dist/src/agent/tools/factory.js +4 -3
  158. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  159. package/dist/src/agent/transcript/provider-capabilities.js +0 -1
  160. package/dist/src/agent/transcript/transcript-policy.js +1 -2
  161. package/dist/src/agent-catalog/capabilities.js +2 -2
  162. package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
  163. package/dist/src/agent-catalog/repository.js +1 -1
  164. package/dist/src/agent-config/schema.d.ts +28 -0
  165. package/dist/src/agent-config/schema.js +7 -0
  166. package/dist/src/auth/credentials.js +7 -20
  167. package/dist/src/auth/model-credential-store.js +11 -4
  168. package/dist/src/auth/oauth/index.d.ts +1 -1
  169. package/dist/src/auth/oauth/index.js +3 -3
  170. package/dist/src/auth/oauth/openai.d.ts +2 -0
  171. package/dist/src/auth/oauth/openai.js +90 -0
  172. package/dist/src/auth/oauth/registry.js +3 -3
  173. package/dist/src/auth/oauth/types.d.ts +1 -0
  174. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  175. package/dist/src/auth/sync-provider-auth.js +5 -0
  176. package/dist/src/automations/capabilities/drafts.js +1 -1
  177. package/dist/src/bootstrap/application-state.js +1 -1
  178. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  179. package/dist/src/capabilities/runtime/product.js +1 -1
  180. package/dist/src/chat-commands/builtins/model.js +2 -2
  181. package/dist/src/cli/command-manifest.js +1 -1
  182. package/dist/src/cli/commands/agents.js +1 -1
  183. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  184. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  185. package/dist/src/cli/commands/extension-agent-plugin.js +0 -19
  186. package/dist/src/cli/commands/mcp.js +36 -2
  187. package/dist/src/cli/commands/models.js +2 -2
  188. package/dist/src/cli/commands/onboard/model.js +2 -2
  189. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  190. package/dist/src/cli/utils/oauth-login.js +2 -2
  191. package/dist/src/config/agent-profile.js +1 -1
  192. package/dist/src/config/index.js +3 -3
  193. package/dist/src/config/mcp-config-normalize.d.ts +0 -3
  194. package/dist/src/config/mcp-config-normalize.js +2 -22
  195. package/dist/src/config/models-json.d.ts +0 -5
  196. package/dist/src/config/models-json.js +13 -4
  197. package/dist/src/config/paths.d.ts +0 -1
  198. package/dist/src/config/paths.js +1 -4
  199. package/dist/src/config/schema.d.ts +130 -36
  200. package/dist/src/config/schema.js +52 -35
  201. package/dist/src/connectors/auth-provider-registry.d.ts +1 -1
  202. package/dist/src/connectors/auth-provider-registry.js +1 -21
  203. package/dist/src/connectors/china-catalog.js +5 -5
  204. package/dist/src/connectors/connection-recovery-service.d.ts +1 -6
  205. package/dist/src/connectors/connection-recovery-service.js +3 -105
  206. package/dist/src/connectors/health.d.ts +1 -2
  207. package/dist/src/connectors/health.js +2 -101
  208. package/dist/src/connectors/types.d.ts +1 -1
  209. package/dist/src/endpoint-tools/binding-service.d.ts +2 -0
  210. package/dist/src/endpoint-tools/binding-service.js +14 -2
  211. package/dist/src/endpoint-tools/bridge-host.d.ts +15 -0
  212. package/dist/src/endpoint-tools/bridge-host.js +166 -0
  213. package/dist/src/endpoint-tools/bridge.d.ts +27 -0
  214. package/dist/src/endpoint-tools/bridge.js +88 -0
  215. package/dist/src/endpoint-tools/capability-catalog.d.ts +2 -0
  216. package/dist/src/endpoint-tools/capability-catalog.js +8 -0
  217. package/dist/src/endpoint-tools/grant-service.d.ts +69 -0
  218. package/dist/src/endpoint-tools/grant-service.js +113 -0
  219. package/dist/src/endpoint-tools/index.js +1 -1
  220. package/dist/src/endpoint-tools/invocation-service.js +21 -4
  221. package/dist/src/endpoint-tools/location-task.d.ts +22 -0
  222. package/dist/src/endpoint-tools/location-task.js +114 -0
  223. package/dist/src/endpoint-tools/policy.js +21 -1
  224. package/dist/src/endpoint-tools/registry.d.ts +2 -0
  225. package/dist/src/endpoint-tools/registry.js +9 -0
  226. package/dist/src/endpoint-tools/result-projector.d.ts +15 -0
  227. package/dist/src/endpoint-tools/result-projector.js +31 -0
  228. package/dist/src/endpoint-tools/runtime.d.ts +2 -0
  229. package/dist/src/endpoint-tools/runtime.js +15 -2
  230. package/dist/src/endpoint-tools/target-resolver.d.ts +12 -0
  231. package/dist/src/endpoint-tools/target-resolver.js +27 -0
  232. package/dist/src/endpoint-tools/turn-context.d.ts +6 -0
  233. package/dist/src/endpoint-tools/turn-context.js +29 -0
  234. package/dist/src/endpoint-tools/upload-service.d.ts +4 -2
  235. package/dist/src/endpoint-tools/upload-service.js +29 -4
  236. package/dist/src/extensions/agent-plugins/auth.d.ts +0 -2
  237. package/dist/src/extensions/agent-plugins/auth.js +2 -19
  238. package/dist/src/extensions/agent-plugins/credentials.js +3 -19
  239. package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -2
  240. package/dist/src/extensions/agent-plugins/mcp-adapter.js +1 -5
  241. package/dist/src/extensions/agent-plugins/source-http-fetch.d.ts +2 -0
  242. package/dist/src/{agent/mcp/plugin-http-fetch.js → extensions/agent-plugins/source-http-fetch.js} +7 -7
  243. package/dist/src/extensions/agent-plugins/sources.js +2 -2
  244. package/dist/src/extensions/agent-plugins/store.js +1 -3
  245. package/dist/src/extensions/agent-plugins/validation.d.ts +0 -4
  246. package/dist/src/extensions/agent-plugins/validation.js +14 -21
  247. package/dist/src/gateway/agents-admin.d.ts +5 -0
  248. package/dist/src/gateway/agents-admin.js +58 -3
  249. package/dist/src/gateway/chat-stream/mapper.js +9 -0
  250. package/dist/src/gateway/chat-stream/protocol.d.ts +4 -4
  251. package/dist/src/gateway/hono/lib/config-payload.d.ts +9 -4
  252. package/dist/src/gateway/hono/lib/config-payload.js +2 -5
  253. package/dist/src/gateway/hono/oauth-async.js +9 -2
  254. package/dist/src/gateway/hono/routes/agent-plugins.js +4 -9
  255. package/dist/src/gateway/hono/routes/agents.js +5 -4
  256. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  257. package/dist/src/gateway/hono/routes/connection-waits.js +2 -5
  258. package/dist/src/gateway/hono/routes/connectors.js +5 -60
  259. package/dist/src/gateway/hono/routes/device-authorizations.d.ts +3 -0
  260. package/dist/src/gateway/hono/routes/device-authorizations.js +74 -0
  261. package/dist/src/gateway/hono/routes/endpoint-compatibility.js +8 -0
  262. package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +1 -0
  263. package/dist/src/gateway/hono/routes/endpoint-tools.js +70 -3
  264. package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -1
  265. package/dist/src/gateway/hono/routes/mcp.d.ts +1 -1
  266. package/dist/src/gateway/hono/routes/mcp.js +11 -237
  267. package/dist/src/gateway/hono/routes/notes.js +2 -2
  268. package/dist/src/gateway/hono/routes/projects.js +2 -2
  269. package/dist/src/gateway/hono/routes/session-command-handler.js +11 -1
  270. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +8 -2
  271. package/dist/src/gateway/hono/routes/session-input-handler.js +26 -2
  272. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  273. package/dist/src/gateway/image-generation-setup.js +1 -1
  274. package/dist/src/gateway/service/config-coordinator.js +2 -5
  275. package/dist/src/gateway/service/marketplace-service.js +2 -2
  276. package/dist/src/gateway/service/run-gateway-agent.js +13 -5
  277. package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
  278. package/dist/src/gateway/service/session-input-coordinator.js +29 -9
  279. package/dist/src/gateway/service/sessions-api.js +0 -6
  280. package/dist/src/gateway/service.js +7 -16
  281. package/dist/src/gateway/session-reset-service.js +0 -6
  282. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  283. package/dist/src/home-intelligence/host.js +2 -2
  284. package/dist/src/imports/compatibility.js +12 -10
  285. package/dist/src/local-apps/service.js +1 -1
  286. package/dist/src/mcp/channel-bridge.js +1 -1
  287. package/dist/src/notes/agent-context.js +1 -1
  288. package/dist/src/personal-agent/service.js +1 -1
  289. package/dist/src/providers/env-keys.js +1 -1
  290. package/dist/src/providers/index.js +26 -24
  291. package/dist/src/providers/model-call.d.ts +0 -2
  292. package/dist/src/providers/model-call.js +2 -6
  293. package/dist/src/providers/model-registry.js +4 -2
  294. package/dist/src/providers/model-supplements.d.ts +3 -3
  295. package/dist/src/providers/model-supplements.js +6 -27
  296. package/dist/src/providers/presentation.js +3 -8
  297. package/dist/src/providers/prompt-cache-plan.js +1 -1
  298. package/dist/src/providers/provider-auth-service.d.ts +1 -1
  299. package/dist/src/providers/provider-auth-service.js +7 -2
  300. package/dist/src/providers/provider-policy.d.ts +3 -0
  301. package/dist/src/providers/provider-policy.js +14 -0
  302. package/dist/src/providers/register-runtime-providers.js +6 -1
  303. package/dist/src/realtime/runtime.js +1 -1
  304. package/dist/src/session/store.js +7 -1
  305. package/dist/src/session/transcript-events.d.ts +5 -0
  306. package/dist/src/session/transcript-events.js +1 -0
  307. package/dist/src/session/types.d.ts +2 -0
  308. package/dist/src/storage/sqlite/device-grant-audit-repository.d.ts +11 -0
  309. package/dist/src/storage/sqlite/device-grant-audit-repository.js +10 -0
  310. package/dist/src/storage/sqlite/endpoint-device-settings-repository.d.ts +7 -0
  311. package/dist/src/storage/sqlite/endpoint-device-settings-repository.js +17 -0
  312. package/dist/src/storage/sqlite/migrations/240_device_settings.sql +5 -0
  313. package/dist/src/storage/sqlite/migrations/241_device_grant_audit.sql +13 -0
  314. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  315. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  316. package/dist/src/storage/sqlite/schema.js +1 -1
  317. package/dist/src/storage/sqlite/session-input-repository.d.ts +1 -0
  318. package/dist/src/storage/sqlite/session-input-repository.js +5 -1
  319. package/dist/src/tasks/capabilities/read.js +2 -2
  320. package/dist/src/tui/backends/embedded-backend.js +1 -1
  321. package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
  322. package/dist/src/tui/xopc-tui-keybindings.d.ts +4 -4
  323. package/dist/src/voice/realtime/persona-context.js +1 -1
  324. package/package.json +20 -9
  325. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CCRfvuov.js +0 -1
  326. package/dist/gateway/static/root/assets/agent-plugin-dialog-CRlzd8El.js +0 -1
  327. package/dist/gateway/static/root/assets/agents-_ug2LCQb.js +0 -66
  328. package/dist/gateway/static/root/assets/automations-workspace-BQywN6nG.js +0 -6
  329. package/dist/gateway/static/root/assets/browser-automations-page-yiEuG1v7.js +0 -3
  330. package/dist/gateway/static/root/assets/capabilities-page-BEnFt_dj.js +0 -2
  331. package/dist/gateway/static/root/assets/connectors-page-D6wTmWA6.js +0 -2
  332. package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +0 -1
  333. package/dist/gateway/static/root/assets/dependency-picker-BTERkA9X.js +0 -1
  334. package/dist/gateway/static/root/assets/device-pairing-wizard-DI2bqaKO.js +0 -1
  335. package/dist/gateway/static/root/assets/dist-Che_jiQF.js +0 -1
  336. package/dist/gateway/static/root/assets/gateway-realtime-DDWymi-o.js +0 -1
  337. package/dist/gateway/static/root/assets/home-page-BZDjvwet.js +0 -2
  338. package/dist/gateway/static/root/assets/index-BB1z8QxA.js +0 -106
  339. package/dist/gateway/static/root/assets/index-D9R6tU7r.css +0 -1
  340. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  341. package/dist/gateway/static/root/assets/local-session-drafts-DRPsDCj1.js +0 -1
  342. package/dist/gateway/static/root/assets/logs-page-DL-BM0xq.js +0 -2
  343. package/dist/gateway/static/root/assets/management-settings-BOVRHhXk.js +0 -1
  344. package/dist/gateway/static/root/assets/note-detail-panel-DJJK2yL4.js +0 -5
  345. package/dist/gateway/static/root/assets/notes-page-oCxO7ZTv.js +0 -8
  346. package/dist/gateway/static/root/assets/personal-page-DOk9gUK5.js +0 -1
  347. package/dist/gateway/static/root/assets/project-detail-page-3uAzbW4T.js +0 -1
  348. package/dist/gateway/static/root/assets/session-manager-LInoZ_Yi.js +0 -16
  349. package/dist/gateway/static/root/assets/sessions-page-BCVlNHtq.js +0 -1
  350. package/dist/gateway/static/root/assets/settings-advanced-gate-Bz-ue9fZ.js +0 -1
  351. package/dist/gateway/static/root/assets/setup-status-panel-B5BoZ-1y.js +0 -1
  352. package/dist/gateway/static/root/assets/shares-settings-BlnlzGjH.js +0 -1
  353. package/dist/gateway/static/root/assets/skills-page-DjdTeYzm.js +0 -2
  354. package/dist/gateway/static/root/assets/use-file-preview-expanded-Db2VYg1b.js +0 -2
  355. package/dist/gateway/static/root/assets/user-model-page-B74LkVbp.js +0 -2
  356. package/dist/gateway/static/root/assets/workflows-page-Crk4SxtC.js +0 -6
  357. package/dist/src/agent/embedded/system-prompt-override.d.ts +0 -2
  358. package/dist/src/agent/embedded/system-prompt-override.js +0 -21
  359. package/dist/src/agent/external-tools/mcp-provider.d.ts +0 -32
  360. package/dist/src/agent/external-tools/mcp-provider.js +0 -208
  361. package/dist/src/agent/mcp/bundle-mcp-config.d.ts +0 -20
  362. package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +0 -79
  363. package/dist/src/agent/mcp/bundle-mcp-gateway.js +0 -93
  364. package/dist/src/agent/mcp/bundle-mcp-names.d.ts +0 -1
  365. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -25
  366. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -1
  367. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -6
  368. package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +0 -46
  369. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -571
  370. package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +0 -2
  371. package/dist/src/agent/mcp/bundle-mcp-tools.js +0 -2
  372. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +0 -76
  373. package/dist/src/agent/mcp/bundle-mcp-types.js +0 -1
  374. package/dist/src/agent/mcp/embedded-mcp.d.ts +0 -10
  375. package/dist/src/agent/mcp/embedded-mcp.js +0 -14
  376. package/dist/src/agent/mcp/index.d.ts +0 -5
  377. package/dist/src/agent/mcp/index.js +0 -12
  378. package/dist/src/agent/mcp/mcp-config-shared.d.ts +0 -8
  379. package/dist/src/agent/mcp/mcp-config-shared.js +0 -39
  380. package/dist/src/agent/mcp/mcp-http.d.ts +0 -23
  381. package/dist/src/agent/mcp/mcp-http.js +0 -67
  382. package/dist/src/agent/mcp/mcp-resource-id.d.ts +0 -6
  383. package/dist/src/agent/mcp/mcp-resource-id.js +0 -19
  384. package/dist/src/agent/mcp/mcp-stdio-transport.d.ts +0 -26
  385. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -120
  386. package/dist/src/agent/mcp/mcp-stdio.d.ts +0 -18
  387. package/dist/src/agent/mcp/mcp-stdio.js +0 -35
  388. package/dist/src/agent/mcp/mcp-transport-config.d.ts +0 -28
  389. package/dist/src/agent/mcp/mcp-transport-config.js +0 -91
  390. package/dist/src/agent/mcp/mcp-transport.d.ts +0 -17
  391. package/dist/src/agent/mcp/mcp-transport.js +0 -141
  392. package/dist/src/agent/mcp/oauth/index.d.ts +0 -6
  393. package/dist/src/agent/mcp/oauth/index.js +0 -6
  394. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.d.ts +0 -5
  395. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.js +0 -14
  396. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +0 -30
  397. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +0 -276
  398. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.d.ts +0 -33
  399. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +0 -103
  400. package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +0 -31
  401. package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +0 -181
  402. package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +0 -12
  403. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +0 -91
  404. package/dist/src/agent/mcp/oauth/mcp-oauth-types.d.ts +0 -22
  405. package/dist/src/agent/mcp/oauth/mcp-oauth-types.js +0 -1
  406. package/dist/src/agent/mcp/plugin-http-fetch.d.ts +0 -2
  407. package/dist/src/agent/source-context/mcp-resource-context.d.ts +0 -8
  408. package/dist/src/agent/source-context/mcp-resource-context.js +0 -30
  409. package/dist/src/auth/oauth/openai-codex.d.ts +0 -9
  410. package/dist/src/auth/oauth/openai-codex.js +0 -414
  411. package/dist/src/connectors/plugin-mcp-recovery.d.ts +0 -28
  412. package/dist/src/connectors/plugin-mcp-recovery.js +0 -90
  413. package/dist/src/extensions/agent-plugins/connection.d.ts +0 -8
  414. package/dist/src/extensions/agent-plugins/connection.js +0 -41
  415. package/dist/src/extensions/agent-plugins/health.d.ts +0 -4
  416. package/dist/src/extensions/agent-plugins/health.js +0 -48
  417. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +0 -1
  418. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +0 -8
@@ -1,208 +0,0 @@
1
- import { init_connection_wait_repository, publishConnectionWait, requireSessionConnection } from "../../storage/sqlite/connection-wait-repository.js";
2
- import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
3
- import { connectorPrincipalForSession } from "../../connectors/principal.js";
4
- import { externalToolRef, parseExternalToolRef } from "./refs.js";
5
- import { pluginMcpCandidateRef } from "../../extensions/agent-plugins/connection.js";
6
- import { mcpToolPolicyId } from "../mcp/bundle-mcp-policy.js";
7
- import { isMcpAuthorizationError } from "../mcp/oauth/mcp-oauth-errors.js";
8
- import { getOrCreateSessionMcpRuntime } from "../mcp/bundle-mcp-runtime.js";
9
- //#region src/agent/external-tools/mcp-provider.ts
10
- init_connection_wait_repository();
11
- function policyToolId(tool) {
12
- return mcpToolPolicyId(tool.safeServerName, tool.toolName);
13
- }
14
- function toAgentToolResult(params) {
15
- const content = Array.isArray(params.result.content) ? params.result.content : [];
16
- return {
17
- content: content.length > 0 ? content : [{
18
- type: "text",
19
- text: JSON.stringify(params.result.structuredContent ?? {
20
- status: params.result.isError === true ? "error" : "ok",
21
- server: params.serverName,
22
- tool: params.toolName
23
- }, null, 2)
24
- }],
25
- details: {
26
- mcpServer: params.serverName,
27
- mcpTool: params.toolName,
28
- ...params.result.structuredContent !== void 0 ? { structuredContent: params.result.structuredContent } : {},
29
- ...params.result.isError === true ? { status: "error" } : {}
30
- }
31
- };
32
- }
33
- function hasAuthorizationChallenge(result) {
34
- const challenge = result._meta?.["mcp/www_authenticate"];
35
- return typeof challenge === "string" || Array.isArray(challenge) && challenge.some((value) => typeof value === "string");
36
- }
37
- var McpToolProvider = class {
38
- source = "mcp";
39
- constructor(deps) {
40
- this.deps = deps;
41
- }
42
- async search(_query) {
43
- return this.withRuntime(async (runtime) => {
44
- return (await runtime.getCatalog()).tools.filter((tool) => this.isAllowed(tool)).map((tool) => ({
45
- toolRef: externalToolRef(this.source, tool.safeServerName, tool.toolName),
46
- source: this.source,
47
- namespace: tool.safeServerName,
48
- title: tool.title || tool.toolName,
49
- summary: tool.description || tool.fallbackDescription
50
- }));
51
- });
52
- }
53
- async connectionCandidates(query) {
54
- return this.withRuntime(async (runtime) => {
55
- const catalog = await runtime.getCatalog();
56
- const normalizedQuery = query.toLocaleLowerCase();
57
- return Object.values(catalog.servers).flatMap((server) => {
58
- if (!server.serverName.startsWith("plugin/") || server.error?.code !== "MCP_AUTHORIZATION_REQUIRED") return [];
59
- const [, encodedPluginId, encodedServerName] = server.serverName.split("/");
60
- if (!encodedPluginId || !encodedServerName) return [];
61
- const pluginId = decodeURIComponent(encodedPluginId);
62
- const serverName = decodeURIComponent(encodedServerName);
63
- const searchable = `${pluginId} ${serverName}`.toLocaleLowerCase();
64
- const tokens = normalizedQuery.split(/[^\p{L}\p{N}_-]+/u).filter((token) => token.length > 1);
65
- if (tokens.length && !tokens.some((token) => searchable.includes(token))) return [];
66
- return [{
67
- candidateRef: pluginMcpCandidateRef(pluginId, serverName),
68
- source: this.source,
69
- label: pluginId,
70
- summary: `Connect ${pluginId}/${serverName}`,
71
- capabilities: [`mcp.tools:${server.serverName}`],
72
- reason: "not_connected"
73
- }];
74
- });
75
- });
76
- }
77
- async describe(toolRef) {
78
- return this.withRuntime(async (runtime) => {
79
- const tool = await this.resolve(runtime, toolRef);
80
- if (!tool) return void 0;
81
- const summary = tool.description || tool.fallbackDescription;
82
- return {
83
- toolRef,
84
- source: this.source,
85
- namespace: tool.serverName,
86
- title: tool.title || tool.toolName,
87
- summary,
88
- description: summary,
89
- inputSchema: tool.inputSchema
90
- };
91
- });
92
- }
93
- async execute(toolRef, args, _approvalId, context) {
94
- return this.withRuntime(async (runtime) => {
95
- const tool = await this.resolve(runtime, toolRef);
96
- if (!tool) throw new Error(`MCP tool is unavailable or denied: ${toolRef}`);
97
- let executionArgs = args;
98
- if (this.deps.hookRunner) {
99
- const hook = await this.deps.hookRunner.runBeforeToolCall(policyToolId(tool), args, {
100
- conversationId: this.deps.getConversationId(),
101
- isMcpTool: true,
102
- mcpServerId: tool.serverName
103
- });
104
- if (!hook.allowed) throw new Error(hook.reason ?? "MCP tool call blocked by policy hook.");
105
- executionArgs = hook.params ?? args;
106
- }
107
- try {
108
- const result = await runtime.callTool(tool.serverName, tool.toolName, executionArgs, this.executionSignal(tool, context.signal));
109
- if (tool.serverName.startsWith("plugin/") && hasAuthorizationChallenge(result)) return this.requestConnection(tool.serverName, tool.toolName);
110
- return toAgentToolResult({
111
- serverName: tool.serverName,
112
- toolName: tool.toolName,
113
- result
114
- });
115
- } catch (error) {
116
- if (tool.serverName.startsWith("plugin/") && (isMcpAuthorizationError(error) || error?.code === 401)) return this.requestConnection(tool.serverName, tool.toolName);
117
- throw error;
118
- }
119
- });
120
- }
121
- requestConnection(serverId, toolName) {
122
- const [, encodedPluginId, encodedServerName] = serverId.split("/");
123
- const conversationId = this.deps.getConversationId();
124
- if (!encodedPluginId || !encodedServerName || !conversationId) return {
125
- content: [{
126
- type: "text",
127
- text: "This MCP tool requires an account connection in xopc."
128
- }],
129
- details: { status: "connection_required" }
130
- };
131
- const pluginId = decodeURIComponent(encodedPluginId);
132
- const serverName = decodeURIComponent(encodedServerName);
133
- const principal = connectorPrincipalForSession(conversationId);
134
- if (!principal.isLocalOwner) return {
135
- content: [{
136
- type: "text",
137
- text: "This MCP connection must be completed by the xopc owner."
138
- }],
139
- details: { status: "connection_required" }
140
- };
141
- const result = requireSessionConnection({
142
- conversationId,
143
- principalId: principal.principalId,
144
- agentId: principal.agentId ?? this.deps.agentId ?? "main",
145
- summary: `Continue ${toolName} using ${pluginId}`,
146
- needs: [{
147
- key: serverId,
148
- target: {
149
- type: "plugin-mcp",
150
- pluginId,
151
- serverId,
152
- serverName
153
- },
154
- label: pluginId,
155
- capabilities: [`mcp.tool:${serverId}:${toolName}`]
156
- }]
157
- });
158
- publishConnectionWait(conversationId);
159
- return {
160
- content: [{
161
- type: "text",
162
- text: "Account connection required. The objective is preserved in xopc."
163
- }],
164
- details: result
165
- };
166
- }
167
- async resolve(runtime, toolRef) {
168
- const parsed = parseExternalToolRef(toolRef, this.source);
169
- if (!parsed) return void 0;
170
- const tool = (await runtime.getCatalog()).tools.find((candidate) => candidate.safeServerName === parsed.namespace && candidate.toolName === parsed.toolName);
171
- return tool && this.isAllowed(tool) ? tool : void 0;
172
- }
173
- isAllowed(tool) {
174
- const cfg = this.deps.getConfig();
175
- const conversationId = this.deps.getConversationId();
176
- const profile = cfg && conversationId ? resolveEffectiveAgentProfileForSession(conversationId) : void 0;
177
- const policyName = policyToolId(tool);
178
- return !profile?.tools.denied.has(policyName);
179
- }
180
- executionSignal(tool, signal) {
181
- const cfg = this.deps.getConfig();
182
- const conversationId = this.deps.getConversationId();
183
- const timeoutMs = (cfg && conversationId ? resolveEffectiveAgentProfileForSession(conversationId) : void 0)?.config.tools[policyToolId(tool)]?.timeoutMs;
184
- if (!timeoutMs) return signal;
185
- const timeoutSignal = AbortSignal.timeout(timeoutMs);
186
- return signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
187
- }
188
- async withRuntime(run) {
189
- const cfg = this.deps.getConfig();
190
- const conversationId = this.deps.getConversationId();
191
- const sessionId = conversationId ?? `agent:${this.deps.agentId ?? "main"}`;
192
- const runtime = await (this.deps.getRuntime ?? getOrCreateSessionMcpRuntime)({
193
- sessionId,
194
- conversationId,
195
- workspaceDir: this.deps.workspace,
196
- cfg
197
- });
198
- const releaseLease = runtime.acquireLease?.();
199
- runtime.markUsed();
200
- try {
201
- return await run(runtime);
202
- } finally {
203
- releaseLease?.();
204
- }
205
- }
206
- };
207
- //#endregion
208
- export { McpToolProvider };
@@ -1,20 +0,0 @@
1
- import type { Config } from '../../config/schema.js';
2
- export type BundleMcpServerConfig = Record<string, unknown>;
3
- export type BundleMcpDiagnostic = {
4
- extensionId: string;
5
- connectorId: string;
6
- message: string;
7
- };
8
- export type BundleMcpConfig = {
9
- mcpServers: Record<string, BundleMcpServerConfig>;
10
- };
11
- export type MergedBundleMcpConfig = {
12
- config: BundleMcpConfig;
13
- diagnostics: BundleMcpDiagnostic[];
14
- };
15
- export type BundleMcpServerMapper = (server: BundleMcpServerConfig, name: string) => BundleMcpServerConfig;
16
- export declare function loadMergedBundleMcpConfig(params: {
17
- workspaceDir: string;
18
- cfg?: Config;
19
- mapConfiguredServer?: BundleMcpServerMapper;
20
- }): MergedBundleMcpConfig;
@@ -1,79 +0,0 @@
1
- import type { Config } from '../../config/schema.js';
2
- export type McpGatewayToolEntry = {
3
- name: string;
4
- shortName: string;
5
- description: string;
6
- readOnly: boolean;
7
- };
8
- export type McpGatewayResourceEntry = {
9
- id: string;
10
- version: string;
11
- serverId: string;
12
- uri: string;
13
- name: string;
14
- title?: string;
15
- description?: string;
16
- mimeType?: string;
17
- };
18
- export type McpGatewayPromptEntry = {
19
- name: string;
20
- title?: string;
21
- description?: string;
22
- argumentCount: number;
23
- };
24
- export type McpGatewayCapabilitySummary = {
25
- serverId: string;
26
- toolCount: number;
27
- resourceCount: number;
28
- promptCount: number;
29
- tools: McpGatewayToolEntry[];
30
- resources: McpGatewayResourceEntry[];
31
- prompts: McpGatewayPromptEntry[];
32
- error?: import('./bundle-mcp-types.js').McpServerCatalog['error'];
33
- };
34
- export declare function listBundleMcpResourcesForGateway(params: {
35
- workspaceDir: string;
36
- cfg?: Config;
37
- }): Promise<McpGatewayResourceEntry[]>;
38
- export declare function readBundleMcpResourceForGateway(params: {
39
- workspaceDir: string;
40
- cfg?: Config;
41
- sourceId: string;
42
- }): Promise<{
43
- resource: McpGatewayResourceEntry;
44
- contents: {
45
- [x: string]: unknown;
46
- contents: ({
47
- uri: string;
48
- text: string;
49
- mimeType?: string;
50
- _meta?: {
51
- [x: string]: unknown;
52
- };
53
- } | {
54
- uri: string;
55
- blob: string;
56
- mimeType?: string;
57
- _meta?: {
58
- [x: string]: unknown;
59
- };
60
- })[];
61
- _meta?: {
62
- [x: string]: unknown;
63
- progressToken?: string | number;
64
- "io.modelcontextprotocol/related-task"?: {
65
- taskId: string;
66
- };
67
- };
68
- };
69
- }>;
70
- export declare function listBundleMcpServerToolsForGateway(params: {
71
- workspaceDir: string;
72
- cfg?: Config;
73
- serverId: string;
74
- }): Promise<McpGatewayToolEntry[]>;
75
- export declare function listBundleMcpServerCapabilitiesForGateway(params: {
76
- workspaceDir: string;
77
- cfg?: Config;
78
- serverId: string;
79
- }): Promise<McpGatewayCapabilitySummary>;
@@ -1,93 +0,0 @@
1
- import { mcpToolPolicyId } from "./bundle-mcp-policy.js";
2
- import { createSessionMcpRuntime } from "./bundle-mcp-runtime.js";
3
- import { decodeMcpResourceId, encodeMcpResourceId } from "./mcp-resource-id.js";
4
- import crypto from "node:crypto";
5
- //#region src/agent/mcp/bundle-mcp-gateway.ts
6
- function mapTools(tools, serverId) {
7
- return tools.filter((tool) => tool.serverName === serverId).map((tool) => ({
8
- name: mcpToolPolicyId(tool.safeServerName, tool.toolName),
9
- shortName: tool.toolName,
10
- description: tool.description || tool.title || tool.fallbackDescription,
11
- readOnly: tool.annotations?.readOnlyHint === true
12
- }));
13
- }
14
- function mapResources(resources, serverId) {
15
- return resources.filter((resource) => resource.serverName === serverId).map((resource) => ({
16
- id: encodeMcpResourceId({
17
- serverId: resource.serverName,
18
- uri: resource.uri
19
- }),
20
- version: crypto.createHash("sha256").update(JSON.stringify(resource)).digest("hex"),
21
- serverId: resource.serverName,
22
- uri: resource.uri,
23
- name: resource.name,
24
- title: resource.title,
25
- description: resource.description,
26
- mimeType: resource.mimeType
27
- }));
28
- }
29
- async function listBundleMcpResourcesForGateway(params) {
30
- const catalog = await loadCatalog(params);
31
- return Object.keys(catalog.servers).sort().flatMap((serverId) => mapResources(catalog.resources, serverId));
32
- }
33
- async function readBundleMcpResourceForGateway(params) {
34
- const identity = decodeMcpResourceId(params.sourceId);
35
- if (!identity) throw new Error("Invalid MCP resource id");
36
- const runtime = createSessionMcpRuntime({
37
- sessionId: `mcp-resource:${crypto.randomUUID()}`,
38
- workspaceDir: params.workspaceDir,
39
- cfg: params.cfg
40
- });
41
- try {
42
- const resource = (await runtime.getCatalog()).resources.find((item) => item.serverName === identity.serverId && item.uri === identity.uri);
43
- if (!resource) throw new Error("MCP resource is unavailable");
44
- const contents = await runtime.readResource(identity.serverId, identity.uri);
45
- return {
46
- resource: mapResources([resource], identity.serverId)[0],
47
- contents
48
- };
49
- } finally {
50
- await runtime.dispose();
51
- }
52
- }
53
- function mapPrompts(prompts, serverId) {
54
- return prompts.filter((prompt) => prompt.serverName === serverId).map((prompt) => ({
55
- name: prompt.name,
56
- title: prompt.title,
57
- description: prompt.description,
58
- argumentCount: prompt.argumentCount
59
- }));
60
- }
61
- async function loadCatalog(params) {
62
- const runtime = createSessionMcpRuntime({
63
- sessionId: `mcp-gateway:${crypto.randomUUID()}`,
64
- workspaceDir: params.workspaceDir,
65
- cfg: params.cfg
66
- });
67
- try {
68
- return await runtime.getCatalog();
69
- } finally {
70
- await runtime.dispose();
71
- }
72
- }
73
- async function listBundleMcpServerToolsForGateway(params) {
74
- return mapTools((await loadCatalog(params)).tools, params.serverId);
75
- }
76
- async function listBundleMcpServerCapabilitiesForGateway(params) {
77
- const catalog = await loadCatalog(params);
78
- const tools = mapTools(catalog.tools, params.serverId);
79
- const resources = mapResources(catalog.resources, params.serverId);
80
- const prompts = mapPrompts(catalog.prompts, params.serverId);
81
- return {
82
- serverId: params.serverId,
83
- error: catalog.servers[params.serverId]?.error,
84
- toolCount: tools.length,
85
- resourceCount: resources.length,
86
- promptCount: prompts.length,
87
- tools,
88
- resources,
89
- prompts
90
- };
91
- }
92
- //#endregion
93
- export { listBundleMcpResourcesForGateway, listBundleMcpServerCapabilitiesForGateway, listBundleMcpServerToolsForGateway, readBundleMcpResourceForGateway };
@@ -1 +0,0 @@
1
- export declare function sanitizeServerName(raw: string, usedNames: Set<string>): string;
@@ -1,25 +0,0 @@
1
- import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
2
- import { createHash } from "node:crypto";
3
- //#region src/agent/mcp/bundle-mcp-names.ts
4
- init_string_coerce();
5
- const TOOL_NAME_SAFE_RE = /[^A-Za-z0-9_-]/g;
6
- const TOOL_NAME_MAX_PREFIX = 30;
7
- function sanitizeToolFragment(raw, fallback, maxChars) {
8
- const normalized = raw.trim().replace(TOOL_NAME_SAFE_RE, "-") || fallback;
9
- if (!maxChars) return normalized;
10
- return normalized.length > maxChars ? normalized.slice(0, maxChars) : normalized;
11
- }
12
- function sanitizeServerName(raw, usedNames) {
13
- const base = raw.startsWith("plugin/") ? `plugin-${createHash("sha256").update(raw).digest("hex").slice(0, 20)}` : sanitizeToolFragment(raw, "mcp", TOOL_NAME_MAX_PREFIX);
14
- let candidate = base;
15
- let n = 2;
16
- while (usedNames.has(normalizeLowercaseStringOrEmpty(candidate))) {
17
- const suffix = `-${n}`;
18
- candidate = `${base.slice(0, Math.max(1, TOOL_NAME_MAX_PREFIX - suffix.length))}${suffix}`;
19
- n += 1;
20
- }
21
- usedNames.add(normalizeLowercaseStringOrEmpty(candidate));
22
- return candidate;
23
- }
24
- //#endregion
25
- export { sanitizeServerName };
@@ -1 +0,0 @@
1
- export declare function mcpToolPolicyId(serverId: string, toolName: string): string;
@@ -1,6 +0,0 @@
1
- //#region src/agent/mcp/bundle-mcp-policy.ts
2
- function mcpToolPolicyId(serverId, toolName) {
3
- return `mcp:${encodeURIComponent(serverId)}:${encodeURIComponent(toolName)}`;
4
- }
5
- //#endregion
6
- export { mcpToolPolicyId };
@@ -1,46 +0,0 @@
1
- import type { jsonSchemaValidator } from "@modelcontextprotocol/sdk/validation/types.js";
2
- import type { Config } from "../../config/schema.js";
3
- import type { SessionMcpRuntime, SessionMcpRuntimeManager } from "./bundle-mcp-types.js";
4
- type CreateSessionMcpRuntime = (params: Parameters<typeof createSessionMcpRuntime>[0] & {
5
- configFingerprint?: string;
6
- }) => SessionMcpRuntime;
7
- export declare function createBundleMcpJsonSchemaValidator(): jsonSchemaValidator;
8
- declare function resolveSessionMcpRuntimeIdleTtlMs(cfg?: Config): number;
9
- export declare function createSessionMcpRuntime(params: {
10
- sessionId: string;
11
- conversationId?: string;
12
- workspaceDir: string;
13
- cfg?: Config;
14
- }): SessionMcpRuntime;
15
- declare function createSessionMcpRuntimeManager(opts?: {
16
- createRuntime?: CreateSessionMcpRuntime;
17
- now?: () => number;
18
- enableIdleSweepTimer?: boolean;
19
- idleSweepIntervalMs?: number;
20
- }): SessionMcpRuntimeManager;
21
- export declare function getSessionMcpRuntimeManager(): SessionMcpRuntimeManager;
22
- export declare function getOrCreateSessionMcpRuntime(params: {
23
- sessionId: string;
24
- conversationId?: string;
25
- workspaceDir: string;
26
- cfg?: Config;
27
- }): Promise<SessionMcpRuntime>;
28
- export declare function disposeSessionMcpRuntime(sessionId: string): Promise<void>;
29
- export declare function retireSessionMcpRuntime(params: {
30
- sessionId?: string | null;
31
- reason: string;
32
- onError?: (error: unknown, sessionId: string, reason: string) => void;
33
- }): Promise<boolean>;
34
- export declare function retireSessionMcpRuntimeForConversationId(params: {
35
- conversationId?: string | null;
36
- reason: string;
37
- onError?: (error: unknown, sessionId: string, reason: string) => void;
38
- }): Promise<boolean>;
39
- export declare function disposeAllSessionMcpRuntimes(): Promise<void>;
40
- export declare const __testing: {
41
- createSessionMcpRuntimeManager: typeof createSessionMcpRuntimeManager;
42
- resetSessionMcpRuntimeManager(): Promise<void>;
43
- getCachedSessionIds(): string[];
44
- resolveSessionMcpRuntimeIdleTtlMs: typeof resolveSessionMcpRuntimeIdleTtlMs;
45
- };
46
- export {};