@xopcai/xopc 0.0.426 → 0.0.427

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 (360) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/src/adapters/security-adapter.js +1 -1
  3. package/dist/extensions/telegram/src/pairing-config-resolver.js +1 -1
  4. package/dist/extensions/telegram/src/plugin.js +2 -2
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/extensions/weixin/src/api/api.js +1 -1
  7. package/dist/extensions/weixin/src/auth/accounts.js +2 -2
  8. package/dist/extensions/weixin/src/auth/pairing.js +1 -1
  9. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  10. package/dist/extensions/weixin/src/cli/gateway-qr-login.js +1 -1
  11. package/dist/extensions/weixin/src/cli/qr-login.js +1 -1
  12. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  13. package/dist/extensions/weixin/src/messaging/inbound.js +2 -2
  14. package/dist/extensions/weixin/src/messaging/process-message.js +3 -3
  15. package/dist/extensions/weixin/src/messaging/send.js +12 -3
  16. package/dist/extensions/weixin/src/monitor/monitor.js +1 -1
  17. package/dist/extensions/weixin/src/outbound-send.js +12 -3
  18. package/dist/extensions/weixin/src/pairing-config-resolver.js +1 -1
  19. package/dist/extensions/weixin/src/plugin.js +1 -1
  20. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D4ClP_DJ.js +1 -0
  21. package/dist/gateway/static/root/assets/agent-plugin-dialog-m1A8wF9p.js +1 -0
  22. package/dist/gateway/static/root/assets/agents-B9slUA_1.js +77 -0
  23. package/dist/gateway/static/root/assets/app-link-DRy3-k7j.js +1 -0
  24. package/dist/gateway/static/root/assets/{app-management-settings-panel-C8yc3yHG.js → app-management-settings-panel-XqoIBF2H.js} +1 -1
  25. package/dist/gateway/static/root/assets/{appearance-settings-BELgtR3O.js → appearance-settings-9ZtqCASo.js} +1 -1
  26. package/dist/gateway/static/root/assets/apps-page-DUeu_7iC.js +1 -0
  27. package/dist/gateway/static/root/assets/attachment-load-DrVGNxJm.js +1 -0
  28. package/dist/gateway/static/root/assets/automation-task-card-Bur78p68.js +3 -0
  29. package/dist/gateway/static/root/assets/{automations-page-CdIPdwF0.js → automations-page-DMIyWsP0.js} +1 -1
  30. package/dist/gateway/static/root/assets/automations-workspace-DEkDjxeU.js +9 -0
  31. package/dist/gateway/static/root/assets/{block-editor-BQtTLe6Q.js → block-editor-CXdlNAmZ.js} +2 -2
  32. package/dist/gateway/static/root/assets/{browser-automation-inputs-DeraGZ1y.js → browser-automation-inputs-Fxo7HbK6.js} +1 -1
  33. package/dist/gateway/static/root/assets/{browser-automations-page-SpPzRNqU.js → browser-automations-page-Dn3LN5wo.js} +2 -2
  34. package/dist/gateway/static/root/assets/browser-settings-page-Cpm9fEPV.js +3 -0
  35. package/dist/gateway/static/root/assets/{button-CnRSIP6m.js → button-Cc4hUNTt.js} +1 -1
  36. package/dist/gateway/static/root/assets/{capabilities-DLMuj21P.js → capabilities-BEvywfF9.js} +1 -1
  37. package/dist/gateway/static/root/assets/capabilities-Bo2qEJhH.js +1 -0
  38. package/dist/gateway/static/root/assets/capabilities-page-BCzsIzvC.js +2 -0
  39. package/dist/gateway/static/root/assets/capabilities-settings-panel-Cr67ziwX.js +8 -0
  40. package/dist/gateway/static/root/assets/{capability-header-actions-CTUCuBlW.js → capability-header-actions-BxMYfQ8y.js} +1 -1
  41. package/dist/gateway/static/root/assets/channels-CA5z5dGY.js +1 -0
  42. package/dist/gateway/static/root/assets/{chat-chart-block-DCzUECct.js → chat-chart-block-B39npsXj.js} +1 -1
  43. package/dist/gateway/static/root/assets/chat-page-D92AWJbh.js +72 -0
  44. package/dist/gateway/static/root/assets/{chat-terminal-dock-Dl-OTkJI.js → chat-terminal-dock-DjFnElAM.js} +2 -2
  45. package/dist/gateway/static/root/assets/composer-payload-handoff-BQXlFKf4.js +1 -0
  46. package/dist/gateway/static/root/assets/{computer-settings-page-B-lGMimW.js → computer-settings-page-MkqyKyf3.js} +1 -1
  47. package/dist/gateway/static/root/assets/confirm-dialog-D7dQJytv.js +1 -0
  48. package/dist/gateway/static/root/assets/connected-providers-grid-BSvKP2u-.js +1 -0
  49. package/dist/gateway/static/root/assets/{connector-service-page-C8InhrMt.js → connector-service-page-DlIl9bLx.js} +1 -1
  50. package/dist/gateway/static/root/assets/connectors-page-Vx8-MY0Y.js +1 -0
  51. package/dist/gateway/static/root/assets/{copy-text-row-CYIv7RfP.js → copy-text-row-CpiRzq4G.js} +1 -1
  52. package/dist/gateway/static/root/assets/{date-picker-kqic8j73.js → date-picker-BIfjfOTM.js} +1 -1
  53. package/dist/gateway/static/root/assets/dependency-picker-XjPB8FJS.js +1 -0
  54. package/dist/gateway/static/root/assets/{desktop-pet-settings-BDS7_tQ_.js → desktop-pet-settings-BDjsFown.js} +1 -1
  55. package/dist/gateway/static/root/assets/device-pairing-wizard-DH_uJ698.js +1 -0
  56. package/dist/gateway/static/root/assets/{directory-picker-path-field-Di0h3ws4.js → directory-picker-path-field-DiZXY7jF.js} +1 -1
  57. package/dist/gateway/static/root/assets/{discussion-annotation-sync-ClKEyXmN.js → discussion-annotation-sync-BXqNuZnx.js} +1 -1
  58. package/dist/gateway/static/root/assets/dist-BGTk37IG.js +1 -0
  59. package/dist/gateway/static/root/assets/dist-BuHnPloF.js +1 -0
  60. package/dist/gateway/static/root/assets/dist-GJ8-1PAx.js +1 -0
  61. package/dist/gateway/static/root/assets/dist-ZrL34Ps4.js +1 -0
  62. package/dist/gateway/static/root/assets/{extension-debug-page-DwB5KMGk.js → extension-debug-page-myQqsol2.js} +1 -1
  63. package/dist/gateway/static/root/assets/{extension-iframe-host-Cqg1K70e.js → extension-iframe-host-DaL-OcTw.js} +1 -1
  64. package/dist/gateway/static/root/assets/{extension-page-DyrQtG82.js → extension-page-DvlGhZLa.js} +1 -1
  65. package/dist/gateway/static/root/assets/{extension-provider-C_uKqJxP.js → extension-provider-fOi6V6Cr.js} +1 -1
  66. package/dist/gateway/static/root/assets/{extension-settings-page-BAMQHzkX.js → extension-settings-page-DOGlQpkx.js} +1 -1
  67. package/dist/gateway/static/root/assets/{gateway-settings-uAboiElC.js → gateway-settings-Di41peSM.js} +1 -1
  68. package/dist/gateway/static/root/assets/home-page-B3sgqrl3.js +2 -0
  69. package/dist/gateway/static/root/assets/{image-generation-api-CQxZSTWA.js → image-generation-api-Ce-IY7Ug.js} +1 -1
  70. package/dist/gateway/static/root/assets/{imports-page-C90644id.js → imports-page-W7_cDbxy.js} +1 -1
  71. package/dist/gateway/static/root/assets/index-D4B6O8B3.js +11 -0
  72. package/dist/gateway/static/root/assets/index-DGWBJDAM.css +1 -0
  73. package/dist/gateway/static/root/assets/install-connector-dialog-DWVl9ekV.js +1 -0
  74. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CbeubKe1.js → keyboard-shortcuts-settings-Doyu0Q9e.js} +1 -1
  75. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +1 -0
  76. package/dist/gateway/static/root/assets/local-app-workbench-page-B3h3P6aI.js +1 -0
  77. package/dist/gateway/static/root/assets/{local-apps-page-C6zFgwkr.js → local-apps-page-D6D2bZGW.js} +1 -1
  78. package/dist/gateway/static/root/assets/{logs-page-CpVCvAWE.js → logs-page-qiXos_12.js} +2 -2
  79. package/dist/gateway/static/root/assets/management-settings-C0WcSdK7.js +1 -0
  80. package/dist/gateway/static/root/assets/{markdown-view-DrVAMlwc.js → markdown-view-Ck5s16p9.js} +2 -2
  81. package/dist/gateway/static/root/assets/mcp-conversation-setup-page-CENs3hGU.js +1 -0
  82. package/dist/gateway/static/root/assets/model-selector-DCBmsHzj.js +1 -0
  83. package/dist/gateway/static/root/assets/note-detail-panel-CnuxqWMd.js +5 -0
  84. package/dist/gateway/static/root/assets/note-image-lightbox-BFKZ7qJr.js +1 -0
  85. package/dist/gateway/static/root/assets/{notes-api-CUlhTRv0.js → notes-api-8kp0X1x6.js} +1 -1
  86. package/dist/gateway/static/root/assets/{notes-page-eoKX85K5.js → notes-page-XMdy-H3H.js} +1 -1
  87. package/dist/gateway/static/root/assets/{oauth-provider-connect-C8BXow79.js → oauth-provider-connect-CfOK8mPM.js} +1 -1
  88. package/dist/gateway/static/root/assets/{page-context-capture-button-CBFK41OS.js → page-context-capture-button-CKlKWSJ7.js} +1 -1
  89. package/dist/gateway/static/root/assets/personal-page-CIMMSI25.js +1 -0
  90. package/dist/gateway/static/root/assets/{personal-settings-panel-DnYapLo7.js → personal-settings-panel-wKdlrfPq.js} +1 -1
  91. package/dist/gateway/static/root/assets/{phone-dependencies-card-DBiKtzwz.js → phone-dependencies-card-CDhk5277.js} +1 -1
  92. package/dist/gateway/static/root/assets/phone-model-connection-DZ-ZunPz.js +1 -0
  93. package/dist/gateway/static/root/assets/{phone-model-picker-BmSxEr7M.js → phone-model-picker-DuZc5jYO.js} +1 -1
  94. package/dist/gateway/static/root/assets/phone-settings-page-0u0GQl_R.js +1 -0
  95. package/dist/gateway/static/root/assets/plugin-details-dialog-Bfc-Wmrd.js +1 -0
  96. package/dist/gateway/static/root/assets/{popover-select-DD8fmrxH.js → popover-select-CEMWIrtY.js} +1 -1
  97. package/dist/gateway/static/root/assets/{preference-select-fields-Cu_ZC9Up.js → preference-select-fields-BKeHZLXZ.js} +1 -1
  98. package/dist/gateway/static/root/assets/{product-automation-feedback-Tn2dUJWM.js → product-automation-feedback-BPur0vyo.js} +2 -2
  99. package/dist/gateway/static/root/assets/{product-open-page-Nf-Oqf1h.js → product-open-page-Bfd7R483.js} +1 -1
  100. package/dist/gateway/static/root/assets/{product-preview-content-D6NwUm3A.js → product-preview-content-Bnq68oVw.js} +1 -1
  101. package/dist/gateway/static/root/assets/{product-preview-modal-BfNcGgXA.js → product-preview-modal-BPmTeweh.js} +2 -2
  102. package/dist/gateway/static/root/assets/project-detail-page-D9nnyvrI.js +7 -0
  103. package/dist/gateway/static/root/assets/{project-understanding-B1BK7Ixi.js → project-understanding-DLvxAoTT.js} +1 -1
  104. package/dist/gateway/static/root/assets/projects-page-BGy1pw9a.js +1 -0
  105. package/dist/gateway/static/root/assets/{recording-upload-RAhaLUcQ.js → recording-upload-CHFJbqW1.js} +1 -1
  106. package/dist/gateway/static/root/assets/{refresh-button-bU_0NarN.js → refresh-button-DiWdGAaX.js} +1 -1
  107. package/dist/gateway/static/root/assets/{remote-access-hub-DWsOWetc.js → remote-access-hub-BVqwnOqO.js} +1 -1
  108. package/dist/gateway/static/root/assets/route-preload-DI43HQV_.js +2 -0
  109. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BGiXeHF5.js → runtime-tools-settings-panel-ccVBG-bZ.js} +1 -1
  110. package/dist/gateway/static/root/assets/{schema-form-BKeP5G7b.js → schema-form-C-jw6Hid.js} +1 -1
  111. package/dist/gateway/static/root/assets/{secret-input-BQvFXqzz.js → secret-input-Dryrns2s.js} +1 -1
  112. package/dist/gateway/static/root/assets/{service-recommendation-list-BEnNx0u7.js → service-recommendation-list-CNghOavt.js} +1 -1
  113. package/dist/gateway/static/root/assets/session-manager-Bnq3qpqy.js +23 -0
  114. package/dist/gateway/static/root/assets/sessions-page-CyBj1Xw2.js +1 -0
  115. package/dist/gateway/static/root/assets/{settings-advanced-section-CURRjsLK.js → settings-advanced-section-DwpPPxT0.js} +1 -1
  116. package/dist/gateway/static/root/assets/{settings-page-GtsbT6as.js → settings-page-Cd8Ermnn.js} +1 -1
  117. package/dist/gateway/static/root/assets/{settings-page-header-DBL0_u0Z.js → settings-page-header-BZl4AMiN.js} +1 -1
  118. package/dist/gateway/static/root/assets/{settings-page-layout-IAvpbz4A.js → settings-page-layout-onhEgq-K.js} +1 -1
  119. package/dist/gateway/static/root/assets/setup-interaction-page-Cvvj6JyV.js +1 -0
  120. package/dist/gateway/static/root/assets/setup-status-panel-D4qgE7QM.js +1 -0
  121. package/dist/gateway/static/root/assets/share-link-dialog-DA0QuFOD.js +1 -0
  122. package/dist/gateway/static/root/assets/{share-preview-page-L9KYu8M7.js → share-preview-page-YDpIY4dC.js} +1 -1
  123. package/dist/gateway/static/root/assets/shares-settings-DUvjOMmA.js +1 -0
  124. package/dist/gateway/static/root/assets/skills-page-ClyNSh-7.js +2 -0
  125. package/dist/gateway/static/root/assets/{system-settings-panel-CsvcFoaJ.js → system-settings-panel-BN6sUX0H.js} +1 -1
  126. package/dist/gateway/static/root/assets/task-detail-page-CS9m7Ipo.js +2 -0
  127. package/dist/gateway/static/root/assets/{task-result-evidence-B8xUiwW3.js → task-result-evidence-DKygspo2.js} +1 -1
  128. package/dist/gateway/static/root/assets/tracing-settings-page-Bs76WeoF.js +1 -0
  129. package/dist/gateway/static/root/assets/{tunnel-api-BB7u79ID.js → tunnel-api-B7nx0NQJ.js} +1 -1
  130. package/dist/gateway/static/root/assets/{usage-page-Cv4Je5XJ.js → usage-page-anU5gslJ.js} +1 -1
  131. package/dist/gateway/static/root/assets/use-composer-attachments-DYY3Yz4a.js +2 -0
  132. package/dist/gateway/static/root/assets/use-file-preview-expanded-CYgWzDnv.js +2 -0
  133. package/dist/gateway/static/root/assets/{use-workspace-tree-BQEiJzK7.js → use-workspace-tree-Dkg9tUr4.js} +1 -1
  134. package/dist/gateway/static/root/assets/user-model-page-DIgPL3tN.js +2 -0
  135. package/dist/gateway/static/root/assets/{voice-api-key-field-DCM69u8Y.js → voice-api-key-field-BUes-Jlp.js} +1 -1
  136. package/dist/gateway/static/root/assets/voice-transcribe-api-Dy4hfftb.js +1 -0
  137. package/dist/gateway/static/root/assets/{work-discovery-overlay-CVe9UmFl.js → work-discovery-overlay-CFF4cRFl.js} +1 -1
  138. package/dist/gateway/static/root/assets/{work-discovery-page-CtqkRMN5.js → work-discovery-page-BnYaVH3V.js} +1 -1
  139. package/dist/gateway/static/root/assets/working-directory-picker-modal-GFwVefVA.js +1 -0
  140. package/dist/gateway/static/root/assets/{workspace-api-tbifz2zY.js → workspace-api-BdB4NEOh.js} +2 -2
  141. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-BubQwQwU.js → workspace-file-preview-dialog-NRL3YRjg.js} +1 -1
  142. package/dist/gateway/static/root/assets/{workspace-open-location-menu-DZk3MBSa.js → workspace-open-location-menu-Dcij7wvJ.js} +1 -1
  143. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CIavPUr3.js → xopc-cloud-account-card-DC9aG7Pl.js} +1 -1
  144. package/dist/gateway/static/root/index.html +66 -64
  145. package/dist/package.js +1 -1
  146. package/dist/packages/gateway-contract/src/automations.js +7 -0
  147. package/dist/packages/gateway-contract/src/capabilities.js +1 -1
  148. package/dist/src/agent/agent-manager.d.ts +1 -0
  149. package/dist/src/agent/agent-manager.js +1 -0
  150. package/dist/src/agent/child-agent-factory.js +1 -1
  151. package/dist/src/agent/data-acquisition/service.js +1 -1
  152. package/dist/src/agent/embedded/configuration-capability-correction.d.ts +3 -0
  153. package/dist/src/agent/embedded/configuration-capability-correction.js +14 -0
  154. package/dist/src/agent/embedded/run-for-session.js +20 -5
  155. package/dist/src/agent/embedded/run-turn.js +13 -1
  156. package/dist/src/agent/embedded/session-runner.js +6 -3
  157. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  158. package/dist/src/agent/image/load-image-media.js +1 -1
  159. package/dist/src/agent/inbound/inbound-loop.js +4 -1
  160. package/dist/src/agent/independent-execution.js +1 -1
  161. package/dist/src/agent/mcp/config.js +1 -1
  162. package/dist/src/agent/mcp/connection-drafts.d.ts +3 -1
  163. package/dist/src/agent/mcp/connection-drafts.js +3 -2
  164. package/dist/src/agent/mcp/connection-setup.js +34 -2
  165. package/dist/src/agent/mcp/conversation-setup.d.ts +163 -0
  166. package/dist/src/agent/mcp/conversation-setup.js +621 -0
  167. package/dist/src/agent/mcp/native-mcp.d.ts +1 -0
  168. package/dist/src/agent/mcp/tool-catalog.d.ts +5 -0
  169. package/dist/src/agent/mcp/tool-catalog.js +19 -2
  170. package/dist/src/agent/mcp/weixin-setup-scope.d.ts +12 -0
  171. package/dist/src/agent/mcp/weixin-setup-scope.js +43 -0
  172. package/dist/src/agent/prompt/conversational-configuration-guide.js +2 -1
  173. package/dist/src/agent/prompt/sections/tooling.js +3 -2
  174. package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
  175. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  176. package/dist/src/agent/service/process-direct-streaming.js +2 -2
  177. package/dist/src/agent/service.d.ts +2 -0
  178. package/dist/src/agent/service.js +11 -1
  179. package/dist/src/agent/service.types.d.ts +1 -0
  180. package/dist/src/agent/tasks/task-judge-service.js +2 -2
  181. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +6 -4
  182. package/dist/src/agent/tool-manuals/xopc-configuration.js +92 -8
  183. package/dist/src/agent/tools/automation-tool.d.ts +9 -1
  184. package/dist/src/agent/tools/automation-tool.js +34 -5
  185. package/dist/src/agent/tools/create-share-tool.js +1 -1
  186. package/dist/src/agent/tools/factory.d.ts +3 -0
  187. package/dist/src/agent/tools/factory.js +34 -23
  188. package/dist/src/agent/tools/image-generate-tool.js +3 -3
  189. package/dist/src/agent/tools/index.d.ts +1 -0
  190. package/dist/src/agent/tools/index.js +5 -4
  191. package/dist/src/agent/tools/mcp-setup-tool.d.ts +9 -0
  192. package/dist/src/agent/tools/mcp-setup-tool.js +32 -0
  193. package/dist/src/agent/tools/personal-task-tool.js +2 -2
  194. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  195. package/dist/src/agent/tools/read.js +1 -1
  196. package/dist/src/agent/tools/skill-install-tool.js +56 -1
  197. package/dist/src/agent/tools/skill-manage-tool.d.ts +4 -0
  198. package/dist/src/agent/tools/skill-manage-tool.js +74 -2
  199. package/dist/src/agent/tools/skills-tools.js +1 -1
  200. package/dist/src/agent/tools/task-collaboration-tool.js +1 -1
  201. package/dist/src/agent/tools/tool-manual-tool.d.ts +1 -1
  202. package/dist/src/agent/tools/tool-manual-tool.js +3 -1
  203. package/dist/src/agent/tools/toolExposure.js +2 -0
  204. package/dist/src/agent/tools/write.js +1 -1
  205. package/dist/src/agent/tools/xopc-use-tool.d.ts +4 -2
  206. package/dist/src/agent/tools/xopc-use-tool.js +60 -10
  207. package/dist/src/agent-catalog/service.d.ts +1 -1
  208. package/dist/src/agent-catalog/service.js +2 -1
  209. package/dist/src/automations/capabilities/drafts.js +5 -2
  210. package/dist/src/automations/capabilities/read.js +18 -7
  211. package/dist/src/automations/capabilities/write.d.ts +111 -52
  212. package/dist/src/automations/capabilities/write.js +44 -10
  213. package/dist/src/automations/delivery/delivery-router.d.ts +1 -0
  214. package/dist/src/automations/delivery/delivery-router.js +7 -1
  215. package/dist/src/automations/domain/types.d.ts +8 -0
  216. package/dist/src/automations/domain/validation.d.ts +24 -0
  217. package/dist/src/automations/domain/validation.js +7 -0
  218. package/dist/src/automations/draft/automation-draft-validator.d.ts +6 -0
  219. package/dist/src/automations/index.js +2 -2
  220. package/dist/src/automations/mcp-source.d.ts +60 -0
  221. package/dist/src/automations/mcp-source.js +173 -0
  222. package/dist/src/automations/service/action-executor.js +15 -1
  223. package/dist/src/automations/service/automation-service.d.ts +5 -0
  224. package/dist/src/automations/service/automation-service.js +52 -2
  225. package/dist/src/automations/service/index.js +2 -2
  226. package/dist/src/browser/setup/repository.d.ts +1 -0
  227. package/dist/src/browser/setup/repository.js +7 -1
  228. package/dist/src/browser/setup/service.d.ts +3 -0
  229. package/dist/src/browser/setup/service.js +41 -18
  230. package/dist/src/browser/setup/types.d.ts +1 -0
  231. package/dist/src/channels/attachments/voice-stt-webchat.js +1 -1
  232. package/dist/src/channels/index.js +1 -1
  233. package/dist/src/channels/manager.d.ts +1 -0
  234. package/dist/src/channels/outbound-sender.d.ts +1 -0
  235. package/dist/src/channels/outbound-sender.js +3 -0
  236. package/dist/src/channels/pairing/pairing-service.js +1 -1
  237. package/dist/src/channels/weixin/account-identity.d.ts +2 -0
  238. package/dist/src/channels/weixin/account-identity.js +15 -0
  239. package/dist/src/chat-commands/builtins/config.js +1 -1
  240. package/dist/src/cli/commands/channels.js +2 -2
  241. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +1 -1
  242. package/dist/src/cli/commands/mcp.js +1 -1
  243. package/dist/src/extensions/agent-plugins/credentials.js +1 -1
  244. package/dist/src/extensions/agent-plugins/setup.d.ts +1 -1
  245. package/dist/src/extensions/agent-plugins/setup.js +3 -3
  246. package/dist/src/extensions/api.js +1 -1
  247. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  248. package/dist/src/gateway/agents-admin.js +1 -1
  249. package/dist/src/gateway/device-routes.js +1 -1
  250. package/dist/src/gateway/hono/app.js +1 -1
  251. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  252. package/dist/src/gateway/hono/oauth-async.js +1 -1
  253. package/dist/src/gateway/hono/routes/channels.js +1 -1
  254. package/dist/src/gateway/hono/routes/config.js +1 -1
  255. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
  256. package/dist/src/gateway/hono/routes/mcp.js +39 -2
  257. package/dist/src/gateway/hono/routes/notes.js +2 -2
  258. package/dist/src/gateway/hono/routes/phone-setup.js +33 -9
  259. package/dist/src/gateway/hono/routes/projects.js +1 -1
  260. package/dist/src/gateway/hono/routes/provider-setup.js +1 -1
  261. package/dist/src/gateway/hono/routes/public-gateway.js +22 -0
  262. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  263. package/dist/src/gateway/hono/routes/shares.js +1 -1
  264. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  265. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  266. package/dist/src/gateway/media-access.js +1 -1
  267. package/dist/src/gateway/service/agent-runner.d.ts +1 -0
  268. package/dist/src/gateway/service/agent-runner.js +3 -1
  269. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  270. package/dist/src/gateway/service/config-coordinator.js +2 -1
  271. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  272. package/dist/src/gateway/service/sessions-api.js +2 -1
  273. package/dist/src/gateway/service.d.ts +5 -1
  274. package/dist/src/gateway/service.js +90 -16
  275. package/dist/src/gateway/session-context-summary.js +1 -1
  276. package/dist/src/gateway/session-reset-service.d.ts +1 -0
  277. package/dist/src/gateway/session-reset-service.js +15 -2
  278. package/dist/src/home-intelligence/host.js +2 -2
  279. package/dist/src/notes/service.js +1 -1
  280. package/dist/src/personal-agent/prompts.js +1 -1
  281. package/dist/src/personal-agent/reply-composer.js +2 -2
  282. package/dist/src/personal-agent/request-service.js +3 -3
  283. package/dist/src/personal-agent/service.js +1 -1
  284. package/dist/src/personal-agent/task-cancel.js +1 -1
  285. package/dist/src/phone/setup/service.d.ts +14 -4
  286. package/dist/src/phone/setup/service.js +106 -28
  287. package/dist/src/projects/index.js +1 -1
  288. package/dist/src/projects/project-service.js +1 -1
  289. package/dist/src/runtime-tools/phone-dependencies.d.ts +2 -0
  290. package/dist/src/runtime-tools/phone-dependencies.js +10 -0
  291. package/dist/src/share/note-share-service.js +1 -1
  292. package/dist/src/share/site-proxy.js +1 -1
  293. package/dist/src/tasks/capabilities/write.js +1 -1
  294. package/dist/src/tasks/index.js +1 -1
  295. package/dist/src/tasks/task-allocation-service.js +3 -3
  296. package/dist/src/tasks/task-application-service.js +2 -2
  297. package/dist/src/tasks/task-context-assembler.js +1 -1
  298. package/dist/src/tasks/task-contract-planner.js +1 -1
  299. package/dist/src/tasks/task-handoff.js +1 -1
  300. package/dist/src/tasks/task-research-result.js +1 -1
  301. package/dist/src/tasks/task-run-coordinator.js +2 -2
  302. package/dist/src/tui/backends/embedded-backend.js +1 -1
  303. package/package.json +3 -1
  304. package/skills/tools/configure-xopc/SKILL.md +10 -3
  305. package/skills/tools/configure-xopc/references/browser/chrome-extension.md +4 -1
  306. package/skills/tools/configure-xopc/references/browser/overview.md +2 -2
  307. package/skills/tools/configure-xopc/references/phone/aliyun.md +3 -2
  308. package/skills/tools/configure-xopc/references/phone/overview.md +2 -2
  309. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Dne9A10p.js +0 -1
  310. package/dist/gateway/static/root/assets/agent-plugin-dialog-BoHL-b1o.js +0 -1
  311. package/dist/gateway/static/root/assets/agents-CIiIlVBp.js +0 -77
  312. package/dist/gateway/static/root/assets/app-link-1j40sJ-z.js +0 -1
  313. package/dist/gateway/static/root/assets/apps-page-vgS1CHDj.js +0 -1
  314. package/dist/gateway/static/root/assets/attachment-load-qjPpQzYY.js +0 -1
  315. package/dist/gateway/static/root/assets/automation-task-card-MnzgyTVA.js +0 -3
  316. package/dist/gateway/static/root/assets/automations-workspace-C3xZLafX.js +0 -9
  317. package/dist/gateway/static/root/assets/browser-settings-page-BD1uF_Nb.js +0 -3
  318. package/dist/gateway/static/root/assets/capabilities-BGE6hiUE.js +0 -1
  319. package/dist/gateway/static/root/assets/capabilities-page-Bda4mSdf.js +0 -2
  320. package/dist/gateway/static/root/assets/capabilities-settings-panel-B2B7no22.js +0 -8
  321. package/dist/gateway/static/root/assets/channels-NtsjZThx.js +0 -1
  322. package/dist/gateway/static/root/assets/chat-page-BnOCCAXG.js +0 -72
  323. package/dist/gateway/static/root/assets/composer-payload-handoff-CQc-VTaL.js +0 -1
  324. package/dist/gateway/static/root/assets/confirm-dialog-XGclfBqe.js +0 -1
  325. package/dist/gateway/static/root/assets/connected-providers-grid-CcXe9kz5.js +0 -1
  326. package/dist/gateway/static/root/assets/connectors-page-Ci0L2How.js +0 -1
  327. package/dist/gateway/static/root/assets/dependency-picker-cbC6-2Ya.js +0 -1
  328. package/dist/gateway/static/root/assets/device-pairing-wizard-_3BJFWVQ.js +0 -1
  329. package/dist/gateway/static/root/assets/dist-CaUuvp8-.js +0 -1
  330. package/dist/gateway/static/root/assets/dist-D3lWNSe7.js +0 -1
  331. package/dist/gateway/static/root/assets/dist-DfWfZ9iu.js +0 -1
  332. package/dist/gateway/static/root/assets/dist-DusecO_p.js +0 -1
  333. package/dist/gateway/static/root/assets/home-page-D6pCBY1V.js +0 -2
  334. package/dist/gateway/static/root/assets/index-Cc41XQid.css +0 -1
  335. package/dist/gateway/static/root/assets/index-CnOYR6jq.js +0 -11
  336. package/dist/gateway/static/root/assets/install-connector-dialog-BuNXON0P.js +0 -1
  337. package/dist/gateway/static/root/assets/local-app-workbench-page-CP-BkbB6.js +0 -1
  338. package/dist/gateway/static/root/assets/management-settings-I-pXv4ML.js +0 -1
  339. package/dist/gateway/static/root/assets/model-selector-CXcxc30J.js +0 -1
  340. package/dist/gateway/static/root/assets/note-detail-panel-CbpLXAVh.js +0 -5
  341. package/dist/gateway/static/root/assets/note-image-lightbox-cLGiF8oU.js +0 -1
  342. package/dist/gateway/static/root/assets/personal-page-CXR1Gy0x.js +0 -1
  343. package/dist/gateway/static/root/assets/phone-settings-page-vg65qilc.js +0 -1
  344. package/dist/gateway/static/root/assets/plugin-details-dialog-B3Hn2cbx.js +0 -1
  345. package/dist/gateway/static/root/assets/project-detail-page-Ch-ZMyTu.js +0 -7
  346. package/dist/gateway/static/root/assets/projects-page-B7cetxao.js +0 -1
  347. package/dist/gateway/static/root/assets/route-preload-Zc5Z3fNv.js +0 -2
  348. package/dist/gateway/static/root/assets/session-manager-ChUtTAoG.js +0 -23
  349. package/dist/gateway/static/root/assets/sessions-page-Bt52kBvJ.js +0 -1
  350. package/dist/gateway/static/root/assets/setup-status-panel-A6uMpGRy.js +0 -1
  351. package/dist/gateway/static/root/assets/share-link-dialog-D1otGSXD.js +0 -1
  352. package/dist/gateway/static/root/assets/shares-settings-Bmfadz8A.js +0 -1
  353. package/dist/gateway/static/root/assets/skills-page-BZklXTX9.js +0 -2
  354. package/dist/gateway/static/root/assets/task-detail-page-SjZGW1Dx.js +0 -2
  355. package/dist/gateway/static/root/assets/tracing-settings-page-MvG4SH64.js +0 -1
  356. package/dist/gateway/static/root/assets/use-composer-attachments-vDdxHtUb.js +0 -2
  357. package/dist/gateway/static/root/assets/use-file-preview-expanded-Ce2mgYme.js +0 -2
  358. package/dist/gateway/static/root/assets/user-model-page-DRSsn4EV.js +0 -2
  359. package/dist/gateway/static/root/assets/voice-transcribe-api-Bbyj0yGR.js +0 -1
  360. package/dist/gateway/static/root/assets/working-directory-picker-modal-CDZ1xh3o.js +0 -1
