@xopcai/xopc 0.0.368 → 0.0.370

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 (516) 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/_locales/en/messages.json +30 -1
  9. package/dist/browser-ext/_locales/zh_CN/messages.json +30 -1
  10. package/dist/browser-ext/dist/assets/{auth-beGtbLPS.js → page-context-BeworyNB.js} +1331 -1355
  11. package/dist/browser-ext/dist/assets/{sidepanel-BT0ojEzG.css → sidepanel-Ccl0eSa1.css} +43 -0
  12. package/dist/browser-ext/dist/background.js +680 -182
  13. package/dist/browser-ext/dist/sidepanel.html +2 -2
  14. package/dist/browser-ext/dist/sidepanel.js +393 -194
  15. package/dist/browser-ext/manifest.json +2 -8
  16. package/dist/extensions/telegram/xopc.extension.json +1 -1
  17. package/dist/gateway/static/root/assets/{activity-store-D9ZMh5ZR.js → activity-store-BQ3PMp2q.js} +1 -1
  18. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bj3rvcTm.js → agent-avatar-dicebear-C61i1QbX.js} +1 -1
  19. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-0fCR1DHx.js +1 -0
  20. package/dist/gateway/static/root/assets/agent-plugin-dialog-Di99mUTT.js +1 -0
  21. package/dist/gateway/static/root/assets/agents-BRZZmYH_.js +66 -0
  22. package/dist/gateway/static/root/assets/{agents-admin-api-B5QDepbW.js → agents-admin-api-HBZvVyzF.js} +1 -1
  23. package/dist/gateway/static/root/assets/{app-management-settings-panel-2rTEtB_X.js → app-management-settings-panel-noqqxkds.js} +1 -1
  24. package/dist/gateway/static/root/assets/{appearance-settings-BPVBS80k.js → appearance-settings-DG8QN0gR.js} +1 -1
  25. package/dist/gateway/static/root/assets/{apps-page-1FuKlZYP.js → apps-page-CgiyzFYo.js} +1 -1
  26. package/dist/gateway/static/root/assets/{archive-plugin-BbT1O7oK.js → archive-plugin-BO3I9zRP.js} +1 -1
  27. package/dist/gateway/static/root/assets/{automations-page-DjwP_h8h.js → automations-page-CgAcRFDS.js} +1 -1
  28. package/dist/gateway/static/root/assets/automations-workspace-BIkxIpab.js +6 -0
  29. package/dist/gateway/static/root/assets/{binary-plugins-gS7Wg68v.js → binary-plugins-gFD7vH9R.js} +1 -1
  30. package/dist/gateway/static/root/assets/{block-editor-DbwMaivP.js → block-editor-B1VE-jAe.js} +2 -2
  31. package/dist/gateway/static/root/assets/browser-automation-inputs-DxRoKFun.js +1 -0
  32. package/dist/gateway/static/root/assets/browser-automations-page-CIjyMS6f.js +3 -0
  33. package/dist/gateway/static/root/assets/browser-settings-page-BMAivBfp.js +3 -0
  34. package/dist/gateway/static/root/assets/{capabilities-Lswa0hv8.js → capabilities-CY4SiHcP.js} +1 -1
  35. package/dist/gateway/static/root/assets/{capabilities-Dd1PZRQw.js → capabilities-gjQtMhKu.js} +1 -1
  36. package/dist/gateway/static/root/assets/capabilities-page-DRdcfo68.js +2 -0
  37. package/dist/gateway/static/root/assets/{capabilities-settings-panel-DTHR1DrJ.js → capabilities-settings-panel-ZuL6pWjM.js} +4 -4
  38. package/dist/gateway/static/root/assets/{capability-header-actions-494dnJsj.js → capability-header-actions-D0GC1FEv.js} +1 -1
  39. package/dist/gateway/static/root/assets/channels-CgE22Pzd.js +1 -0
  40. package/dist/gateway/static/root/assets/{chat-terminal-dock-Bl7-Zk-x.js → chat-terminal-dock-CEjh1utz.js} +2 -2
  41. package/dist/gateway/static/root/assets/{computer-settings-page-ByExKr_6.js → computer-settings-page-vFHJAmQr.js} +1 -1
  42. package/dist/gateway/static/root/assets/{connector-service-page-BK_5aFxO.js → connector-service-page-DTrwZ4kV.js} +1 -1
  43. package/dist/gateway/static/root/assets/connectors-page-DRcMiTWu.js +1 -0
  44. package/dist/gateway/static/root/assets/copy-text-row-C1gaJwlZ.js +1 -0
  45. package/dist/gateway/static/root/assets/{date-picker-BXJv6472.js → date-picker-NfGIPSYY.js} +1 -1
  46. package/dist/gateway/static/root/assets/dependency-picker-CqguveUi.js +1 -0
  47. package/dist/gateway/static/root/assets/{desktop-pet-DWNEC3mk.js → desktop-pet-CTx1zkJm.js} +1 -1
  48. package/dist/gateway/static/root/assets/{desktop-pet-settings-BYwlxGiN.js → desktop-pet-settings-BRDS3EGc.js} +1 -1
  49. package/dist/gateway/static/root/assets/{device-pairing-wizard-BAc4F35b.js → device-pairing-wizard-Du4Ciuyw.js} +1 -1
  50. package/dist/gateway/static/root/assets/{directory-picker-path-field-D26tSY8Z.js → directory-picker-path-field-CjstlxFl.js} +1 -1
  51. package/dist/gateway/static/root/assets/{extension-debug-page-xYIGNegB.js → extension-debug-page-BfAtjhoK.js} +1 -1
  52. package/dist/gateway/static/root/assets/{extension-page-BoQ1-3AW.js → extension-page-BJmudejr.js} +1 -1
  53. package/dist/gateway/static/root/assets/{extension-provider-Cw_JU6RR.js → extension-provider-Br6LXyIj.js} +1 -1
  54. package/dist/gateway/static/root/assets/{extension-settings-page-BH5TFGPe.js → extension-settings-page-UvmHniyz.js} +1 -1
  55. package/dist/gateway/static/root/assets/{fallback-models-04Wqmw14.js → fallback-models-euw9MGdt.js} +1 -1
  56. package/dist/gateway/static/root/assets/{gateway-config-swr-CNf0ZeRw.js → gateway-config-swr-7RKqgU_U.js} +1 -1
  57. package/dist/gateway/static/root/assets/gateway-realtime-F6D4A7N5.js +1 -0
  58. package/dist/gateway/static/root/assets/gateway-realtime-store-BheKaO6d.js +1 -0
  59. package/dist/gateway/static/root/assets/{gateway-settings-BqvCJVUC.js → gateway-settings-C7roPHh1.js} +1 -1
  60. package/dist/gateway/static/root/assets/{gateway-startup-retry-DIxHacUw.js → gateway-startup-retry-jiV5sbEX.js} +1 -1
  61. package/dist/gateway/static/root/assets/home-page-BGNCTtM3.js +2 -0
  62. package/dist/gateway/static/root/assets/{image-generation-api-CS0q0Kto.js → image-generation-api-DO4mXb6I.js} +1 -1
  63. package/dist/gateway/static/root/assets/{imports-page-n_rSLo6b.js → imports-page-DxCoT0VV.js} +1 -1
  64. package/dist/gateway/static/root/assets/index-BGBkIIzM.css +1 -0
  65. package/dist/gateway/static/root/assets/index-FCEE325-.js +106 -0
  66. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-tVkrHbYF.js → keyboard-shortcuts-settings-CnLln9Ds.js} +1 -1
  67. package/dist/gateway/static/root/assets/{local-app-workbench-page-L8tYuas0.js → local-app-workbench-page-yXRkSrEj.js} +1 -1
  68. package/dist/gateway/static/root/assets/{local-apps-page-SSJ9B1bH.js → local-apps-page-D46buzTk.js} +1 -1
  69. package/dist/gateway/static/root/assets/local-session-drafts-pox8evDV.js +1 -0
  70. package/dist/gateway/static/root/assets/{locale-store-D6_rF-qT.js → locale-store-COVscAqC.js} +1 -1
  71. package/dist/gateway/static/root/assets/logs-page-DmcCHnH0.js +2 -0
  72. package/dist/gateway/static/root/assets/management-settings-khN1ThNL.js +1 -0
  73. package/dist/gateway/static/root/assets/{markdown-view-_xwUuKce.js → markdown-view-B_qnAcW2.js} +1 -1
  74. package/dist/gateway/static/root/assets/{media-plugins-C631CDu4.js → media-plugins-C0Pc-wSY.js} +1 -1
  75. package/dist/gateway/static/root/assets/messages-Bb2GK-Nj.js +3 -0
  76. package/dist/gateway/static/root/assets/models-hub-cache-DyPPksMP.js +1 -0
  77. package/dist/gateway/static/root/assets/note-detail-panel-C_t58yha.js +5 -0
  78. package/dist/gateway/static/root/assets/{notes-api-vIZWQ9Yt.js → notes-api-sBgBcyLW.js} +1 -1
  79. package/dist/gateway/static/root/assets/notes-page-BJ0QS6xx.js +8 -0
  80. package/dist/gateway/static/root/assets/{page-context-capture-button-BlPDM7GM.js → page-context-capture-button-DfRODHv1.js} +1 -1
  81. package/dist/gateway/static/root/assets/personal-page-CiiXwwQE.js +1 -0
  82. package/dist/gateway/static/root/assets/{product-open-page-BJjWvoER.js → product-open-page-_Bp6HRmm.js} +1 -1
  83. package/dist/gateway/static/root/assets/{product-preview-content-CEd4E7Gf.js → product-preview-content-BUdiO0Ct.js} +1 -1
  84. package/dist/gateway/static/root/assets/project-detail-page-Clb-fXYk.js +1 -0
  85. package/dist/gateway/static/root/assets/{projects-page-lszV8HuS.js → projects-page-D9JEEqhh.js} +1 -1
  86. package/dist/gateway/static/root/assets/{registry-api-uJnjqTcn.js → registry-api-Bh9UBb-f.js} +1 -1
  87. package/dist/gateway/static/root/assets/remote-access-hub-CmyTq3_l.js +1 -0
  88. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CjnNQYW8.js → runtime-tools-settings-panel-B1_inj8L.js} +1 -1
  89. package/dist/gateway/static/root/assets/{scenes-page-B3T3dDOR.js → scenes-page-CUNAZN2_.js} +2 -2
  90. package/dist/gateway/static/root/assets/{schema-form-DT3c4Vd_.js → schema-form-CfT-9UVw.js} +1 -1
  91. package/dist/gateway/static/root/assets/{send-session-input-CICkGwn-.js → send-session-input-BW40VHiL.js} +1 -1
  92. package/dist/gateway/static/root/assets/{session-api-BcQodoAu.js → session-api-yjpEz4pP.js} +1 -1
  93. package/dist/gateway/static/root/assets/session-manager-BqlvrjPE.js +16 -0
  94. package/dist/gateway/static/root/assets/sessions-page-CXZKScvu.js +1 -0
  95. package/dist/gateway/static/root/assets/settings-advanced-gate-B2vKXmzg.js +1 -0
  96. package/dist/gateway/static/root/assets/{settings-page-D-PZjcss.js → settings-page-1h3vyueg.js} +1 -1
  97. package/dist/gateway/static/root/assets/setup-status-panel-Cqc7UlZy.js +1 -0
  98. package/dist/gateway/static/root/assets/{share-link-dialog-CWS8EkJS.js → share-link-dialog-HCHM8qnf.js} +1 -1
  99. package/dist/gateway/static/root/assets/{share-preview-page-23NJAKiq.js → share-preview-page-Ce6FNWt1.js} +1 -1
  100. package/dist/gateway/static/root/assets/{shares-api-iKhHbvBD.js → shares-api-c0dfWz6h.js} +1 -1
  101. package/dist/gateway/static/root/assets/shares-settings-Dh5jisCK.js +1 -0
  102. package/dist/gateway/static/root/assets/{skill-api-C-MWdQwl.js → skill-api-deDZeQS8.js} +1 -1
  103. package/dist/gateway/static/root/assets/{skill-reload-api-iy02aB13.js → skill-reload-api-Ge5XymHa.js} +1 -1
  104. package/dist/gateway/static/root/assets/skills-page-DZozl9U_.js +2 -0
  105. package/dist/gateway/static/root/assets/system-settings-panel-CtzyMxqq.js +1 -0
  106. package/dist/gateway/static/root/assets/{task-detail-page-B2SIEyhZ.js → task-detail-page-5f_V0h-p.js} +2 -2
  107. package/dist/gateway/static/root/assets/{task-expandable-content-D2LRR4BC.js → task-expandable-content-hYcgCEE3.js} +1 -1
  108. package/dist/gateway/static/root/assets/{theme-store-BJfhz-Zq.js → theme-store-BOfCKgl6.js} +1 -1
  109. package/dist/gateway/static/root/assets/{tracing-settings-page-aHD56iaS.js → tracing-settings-page-DDWFXcST.js} +1 -1
  110. package/dist/gateway/static/root/assets/{tunnel-api-BCf8CfTC.js → tunnel-api-vMtlbJ-m.js} +1 -1
  111. package/dist/gateway/static/root/assets/{usage-page-B4XUkuJd.js → usage-page-B1-BCW8U.js} +1 -1
  112. package/dist/gateway/static/root/assets/{use-autosave-BnnTw9RE.js → use-autosave-CSckcjFx.js} +1 -1
  113. package/dist/gateway/static/root/assets/{use-composer-attachments-Itczg0y1.js → use-composer-attachments-DJya1hIL.js} +1 -1
  114. package/dist/gateway/static/root/assets/use-file-preview-expanded-C5ONO7sF.js +2 -0
  115. package/dist/gateway/static/root/assets/user-model-page-D4BSq9HJ.js +2 -0
  116. package/dist/gateway/static/root/assets/{voice-api-key-field-BphJku8x.js → voice-api-key-field-GEw5x2fU.js} +1 -1
  117. package/dist/gateway/static/root/assets/{voice-config-api-B4u4coFj.js → voice-config-api-3yyVwXln.js} +1 -1
  118. package/dist/gateway/static/root/assets/{work-discovery-overlay-jgOEP1xw.js → work-discovery-overlay-CjiNYJV5.js} +1 -1
  119. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-N69crzRu.js → workflow-run-setup-panel-DJOetXvm.js} +2 -2
  120. package/dist/gateway/static/root/assets/workflows-page-CcAPFh2R.js +6 -0
  121. package/dist/gateway/static/root/assets/{workspace-api-Lzv6GDO8.js → workspace-api-WhbMvdBE.js} +2 -2
  122. package/dist/gateway/static/root/index.html +32 -34
  123. package/dist/package.js +1 -1
  124. package/dist/packages/browser-control-contract/src/automation.js +213 -0
  125. package/dist/packages/browser-control-contract/src/index.js +43 -12
  126. package/dist/packages/endpoint-tools-client/src/index.js +189 -0
  127. package/dist/packages/endpoint-tools-protocol/src/bridge.js +105 -0
  128. package/dist/packages/endpoint-tools-protocol/src/index.js +93 -2
  129. package/dist/packages/endpoint-tools-protocol/src/location.js +109 -0
  130. package/dist/packages/gateway-contract/src/gateway-scopes.js +3 -1
  131. package/dist/packages/gateway-contract/src/notifications.js +1 -0
  132. package/dist/packages/gateway-contract/src/session-input-command.js +30 -5
  133. package/dist/packages/realtime-protocol/src/voice.js +9 -3
  134. package/dist/src/agent/agent-manager.js +22 -26
  135. package/dist/src/agent/coding/repository-instructions.js +8 -1
  136. package/dist/src/agent/embedded/codemode-extension.d.ts +7 -0
  137. package/dist/src/agent/embedded/codemode-extension.js +232 -0
  138. package/dist/src/agent/embedded/codemode-output.d.ts +2 -0
  139. package/dist/src/agent/embedded/codemode-output.js +34 -0
  140. package/dist/src/agent/embedded/external-tool-discovery.d.ts +6 -0
  141. package/dist/src/agent/embedded/external-tool-discovery.js +60 -0
  142. package/dist/src/agent/embedded/model-runtime.js +5 -2
  143. package/dist/src/agent/embedded/run-for-session.js +10 -1
  144. package/dist/src/agent/embedded/run-turn.js +10 -3
  145. package/dist/src/agent/embedded/session-runner.d.ts +9 -1
  146. package/dist/src/agent/embedded/session-runner.js +111 -23
  147. package/dist/src/agent/embedded/session-tool-result-guard.d.ts +2 -0
  148. package/dist/src/agent/embedded/session-tool-result-guard.js +17 -0
  149. package/dist/src/agent/embedded/subscribe-session.js +14 -4
  150. package/dist/src/agent/embedded/tool-metadata.d.ts +15 -0
  151. package/dist/src/agent/embedded/tool-metadata.js +38 -0
  152. package/dist/src/agent/embedded/tool-search-extension.d.ts +5 -0
  153. package/dist/src/agent/embedded/tool-search-extension.js +31 -0
  154. package/dist/src/agent/embedded/types.d.ts +7 -0
  155. package/dist/src/agent/embedded/xopc-tools-bridge.js +6 -0
  156. package/dist/src/agent/external-tools/endpoint-provider.d.ts +1 -1
  157. package/dist/src/agent/external-tools/endpoint-provider.js +148 -56
  158. package/dist/src/agent/external-tools/extension-provider.js +8 -1
  159. package/dist/src/agent/external-tools/gateway-tools.d.ts +1 -1
  160. package/dist/src/agent/external-tools/gateway-tools.js +45 -22
  161. package/dist/src/agent/external-tools/index.js +46 -14
  162. package/dist/src/agent/external-tools/memory-provider.js +8 -1
  163. package/dist/src/agent/external-tools/read-policy.js +2 -1
  164. package/dist/src/agent/external-tools/service.d.ts +2 -0
  165. package/dist/src/agent/external-tools/service.js +25 -3
  166. package/dist/src/agent/external-tools/tool-registry.d.ts +14 -0
  167. package/dist/src/agent/external-tools/tool-registry.js +14 -0
  168. package/dist/src/agent/external-tools/types.d.ts +8 -1
  169. package/dist/src/agent/external-tools/types.js +0 -1
  170. package/dist/src/agent/mcp/config.d.ts +18 -0
  171. package/dist/src/agent/mcp/{bundle-mcp-config.js → config.js} +8 -25
  172. package/dist/src/agent/mcp/native-mcp.d.ts +6 -0
  173. package/dist/src/agent/mcp/native-mcp.js +73 -0
  174. package/dist/src/agent/service.js +2 -5
  175. package/dist/src/agent/skills/installer.js +1 -1
  176. package/dist/src/agent/skills/skill-manager.js +1 -1
  177. package/dist/src/agent/skills/skill-sources.js +1 -1
  178. package/dist/src/agent/source-context/index.d.ts +0 -1
  179. package/dist/src/agent/source-context/index.js +1 -2
  180. package/dist/src/agent/source-context/injector.js +1 -0
  181. package/dist/src/agent/source-context/types.d.ts +2 -2
  182. package/dist/src/agent/source-context/types.js +1 -1
  183. package/dist/src/agent/tool-manuals/browser.d.ts +1 -1
  184. package/dist/src/agent/tool-manuals/browser.js +3 -3
  185. package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -1
  186. package/dist/src/agent/tools/browser/tool/schemas.d.ts +0 -13
  187. package/dist/src/agent/tools/browser/tool/schemas.js +0 -4
  188. package/dist/src/agent/tools/browser-automation-tool.d.ts +74 -1
  189. package/dist/src/agent/tools/browser-automation-tool.js +52 -6
  190. package/dist/src/agent/tools/cli-clarify.js +1 -1
  191. package/dist/src/agent/tools/codemode-permissions.d.ts +4 -0
  192. package/dist/src/agent/tools/codemode-permissions.js +23 -0
  193. package/dist/src/agent/tools/dataBatch.js +3 -1
  194. package/dist/src/agent/tools/delegation-parent-policy.js +1 -4
  195. package/dist/src/agent/tools/factory.js +4 -3
  196. package/dist/src/agent/transcript/provider-capabilities.js +0 -1
  197. package/dist/src/agent/transcript/transcript-policy.js +1 -2
  198. package/dist/src/agent-config/schema.d.ts +28 -0
  199. package/dist/src/agent-config/schema.js +7 -0
  200. package/dist/src/auth/credentials.js +7 -20
  201. package/dist/src/auth/model-credential-store.js +11 -4
  202. package/dist/src/auth/oauth/index.d.ts +1 -1
  203. package/dist/src/auth/oauth/index.js +3 -3
  204. package/dist/src/auth/oauth/openai.d.ts +2 -0
  205. package/dist/src/auth/oauth/openai.js +90 -0
  206. package/dist/src/auth/oauth/registry.js +3 -3
  207. package/dist/src/auth/oauth/types.d.ts +1 -0
  208. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  209. package/dist/src/auth/sync-provider-auth.js +5 -0
  210. package/dist/src/automations/capabilities/write.d.ts +2 -0
  211. package/dist/src/automations/domain/types.d.ts +11 -0
  212. package/dist/src/automations/domain/validation.d.ts +4 -0
  213. package/dist/src/automations/domain/validation.js +1 -0
  214. package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -0
  215. package/dist/src/automations/service/action-executor.js +11 -3
  216. package/dist/src/automations/service/automation-service.d.ts +1 -0
  217. package/dist/src/automations/service/automation-service.js +13 -1
  218. package/dist/src/bootstrap/application-state.js +1 -1
  219. package/dist/src/browser/automations/repository.d.ts +4 -0
  220. package/dist/src/browser/automations/repository.js +27 -6
  221. package/dist/src/browser/automations/runner.js +101 -9
  222. package/dist/src/browser/automations/runtime-service.js +4 -3
  223. package/dist/src/browser/automations/schema.d.ts +84 -1
  224. package/dist/src/browser/automations/schema.js +68 -2
  225. package/dist/src/browser/automations/service.d.ts +78 -1
  226. package/dist/src/browser/automations/service.js +36 -4
  227. package/dist/src/browser/automations/types.d.ts +19 -4
  228. package/dist/src/browser/drivers/extension-driver.d.ts +5 -5
  229. package/dist/src/browser/drivers/extension-driver.js +10 -10
  230. package/dist/src/browser/drivers/playwright-driver.js +46 -0
  231. package/dist/src/browser/index.d.ts +1 -2
  232. package/dist/src/browser/index.js +2 -3
  233. package/dist/src/browser/policy/browser-policy.d.ts +0 -1
  234. package/dist/src/browser/policy/browser-policy.js +1 -4
  235. package/dist/src/browser/providers/index.d.ts +1 -1
  236. package/dist/src/browser/providers/index.js +2 -2
  237. package/dist/src/browser/providers/realtime-extension.d.ts +1 -1
  238. package/dist/src/browser/providers/realtime-extension.js +5 -1
  239. package/dist/src/browser/recordings/service.d.ts +22 -0
  240. package/dist/src/browser/recordings/service.js +160 -0
  241. package/dist/src/browser/runtime/browser-runtime.d.ts +1 -1
  242. package/dist/src/browser/runtime/browser-runtime.js +19 -56
  243. package/dist/src/chat-commands/builtins/model.js +2 -2
  244. package/dist/src/cli/command-manifest.js +1 -1
  245. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  246. package/dist/src/cli/commands/extension-agent-plugin.js +0 -19
  247. package/dist/src/cli/commands/mcp.js +36 -2
  248. package/dist/src/cli/commands/models.js +1 -1
  249. package/dist/src/cli/utils/oauth-login.js +2 -2
  250. package/dist/src/computer/runtime.js +2 -2
  251. package/dist/src/config/index.js +3 -3
  252. package/dist/src/config/mcp-config-normalize.d.ts +0 -3
  253. package/dist/src/config/mcp-config-normalize.js +2 -22
  254. package/dist/src/config/models-json.d.ts +0 -5
  255. package/dist/src/config/models-json.js +13 -4
  256. package/dist/src/config/paths.d.ts +0 -1
  257. package/dist/src/config/paths.js +1 -4
  258. package/dist/src/config/schema.d.ts +142 -48
  259. package/dist/src/config/schema.js +64 -47
  260. package/dist/src/connectors/auth-provider-registry.d.ts +1 -1
  261. package/dist/src/connectors/auth-provider-registry.js +1 -21
  262. package/dist/src/connectors/china-catalog.js +5 -5
  263. package/dist/src/connectors/connection-recovery-service.d.ts +1 -6
  264. package/dist/src/connectors/connection-recovery-service.js +3 -105
  265. package/dist/src/connectors/health.d.ts +1 -2
  266. package/dist/src/connectors/health.js +2 -101
  267. package/dist/src/connectors/types.d.ts +1 -1
  268. package/dist/src/endpoint-tools/binding-service.d.ts +2 -0
  269. package/dist/src/endpoint-tools/binding-service.js +14 -2
  270. package/dist/src/endpoint-tools/bridge-host.d.ts +15 -0
  271. package/dist/src/endpoint-tools/bridge-host.js +166 -0
  272. package/dist/src/endpoint-tools/bridge.d.ts +27 -0
  273. package/dist/src/endpoint-tools/bridge.js +88 -0
  274. package/dist/src/endpoint-tools/capability-catalog.d.ts +2 -0
  275. package/dist/src/endpoint-tools/capability-catalog.js +8 -0
  276. package/dist/src/endpoint-tools/grant-service.d.ts +69 -0
  277. package/dist/src/endpoint-tools/grant-service.js +113 -0
  278. package/dist/src/endpoint-tools/index.js +1 -1
  279. package/dist/src/endpoint-tools/invocation-service.js +6 -2
  280. package/dist/src/endpoint-tools/location-task.d.ts +22 -0
  281. package/dist/src/endpoint-tools/location-task.js +114 -0
  282. package/dist/src/endpoint-tools/policy.js +20 -4
  283. package/dist/src/endpoint-tools/registry.d.ts +2 -0
  284. package/dist/src/endpoint-tools/registry.js +9 -0
  285. package/dist/src/endpoint-tools/result-projector.d.ts +15 -0
  286. package/dist/src/endpoint-tools/result-projector.js +31 -0
  287. package/dist/src/endpoint-tools/runtime.d.ts +2 -0
  288. package/dist/src/endpoint-tools/runtime.js +15 -2
  289. package/dist/src/endpoint-tools/target-resolver.d.ts +12 -0
  290. package/dist/src/endpoint-tools/target-resolver.js +27 -0
  291. package/dist/src/endpoint-tools/turn-context.d.ts +6 -0
  292. package/dist/src/endpoint-tools/turn-context.js +29 -0
  293. package/dist/src/extensions/agent-plugins/auth.d.ts +0 -2
  294. package/dist/src/extensions/agent-plugins/auth.js +2 -19
  295. package/dist/src/extensions/agent-plugins/credentials.js +3 -19
  296. package/dist/src/extensions/agent-plugins/inventory.d.ts +2 -2
  297. package/dist/src/extensions/agent-plugins/mcp-adapter.js +1 -5
  298. package/dist/src/extensions/agent-plugins/source-http-fetch.d.ts +2 -0
  299. package/dist/src/{agent/mcp/plugin-http-fetch.js → extensions/agent-plugins/source-http-fetch.js} +7 -7
  300. package/dist/src/extensions/agent-plugins/sources.js +2 -2
  301. package/dist/src/extensions/agent-plugins/store.js +1 -3
  302. package/dist/src/extensions/agent-plugins/validation.d.ts +0 -4
  303. package/dist/src/extensions/agent-plugins/validation.js +13 -20
  304. package/dist/src/gateway/agents-admin.d.ts +5 -0
  305. package/dist/src/gateway/agents-admin.js +56 -1
  306. package/dist/src/gateway/chat-stream/mapper.js +9 -0
  307. package/dist/src/gateway/chat-stream/protocol.d.ts +4 -4
  308. package/dist/src/gateway/hono/lib/config-payload.d.ts +9 -4
  309. package/dist/src/gateway/hono/lib/config-payload.js +2 -5
  310. package/dist/src/gateway/hono/oauth-async.js +9 -2
  311. package/dist/src/gateway/hono/routes/agent-plugins.js +4 -9
  312. package/dist/src/gateway/hono/routes/agents.js +4 -3
  313. package/dist/src/gateway/hono/routes/browser-automations.js +23 -7
  314. package/dist/src/gateway/hono/routes/browser-recordings.d.ts +3 -0
  315. package/dist/src/gateway/hono/routes/browser-recordings.js +78 -0
  316. package/dist/src/gateway/hono/routes/browser.js +1 -34
  317. package/dist/src/gateway/hono/routes/connection-waits.js +2 -5
  318. package/dist/src/gateway/hono/routes/connectors.js +5 -60
  319. package/dist/src/gateway/hono/routes/device-authorizations.d.ts +3 -0
  320. package/dist/src/gateway/hono/routes/device-authorizations.js +74 -0
  321. package/dist/src/gateway/hono/routes/device-push.js +1 -0
  322. package/dist/src/gateway/hono/routes/endpoint-compatibility.js +7 -0
  323. package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +1 -0
  324. package/dist/src/gateway/hono/routes/endpoint-tools.js +53 -3
  325. package/dist/src/gateway/hono/routes/home.js +1 -1
  326. package/dist/src/gateway/hono/routes/lazy-bundles.js +25 -1
  327. package/dist/src/gateway/hono/routes/mcp.d.ts +1 -1
  328. package/dist/src/gateway/hono/routes/mcp.js +11 -237
  329. package/dist/src/gateway/hono/routes/personal-agent.js +35 -0
  330. package/dist/src/gateway/hono/routes/session-command-handler.js +11 -1
  331. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +8 -2
  332. package/dist/src/gateway/hono/routes/session-input-handler.js +25 -1
  333. package/dist/src/gateway/hono/routes/voice.js +5 -2
  334. package/dist/src/gateway/security/gateway-scopes.js +3 -1
  335. package/dist/src/gateway/service/agent-runner.js +1 -0
  336. package/dist/src/gateway/service/config-coordinator.js +2 -5
  337. package/dist/src/gateway/service/marketplace-service.js +2 -2
  338. package/dist/src/gateway/service/run-gateway-agent.js +13 -5
  339. package/dist/src/gateway/service/session-input-coordinator.d.ts +1 -1
  340. package/dist/src/gateway/service/session-input-coordinator.js +29 -9
  341. package/dist/src/gateway/service/sessions-api.js +0 -6
  342. package/dist/src/gateway/service.js +3 -12
  343. package/dist/src/gateway/session-reset-service.js +0 -6
  344. package/dist/src/home-intelligence/generator.d.ts +2 -0
  345. package/dist/src/home-intelligence/generator.js +53 -4
  346. package/dist/src/home-intelligence/host.d.ts +2 -1
  347. package/dist/src/home-intelligence/host.js +23 -3
  348. package/dist/src/imports/compatibility.js +12 -10
  349. package/dist/src/mcp/channel-bridge.js +1 -1
  350. package/dist/src/migrations/cloud-public-models.js +1 -0
  351. package/dist/src/notifications/clarification.d.ts +5 -0
  352. package/dist/src/notifications/clarification.js +66 -0
  353. package/dist/src/notifications/device-store.js +1 -0
  354. package/dist/src/notifications/harmony-push.d.ts +1 -0
  355. package/dist/src/notifications/harmony-push.js +3 -1
  356. package/dist/src/notifications/planner.d.ts +1 -0
  357. package/dist/src/notifications/service.d.ts +2 -2
  358. package/dist/src/notifications/service.js +20 -4
  359. package/dist/src/notifications/store.d.ts +2 -0
  360. package/dist/src/notifications/store.js +7 -1
  361. package/dist/src/notifications/types.d.ts +1 -0
  362. package/dist/src/notifications/types.js +1 -0
  363. package/dist/src/providers/env-keys.js +1 -1
  364. package/dist/src/providers/index.js +26 -24
  365. package/dist/src/providers/model-call.d.ts +0 -2
  366. package/dist/src/providers/model-call.js +2 -6
  367. package/dist/src/providers/model-registry.js +4 -2
  368. package/dist/src/providers/model-supplements.d.ts +3 -3
  369. package/dist/src/providers/model-supplements.js +6 -27
  370. package/dist/src/providers/presentation.js +3 -8
  371. package/dist/src/providers/prompt-cache-plan.js +1 -1
  372. package/dist/src/providers/provider-auth-service.d.ts +1 -1
  373. package/dist/src/providers/provider-auth-service.js +7 -2
  374. package/dist/src/providers/provider-policy.d.ts +3 -0
  375. package/dist/src/providers/provider-policy.js +14 -0
  376. package/dist/src/providers/register-runtime-providers.js +6 -1
  377. package/dist/src/realtime/runtime.js +1 -1
  378. package/dist/src/session/store.js +7 -1
  379. package/dist/src/session/transcript-events.d.ts +5 -0
  380. package/dist/src/session/transcript-events.js +1 -0
  381. package/dist/src/session/types.d.ts +2 -0
  382. package/dist/src/storage/sqlite/clarification-wait-repository.js +1 -0
  383. package/dist/src/storage/sqlite/device-grant-audit-repository.d.ts +11 -0
  384. package/dist/src/storage/sqlite/device-grant-audit-repository.js +10 -0
  385. package/dist/src/storage/sqlite/endpoint-device-settings-repository.d.ts +7 -0
  386. package/dist/src/storage/sqlite/endpoint-device-settings-repository.js +17 -0
  387. package/dist/src/storage/sqlite/migrations/238_browser_record_replay.sql +45 -0
  388. package/dist/src/storage/sqlite/migrations/239_clarification_notifications.sql +26 -0
  389. package/dist/src/storage/sqlite/migrations/240_device_settings.sql +5 -0
  390. package/dist/src/storage/sqlite/migrations/241_device_grant_audit.sql +13 -0
  391. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  392. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  393. package/dist/src/storage/sqlite/schema.js +1 -1
  394. package/dist/src/storage/sqlite/session-input-repository.d.ts +1 -0
  395. package/dist/src/storage/sqlite/session-input-repository.js +5 -1
  396. package/dist/src/tasks/home-query-service.d.ts +1 -1
  397. package/dist/src/tasks/home-query-service.js +6 -2
  398. package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
  399. package/dist/src/tui/xopc-tui-keybindings.d.ts +4 -4
  400. package/dist/src/voice/dashscope/streaming-tts-stream.d.ts +2 -1
  401. package/dist/src/voice/dashscope/streaming-tts-stream.js +135 -79
  402. package/dist/src/voice/realtime/agentEngine.js +78 -1
  403. package/dist/src/voice/realtime/speakable-segmenter.d.ts +2 -0
  404. package/dist/src/voice/realtime/speakable-segmenter.js +30 -0
  405. package/dist/src/voice/tts/providers/alibaba-speech.js +17 -1
  406. package/dist/src/voice/tts/speak-core.d.ts +3 -0
  407. package/dist/src/voice/tts/speak-core.js +21 -1
  408. package/dist/src/voice/tts/speech-provider-types.d.ts +8 -0
  409. package/package.json +18 -7
  410. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D0tD3kCe.js +0 -1
  411. package/dist/gateway/static/root/assets/agent-plugin-dialog-BjdgKCnk.js +0 -1
  412. package/dist/gateway/static/root/assets/agents-CWXKzX5L.js +0 -66
  413. package/dist/gateway/static/root/assets/automations-workspace-C9ZT6TAU.js +0 -6
  414. package/dist/gateway/static/root/assets/browser-automation-inputs-CXG_JveC.js +0 -1
  415. package/dist/gateway/static/root/assets/browser-automations-page-CJc7OKR3.js +0 -3
  416. package/dist/gateway/static/root/assets/browser-settings-page-BjaTEUR8.js +0 -3
  417. package/dist/gateway/static/root/assets/capabilities-page-djBsC_tG.js +0 -2
  418. package/dist/gateway/static/root/assets/channels-BaYRJtz3.js +0 -1
  419. package/dist/gateway/static/root/assets/connectors-page-DyqRwSH2.js +0 -2
  420. package/dist/gateway/static/root/assets/copy-text-row-BHDs3cBa.js +0 -1
  421. package/dist/gateway/static/root/assets/dependency-picker-CWbbhKZa.js +0 -1
  422. package/dist/gateway/static/root/assets/dist-Che_jiQF.js +0 -1
  423. package/dist/gateway/static/root/assets/gateway-realtime-C4KtwMY3.js +0 -1
  424. package/dist/gateway/static/root/assets/gateway-realtime-store-ChZUzVbe.js +0 -1
  425. package/dist/gateway/static/root/assets/home-page-DhPPLbdD.js +0 -2
  426. package/dist/gateway/static/root/assets/index-CK4O2xMa.css +0 -1
  427. package/dist/gateway/static/root/assets/index-DpLD-7Hc.js +0 -106
  428. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  429. package/dist/gateway/static/root/assets/local-session-drafts-B_McurIj.js +0 -1
  430. package/dist/gateway/static/root/assets/logs-page-BWD63eg1.js +0 -2
  431. package/dist/gateway/static/root/assets/management-settings-aKSibklM.js +0 -1
  432. package/dist/gateway/static/root/assets/messages-Bnx3GMDB.js +0 -3
  433. package/dist/gateway/static/root/assets/models-hub-cache-Di83uIPw.js +0 -1
  434. package/dist/gateway/static/root/assets/note-detail-panel-B_fve3_2.js +0 -5
  435. package/dist/gateway/static/root/assets/notes-page-DnChyp8S.js +0 -8
  436. package/dist/gateway/static/root/assets/personal-page-BM2qAgg_.js +0 -1
  437. package/dist/gateway/static/root/assets/project-detail-page-DM4_VLNX.js +0 -1
  438. package/dist/gateway/static/root/assets/remote-access-hub-O6j9CWX0.js +0 -1
  439. package/dist/gateway/static/root/assets/session-manager-B0tOE4qz.js +0 -16
  440. package/dist/gateway/static/root/assets/sessions-page-BIixHXlQ.js +0 -1
  441. package/dist/gateway/static/root/assets/settings-advanced-gate-49SUEWPh.js +0 -1
  442. package/dist/gateway/static/root/assets/setup-status-panel-Ce3gTbT3.js +0 -1
  443. package/dist/gateway/static/root/assets/shares-settings-CNEZjF66.js +0 -1
  444. package/dist/gateway/static/root/assets/skills-page-BndNdYsJ.js +0 -2
  445. package/dist/gateway/static/root/assets/system-settings-panel-EpZeMlvp.js +0 -1
  446. package/dist/gateway/static/root/assets/use-file-preview-expanded-DJ5vyrvM.js +0 -2
  447. package/dist/gateway/static/root/assets/user-model-page-Bz5lkFG9.js +0 -2
  448. package/dist/gateway/static/root/assets/workflows-page-CPCgOfHh.js +0 -6
  449. package/dist/src/agent/embedded/system-prompt-override.d.ts +0 -2
  450. package/dist/src/agent/embedded/system-prompt-override.js +0 -21
  451. package/dist/src/agent/external-tools/mcp-provider.d.ts +0 -32
  452. package/dist/src/agent/external-tools/mcp-provider.js +0 -208
  453. package/dist/src/agent/mcp/bundle-mcp-config.d.ts +0 -20
  454. package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +0 -79
  455. package/dist/src/agent/mcp/bundle-mcp-gateway.js +0 -93
  456. package/dist/src/agent/mcp/bundle-mcp-names.d.ts +0 -1
  457. package/dist/src/agent/mcp/bundle-mcp-names.js +0 -25
  458. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -1
  459. package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -6
  460. package/dist/src/agent/mcp/bundle-mcp-runtime.d.ts +0 -46
  461. package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -571
  462. package/dist/src/agent/mcp/bundle-mcp-tools.d.ts +0 -2
  463. package/dist/src/agent/mcp/bundle-mcp-tools.js +0 -2
  464. package/dist/src/agent/mcp/bundle-mcp-types.d.ts +0 -76
  465. package/dist/src/agent/mcp/bundle-mcp-types.js +0 -1
  466. package/dist/src/agent/mcp/embedded-mcp.d.ts +0 -10
  467. package/dist/src/agent/mcp/embedded-mcp.js +0 -14
  468. package/dist/src/agent/mcp/index.d.ts +0 -5
  469. package/dist/src/agent/mcp/index.js +0 -12
  470. package/dist/src/agent/mcp/mcp-config-shared.d.ts +0 -8
  471. package/dist/src/agent/mcp/mcp-config-shared.js +0 -39
  472. package/dist/src/agent/mcp/mcp-http.d.ts +0 -23
  473. package/dist/src/agent/mcp/mcp-http.js +0 -67
  474. package/dist/src/agent/mcp/mcp-resource-id.d.ts +0 -6
  475. package/dist/src/agent/mcp/mcp-resource-id.js +0 -19
  476. package/dist/src/agent/mcp/mcp-stdio-transport.d.ts +0 -26
  477. package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -120
  478. package/dist/src/agent/mcp/mcp-stdio.d.ts +0 -18
  479. package/dist/src/agent/mcp/mcp-stdio.js +0 -35
  480. package/dist/src/agent/mcp/mcp-transport-config.d.ts +0 -28
  481. package/dist/src/agent/mcp/mcp-transport-config.js +0 -91
  482. package/dist/src/agent/mcp/mcp-transport.d.ts +0 -17
  483. package/dist/src/agent/mcp/mcp-transport.js +0 -141
  484. package/dist/src/agent/mcp/oauth/index.d.ts +0 -6
  485. package/dist/src/agent/mcp/oauth/index.js +0 -6
  486. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.d.ts +0 -5
  487. package/dist/src/agent/mcp/oauth/mcp-oauth-errors.js +0 -14
  488. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +0 -30
  489. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +0 -276
  490. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.d.ts +0 -33
  491. package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +0 -103
  492. package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +0 -31
  493. package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +0 -181
  494. package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +0 -12
  495. package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +0 -91
  496. package/dist/src/agent/mcp/oauth/mcp-oauth-types.d.ts +0 -22
  497. package/dist/src/agent/mcp/oauth/mcp-oauth-types.js +0 -1
  498. package/dist/src/agent/mcp/plugin-http-fetch.d.ts +0 -2
  499. package/dist/src/agent/source-context/mcp-resource-context.d.ts +0 -8
  500. package/dist/src/agent/source-context/mcp-resource-context.js +0 -30
  501. package/dist/src/auth/oauth/openai-codex.d.ts +0 -9
  502. package/dist/src/auth/oauth/openai-codex.js +0 -414
  503. package/dist/src/browser/policy/approval-store.d.ts +0 -17
  504. package/dist/src/browser/policy/approval-store.js +0 -62
  505. package/dist/src/browser/providers/extension-ws-acquire.d.ts +0 -19
  506. package/dist/src/browser/providers/extension-ws-acquire.js +0 -78
  507. package/dist/src/browser/providers/extension.d.ts +0 -61
  508. package/dist/src/browser/providers/extension.js +0 -378
  509. package/dist/src/connectors/plugin-mcp-recovery.d.ts +0 -28
  510. package/dist/src/connectors/plugin-mcp-recovery.js +0 -90
  511. package/dist/src/extensions/agent-plugins/connection.d.ts +0 -8
  512. package/dist/src/extensions/agent-plugins/connection.js +0 -41
  513. package/dist/src/extensions/agent-plugins/health.d.ts +0 -4
  514. package/dist/src/extensions/agent-plugins/health.js +0 -48
  515. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +0 -1
  516. package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +0 -8
@@ -1,12 +0,0 @@
1
- import { mcpToolPolicyId } from "./bundle-mcp-policy.js";
2
- import { loadMergedBundleMcpConfig } from "./bundle-mcp-config.js";
3
- import { loadEmbeddedMcpConfig } from "./embedded-mcp.js";
4
- import { McpAuthorizationRequiredError, isMcpAuthorizationError } from "./oauth/mcp-oauth-errors.js";
5
- import { McpOAuthStore, canonicalMcpServerUrl, mcpOAuthServerKey } from "./oauth/mcp-oauth-store.js";
6
- import { XopcMcpOAuthClientProvider } from "./oauth/mcp-oauth-provider.js";
7
- import { __testing, createSessionMcpRuntime, disposeAllSessionMcpRuntimes, disposeSessionMcpRuntime, getOrCreateSessionMcpRuntime, getSessionMcpRuntimeManager, retireSessionMcpRuntime, retireSessionMcpRuntimeForConversationId } from "./bundle-mcp-runtime.js";
8
- import "./bundle-mcp-tools.js";
9
- import { McpOAuthSession } from "./oauth/mcp-oauth-session.js";
10
- import { McpOAuthManager, getMcpOAuthManager } from "./oauth/mcp-oauth-manager.js";
11
- import "./oauth/index.js";
12
- export { McpAuthorizationRequiredError, McpOAuthManager, McpOAuthSession, McpOAuthStore, XopcMcpOAuthClientProvider, __testing, canonicalMcpServerUrl, createSessionMcpRuntime, disposeAllSessionMcpRuntimes, disposeSessionMcpRuntime, getMcpOAuthManager, getOrCreateSessionMcpRuntime, getSessionMcpRuntimeManager, isMcpAuthorizationError, loadEmbeddedMcpConfig, loadMergedBundleMcpConfig, mcpOAuthServerKey, mcpToolPolicyId, retireSessionMcpRuntime, retireSessionMcpRuntimeForConversationId };
@@ -1,8 +0,0 @@
1
- export declare function isMcpConfigRecord(value: unknown): value is Record<string, unknown>;
2
- export declare function toMcpStringRecord(value: unknown, options?: {
3
- onDroppedEntry?: (key: string, value: unknown) => void;
4
- }): Record<string, string> | undefined;
5
- export declare function toMcpEnvRecord(value: unknown, options?: {
6
- onDroppedEntry?: (key: string, value: unknown) => void;
7
- }): Record<string, string> | undefined;
8
- export declare function toMcpStringArray(value: unknown): string[] | undefined;
@@ -1,39 +0,0 @@
1
- import { isDangerousHostEnvVarName } from "../../infra/host-env-security.js";
2
- //#region src/agent/mcp/mcp-config-shared.ts
3
- function isMcpConfigRecord(value) {
4
- return value !== null && typeof value === "object" && !Array.isArray(value);
5
- }
6
- function toMcpFilteredStringRecord(value, options) {
7
- if (!isMcpConfigRecord(value)) return;
8
- let droppedByKey = false;
9
- const entries = Object.entries(value).map(([key, entry]) => {
10
- if (options?.shouldDropKey?.(key)) {
11
- droppedByKey = true;
12
- options?.onDroppedEntry?.(key, entry);
13
- return null;
14
- }
15
- if (typeof entry === "string") return [key, entry];
16
- if (typeof entry === "number" || typeof entry === "boolean") return [key, String(entry)];
17
- options?.onDroppedEntry?.(key, entry);
18
- return null;
19
- }).filter((entry) => entry !== null);
20
- if (entries.length === 0 && droppedByKey && options?.preserveEmptyWhenKeysDropped) return {};
21
- return entries.length > 0 ? Object.fromEntries(entries) : void 0;
22
- }
23
- function toMcpStringRecord(value, options) {
24
- return toMcpFilteredStringRecord(value, options);
25
- }
26
- function toMcpEnvRecord(value, options) {
27
- return toMcpFilteredStringRecord(value, {
28
- ...options,
29
- preserveEmptyWhenKeysDropped: true,
30
- shouldDropKey: (key) => isDangerousHostEnvVarName(key)
31
- });
32
- }
33
- function toMcpStringArray(value) {
34
- if (!Array.isArray(value)) return;
35
- const entries = value.filter((entry) => typeof entry === "string");
36
- return entries.length > 0 ? entries : [];
37
- }
38
- //#endregion
39
- export { isMcpConfigRecord, toMcpEnvRecord, toMcpStringArray, toMcpStringRecord };
@@ -1,23 +0,0 @@
1
- export type HttpMcpTransportType = "sse" | "streamable-http";
2
- export type HttpMcpServerLaunchConfig = {
3
- transportType: HttpMcpTransportType;
4
- url: string;
5
- headers?: Record<string, string>;
6
- auth?: {
7
- type: "oauth";
8
- clientId?: string;
9
- };
10
- };
11
- export type HttpMcpServerLaunchResult = {
12
- ok: true;
13
- config: HttpMcpServerLaunchConfig;
14
- } | {
15
- ok: false;
16
- reason: string;
17
- };
18
- export declare function resolveHttpMcpServerLaunchConfig(raw: unknown, options?: {
19
- transportType?: HttpMcpTransportType;
20
- onDroppedHeader?: (key: string, value: unknown) => void;
21
- onMalformedHeaders?: (value: unknown) => void;
22
- }): HttpMcpServerLaunchResult;
23
- export declare function describeHttpMcpServerLaunchConfig(config: HttpMcpServerLaunchConfig): string;
@@ -1,67 +0,0 @@
1
- import { redactSensitiveUrl, redactSensitiveUrlLikeString } from "../../utils/redact-sensitive-url.js";
2
- import { isMcpConfigRecord, toMcpStringRecord } from "./mcp-config-shared.js";
3
- //#region src/agent/mcp/mcp-http.ts
4
- function resolveHttpMcpServerLaunchConfig(raw, options) {
5
- if (!isMcpConfigRecord(raw)) return {
6
- ok: false,
7
- reason: "server config must be an object"
8
- };
9
- if (typeof raw.url !== "string" || raw.url.trim().length === 0) return {
10
- ok: false,
11
- reason: "its url is missing"
12
- };
13
- const url = raw.url.trim();
14
- let parsed;
15
- try {
16
- parsed = new URL(url);
17
- } catch {
18
- return {
19
- ok: false,
20
- reason: `its url is not a valid URL: ${redactSensitiveUrlLikeString(url)}`
21
- };
22
- }
23
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") return {
24
- ok: false,
25
- reason: `only http and https URLs are supported, got ${parsed.protocol}`
26
- };
27
- let headers;
28
- if (raw.headers !== void 0 && raw.headers !== null) if (!isMcpConfigRecord(raw.headers)) options?.onMalformedHeaders?.(raw.headers);
29
- else headers = toMcpStringRecord(raw.headers, { onDroppedEntry: options?.onDroppedHeader });
30
- let auth;
31
- if (raw.auth !== void 0) {
32
- if (!isMcpConfigRecord(raw.auth) || raw.auth.type !== "oauth") return {
33
- ok: false,
34
- reason: "its auth must be { \"type\": \"oauth\" }"
35
- };
36
- if (raw.auth.clientId !== void 0 && (typeof raw.auth.clientId !== "string" || !raw.auth.clientId.trim())) return {
37
- ok: false,
38
- reason: "its OAuth clientId must be a non-empty string"
39
- };
40
- if ((options?.transportType ?? "streamable-http") !== "streamable-http") return {
41
- ok: false,
42
- reason: "OAuth supports streamable HTTP only"
43
- };
44
- if (headers && Object.keys(headers).some((key) => key.toLowerCase() === "authorization")) return {
45
- ok: false,
46
- reason: "OAuth cannot be combined with a static Authorization header"
47
- };
48
- auth = {
49
- type: "oauth",
50
- ...typeof raw.auth.clientId === "string" ? { clientId: raw.auth.clientId.trim() } : {}
51
- };
52
- }
53
- return {
54
- ok: true,
55
- config: {
56
- transportType: options?.transportType ?? "streamable-http",
57
- url,
58
- headers,
59
- auth
60
- }
61
- };
62
- }
63
- function describeHttpMcpServerLaunchConfig(config) {
64
- return redactSensitiveUrl(config.url);
65
- }
66
- //#endregion
67
- export { describeHttpMcpServerLaunchConfig, resolveHttpMcpServerLaunchConfig };
@@ -1,6 +0,0 @@
1
- export interface McpResourceIdentity {
2
- serverId: string;
3
- uri: string;
4
- }
5
- export declare function encodeMcpResourceId(identity: McpResourceIdentity): string;
6
- export declare function decodeMcpResourceId(sourceId: string): McpResourceIdentity | null;
@@ -1,19 +0,0 @@
1
- //#region src/agent/mcp/mcp-resource-id.ts
2
- function encodeMcpResourceId(identity) {
3
- return Buffer.from(JSON.stringify(identity), "utf8").toString("base64url");
4
- }
5
- function decodeMcpResourceId(sourceId) {
6
- try {
7
- const value = JSON.parse(Buffer.from(sourceId, "base64url").toString("utf8"));
8
- if (typeof value.serverId !== "string" || !value.serverId.trim()) return null;
9
- if (typeof value.uri !== "string" || !value.uri.trim()) return null;
10
- return {
11
- serverId: value.serverId,
12
- uri: value.uri
13
- };
14
- } catch {
15
- return null;
16
- }
17
- }
18
- //#endregion
19
- export { decodeMcpResourceId, encodeMcpResourceId };
@@ -1,26 +0,0 @@
1
- import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
2
- import type { JSONRPCMessage } from "@modelcontextprotocol/sdk/types.js";
3
- export type XopcStdioServerParameters = {
4
- command: string;
5
- args?: string[];
6
- env?: Record<string, string>;
7
- cwd?: string;
8
- stderr?: "pipe" | "overlapped" | "inherit" | "ignore";
9
- pluginDataDir?: string;
10
- };
11
- export declare class XopcStdioClientTransport implements Transport {
12
- private readonly serverParams;
13
- onclose?: () => void;
14
- onerror?: (error: Error) => void;
15
- onmessage?: (message: JSONRPCMessage) => void;
16
- private readonly readBuffer;
17
- private readonly stderrStream;
18
- private process?;
19
- constructor(serverParams: XopcStdioServerParameters);
20
- start(): Promise<void>;
21
- get stderr(): import("node:stream").Readable;
22
- get pid(): number;
23
- private processReadBuffer;
24
- close(): Promise<void>;
25
- send(message: JSONRPCMessage): Promise<void>;
26
- }
@@ -1,120 +0,0 @@
1
- import { terminateProcess } from "../../process/kill-tree.js";
2
- import { containedPath } from "../../extensions/agent-plugins/validation.js";
3
- import { spawn } from "node:child_process";
4
- import { mkdir } from "node:fs/promises";
5
- import { getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
6
- import process from "node:process";
7
- import { PassThrough } from "node:stream";
8
- import { ReadBuffer, serializeMessage } from "@modelcontextprotocol/sdk/shared/stdio.js";
9
- //#region src/agent/mcp/mcp-stdio-transport.ts
10
- const CLOSE_TIMEOUT_MS = 2e3;
11
- function delay(ms) {
12
- return new Promise((resolve) => {
13
- setTimeout(resolve, ms).unref();
14
- });
15
- }
16
- var XopcStdioClientTransport = class {
17
- onclose;
18
- onerror;
19
- onmessage;
20
- readBuffer = new ReadBuffer();
21
- stderrStream = null;
22
- process;
23
- constructor(serverParams) {
24
- this.serverParams = serverParams;
25
- if (serverParams.stderr === "pipe" || serverParams.stderr === "overlapped") this.stderrStream = new PassThrough();
26
- }
27
- async start() {
28
- if (this.process) throw new Error("XopcStdioClientTransport already started; Client.connect() starts transports automatically.");
29
- if (this.serverParams.pluginDataDir) {
30
- const data = this.serverParams.pluginDataDir;
31
- await mkdir(data, {
32
- recursive: true,
33
- mode: 448
34
- });
35
- if (this.serverParams.cwd) containedPath(this.serverParams.cwd.startsWith(data) ? data : this.serverParams.env?.PLUGIN_ROOT ?? data, this.serverParams.cwd);
36
- }
37
- await new Promise((resolve, reject) => {
38
- const baseEnv = {
39
- ...getDefaultEnvironment(),
40
- ...this.serverParams.env
41
- };
42
- const child = spawn(this.serverParams.command, this.serverParams.args ?? [], {
43
- cwd: this.serverParams.cwd,
44
- detached: process.platform !== "win32",
45
- env: baseEnv,
46
- shell: false,
47
- stdio: [
48
- "pipe",
49
- "pipe",
50
- this.serverParams.stderr ?? "inherit"
51
- ],
52
- windowsHide: process.platform === "win32"
53
- });
54
- this.process = child;
55
- child.on("error", (error) => {
56
- reject(error);
57
- this.onerror?.(error);
58
- });
59
- child.on("spawn", () => resolve());
60
- child.on("close", () => {
61
- this.process = void 0;
62
- this.onclose?.();
63
- });
64
- child.stdin?.on("error", (error) => this.onerror?.(error));
65
- child.stdout?.on("data", (chunk) => {
66
- this.readBuffer.append(chunk);
67
- this.processReadBuffer();
68
- });
69
- child.stdout?.on("error", (error) => this.onerror?.(error));
70
- if (this.stderrStream && child.stderr) child.stderr.pipe(this.stderrStream);
71
- });
72
- }
73
- get stderr() {
74
- return this.stderrStream ?? this.process?.stderr ?? null;
75
- }
76
- get pid() {
77
- return this.process?.pid ?? null;
78
- }
79
- processReadBuffer() {
80
- while (true) try {
81
- const message = this.readBuffer.readMessage();
82
- if (message === null) break;
83
- this.onmessage?.(message);
84
- } catch (error) {
85
- this.onerror?.(error instanceof Error ? error : new Error(String(error)));
86
- }
87
- }
88
- async close() {
89
- const processToClose = this.process;
90
- this.process = void 0;
91
- if (processToClose) {
92
- const closePromise = new Promise((resolve) => {
93
- processToClose.once("close", () => resolve());
94
- });
95
- try {
96
- processToClose.stdin?.end();
97
- } catch {}
98
- await Promise.race([closePromise, delay(CLOSE_TIMEOUT_MS)]);
99
- if (processToClose.exitCode === null && processToClose.pid) {
100
- await terminateProcess(processToClose, {
101
- tree: true,
102
- detached: process.platform !== "win32"
103
- });
104
- await Promise.race([closePromise, delay(CLOSE_TIMEOUT_MS)]);
105
- }
106
- }
107
- this.readBuffer.clear();
108
- }
109
- send(message) {
110
- return new Promise((resolve) => {
111
- const stdin = this.process?.stdin;
112
- if (!stdin) throw new Error("Not connected");
113
- const json = serializeMessage(message);
114
- if (stdin.write(json)) resolve();
115
- else stdin.once("drain", resolve);
116
- });
117
- }
118
- };
119
- //#endregion
120
- export { XopcStdioClientTransport };
@@ -1,18 +0,0 @@
1
- type StdioMcpServerLaunchConfig = {
2
- command: string;
3
- args?: string[];
4
- env?: Record<string, string>;
5
- cwd?: string;
6
- };
7
- type StdioMcpServerLaunchResult = {
8
- ok: true;
9
- config: StdioMcpServerLaunchConfig;
10
- } | {
11
- ok: false;
12
- reason: string;
13
- };
14
- export declare function resolveStdioMcpServerLaunchConfig(raw: unknown, options?: {
15
- onDroppedEnv?: (key: string, value: unknown) => void;
16
- }): StdioMcpServerLaunchResult;
17
- export declare function describeStdioMcpServerLaunchConfig(config: StdioMcpServerLaunchConfig): string;
18
- export type { StdioMcpServerLaunchConfig, StdioMcpServerLaunchResult };
@@ -1,35 +0,0 @@
1
- import { isMcpConfigRecord, toMcpEnvRecord, toMcpStringArray } from "./mcp-config-shared.js";
2
- //#region src/agent/mcp/mcp-stdio.ts
3
- function resolveStdioMcpServerLaunchConfig(raw, options) {
4
- if (!isMcpConfigRecord(raw)) return {
5
- ok: false,
6
- reason: "server config must be an object"
7
- };
8
- if (typeof raw.command !== "string" || raw.command.trim().length === 0) {
9
- if (typeof raw.url === "string" && raw.url.trim().length > 0) return {
10
- ok: false,
11
- reason: "not a stdio server (has url)"
12
- };
13
- return {
14
- ok: false,
15
- reason: "its command is missing"
16
- };
17
- }
18
- const cwd = typeof raw.cwd === "string" && raw.cwd.trim().length > 0 ? raw.cwd : typeof raw.workingDirectory === "string" && raw.workingDirectory.trim().length > 0 ? raw.workingDirectory : void 0;
19
- return {
20
- ok: true,
21
- config: {
22
- command: raw.command,
23
- args: toMcpStringArray(raw.args),
24
- env: toMcpEnvRecord(raw.env, { onDroppedEntry: options?.onDroppedEnv }),
25
- cwd
26
- }
27
- };
28
- }
29
- function describeStdioMcpServerLaunchConfig(config) {
30
- const args = Array.isArray(config.args) && config.args.length > 0 ? ` ${config.args.join(" ")}` : "";
31
- const cwd = config.cwd ? ` (cwd=${config.cwd})` : "";
32
- return `${config.command}${args}${cwd}`;
33
- }
34
- //#endregion
35
- export { describeStdioMcpServerLaunchConfig, resolveStdioMcpServerLaunchConfig };
@@ -1,28 +0,0 @@
1
- import { type HttpMcpTransportType } from "./mcp-http.js";
2
- type ResolvedBaseMcpTransportConfig = {
3
- description: string;
4
- connectionTimeoutMs: number;
5
- requestTimeoutMs: number;
6
- };
7
- export type ResolvedStdioMcpTransportConfig = ResolvedBaseMcpTransportConfig & {
8
- kind: "stdio";
9
- transportType: "stdio";
10
- command: string;
11
- args?: string[];
12
- env?: Record<string, string>;
13
- cwd?: string;
14
- };
15
- export type ResolvedHttpMcpTransportConfig = ResolvedBaseMcpTransportConfig & {
16
- kind: "http";
17
- transportType: HttpMcpTransportType;
18
- url: string;
19
- headers?: Record<string, string>;
20
- auth?: {
21
- type: "oauth";
22
- clientId?: string;
23
- };
24
- };
25
- export type ResolvedMcpTransportConfig = ResolvedStdioMcpTransportConfig | ResolvedHttpMcpTransportConfig;
26
- export declare const DEFAULT_MCP_REQUEST_TIMEOUT_MS: number;
27
- export declare function resolveMcpTransportConfig(serverName: string, rawServer: unknown): ResolvedMcpTransportConfig | null;
28
- export {};
@@ -1,91 +0,0 @@
1
- import { createLogger } from "../../utils/logger/index.js";
2
- import { init_logger } from "../../utils/logger.js";
3
- import { init_string_coerce, normalizeLowercaseStringOrEmpty } from "../../utils/string-coerce.js";
4
- import { resolveXopcMcpTransportAlias } from "../../config/mcp-config-normalize.js";
5
- import { sanitizeForLog } from "../../utils/sanitize-log.js";
6
- import { describeHttpMcpServerLaunchConfig, resolveHttpMcpServerLaunchConfig } from "./mcp-http.js";
7
- import { describeStdioMcpServerLaunchConfig, resolveStdioMcpServerLaunchConfig } from "./mcp-stdio.js";
8
- //#region src/agent/mcp/mcp-transport-config.ts
9
- init_logger();
10
- init_string_coerce();
11
- const log = createLogger("Mcp:Bundle");
12
- const DEFAULT_CONNECTION_TIMEOUT_MS = 3e4;
13
- const DEFAULT_MCP_REQUEST_TIMEOUT_MS = 1800 * 1e3;
14
- function getConnectionTimeoutMs(rawServer) {
15
- if (rawServer && typeof rawServer === "object" && typeof rawServer.connectionTimeoutMs === "number" && rawServer.connectionTimeoutMs > 0) return rawServer.connectionTimeoutMs;
16
- return DEFAULT_CONNECTION_TIMEOUT_MS;
17
- }
18
- function getRequestTimeoutMs(rawServer) {
19
- if (rawServer && typeof rawServer === "object" && typeof rawServer.requestTimeoutMs === "number" && rawServer.requestTimeoutMs > 0) return rawServer.requestTimeoutMs;
20
- return DEFAULT_MCP_REQUEST_TIMEOUT_MS;
21
- }
22
- function getRequestedTransport(rawServer) {
23
- if (!rawServer || typeof rawServer !== "object" || typeof rawServer.transport !== "string") return "";
24
- return normalizeLowercaseStringOrEmpty(rawServer.transport);
25
- }
26
- function getRequestedTransportAlias(rawServer) {
27
- if (!rawServer || typeof rawServer !== "object" || typeof rawServer.type !== "string") return "";
28
- return resolveXopcMcpTransportAlias(rawServer.type) ?? "";
29
- }
30
- function resolveHttpTransportConfig(serverName, rawServer, transportType) {
31
- const launch = resolveHttpMcpServerLaunchConfig(rawServer, {
32
- transportType,
33
- onDroppedHeader: (key) => {
34
- log.warn({
35
- phase: "agent.mcp_connect",
36
- serverName,
37
- header: key
38
- }, `bundle-mcp: server "${serverName}": header "${key}" has an unsupported value type and was ignored`);
39
- },
40
- onMalformedHeaders: () => {
41
- log.warn({
42
- phase: "agent.mcp_connect",
43
- serverName
44
- }, `bundle-mcp: server "${serverName}": "headers" must be a JSON object; the value was ignored`);
45
- }
46
- });
47
- if (!launch.ok) return null;
48
- return {
49
- kind: "http",
50
- transportType: launch.config.transportType,
51
- url: launch.config.url,
52
- headers: launch.config.headers,
53
- auth: launch.config.auth,
54
- description: describeHttpMcpServerLaunchConfig(launch.config),
55
- connectionTimeoutMs: getConnectionTimeoutMs(rawServer),
56
- requestTimeoutMs: getRequestTimeoutMs(rawServer)
57
- };
58
- }
59
- function resolveMcpTransportConfig(serverName, rawServer) {
60
- const logServerName = sanitizeForLog(serverName);
61
- const requestedTransport = getRequestedTransport(rawServer);
62
- const requestedTransportAlias = requestedTransport ? "" : getRequestedTransportAlias(rawServer);
63
- const effectiveTransport = requestedTransport || requestedTransportAlias;
64
- const stdioLaunch = resolveStdioMcpServerLaunchConfig(rawServer, { onDroppedEnv: (key) => {
65
- log.warn(`bundle-mcp: server "${logServerName}": env "${sanitizeForLog(key)}" is blocked for stdio startup safety and was ignored.`);
66
- } });
67
- if (stdioLaunch.ok) return {
68
- kind: "stdio",
69
- transportType: "stdio",
70
- command: stdioLaunch.config.command,
71
- args: stdioLaunch.config.args,
72
- env: stdioLaunch.config.env,
73
- cwd: stdioLaunch.config.cwd,
74
- description: describeStdioMcpServerLaunchConfig(stdioLaunch.config),
75
- connectionTimeoutMs: getConnectionTimeoutMs(rawServer),
76
- requestTimeoutMs: getRequestTimeoutMs(rawServer)
77
- };
78
- if (effectiveTransport && effectiveTransport !== "sse" && effectiveTransport !== "streamable-http") {
79
- log.warn(`bundle-mcp: skipped server "${logServerName}" because transport "${sanitizeForLog(effectiveTransport)}" is not supported.`);
80
- return null;
81
- }
82
- const httpTransport = resolveHttpTransportConfig(serverName, rawServer, effectiveTransport === "sse" ? "sse" : "streamable-http");
83
- if (httpTransport) return httpTransport;
84
- const stdioReason = stdioLaunch.ok === false ? stdioLaunch.reason : "not a stdio server";
85
- const httpLaunch = resolveHttpMcpServerLaunchConfig(rawServer);
86
- const httpReason = httpLaunch.ok === false ? httpLaunch.reason : "not an HTTP MCP server";
87
- log.warn(`bundle-mcp: skipped server "${logServerName}" because ${stdioReason} and ${httpReason}.`);
88
- return null;
89
- }
90
- //#endregion
91
- export { DEFAULT_MCP_REQUEST_TIMEOUT_MS, resolveMcpTransportConfig };
@@ -1,17 +0,0 @@
1
- import type { OAuthClientProvider } from "@modelcontextprotocol/sdk/client/auth.js";
2
- import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
3
- import type { Config } from "../../config/schema.js";
4
- import { McpOAuthStore } from "./oauth/mcp-oauth-store.js";
5
- export type ResolvedMcpTransport = {
6
- transport: Transport;
7
- description: string;
8
- transportType: "stdio" | "sse" | "streamable-http";
9
- connectionTimeoutMs: number;
10
- requestTimeoutMs: number;
11
- detachStderr?: () => void;
12
- };
13
- export type ResolveMcpTransportOptions = {
14
- oauthProvider?: OAuthClientProvider;
15
- oauthStore?: McpOAuthStore;
16
- };
17
- export declare function resolveMcpTransport(serverName: string, rawServer: unknown, config?: Config, options?: ResolveMcpTransportOptions): Promise<ResolvedMcpTransport | null>;
@@ -1,141 +0,0 @@
1
- import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
2
- import { createLogger } from "../../utils/logger/index.js";
3
- import { init_logger } from "../../utils/logger.js";
4
- import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
5
- import { buildRuntimeEnvironment, resolveRuntimeCommand } from "../../runtime-tools/environment.js";
6
- import { XopcStdioClientTransport } from "./mcp-stdio-transport.js";
7
- import { resolveMcpTransportConfig } from "./mcp-transport-config.js";
8
- import { McpOAuthStore } from "./oauth/mcp-oauth-store.js";
9
- import { XopcMcpOAuthClientProvider } from "./oauth/mcp-oauth-provider.js";
10
- import { createPluginHttpFetch } from "./plugin-http-fetch.js";
11
- import { pluginOAuthScope } from "../../extensions/agent-plugins/plugin-oauth-scope.js";
12
- import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
13
- import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
14
- import { getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
15
- import { fetch } from "undici";
16
- //#region src/agent/mcp/mcp-transport.ts
17
- init_paths_state();
18
- init_logger();
19
- init_string_coerce();
20
- const log = createLogger("Mcp:Transport");
21
- function attachStderrLogging(serverName, transport) {
22
- const stderr = transport.stderr;
23
- if (!stderr || typeof stderr.on !== "function") return;
24
- const onData = (chunk) => {
25
- const message = normalizeOptionalString(typeof chunk === "string" ? chunk : String(chunk)) ?? "";
26
- if (!message) return;
27
- for (const line of message.split(/\r?\n/)) {
28
- const trimmed = line.trim();
29
- if (trimmed) log.debug(`bundle-mcp:${serverName}: ${trimmed}`);
30
- }
31
- };
32
- stderr.on("data", onData);
33
- return () => {
34
- if (typeof stderr.off === "function") stderr.off("data", onData);
35
- else if (typeof stderr.removeListener === "function") stderr.removeListener("data", onData);
36
- };
37
- }
38
- const fetchWithUndici = async (url, init) => await fetch(url, init);
39
- function buildSseEventSourceFetch(headers) {
40
- return (url, init) => {
41
- const sdkHeaders = {};
42
- if (init?.headers) if (init.headers instanceof Headers) init.headers.forEach((value, key) => {
43
- sdkHeaders[key] = value;
44
- });
45
- else Object.assign(sdkHeaders, init.headers);
46
- return fetchWithUndici(url, {
47
- ...init,
48
- headers: {
49
- ...sdkHeaders,
50
- ...headers
51
- }
52
- });
53
- };
54
- }
55
- function buildScopedHttpFetch(serverUrl, headers) {
56
- return async (url, init) => {
57
- const mergedHeaders = new Headers();
58
- if (new URL(url).origin === serverUrl.origin) for (const [key, value] of Object.entries(headers)) mergedHeaders.set(key, value);
59
- if (init?.headers) new Headers(init.headers).forEach((value, key) => mergedHeaders.set(key, value));
60
- return fetchWithUndici(url, {
61
- ...init,
62
- headers: mergedHeaders
63
- });
64
- };
65
- }
66
- async function resolveMcpTransport(serverName, rawServer, config, options = {}) {
67
- const resolved = resolveMcpTransportConfig(serverName, rawServer);
68
- if (!resolved) return null;
69
- const plugin = rawServer && typeof rawServer === "object" ? rawServer.xopcPlugin : void 0;
70
- if (resolved.kind === "stdio") {
71
- const command = config ? await resolveRuntimeCommand({
72
- command: resolved.command,
73
- stateDir: resolveStateDir(),
74
- config: config.runtimeTools,
75
- allowProvision: true
76
- }) : resolved.command;
77
- const env = config ? (await buildRuntimeEnvironment({
78
- stateDir: resolveStateDir(),
79
- config: config.runtimeTools,
80
- baseEnv: {
81
- ...getDefaultEnvironment(),
82
- ...resolved.env
83
- }
84
- })).env : resolved.env;
85
- const transport = new XopcStdioClientTransport({
86
- command,
87
- args: resolved.args,
88
- env,
89
- cwd: resolved.cwd,
90
- stderr: "pipe",
91
- pluginDataDir: plugin?.dataDir
92
- });
93
- return {
94
- transport,
95
- description: command === resolved.command ? resolved.description : `${command}${resolved.args?.length ? ` ${resolved.args.join(" ")}` : ""}`,
96
- transportType: "stdio",
97
- connectionTimeoutMs: resolved.connectionTimeoutMs,
98
- requestTimeoutMs: resolved.requestTimeoutMs,
99
- detachStderr: attachStderrLogging(serverName, transport)
100
- };
101
- }
102
- if (resolved.transportType === "streamable-http") {
103
- const serverUrl = new URL(resolved.url);
104
- const oauthEnabled = Boolean(resolved.auth);
105
- let oauthProvider = options.oauthProvider;
106
- if (resolved.auth && !oauthProvider) {
107
- const store = options.oauthStore ?? new McpOAuthStore(pluginOAuthScope(rawServer));
108
- if ((await store.load(serverUrl))?.tokens) oauthProvider = new XopcMcpOAuthClientProvider({
109
- serverUrl,
110
- clientId: resolved.auth.clientId,
111
- store
112
- });
113
- }
114
- return {
115
- transport: new StreamableHTTPClientTransport(serverUrl, {
116
- authProvider: oauthProvider,
117
- requestInit: !plugin && !oauthEnabled && resolved.headers ? { headers: resolved.headers } : void 0,
118
- fetch: plugin ? createPluginHttpFetch(serverUrl, resolved.headers ?? {}) : oauthEnabled ? buildScopedHttpFetch(serverUrl, resolved.headers ?? {}) : fetchWithUndici
119
- }),
120
- description: resolved.description,
121
- transportType: "streamable-http",
122
- connectionTimeoutMs: resolved.connectionTimeoutMs,
123
- requestTimeoutMs: resolved.requestTimeoutMs
124
- };
125
- }
126
- const headers = { ...resolved.headers };
127
- const hasHeaders = Object.keys(headers).length > 0;
128
- return {
129
- transport: new SSEClientTransport(new URL(resolved.url), {
130
- requestInit: !plugin && hasHeaders ? { headers } : void 0,
131
- fetch: plugin ? createPluginHttpFetch(new URL(resolved.url), headers) : fetchWithUndici,
132
- eventSourceInit: { fetch: plugin ? createPluginHttpFetch(new URL(resolved.url), headers) : buildSseEventSourceFetch(headers) }
133
- }),
134
- description: resolved.description,
135
- transportType: "sse",
136
- connectionTimeoutMs: resolved.connectionTimeoutMs,
137
- requestTimeoutMs: resolved.requestTimeoutMs
138
- };
139
- }
140
- //#endregion
141
- export { resolveMcpTransport };
@@ -1,6 +0,0 @@
1
- export * from './mcp-oauth-errors.js';
2
- export * from './mcp-oauth-manager.js';
3
- export * from './mcp-oauth-provider.js';
4
- export * from './mcp-oauth-session.js';
5
- export * from './mcp-oauth-store.js';
6
- export type * from './mcp-oauth-types.js';