@@ -1,5 +1,6 @@
1
1
  import { turnOutcomeKindFromFileName } from "../../../packages/gateway-contract/src/turn-outcome.js";
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
+ import { resolveReverseProxyPublicUrl } from "../../gateway/public-url.js";
3
4
  import { assertWorkspaceTreeReadable, checkedFilePath } from "../sandbox/fileAccess.js";
4
5
  import { resolvePathUnderWorkspace } from "./tool-paths.js";
5
6
  import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
@@ -9,7 +10,6 @@ import { getShareStore } from "../../share/share-store.js";
9
10
  import { getSiteShareStore } from "../../share/site-share-store.js";
10
11
  import { resolveShareUrl, resolveSiteShareUrl } from "../../share/share-url.js";
11
12
  import { publishHostedStaticSite } from "../../share/hosted-static-site-publish.js";
12
- import { resolveReverseProxyPublicUrl } from "../../gateway/public-url.js";
13
13
  import { audienceDefaults, decideShareKind, makeDescription, makeTitle, probeShareTarget, rememberStagedSite, stageSingleHtmlAsSite } from "../../share/share-auto.js";
14
14
  import { scheduleThumbnail } from "../../share/share-thumbnail.js";
15
15
  import { resolveToolLocale, shareToolErrorLine, shareToolSuccessLines } from "../../i18n/share-tool-bundle.js";
@@ -34,6 +34,8 @@ export interface ToolFactoryDeps {
34
34
  chatId: string;
35
35
  conversationId: string;
36
36
  origin: TurnOrigin;
37
+ isGroup?: boolean;
38
+ metadata?: Record<string, unknown>;
37
39
  } | null;
38
40
  endpointTools?: EndpointToolRuntime;
39
41
  hookRunner?: import('../../extensions/index.js').ExtensionHookRunner;
@@ -60,6 +62,7 @@ export interface ToolFactoryDeps {
60
62
  canConfigureEndpoint?: (endpointId: string) => boolean;
61
63
  getPhoneSetupService?: () => import('../../phone/setup/service.js').PhoneSetupService | undefined;
62
64
  getBrowserSetupService?: () => import('../../browser/setup/service.js').BrowserSetupService | undefined;
65
+ getMcpSetupService?: () => import('../mcp/conversation-setup.js').McpConversationSetup | undefined;
63
66
  getBrowserAutomationService?: () => BrowserAutomationService | undefined;
64
67
  emitBrowserEvent?: (type: string, payload: unknown) => void;
65
68
  /** Gateway: enables the `xopc_use` product-object tool. */
@@ -9,6 +9,8 @@ import { patchSessionMetadata } from "../../storage/sqlite/session-repository.js
9
9
  import { getSessionTaskPlan, setSessionTaskPlan } from "../../storage/sqlite/session-task-plan-repository.js";
10
10
  import "../../storage/sqlite/index.js";
11
11
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
12
+ import { getConversationRouting } from "../../storage/sqlite/conversation-repository.js";
13
+ import { init_session_key } from "../../routing/session-key.js";
12
14
  import { resolveUserContextSessionAccess } from "../../user-context/access-policy.js";
13
15
  import { resolveEffectiveAgentConfigForAgent } from "../../config/agent-profile.js";
14
16
  import { PERSONAL_TOOL_DESCRIPTIONS } from "../../personal-agent/policy.js";
@@ -24,10 +26,12 @@ import { markCodemodeCoreRead } from "./codemode-permissions.js";
24
26
  import "../../../packages/browser-control-contract/src/index.js";
25
27
  import { wrapToolsWithProtection } from "./executor.js";
26
28
  import { createDefaultExternalToolGatewayTools } from "../external-tools/index.js";
27
- import { createReadFileTool } from "./read.js";
28
- import { createDataBatchTool } from "./dataBatch.js";
29
29
  import { buildRuntimeEnvironment } from "../../runtime-tools/environment.js";
30
30
  import { skillEnvironmentId } from "../skills/installer.js";
31
+ import { createDataBatchTool } from "./dataBatch.js";
32
+ import { createXopcUseTool } from "./xopc-use-tool.js";
33
+ import { createMcpSetupTool } from "./mcp-setup-tool.js";
34
+ import { createReadFileTool } from "./read.js";
31
35
  import { createWriteFileTool } from "./write.js";
32
36
  import { createListDirTool } from "./list-dir.js";
33
37
  import { createPublishArtifactsTool } from "./publish-artifacts.js";
@@ -59,7 +63,6 @@ import { getActiveTranscriptUserText, getPendingTranscriptUserText } from "../in
59
63
  import { createDelegateTool } from "./delegate-tool.js";
60
64
  import { createAutomationTool } from "./automation-tool.js";
61
65
  import { createBrowserAutomationTool } from "./browser-automation-tool.js";
62
- import { createXopcUseTool } from "./xopc-use-tool.js";
63
66
  import { createSkillViewTool, createSkillsListTool } from "./skills-tools.js";
64
67
  import { createSkillManageTool } from "./skill-manage-tool.js";
65
68
  import { createSkillsMarketplaceSearchTool } from "./skills-marketplace-search-tool.js";
@@ -93,6 +96,7 @@ import { sortToolsForPromptCache } from "./cache-stability.js";
93
96
  init_agent_scope();
94
97
  init_request_repository();
95
98
  init_logger();
99
+ init_session_key();
96
100
  init_paths_state();
97
101
  const log = createLogger("AgentToolsFactory");
98
102
  /** Channels where `clarify` can block for a user answer (web UI, Telegram, CLI readline). */
@@ -324,6 +328,12 @@ var AgentToolsFactory = class AgentToolsFactory {
324
328
  const grep = createGrepTool(workspace);
325
329
  const find = createFindTool(workspace);
326
330
  const productToolDeps = {
331
+ canRequestWeixinMcpSetup: () => {
332
+ const context = this.deps.getCurrentContext();
333
+ if (!context || context.origin.type !== "channel" || context.origin.channel !== "weixin" || context.isGroup) return false;
334
+ const route = getConversationRouting(context.conversationId);
335
+ return route?.accountId === context.metadata?.accountId && route.peerId.toLowerCase() === context.chatId.toLowerCase();
336
+ },
327
337
  canConfigureFromConversation: () => {
328
338
  const origin = this.deps.getCurrentContext()?.origin;
329
339
  return origin?.type === "system" && origin.source === "cli" || origin?.type === "endpoint" && this.deps.canConfigureEndpoint?.(origin.endpointId) === true;
@@ -341,6 +351,7 @@ var AgentToolsFactory = class AgentToolsFactory {
341
351
  getLocalAppService: this.deps.getLocalAppService,
342
352
  getChatPreviewService: this.deps.getChatPreviewService,
343
353
  getBrowserSetupService: this.deps.getBrowserSetupService,
354
+ getMcpSetupService: this.deps.getMcpSetupService,
344
355
  getPhoneSetupService: this.deps.getPhoneSetupService,
345
356
  dispatchTaskEvents: this.deps.dispatchTaskEvents,
346
357
  dispatchTaskRuns: this.deps.dispatchTaskRuns,
@@ -398,7 +409,8 @@ var AgentToolsFactory = class AgentToolsFactory {
398
409
  createSkillManageTool({
399
410
  getSkillManager: getSkillMgr,
400
411
  getWorkspace: () => workspace,
401
- onSkillsFilesystemMutate: this.deps.onSkillsFilesystemMutate
412
+ onSkillsFilesystemMutate: this.deps.onSkillsFilesystemMutate,
413
+ getSkillIndexingContext: this.deps.getSkillIndexingContext
402
414
  })
403
415
  ] : [],
404
416
  createSkillsMarketplaceSearchTool({
@@ -559,26 +571,25 @@ var AgentToolsFactory = class AgentToolsFactory {
559
571
  getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
560
572
  canAccess: () => currentAccess().crossSessionHistory
561
573
  })] : [],
562
- ...this.deps.getAutomationService ? [createAutomationTool({
563
- getCurrentConversationId: () => this.deps.getCurrentContext()?.conversationId,
564
- getAutomationService: this.deps.getAutomationService,
565
- getCurrentAgentId: () => options.agentId,
566
- getProjectService: this.deps.getProjectService
567
- })] : [],
574
+ ...this.deps.getAutomationService ? [createAutomationTool(productToolDeps)] : [],
568
575
  ...browserEnabled && this.deps.getBrowserAutomationService ? [createBrowserAutomationTool({ getBrowserAutomationService: this.deps.getBrowserAutomationService })] : [],
569
- ...this.deps.getPhoneSetupService || this.deps.getBrowserSetupService || this.deps.getAutomationService || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [createXopcUseTool(productToolDeps), ...personalToolsConfigured ? [
570
- createPersonalTaskTool(productToolDeps),
571
- createPersonalReadTool({
572
- ...productToolDeps,
573
- getCurrentConversationId: currentConversationId
574
- }),
575
- createPersonalResultTool(currentConversationId),
576
- ...createPersonalRequestTools(productToolDeps),
577
- createPersonalAttentionTool({
578
- getConversationId: () => this.deps.getCurrentContext()?.conversationId,
579
- getConfig: () => this.deps.getConfig?.()
580
- })
581
- ] : []] : [],
576
+ ...this.deps.getPhoneSetupService || this.deps.getBrowserSetupService || this.deps.getAutomationService || this.deps.getProjectService || this.deps.getNotesService || this.deps.getLocalAppService || this.deps.getChatPreviewService || this.deps.dispatchTaskEvents || this.deps.dispatchTaskRuns ? [
577
+ createXopcUseTool(productToolDeps),
578
+ ...this.deps.getMcpSetupService ? [createMcpSetupTool(productToolDeps)] : [],
579
+ ...personalToolsConfigured ? [
580
+ createPersonalTaskTool(productToolDeps),
581
+ createPersonalReadTool({
582
+ ...productToolDeps,
583
+ getCurrentConversationId: currentConversationId
584
+ }),
585
+ createPersonalResultTool(currentConversationId),
586
+ ...createPersonalRequestTools(productToolDeps),
587
+ createPersonalAttentionTool({
588
+ getConversationId: () => this.deps.getCurrentContext()?.conversationId,
589
+ getConfig: () => this.deps.getConfig?.()
590
+ })
591
+ ] : []
592
+ ] : [],
582
593
  ...cfg?.phone?.enabled || this.deps.getPhoneSetupService ? [createPhoneUseTool({
583
594
  runtime: getPhoneRuntime(),
584
595
  getSetupService: this.deps.getPhoneSetupService,
@@ -1,10 +1,10 @@
1
1
  import { getAgentDefaultImageGenerationModelConfig, init_schema } from "../../config/schema.js";
2
- import { readWorkspaceFile, writeWorkspaceFile } from "../sandbox/fileAccess.js";
3
- import { imageAssetFromDataUrl, imageFileExtensionForMimeType, mimeTypeFromFileName, parseImageDataUrl, sniffImageMimeType } from "../image/generation/image-assets.js";
4
- import { persistToolMedia } from "./tool-media.js";
5
2
  import { buildCapabilityPlansForConfig } from "../../capabilities/readiness/from-config.js";
6
3
  import "../../capabilities/readiness/index.js";
7
4
  import { applyImageGenerationModelConfigDefaults } from "../image/image-helpers.js";
5
+ import { readWorkspaceFile, writeWorkspaceFile } from "../sandbox/fileAccess.js";
6
+ import { imageAssetFromDataUrl, imageFileExtensionForMimeType, mimeTypeFromFileName, parseImageDataUrl, sniffImageMimeType } from "../image/generation/image-assets.js";
7
+ import { persistToolMedia } from "./tool-media.js";
8
8
  import { isFailoverError } from "../failover-error.js";
9
9
  import { getImageGenerationProvider } from "../image/generation/provider-registry.js";
10
10
  import { generateImage, listImageGenerationProvidersSummary } from "../image/generation/runtime.js";
@@ -1,3 +1,4 @@
1
+ export { createMcpSetupTool } from './mcp-setup-tool.js';
1
2
  export { getToolMetadata, DEFAULT_TOOL_METADATA, type AgentToolWithMetadata, type ToolMutationScope, type ToolVerificationKind, type XopcToolMetadata, } from './metadata.js';
2
3
  export { ToolConcurrencyController, resolveToolLockMode, type ToolLockMode, } from './concurrency.js';
3
4
  export { createReadFileTool, type CreateReadFileToolOptions } from './read.js';
@@ -1,8 +1,11 @@
1
1
  import { DEFAULT_TOOL_METADATA, getToolMetadata } from "./metadata.js";
2
2
  import { ToolConcurrencyController, resolveToolLockMode } from "./concurrency.js";
3
+ import { resolveImageModelConfigForTool } from "../image/tool-model-config.js";
4
+ import { createDataBatchTool } from "./dataBatch.js";
5
+ import { createXopcUseTool } from "./xopc-use-tool.js";
6
+ import { createMcpSetupTool } from "./mcp-setup-tool.js";
3
7
  import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, GREP_MAX_LINE_LENGTH, formatSize, truncateHead, truncateLine, truncateTail } from "./truncate.js";
4
8
  import { createReadFileTool } from "./read.js";
5
- import { createDataBatchTool } from "./dataBatch.js";
6
9
  import { createWriteFileTool, writeFileTool } from "./write.js";
7
10
  import { createListDirTool, listDirTool } from "./list-dir.js";
8
11
  import { createPublishArtifactsTool } from "./publish-artifacts.js";
@@ -30,11 +33,9 @@ import { createClarifyTool } from "./clarify-tool.js";
30
33
  import { assertBrowserUrlAllowed } from "../../browser/url-policy.js";
31
34
  import { BrowserRuntime } from "../../browser/runtime/browser-runtime.js";
32
35
  import "../../browser/index.js";
33
- import { resolveImageModelConfigForTool } from "../image/tool-model-config.js";
34
36
  import { DEFAULT_DELEGATE_TOOLS, DELEGATE_BLOCKED_TOOLS, createDelegateTool } from "./delegate-tool.js";
35
37
  import { createAutomationTool } from "./automation-tool.js";
36
38
  import { createBrowserAutomationTool } from "./browser-automation-tool.js";
37
- import { createXopcUseTool } from "./xopc-use-tool.js";
38
39
  import { createSkillViewTool, createSkillsListTool } from "./skills-tools.js";
39
40
  import { createSkillManageTool } from "./skill-manage-tool.js";
40
41
  import { createSkillsMarketplaceSearchTool } from "./skills-marketplace-search-tool.js";
@@ -46,4 +47,4 @@ import { createImageTool } from "./image-tool.js";
46
47
  import { createImageGenerateTool, resolveImageGenerationModelConfigForTool } from "./image-generate-tool.js";
47
48
  import { createPersonalReadTool } from "./personal-read-tool.js";
48
49
  import { createTaskCollaborationTool } from "./task-collaboration-tool.js";
49
- export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTaskCollaborationTool, createTaskResultTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
50
+ export { BrowserRuntime, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserAutomationTool, createClarifyTool, createCreateShareTool, createDataBatchTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeReadTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMcpSetupTool, createMemoryMaintenanceTool, createMessageTool, createPersonalReadTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTaskCollaborationTool, createTaskResultTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextReadTool, createUserContextSearchTool, createUserContextUpdateTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
@@ -0,0 +1,9 @@
1
+ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ import { type XopcUseToolDeps } from './xopc-use-tool.js';
3
+ declare const schema: import("@sinclair/typebox").TObject<{
4
+ command: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<string>[]>;
5
+ args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>>;
6
+ }>;
7
+ /** Small eager entry point; the existing product adapter owns authority and execution. */
8
+ export declare function createMcpSetupTool(deps: XopcUseToolDeps): AgentTool<typeof schema, Record<string, unknown>>;
9
+ export {};
@@ -0,0 +1,32 @@
1
+ import { createXopcUseTool } from "./xopc-use-tool.js";
2
+ import { Type } from "@sinclair/typebox";
3
+ //#region src/agent/tools/mcp-setup-tool.ts
4
+ const schema = Type.Object({
5
+ command: Type.Union([
6
+ "inspect",
7
+ "start",
8
+ "get",
9
+ "advance",
10
+ "cancel",
11
+ "set_enabled",
12
+ "remove"
13
+ ].map((value) => Type.Literal(value))),
14
+ args: Type.Optional(Type.Record(Type.String(), Type.Any(), { description: "inspect: {}. start: {serverId,url,purpose,displayName?,expectedRevision?}; derive an ASCII serverId if the user gave none. get: {setupId}. advance/cancel: {setupId,expectedVersion}. set_enabled/remove: {serverId,expectedRevision,enabled?}. Never include credentials." }))
15
+ });
16
+ /** Small eager entry point; the existing product adapter owns authority and execution. */
17
+ function createMcpSetupTool(deps) {
18
+ const product = createXopcUseTool(deps);
19
+ return {
20
+ name: "mcp_setup",
21
+ label: "Connect MCP service",
22
+ parameters: schema,
23
+ description: "Configure a user-requested HTTP MCP service on the Gateway host, including user-provided localhost/127.0.0.1 addresses. Probe before claiming an address is unreachable. A clear request authorizes that specific local connection/change/removal; do not ask again. In a paired Weixin private chat, start proposes a specific owner-approved connection; global inspect is unavailable there. Otherwise inspect existing connections; start then advance with the returned version. Token/OAuth uses the trusted interactionPath, never chat input. The host resumes the original objective when ready. Read tool_manual xopc_use topic mcp for details. Connection success is not a business read.",
24
+ execute: (id, params, signal, update) => product.execute(id, {
25
+ mode: "mcp_setup",
26
+ command: params.command,
27
+ args: params.args
28
+ }, signal, update)
29
+ };
30
+ }
31
+ //#endregion
32
+ export { createMcpSetupTool };
@@ -12,10 +12,10 @@ import { TaskAllocationRepository } from "../../tasks/task-allocation-repository
12
12
  import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js";
13
13
  import { TaskOriginRepository } from "../../tasks/task-origin-repository.js";
14
14
  import { boundedPersonalResult } from "./personal-result-budget.js";
15
- import { TaskCollaborationRepository } from "../../tasks/task-collaboration-repository.js";
16
- import "../../personal-agent/communication.js";
17
15
  import { parseTaskHandoffReferences } from "../../tasks/task-handoff.js";
16
+ import { TaskCollaborationRepository } from "../../tasks/task-collaboration-repository.js";
18
17
  import { TaskApplicationService } from "../../tasks/task-application-service.js";
18
+ import "../../personal-agent/communication.js";
19
19
  import { getAvailablePersonalAgentTools, personalAgentModelAvailability } from "../../personal-agent/specialist-capabilities.js";
20
20
  import { assessSpecialist, matchSpecialists } from "../../agent-matching/service.js";
21
21
  import { createXopcUseTool } from "./xopc-use-tool.js";
@@ -1,9 +1,9 @@
1
1
  import { turnOutcomeKindFromFileName, turnOutcomeMimeTypeFromFileName } from "../../../packages/gateway-contract/src/turn-outcome.js";
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
+ import { fileResourceId, fileSpaceId } from "../../files/file-service.js";
3
4
  import { evaluateFilePolicy } from "../sandbox/exec-policy.js";
4
5
  import { readWorkspaceFile } from "../sandbox/fileAccess.js";
5
6
  import { resolvePathUnderWorkspace } from "./tool-paths.js";
6
- import { fileResourceId, fileSpaceId } from "../../files/file-service.js";
7
7
  import { persistToolMedia } from "./tool-media.js";
8
8
  import { basename, isAbsolute, relative, sep } from "node:path";
9
9
  import { Type } from "@sinclair/typebox";
@@ -1,6 +1,6 @@
1
1
  import { checkedFilePath, readWorkspaceFileAsync } from "../sandbox/fileAccess.js";
2
- import { dataScheduler } from "../data-acquisition/scheduler.js";
3
2
  import { checkFileSafety } from "../prompt/safety.js";
3
+ import { dataScheduler } from "../data-acquisition/scheduler.js";
4
4
  import { formatSize, truncateHead } from "./truncate.js";
5
5
  import { isBareProfileMarkdownFileName, resolvePathUnderWorkspace, resolveProfileMarkdownPathIfBareName } from "./tool-paths.js";
6
6
  import { stat } from "fs/promises";
@@ -1,7 +1,16 @@
1
+ import { init_connection, isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
2
+ import { DurableState } from "../../storage/sqlite/durable-state.js";
1
3
  import { isSkillInstallTarget } from "../skills/install-target.js";
4
+ import { createHash } from "node:crypto";
2
5
  import { Type } from "@sinclair/typebox";
3
6
  //#region src/agent/tools/skill-install-tool.ts
7
+ init_connection();
4
8
  const SkillInstallSchema = Type.Object({
9
+ idempotencyKey: Type.Optional(Type.String({
10
+ minLength: 1,
11
+ maxLength: 200,
12
+ description: "Stable installation intent key. Keep the same key after a timeout; use a new key for a new install/update request."
13
+ })),
5
14
  source: Type.Optional(Type.String({ description: "Explicit source install: Git URL, GitHub repository URL, https .zip/.tar.gz URL, file:// URL, or local archive/path." })),
6
15
  provider: Type.Optional(Type.Union([
7
16
  Type.Literal("store"),
@@ -21,7 +30,7 @@ function clean(value) {
21
30
  return typeof value === "string" && value.trim() ? value.trim() : void 0;
22
31
  }
23
32
  function createSkillInstallTool(deps) {
24
- return {
33
+ const tool = {
25
34
  name: "skill_install",
26
35
  label: "Install skill",
27
36
  description: "Install an xopc skill from a Store/SkillHub/ClawHub marketplace result or an explicit source. Use only when the user clearly asks to install or update a skill; never treat search or a pasted URL as installation consent.",
@@ -146,6 +155,52 @@ function createSkillInstallTool(deps) {
146
155
  idempotent: false,
147
156
  finalGuardRelevant: true
148
157
  };
158
+ const execute = tool.execute.bind(tool);
159
+ tool.execute = async (callId, params, signal, update) => {
160
+ if (!isXopcDatabaseOpen() || !deps.getConversationId?.()) return execute(callId, params, signal, update);
161
+ const key = clean(params.idempotencyKey) ?? callId;
162
+ const input = {
163
+ source: clean(params.source),
164
+ provider: clean(params.provider),
165
+ name: clean(params.name),
166
+ version: clean(params.version),
167
+ ref: clean(params.ref),
168
+ path: clean(params.path),
169
+ skillId: clean(params.skillId),
170
+ target: isSkillInstallTarget(params.target) ? params.target : "global",
171
+ force: params.force === true,
172
+ strictScan: params.strictScan === true
173
+ };
174
+ const fingerprint = createHash("sha256").update(JSON.stringify(input)).digest("hex");
175
+ const receipts = new DurableState("skills.install", deps.getConversationId());
176
+ const previous = receipts.update(key, (value) => ({
177
+ value: value ?? { fingerprint },
178
+ result: value
179
+ }));
180
+ if (previous) {
181
+ if (previous.fingerprint !== fingerprint) return {
182
+ content: [{
183
+ type: "text",
184
+ text: "Installation intent key was already used with different parameters."
185
+ }],
186
+ details: { errorCode: "intent_conflict" }
187
+ };
188
+ return previous.result ?? {
189
+ content: [{
190
+ type: "text",
191
+ text: "Installation result is not yet known. Inspect skill_manage status before taking further action; do not blindly reinstall or overwrite."
192
+ }],
193
+ details: { errorCode: "install_unknown" }
194
+ };
195
+ }
196
+ const result = await execute(callId, params, signal, update);
197
+ receipts.set(key, {
198
+ fingerprint,
199
+ result
200
+ });
201
+ return result;
202
+ };
203
+ return tool;
149
204
  }
150
205
  //#endregion
151
206
  export { createSkillInstallTool };
@@ -4,5 +4,9 @@ export interface SkillManageToolDeps {
4
4
  getSkillManager: () => SkillManager | undefined;
5
5
  getWorkspace: () => string;
6
6
  onSkillsFilesystemMutate?: () => void;
7
+ getSkillIndexingContext?: () => {
8
+ registeredToolNames: string[];
9
+ skillAllowlist?: string[];
10
+ } | undefined;
7
11
  }
8
12
  export declare function createSkillManageTool(deps: SkillManageToolDeps): AgentTool;
@@ -1,6 +1,9 @@
1
1
  import { resolveStateDir } from "../../config/paths-state.js";
2
2
  import { init_paths } from "../../config/paths.js";
3
- import { createSkillConfigManager } from "../skills/config.js";
3
+ import { removeSkillsLockEntry } from "../skills/hub-lock.js";
4
+ import { hasBinary } from "../skills/installer.js";
5
+ import { createSkillConfigManager, getSkillEnvironment, isSkillEnabled, resolveSkillConfig } from "../skills/config.js";
6
+ import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "../skills/workspace-skills-dir.js";
4
7
  import { applyPatchToContent, atomicWriteUtf8, effectiveAgentWritePolicy, ensureCategorySegment, isPathInsideDir, maxSkillMdChars, maxSupportFileBytes, mutatableSkillOrNull, resolveCreateSkillDir, scanSkillDirOrError, validateSkillMdContent, validateSkillNameSegment, validateSupportingRelativePath } from "../skills/skill-manage-ops.js";
5
8
  import { join } from "path";
6
9
  import { existsSync, rmSync } from "fs";
@@ -10,6 +13,9 @@ import { Type } from "@sinclair/typebox";
10
13
  init_paths();
11
14
  const SkillManageSchema = Type.Object({
12
15
  action: Type.Union([
16
+ Type.Literal("status"),
17
+ Type.Literal("enable"),
18
+ Type.Literal("disable"),
13
19
  Type.Literal("create"),
14
20
  Type.Literal("edit"),
15
21
  Type.Literal("patch"),
@@ -40,7 +46,7 @@ function createSkillManageTool(deps) {
40
46
  return {
41
47
  name: "skill_manage",
42
48
  label: "🛠️ Skill",
43
- description: "Create, edit, patch, or delete user skills under ~/.xopc/skills and/or workspace .xopc/skills/ (see skills.agentWritePolicy). Also write_file / remove_file under references/, templates/, scripts/, assets/. Bundled and extra-dir skills cannot be modified. Runs a security scan after writes.",
49
+ description: "Inspect installed skills with status (including disabled skills and current Agent availability); enable or disable by name. Create, edit, patch, or delete/uninstall user skills under ~/.xopc/skills and/or workspace .xopc/skills/ (see skills.agentWritePolicy). Also write_file / remove_file under references/, templates/, scripts/, assets/. Bundled and extra-dir skills cannot be modified. Runs a security scan after writes.",
44
50
  parameters: SkillManageSchema,
45
51
  async execute(_toolCallId, params) {
46
52
  const mgr = deps.getSkillManager();
@@ -56,6 +62,71 @@ function createSkillManageTool(deps) {
56
62
  const notify = () => deps.onSkillsFilesystemMutate?.();
57
63
  try {
58
64
  switch (params.action) {
65
+ case "status":
66
+ case "enable":
67
+ case "disable": {
68
+ const requested = params.name?.trim();
69
+ if (params.action !== "status" && !requested) return jsonResult({
70
+ success: false,
71
+ error: "name is required."
72
+ });
73
+ const skill = requested ? mgr.findSkill(requested) : void 0;
74
+ if (requested && !skill) return jsonResult({
75
+ success: false,
76
+ error: "Skill is not installed.",
77
+ errorCode: "skill_not_found"
78
+ });
79
+ if (params.action !== "status") {
80
+ const enabled = params.action === "enable";
81
+ const manager = createSkillConfigManager(resolveStateDir());
82
+ manager.setSkillEnabled(requested, enabled);
83
+ if (manager.load().entries?.[requested]?.enabled !== enabled) return jsonResult({
84
+ success: false,
85
+ error: "Skill enabled state could not be saved."
86
+ });
87
+ mgr.refreshPromptFromConfig();
88
+ notify();
89
+ }
90
+ const config = createSkillConfigManager(resolveStateDir()).load();
91
+ const indexing = deps.getSkillIndexingContext?.();
92
+ const canLoad = !indexing || indexing.registeredToolNames.includes("skill_view");
93
+ const visible = new Set(canLoad ? mgr.getEnabledSkillsForAgentSession(indexing).map((item) => item.name) : []);
94
+ return jsonResult({
95
+ success: true,
96
+ skills: (skill ? [skill] : mgr.getSkills()).map((item) => {
97
+ const enabled = resolveSkillConfig(item, config).enabled !== false;
98
+ const requires = item.metadata.xopc?.requires ?? item.metadata.requires;
99
+ const environment = getSkillEnvironment(item, config);
100
+ const missingEnv = requires?.env?.filter((name) => !environment[name]) ?? [];
101
+ const anyBinsMissing = Boolean(requires?.anyBins?.length && !requires.anyBins.some(hasBinary));
102
+ const requirementsMet = !missingEnv.length && !anyBinsMissing && isSkillEnabled(item, {
103
+ ...config,
104
+ entries: {
105
+ ...config.entries,
106
+ [item.name]: {
107
+ ...config.entries?.[item.name],
108
+ enabled: true
109
+ }
110
+ }
111
+ });
112
+ return {
113
+ name: item.name,
114
+ description: item.description,
115
+ source: item.source,
116
+ managed: item.origin?.managed === true,
117
+ writable: Boolean(mutatableSkillOrNull(item, workspace, policy)),
118
+ enabled,
119
+ requirementsMet,
120
+ missingEnv,
121
+ availableToCurrentAgent: requirementsMet && visible.has(item.name),
122
+ state: !enabled ? "disabled" : !requirementsMet ? "requirements_unmet" : !visible.has(item.name) ? "agent_unavailable" : "ready",
123
+ verified: false
124
+ };
125
+ }),
126
+ managementPath: "/capabilities/skills?tab=installed",
127
+ guidance: "Ready means the current Agent can load the skill, not that a task has been tested. After installation, load skill_view and complete the requested task; explain relevant examples and any remaining requirements. Enabling is shared by skill name."
128
+ });
129
+ }
59
130
  case "create": {
60
131
  const nameErr = validateSkillNameSegment(params.name ?? "", "name");
61
132
  if (nameErr) return jsonResult({
@@ -246,6 +317,7 @@ function createSkillManageTool(deps) {
246
317
  recursive: true,
247
318
  force: true
248
319
  });
320
+ removeSkillsLockEntry(name, isPathInsideDir(resolveWorkspaceSkillsDir(workspace), sk.baseDir) ? resolveWorkspaceSkillsLockPath(workspace) : void 0);
249
321
  notify();
250
322
  return jsonResult({
251
323
  success: true,
@@ -1,7 +1,7 @@
1
1
  import { resolveStateDir } from "../../config/paths-state.js";
2
2
  import { init_paths } from "../../config/paths.js";
3
- import { DEFAULT_MAX_BYTES, formatSize, truncateHead } from "./truncate.js";
4
3
  import { createSkillConfigManager, isSkillEnabled, resolveSkillConfig } from "../skills/config.js";
4
+ import { DEFAULT_MAX_BYTES, formatSize, truncateHead } from "./truncate.js";
5
5
  import { resolveSkillReadablePath } from "../skills/skill-view-path.js";
6
6
  import { readFileSync, statSync } from "fs";
7
7
  import { Type } from "@sinclair/typebox";
@@ -8,9 +8,9 @@ import { init_session_repository } from "../../storage/sqlite/session-repository
8
8
  import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js";
9
9
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
10
10
  import { getEmbeddedExecutionSession } from "../embedded/execution-context.js";
11
+ import { assertTaskHandoffAccess, assertTaskHandoffExecutorAccess, getTaskHandoff, materializeTaskHandoffFile, readTaskHandoffSource } from "../../tasks/task-handoff.js";
11
12
  import { TaskCollaborationRepository } from "../../tasks/task-collaboration-repository.js";
12
13
  import { taskResearchEvidence } from "../../tasks/task-research-result.js";
13
- import { assertTaskHandoffAccess, assertTaskHandoffExecutorAccess, getTaskHandoff, materializeTaskHandoffFile, readTaskHandoffSource } from "../../tasks/task-handoff.js";
14
14
  import { createXopcUseTool } from "./xopc-use-tool.js";
15
15
  import { Type } from "@sinclair/typebox";
16
16
  //#region src/agent/tools/task-collaboration-tool.ts
@@ -1,7 +1,7 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
2
  declare const ToolManualSchema: import("@sinclair/typebox").TObject<{
3
3
  tool: import("@sinclair/typebox").TString;
4
- topic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"connections">, import("@sinclair/typebox").TLiteral<"browser_setup">, import("@sinclair/typebox").TLiteral<"phone_setup">]>>;
4
+ topic: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"mcp">, import("@sinclair/typebox").TLiteral<"skills">, import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"connections">, import("@sinclair/typebox").TLiteral<"browser_setup">, import("@sinclair/typebox").TLiteral<"phone_setup">]>>;
5
5
  }>;
6
6
  export declare function createToolManualTool(): AgentTool<typeof ToolManualSchema, {}>;
7
7
  export {};
@@ -5,13 +5,15 @@ import { Type } from "@sinclair/typebox";
5
5
  const ToolManualSchema = Type.Object({
6
6
  tool: Type.String({ description: "Built-in tool name, e.g. browser_use" }),
7
7
  topic: Type.Optional(Type.Union([
8
+ Type.Literal("mcp"),
9
+ Type.Literal("skills"),
8
10
  Type.Literal("agent"),
9
11
  Type.Literal("settings"),
10
12
  Type.Literal("automation"),
11
13
  Type.Literal("connections"),
12
14
  Type.Literal("browser_setup"),
13
15
  Type.Literal("phone_setup")
14
- ], { description: "Focused xopc_use workflow; omit for the full parameter manual." }))
16
+ ], { description: "Focused product workflow; omit for the full parameter manual." }))
15
17
  });
16
18
  function createToolManualTool() {
17
19
  return {
@@ -12,6 +12,8 @@ const EAGER_CORE_TOOLS = new Set([
12
12
  "skill_view",
13
13
  "skills_list",
14
14
  "tool_manual",
15
+ "mcp_setup",
16
+ "automation",
15
17
  "publish_artifacts",
16
18
  "task_collaboration",
17
19
  "publish_task_result"
@@ -1,9 +1,9 @@
1
1
  import { appendProductDeliveryText } from "../../../packages/gateway-contract/src/product-delivery.js";
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
+ import { fileResourceId, fileSpaceId } from "../../files/file-service.js";
3
4
  import { writeWorkspaceFile } from "../sandbox/fileAccess.js";
4
5
  import { checkFileSafety } from "../prompt/safety.js";
5
6
  import { isBareProfileMarkdownFileName, resolvePathUnderWorkspace, resolveProfileMarkdownPathIfBareName } from "./tool-paths.js";
6
- import { fileResourceId, fileSpaceId } from "../../files/file-service.js";
7
7
  import { basename, relative, sep } from "path";
8
8
  import { realpath } from "fs/promises";
9
9
  import { Type } from "@sinclair/typebox";
@@ -9,12 +9,12 @@ import type { LocalAppService } from '../../local-apps/index.js';
9
9
  import type { ChatPreviewService } from '../../chat-previews/index.js';
10
10
  import { TaskApplicationService } from '../../tasks/task-application-service.js';
11
11
  declare const XopcUseToolSchema: import("@sinclair/typebox").TObject<{
12
- mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"context">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"note">, import("@sinclair/typebox").TLiteral<"task">, import("@sinclair/typebox").TLiteral<"task_run">, import("@sinclair/typebox").TLiteral<"local_app">, import("@sinclair/typebox").TLiteral<"chat_preview">, import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"browser_setup">, import("@sinclair/typebox").TLiteral<"phone_setup">]>;
12
+ mode: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"context">, import("@sinclair/typebox").TLiteral<"project">, import("@sinclair/typebox").TLiteral<"automation">, import("@sinclair/typebox").TLiteral<"note">, import("@sinclair/typebox").TLiteral<"task">, import("@sinclair/typebox").TLiteral<"task_run">, import("@sinclair/typebox").TLiteral<"local_app">, import("@sinclair/typebox").TLiteral<"chat_preview">, import("@sinclair/typebox").TLiteral<"agent">, import("@sinclair/typebox").TLiteral<"settings">, import("@sinclair/typebox").TLiteral<"browser_setup">, import("@sinclair/typebox").TLiteral<"phone_setup">, import("@sinclair/typebox").TLiteral<"mcp_setup">]>;
13
13
  command: import("@sinclair/typebox").TString;
14
14
  args: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TRecord<import("@sinclair/typebox").TString, import("@sinclair/typebox").TAny>>;
15
15
  dryRun: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
16
16
  }>;
17
- export type XopcUseMode = 'context' | 'project' | 'automation' | 'note' | 'task' | 'task_run' | 'chat_preview' | 'local_app' | 'agent' | 'settings' | 'browser_setup' | 'phone_setup';
17
+ export type XopcUseMode = 'context' | 'project' | 'automation' | 'note' | 'task' | 'task_run' | 'chat_preview' | 'local_app' | 'agent' | 'settings' | 'browser_setup' | 'phone_setup' | 'mcp_setup';
18
18
  export interface XopcUseToolInput {
19
19
  mode: XopcUseMode;
20
20
  command: string;
@@ -23,8 +23,10 @@ export interface XopcUseToolInput {
23
23
  }
24
24
  export interface XopcUseToolDeps {
25
25
  canConfigureFromConversation?: () => boolean;
26
+ canRequestWeixinMcpSetup?: () => boolean;
26
27
  getPhoneSetupService?: () => import('../../phone/setup/service.js').PhoneSetupService | undefined;
27
28
  getBrowserSetupService?: () => import('../../browser/setup/service.js').BrowserSetupService | undefined;
29
+ getMcpSetupService?: () => import('../mcp/conversation-setup.js').McpConversationSetup | undefined;
28
30
  authorizeCapability?: CapabilityContext['authorize'];
29
31
  getWorkspace?: () => string;
30
32
  getConfig?: () => Config | undefined;