@xopcai/xopc 0.0.425 → 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 (448) 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/{activity-store-CMw8qBuC.js → activity-store-D_DXNHba.js} +1 -1
  21. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-JI0YWOIm.js → agent-avatar-dicebear-CjaQxFQt.js} +1 -1
  22. package/dist/gateway/static/root/assets/{agent-avatar-display-YqmwzOSa.js → agent-avatar-display-6Z4m31Fz.js} +2 -2
  23. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D4ClP_DJ.js +1 -0
  24. package/dist/gateway/static/root/assets/agent-plugin-dialog-m1A8wF9p.js +1 -0
  25. package/dist/gateway/static/root/assets/agents-B9slUA_1.js +77 -0
  26. package/dist/gateway/static/root/assets/{agents-admin-api-DLnmdC1h.js → agents-admin-api-u5c3GREg.js} +1 -1
  27. package/dist/gateway/static/root/assets/{api-Boc-CVh7.js → api-C3Tp9MkF.js} +1 -1
  28. package/dist/gateway/static/root/assets/{api-bL7sxjAF.js → api-CRT9ZyH0.js} +1 -1
  29. package/dist/gateway/static/root/assets/app-link-DRy3-k7j.js +1 -0
  30. package/dist/gateway/static/root/assets/{app-management-settings-panel-jIG5i7KE.js → app-management-settings-panel-XqoIBF2H.js} +1 -1
  31. package/dist/gateway/static/root/assets/{appearance-settings-BnaQW9Xd.js → appearance-settings-9ZtqCASo.js} +1 -1
  32. package/dist/gateway/static/root/assets/apps-page-DUeu_7iC.js +1 -0
  33. package/dist/gateway/static/root/assets/{archive-plugin-DjboG3kA.js → archive-plugin-BCQnOkV8.js} +1 -1
  34. package/dist/gateway/static/root/assets/attachment-load-DrVGNxJm.js +1 -0
  35. package/dist/gateway/static/root/assets/{automation-api-CZqL9l_d.js → automation-api-hRsGx-qe.js} +1 -1
  36. package/dist/gateway/static/root/assets/{automation-result-state-DRd-X_Ai.js → automation-result-state-CMfVTv_i.js} +1 -1
  37. package/dist/gateway/static/root/assets/automation-task-card-Bur78p68.js +3 -0
  38. package/dist/gateway/static/root/assets/{automations-page-HyBQIfmn.js → automations-page-DMIyWsP0.js} +1 -1
  39. package/dist/gateway/static/root/assets/automations-workspace-DEkDjxeU.js +9 -0
  40. package/dist/gateway/static/root/assets/{binary-plugins-Bg8ARZUH.js → binary-plugins-CIB5cbvQ.js} +1 -1
  41. package/dist/gateway/static/root/assets/{block-editor-DKohqFAW.js → block-editor-CXdlNAmZ.js} +2 -2
  42. package/dist/gateway/static/root/assets/{browser-automation-inputs-YeibTzw4.js → browser-automation-inputs-Fxo7HbK6.js} +1 -1
  43. package/dist/gateway/static/root/assets/{browser-automations-page-BWNcbuz2.js → browser-automations-page-Dn3LN5wo.js} +2 -2
  44. package/dist/gateway/static/root/assets/{browser-control-api-CDeuxy2x.js → browser-control-api-CbbPvhHR.js} +1 -1
  45. package/dist/gateway/static/root/assets/browser-settings-page-Cpm9fEPV.js +3 -0
  46. package/dist/gateway/static/root/assets/{button-CnRSIP6m.js → button-Cc4hUNTt.js} +1 -1
  47. package/dist/gateway/static/root/assets/{capabilities-BcQa8c9n.js → capabilities-BEvywfF9.js} +1 -1
  48. package/dist/gateway/static/root/assets/capabilities-Bo2qEJhH.js +1 -0
  49. package/dist/gateway/static/root/assets/capabilities-page-BCzsIzvC.js +2 -0
  50. package/dist/gateway/static/root/assets/capabilities-settings-panel-Cr67ziwX.js +8 -0
  51. package/dist/gateway/static/root/assets/{capability-header-actions-CTUCuBlW.js → capability-header-actions-BxMYfQ8y.js} +1 -1
  52. package/dist/gateway/static/root/assets/channels-CA5z5dGY.js +1 -0
  53. package/dist/gateway/static/root/assets/{chat-agents-api-B8JO6Tcj.js → chat-agents-api-D8YS5amE.js} +1 -1
  54. package/dist/gateway/static/root/assets/{chat-chart-block-DRtuFfF1.js → chat-chart-block-B39npsXj.js} +1 -1
  55. package/dist/gateway/static/root/assets/chat-page-D92AWJbh.js +72 -0
  56. package/dist/gateway/static/root/assets/{chat-terminal-dock-Dkqq5FSL.js → chat-terminal-dock-DjFnElAM.js} +2 -2
  57. package/dist/gateway/static/root/assets/{command-palette-api-qujvNqkK.js → command-palette-api-Dijix7V6.js} +1 -1
  58. package/dist/gateway/static/root/assets/composer-payload-handoff-BQXlFKf4.js +1 -0
  59. package/dist/gateway/static/root/assets/{computer-settings-page-8q4hRmoo.js → computer-settings-page-MkqyKyf3.js} +1 -1
  60. package/dist/gateway/static/root/assets/confirm-dialog-D7dQJytv.js +1 -0
  61. package/dist/gateway/static/root/assets/connected-providers-grid-BSvKP2u-.js +1 -0
  62. package/dist/gateway/static/root/assets/{connector-service-page-DQaTI21R.js → connector-service-page-DlIl9bLx.js} +1 -1
  63. package/dist/gateway/static/root/assets/{connectors-api-BjypBp2g.js → connectors-api-DEJU8mgn.js} +1 -1
  64. package/dist/gateway/static/root/assets/connectors-page-Vx8-MY0Y.js +1 -0
  65. package/dist/gateway/static/root/assets/{copy-text-row-CYIv7RfP.js → copy-text-row-CpiRzq4G.js} +1 -1
  66. package/dist/gateway/static/root/assets/{date-picker-D_PSHGpe.js → date-picker-BIfjfOTM.js} +1 -1
  67. package/dist/gateway/static/root/assets/dependency-picker-XjPB8FJS.js +1 -0
  68. package/dist/gateway/static/root/assets/{desktop-pet-1Et9VqkM.js → desktop-pet-DFNehTtd.js} +1 -1
  69. package/dist/gateway/static/root/assets/{desktop-pet-narrative-rADKU0FX.js → desktop-pet-narrative-ChwjpnsG.js} +1 -1
  70. package/dist/gateway/static/root/assets/{desktop-pet-settings-0fCGgaG7.js → desktop-pet-settings-BDjsFown.js} +1 -1
  71. package/dist/gateway/static/root/assets/{dev-view-store-TTj_djD8.js → dev-view-store-CeZZLOc6.js} +1 -1
  72. package/dist/gateway/static/root/assets/device-pairing-wizard-DH_uJ698.js +1 -0
  73. package/dist/gateway/static/root/assets/{directory-picker-path-field-C07a7wYX.js → directory-picker-path-field-DiZXY7jF.js} +1 -1
  74. package/dist/gateway/static/root/assets/{discussion-annotation-sync-BFqKm9ky.js → discussion-annotation-sync-BXqNuZnx.js} +1 -1
  75. package/dist/gateway/static/root/assets/dist-BGTk37IG.js +1 -0
  76. package/dist/gateway/static/root/assets/dist-BuHnPloF.js +1 -0
  77. package/dist/gateway/static/root/assets/dist-GJ8-1PAx.js +1 -0
  78. package/dist/gateway/static/root/assets/dist-ZrL34Ps4.js +1 -0
  79. package/dist/gateway/static/root/assets/{extension-debug-page-DFaVlqas.js → extension-debug-page-myQqsol2.js} +1 -1
  80. package/dist/gateway/static/root/assets/{extension-iframe-host-BfzPfXBq.js → extension-iframe-host-DaL-OcTw.js} +1 -1
  81. package/dist/gateway/static/root/assets/{extension-marketplace-api-ow0K1Y4_.js → extension-marketplace-api-DRBszrCR.js} +1 -1
  82. package/dist/gateway/static/root/assets/{extension-page-CrDADV5W.js → extension-page-DvlGhZLa.js} +1 -1
  83. package/dist/gateway/static/root/assets/{extension-provider-mnRoa63o.js → extension-provider-fOi6V6Cr.js} +1 -1
  84. package/dist/gateway/static/root/assets/{extension-settings-page-BLl02GFY.js → extension-settings-page-DOGlQpkx.js} +1 -1
  85. package/dist/gateway/static/root/assets/{file-preview-surface-TGdKqhCf.js → file-preview-surface-DfkXvFnc.js} +1 -1
  86. package/dist/gateway/static/root/assets/{gateway-config-swr-DfPQIHOL.js → gateway-config-swr-BOCt_zOo.js} +1 -1
  87. package/dist/gateway/static/root/assets/{gateway-realtime-67vWg_M2.js → gateway-realtime-BL_Cf0OQ.js} +1 -1
  88. package/dist/gateway/static/root/assets/gateway-realtime-store-BHBOPF_q.js +1 -0
  89. package/dist/gateway/static/root/assets/{gateway-restart-CLtR2wkL.js → gateway-restart-CHf8qY7H.js} +1 -1
  90. package/dist/gateway/static/root/assets/{gateway-settings-COvC3r-l.js → gateway-settings-Di41peSM.js} +1 -1
  91. package/dist/gateway/static/root/assets/{gateway-startup-retry-9YQllbw2.js → gateway-startup-retry-CvkJYurV.js} +1 -1
  92. package/dist/gateway/static/root/assets/{global-defaults-api-DYMRjGvd.js → global-defaults-api-BWMbKu72.js} +1 -1
  93. package/dist/gateway/static/root/assets/home-page-B3sgqrl3.js +2 -0
  94. package/dist/gateway/static/root/assets/{image-generation-api-Dzydfvy8.js → image-generation-api-Ce-IY7Ug.js} +1 -1
  95. package/dist/gateway/static/root/assets/{imports-page-Csd_YZXZ.js → imports-page-W7_cDbxy.js} +1 -1
  96. package/dist/gateway/static/root/assets/index-D4B6O8B3.js +11 -0
  97. package/dist/gateway/static/root/assets/index-DGWBJDAM.css +1 -0
  98. package/dist/gateway/static/root/assets/install-connector-dialog-DWVl9ekV.js +1 -0
  99. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-B201bMIa.js → keyboard-shortcuts-settings-Doyu0Q9e.js} +1 -1
  100. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +1 -0
  101. package/dist/gateway/static/root/assets/local-app-workbench-page-B3h3P6aI.js +1 -0
  102. package/dist/gateway/static/root/assets/{local-apps-page-BOwqNH0L.js → local-apps-page-D6D2bZGW.js} +1 -1
  103. package/dist/gateway/static/root/assets/{local-session-drafts-DjmK-SM9.js → local-session-drafts-BJ1B1dQ7.js} +1 -1
  104. package/dist/gateway/static/root/assets/{locale-store-Bg_XR36n.js → locale-store-Br7IfbXK.js} +1 -1
  105. package/dist/gateway/static/root/assets/{logs-page-gw3E9CMQ.js → logs-page-qiXos_12.js} +2 -2
  106. package/dist/gateway/static/root/assets/management-settings-C0WcSdK7.js +1 -0
  107. package/dist/gateway/static/root/assets/{markdown-view-BUpXJUPv.js → markdown-view-Ck5s16p9.js} +2 -2
  108. package/dist/gateway/static/root/assets/mcp-conversation-setup-page-CENs3hGU.js +1 -0
  109. package/dist/gateway/static/root/assets/{media-plugins-_shnaEMY.js → media-plugins-Ba6vUE4J.js} +1 -1
  110. package/dist/gateway/static/root/assets/messages-ByFlEbsu.js +3 -0
  111. package/dist/gateway/static/root/assets/model-selector-DCBmsHzj.js +1 -0
  112. package/dist/gateway/static/root/assets/{models-hub-cache-KOJC3z6Q.js → models-hub-cache-Bd-fYUrV.js} +1 -1
  113. package/dist/gateway/static/root/assets/note-detail-panel-CnuxqWMd.js +5 -0
  114. package/dist/gateway/static/root/assets/note-image-lightbox-BFKZ7qJr.js +1 -0
  115. package/dist/gateway/static/root/assets/{notes-api-BSmikUKI.js → notes-api-8kp0X1x6.js} +1 -1
  116. package/dist/gateway/static/root/assets/{notes-page-CA0NRL8O.js → notes-page-XMdy-H3H.js} +1 -1
  117. package/dist/gateway/static/root/assets/{oauth-api-D2t9HXoC.js → oauth-api-DMMdeaNd.js} +1 -1
  118. package/dist/gateway/static/root/assets/{oauth-provider-connect-DGGGGtcB.js → oauth-provider-connect-CfOK8mPM.js} +1 -1
  119. package/dist/gateway/static/root/assets/{page-context-capture-button-BH54VO0V.js → page-context-capture-button-CKlKWSJ7.js} +1 -1
  120. package/dist/gateway/static/root/assets/{page-context-draft-BS5y8Cx9.js → page-context-draft-LF33STHC.js} +1 -1
  121. package/dist/gateway/static/root/assets/page-header-store-Du44NIEJ.js +1 -0
  122. package/dist/gateway/static/root/assets/{personal-avatar-D8DtpDTa.js → personal-avatar-D6CzIIfo.js} +1 -1
  123. package/dist/gateway/static/root/assets/personal-page-CIMMSI25.js +1 -0
  124. package/dist/gateway/static/root/assets/{personal-settings-panel-9uDaNJy5.js → personal-settings-panel-wKdlrfPq.js} +1 -1
  125. package/dist/gateway/static/root/assets/{phone-dependencies-card-DLYrI0C4.js → phone-dependencies-card-CDhk5277.js} +1 -1
  126. package/dist/gateway/static/root/assets/phone-model-connection-DZ-ZunPz.js +1 -0
  127. package/dist/gateway/static/root/assets/{phone-model-picker-BbA2iI-3.js → phone-model-picker-DuZc5jYO.js} +1 -1
  128. package/dist/gateway/static/root/assets/phone-settings-page-0u0GQl_R.js +1 -0
  129. package/dist/gateway/static/root/assets/{phone-workspace-store-CVDk80Bf.js → phone-workspace-store-SN7hfddU.js} +1 -1
  130. package/dist/gateway/static/root/assets/plugin-details-dialog-Bfc-Wmrd.js +1 -0
  131. package/dist/gateway/static/root/assets/{popover-select-DD8fmrxH.js → popover-select-CEMWIrtY.js} +1 -1
  132. package/dist/gateway/static/root/assets/{preference-select-fields-BVoN-lAv.js → preference-select-fields-BKeHZLXZ.js} +1 -1
  133. package/dist/gateway/static/root/assets/{product-automation-feedback-DCo90zGh.js → product-automation-feedback-BPur0vyo.js} +2 -2
  134. package/dist/gateway/static/root/assets/{product-open-page-OWl8IAoY.js → product-open-page-Bfd7R483.js} +1 -1
  135. package/dist/gateway/static/root/assets/{product-preview-content-Cjas7UNe.js → product-preview-content-Bnq68oVw.js} +1 -1
  136. package/dist/gateway/static/root/assets/{product-preview-modal-CPWRvBI9.js → product-preview-modal-BPmTeweh.js} +2 -2
  137. package/dist/gateway/static/root/assets/project-detail-page-D9nnyvrI.js +7 -0
  138. package/dist/gateway/static/root/assets/{project-understanding-Ba02SFzB.js → project-understanding-DLvxAoTT.js} +1 -1
  139. package/dist/gateway/static/root/assets/projects-page-BGy1pw9a.js +1 -0
  140. package/dist/gateway/static/root/assets/{providers-api-rwQ4LWzr.js → providers-api-DOnNfkwQ.js} +1 -1
  141. package/dist/gateway/static/root/assets/{recording-upload-BSmvRrZQ.js → recording-upload-CHFJbqW1.js} +1 -1
  142. package/dist/gateway/static/root/assets/{refresh-button-bU_0NarN.js → refresh-button-DiWdGAaX.js} +1 -1
  143. package/dist/gateway/static/root/assets/{registry-api-Vy7LfH6E.js → registry-api-DFDvOTg4.js} +1 -1
  144. package/dist/gateway/static/root/assets/{remote-access-hub-UXrnpGev.js → remote-access-hub-BVqwnOqO.js} +1 -1
  145. package/dist/gateway/static/root/assets/{resource-unavailable-f9OzSi4W.js → resource-unavailable-TQcRCpAg.js} +1 -1
  146. package/dist/gateway/static/root/assets/route-preload-DI43HQV_.js +2 -0
  147. package/dist/gateway/static/root/assets/{runtime-tools-api-Bt8t37z5.js → runtime-tools-api-9o3Wfji1.js} +1 -1
  148. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DU4UXnBm.js → runtime-tools-settings-panel-ccVBG-bZ.js} +1 -1
  149. package/dist/gateway/static/root/assets/{schema-form-BKeP5G7b.js → schema-form-C-jw6Hid.js} +1 -1
  150. package/dist/gateway/static/root/assets/{secret-input-BQvFXqzz.js → secret-input-Dryrns2s.js} +1 -1
  151. package/dist/gateway/static/root/assets/{service-recommendation-list-CuYsRcBB.js → service-recommendation-list-CNghOavt.js} +1 -1
  152. package/dist/gateway/static/root/assets/{session-api-DJI9eSgw.js → session-api-Bs3r_d2_.js} +1 -1
  153. package/dist/gateway/static/root/assets/session-manager-Bnq3qpqy.js +23 -0
  154. package/dist/gateway/static/root/assets/sessions-page-CyBj1Xw2.js +1 -0
  155. package/dist/gateway/static/root/assets/settings-advanced-gate-BI4DMz4_.js +1 -0
  156. package/dist/gateway/static/root/assets/{settings-advanced-section-BxUuF_yi.js → settings-advanced-section-DwpPPxT0.js} +1 -1
  157. package/dist/gateway/static/root/assets/{settings-mode-store-CaoRh2gt.js → settings-mode-store-CiRpsdTJ.js} +1 -1
  158. package/dist/gateway/static/root/assets/{settings-page-qQ8-6dJ_.js → settings-page-Cd8Ermnn.js} +1 -1
  159. package/dist/gateway/static/root/assets/{settings-page-header-CyUHrn7c.js → settings-page-header-BZl4AMiN.js} +1 -1
  160. package/dist/gateway/static/root/assets/{settings-page-layout-DGVqXrlp.js → settings-page-layout-onhEgq-K.js} +1 -1
  161. package/dist/gateway/static/root/assets/setup-interaction-page-Cvvj6JyV.js +1 -0
  162. package/dist/gateway/static/root/assets/setup-status-panel-D4qgE7QM.js +1 -0
  163. package/dist/gateway/static/root/assets/share-link-dialog-DA0QuFOD.js +1 -0
  164. package/dist/gateway/static/root/assets/{share-preview-page-Cem96FbB.js → share-preview-page-YDpIY4dC.js} +1 -1
  165. package/dist/gateway/static/root/assets/{shares-api-Dowes16l.js → shares-api-D8Q-m46d.js} +1 -1
  166. package/dist/gateway/static/root/assets/shares-settings-DUvjOMmA.js +1 -0
  167. package/dist/gateway/static/root/assets/{skill-api-D8ZwFEVe.js → skill-api-uKU4sRiv.js} +1 -1
  168. package/dist/gateway/static/root/assets/{skill-list-api-B4gp00-f.js → skill-list-api-BzKzG-xG.js} +1 -1
  169. package/dist/gateway/static/root/assets/{skill-reload-api-ClmaaDXo.js → skill-reload-api-DkUXekcd.js} +1 -1
  170. package/dist/gateway/static/root/assets/skills-page-ClyNSh-7.js +2 -0
  171. package/dist/gateway/static/root/assets/{system-settings-panel-D095uacX.js → system-settings-panel-BN6sUX0H.js} +1 -1
  172. package/dist/gateway/static/root/assets/task-detail-page-CS9m7Ipo.js +2 -0
  173. package/dist/gateway/static/root/assets/{task-result-evidence-LUrJlUhb.js → task-result-evidence-DKygspo2.js} +1 -1
  174. package/dist/gateway/static/root/assets/{terminal-panel-store-BqEDB1Vl.js → terminal-panel-store-DJVC7HqA.js} +1 -1
  175. package/dist/gateway/static/root/assets/{theme-store-gAcojLgP.js → theme-store-Dlnmgryi.js} +1 -1
  176. package/dist/gateway/static/root/assets/tool-friendly-title-DcCc6g7o.js +1 -0
  177. package/dist/gateway/static/root/assets/tracing-settings-page-Bs76WeoF.js +1 -0
  178. package/dist/gateway/static/root/assets/{tunnel-api-C9u9E3UQ.js → tunnel-api-B7nx0NQJ.js} +1 -1
  179. package/dist/gateway/static/root/assets/{understanding-activity-store-BTrzsR6_.js → understanding-activity-store-C4bblRnQ.js} +1 -1
  180. package/dist/gateway/static/root/assets/{understanding-refresh-store-5Qava3jh.js → understanding-refresh-store-BvCj9-Ue.js} +1 -1
  181. package/dist/gateway/static/root/assets/{usage-page-DFMLYKAc.js → usage-page-anU5gslJ.js} +1 -1
  182. package/dist/gateway/static/root/assets/{use-autosave-3O-X7x15.js → use-autosave-YHxQ-UZg.js} +1 -1
  183. package/dist/gateway/static/root/assets/use-composer-attachments-DYY3Yz4a.js +2 -0
  184. package/dist/gateway/static/root/assets/use-file-preview-expanded-CYgWzDnv.js +2 -0
  185. package/dist/gateway/static/root/assets/{use-personal-profile-MusPgljM.js → use-personal-profile-D2Un8G1L.js} +1 -1
  186. package/dist/gateway/static/root/assets/{use-workspace-tree-Ck_U2yTw.js → use-workspace-tree-Dkg9tUr4.js} +1 -1
  187. package/dist/gateway/static/root/assets/user-model-page-DIgPL3tN.js +2 -0
  188. package/dist/gateway/static/root/assets/{voice-api-key-field-C5zJApoa.js → voice-api-key-field-BUes-Jlp.js} +1 -1
  189. package/dist/gateway/static/root/assets/{voice-config-api-DC1bYDt1.js → voice-config-api-CrULrSKC.js} +1 -1
  190. package/dist/gateway/static/root/assets/{voice-input-shortcut-events-0SZjJdVV.js → voice-input-shortcut-events-DFMNIyy4.js} +1 -1
  191. package/dist/gateway/static/root/assets/voice-transcribe-api-Dy4hfftb.js +1 -0
  192. package/dist/gateway/static/root/assets/{work-discovery-overlay-DAQ8McVe.js → work-discovery-overlay-CFF4cRFl.js} +1 -1
  193. package/dist/gateway/static/root/assets/{work-discovery-page-DUQysEyb.js → work-discovery-page-BnYaVH3V.js} +1 -1
  194. package/dist/gateway/static/root/assets/working-directory-picker-modal-GFwVefVA.js +1 -0
  195. package/dist/gateway/static/root/assets/{workspace-api-ZrN6yUER.js → workspace-api-BdB4NEOh.js} +2 -2
  196. package/dist/gateway/static/root/assets/workspace-editor-agent-store-4cZ26iaD.js +1 -0
  197. package/dist/gateway/static/root/assets/{workspace-file-preview-dialog-Yj_kBWSb.js → workspace-file-preview-dialog-NRL3YRjg.js} +1 -1
  198. package/dist/gateway/static/root/assets/{workspace-open-location-menu-yxT7wajO.js → workspace-open-location-menu-Dcij7wvJ.js} +1 -1
  199. package/dist/gateway/static/root/assets/{xopc-cloud-account-card-IcH9KDzx.js → xopc-cloud-account-card-DC9aG7Pl.js} +1 -1
  200. package/dist/gateway/static/root/index.html +100 -98
  201. package/dist/package.js +1 -1
  202. package/dist/packages/gateway-contract/src/automations.js +7 -0
  203. package/dist/packages/gateway-contract/src/capabilities.js +1 -1
  204. package/dist/src/agent/agent-manager.d.ts +1 -0
  205. package/dist/src/agent/agent-manager.js +1 -0
  206. package/dist/src/agent/child-agent-factory.js +1 -1
  207. package/dist/src/agent/data-acquisition/service.js +1 -1
  208. package/dist/src/agent/embedded/configuration-capability-correction.d.ts +3 -0
  209. package/dist/src/agent/embedded/configuration-capability-correction.js +14 -0
  210. package/dist/src/agent/embedded/run-for-session.js +20 -5
  211. package/dist/src/agent/embedded/run-turn.js +13 -1
  212. package/dist/src/agent/embedded/session-runner.js +6 -3
  213. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  214. package/dist/src/agent/image/load-image-media.js +1 -1
  215. package/dist/src/agent/inbound/inbound-loop.js +4 -1
  216. package/dist/src/agent/independent-execution.js +1 -1
  217. package/dist/src/agent/mcp/config.js +1 -1
  218. package/dist/src/agent/mcp/connection-drafts.d.ts +3 -1
  219. package/dist/src/agent/mcp/connection-drafts.js +3 -2
  220. package/dist/src/agent/mcp/connection-setup.js +34 -2
  221. package/dist/src/agent/mcp/conversation-setup.d.ts +163 -0
  222. package/dist/src/agent/mcp/conversation-setup.js +621 -0
  223. package/dist/src/agent/mcp/native-mcp.d.ts +1 -0
  224. package/dist/src/agent/mcp/tool-catalog.d.ts +5 -0
  225. package/dist/src/agent/mcp/tool-catalog.js +19 -2
  226. package/dist/src/agent/mcp/weixin-setup-scope.d.ts +12 -0
  227. package/dist/src/agent/mcp/weixin-setup-scope.js +43 -0
  228. package/dist/src/agent/prompt/conversational-configuration-guide.js +2 -1
  229. package/dist/src/agent/prompt/sections/tooling.js +3 -2
  230. package/dist/src/agent/prompt/service-prompt-builder.js +1 -1
  231. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  232. package/dist/src/agent/service/process-direct-streaming.js +2 -2
  233. package/dist/src/agent/service.d.ts +2 -0
  234. package/dist/src/agent/service.js +11 -1
  235. package/dist/src/agent/service.types.d.ts +1 -0
  236. package/dist/src/agent/tasks/task-judge-service.js +2 -2
  237. package/dist/src/agent/tool-manuals/xopc-configuration.d.ts +6 -4
  238. package/dist/src/agent/tool-manuals/xopc-configuration.js +92 -8
  239. package/dist/src/agent/tools/automation-tool.d.ts +9 -1
  240. package/dist/src/agent/tools/automation-tool.js +34 -5
  241. package/dist/src/agent/tools/create-share-tool.js +1 -1
  242. package/dist/src/agent/tools/factory.d.ts +3 -0
  243. package/dist/src/agent/tools/factory.js +34 -23
  244. package/dist/src/agent/tools/image-generate-tool.js +3 -3
  245. package/dist/src/agent/tools/index.d.ts +1 -0
  246. package/dist/src/agent/tools/index.js +5 -4
  247. package/dist/src/agent/tools/mcp-setup-tool.d.ts +9 -0
  248. package/dist/src/agent/tools/mcp-setup-tool.js +32 -0
  249. package/dist/src/agent/tools/personal-task-tool.js +2 -2
  250. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  251. package/dist/src/agent/tools/read.js +1 -1
  252. package/dist/src/agent/tools/skill-install-tool.js +56 -1
  253. package/dist/src/agent/tools/skill-manage-tool.d.ts +4 -0
  254. package/dist/src/agent/tools/skill-manage-tool.js +74 -2
  255. package/dist/src/agent/tools/skills-tools.js +1 -1
  256. package/dist/src/agent/tools/task-collaboration-tool.js +1 -1
  257. package/dist/src/agent/tools/tool-manual-tool.d.ts +1 -1
  258. package/dist/src/agent/tools/tool-manual-tool.js +3 -1
  259. package/dist/src/agent/tools/toolExposure.js +2 -0
  260. package/dist/src/agent/tools/write.js +1 -1
  261. package/dist/src/agent/tools/xopc-use-tool.d.ts +4 -2
  262. package/dist/src/agent/tools/xopc-use-tool.js +60 -10
  263. package/dist/src/agent-catalog/service.d.ts +1 -1
  264. package/dist/src/agent-catalog/service.js +2 -1
  265. package/dist/src/automations/capabilities/drafts.js +5 -2
  266. package/dist/src/automations/capabilities/read.js +18 -7
  267. package/dist/src/automations/capabilities/write.d.ts +111 -52
  268. package/dist/src/automations/capabilities/write.js +44 -10
  269. package/dist/src/automations/delivery/delivery-router.d.ts +1 -0
  270. package/dist/src/automations/delivery/delivery-router.js +7 -1
  271. package/dist/src/automations/domain/types.d.ts +8 -0
  272. package/dist/src/automations/domain/validation.d.ts +24 -0
  273. package/dist/src/automations/domain/validation.js +7 -0
  274. package/dist/src/automations/draft/automation-draft-validator.d.ts +6 -0
  275. package/dist/src/automations/index.js +2 -2
  276. package/dist/src/automations/mcp-source.d.ts +60 -0
  277. package/dist/src/automations/mcp-source.js +173 -0
  278. package/dist/src/automations/service/action-executor.js +15 -1
  279. package/dist/src/automations/service/automation-service.d.ts +5 -0
  280. package/dist/src/automations/service/automation-service.js +52 -2
  281. package/dist/src/automations/service/index.js +2 -2
  282. package/dist/src/browser/setup/repository.d.ts +1 -0
  283. package/dist/src/browser/setup/repository.js +7 -1
  284. package/dist/src/browser/setup/service.d.ts +3 -0
  285. package/dist/src/browser/setup/service.js +41 -18
  286. package/dist/src/browser/setup/types.d.ts +1 -0
  287. package/dist/src/channels/attachments/voice-stt-webchat.js +1 -1
  288. package/dist/src/channels/index.js +1 -1
  289. package/dist/src/channels/manager.d.ts +1 -0
  290. package/dist/src/channels/outbound-sender.d.ts +1 -0
  291. package/dist/src/channels/outbound-sender.js +3 -0
  292. package/dist/src/channels/pairing/pairing-service.js +1 -1
  293. package/dist/src/channels/weixin/account-identity.d.ts +2 -0
  294. package/dist/src/channels/weixin/account-identity.js +15 -0
  295. package/dist/src/chat-commands/builtins/config.js +1 -1
  296. package/dist/src/cli/commands/backup.js +1 -1
  297. package/dist/src/cli/commands/channels.js +2 -2
  298. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +1 -1
  299. package/dist/src/cli/commands/mcp.js +1 -1
  300. package/dist/src/config/models-json.d.ts +12 -0
  301. package/dist/src/extensions/agent-plugins/credentials.js +1 -1
  302. package/dist/src/extensions/agent-plugins/setup.d.ts +1 -1
  303. package/dist/src/extensions/agent-plugins/setup.js +3 -3
  304. package/dist/src/extensions/api.js +1 -1
  305. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  306. package/dist/src/gateway/agents-admin.js +1 -1
  307. package/dist/src/gateway/device-routes.js +1 -1
  308. package/dist/src/gateway/global-defaults-admin.js +1 -1
  309. package/dist/src/gateway/hono/app.js +1 -1
  310. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  311. package/dist/src/gateway/hono/oauth-async.js +1 -1
  312. package/dist/src/gateway/hono/routes/channels.js +1 -1
  313. package/dist/src/gateway/hono/routes/config.js +1 -1
  314. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -1
  315. package/dist/src/gateway/hono/routes/mcp.js +39 -2
  316. package/dist/src/gateway/hono/routes/notes.js +2 -2
  317. package/dist/src/gateway/hono/routes/phone-setup.js +45 -16
  318. package/dist/src/gateway/hono/routes/phone.js +2 -4
  319. package/dist/src/gateway/hono/routes/projects.js +1 -1
  320. package/dist/src/gateway/hono/routes/provider-setup.js +1 -1
  321. package/dist/src/gateway/hono/routes/public-gateway.js +22 -0
  322. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  323. package/dist/src/gateway/hono/routes/shares.js +1 -1
  324. package/dist/src/gateway/hono/routes/site-shares.js +1 -1
  325. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  326. package/dist/src/gateway/media-access.js +1 -1
  327. package/dist/src/gateway/service/agent-runner.d.ts +1 -0
  328. package/dist/src/gateway/service/agent-runner.js +3 -1
  329. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  330. package/dist/src/gateway/service/config-coordinator.js +2 -1
  331. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  332. package/dist/src/gateway/service/sessions-api.js +2 -1
  333. package/dist/src/gateway/service.d.ts +5 -1
  334. package/dist/src/gateway/service.js +86 -12
  335. package/dist/src/gateway/session-context-summary.js +1 -1
  336. package/dist/src/gateway/session-reset-service.d.ts +1 -0
  337. package/dist/src/gateway/session-reset-service.js +15 -2
  338. package/dist/src/gateway/xopc-cloud-capability-setup.js +9 -1
  339. package/dist/src/notes/service.js +1 -1
  340. package/dist/src/personal-agent/prompts.js +1 -1
  341. package/dist/src/personal-agent/reply-composer.js +2 -2
  342. package/dist/src/personal-agent/request-service.js +3 -3
  343. package/dist/src/personal-agent/service.js +1 -1
  344. package/dist/src/personal-agent/task-cancel.js +1 -1
  345. package/dist/src/phone/cloud-adb-connection.js +8 -5
  346. package/dist/src/phone/contracts.d.ts +4 -0
  347. package/dist/src/phone/contracts.js +6 -1
  348. package/dist/src/phone/gui-protocol.d.ts +7 -0
  349. package/dist/src/phone/gui-protocol.js +302 -0
  350. package/dist/src/phone/model-adapter.d.ts +1 -1
  351. package/dist/src/phone/model-adapter.js +7 -4
  352. package/dist/src/phone/runtime.js +8 -2
  353. package/dist/src/phone/setup/service.d.ts +14 -4
  354. package/dist/src/phone/setup/service.js +106 -28
  355. package/dist/src/phone/ui-dump-binary.d.ts +1 -1
  356. package/dist/src/phone/ui-dump-binary.js +1 -1
  357. package/dist/src/phone/ui-session.d.ts +2 -0
  358. package/dist/src/phone/ui-session.js +23 -4
  359. package/dist/src/projects/index.js +1 -1
  360. package/dist/src/projects/project-service.js +1 -1
  361. package/dist/src/providers/env-keys.js +2 -0
  362. package/dist/src/providers/index.js +11 -0
  363. package/dist/src/providers/model-catalog-types.d.ts +1 -1
  364. package/dist/src/providers/model-supplements.d.ts +1 -1
  365. package/dist/src/providers/model-supplements.js +6 -3
  366. package/dist/src/providers/phone-models.d.ts +3 -0
  367. package/dist/src/providers/phone-models.js +33 -0
  368. package/dist/src/providers/presentation.js +0 -1
  369. package/dist/src/runtime-tools/phone-dependencies.d.ts +2 -0
  370. package/dist/src/runtime-tools/phone-dependencies.js +10 -0
  371. package/dist/src/share/note-share-service.js +1 -1
  372. package/dist/src/share/site-proxy.js +1 -1
  373. package/dist/src/tasks/capabilities/write.js +1 -1
  374. package/dist/src/tasks/index.js +1 -1
  375. package/dist/src/tasks/task-allocation-service.js +3 -3
  376. package/dist/src/tasks/task-application-service.js +2 -2
  377. package/dist/src/tasks/task-context-assembler.js +1 -1
  378. package/dist/src/tasks/task-contract-planner.js +1 -1
  379. package/dist/src/tasks/task-handoff.js +1 -1
  380. package/dist/src/tasks/task-research-result.js +1 -1
  381. package/dist/src/tasks/task-run-coordinator.js +2 -2
  382. package/dist/src/tui/backends/embedded-backend.js +1 -1
  383. package/dist/src/tui/tui.js +1 -1
  384. package/dist/src/voice/platform-catalog.d.ts +1 -1
  385. package/package.json +3 -1
  386. package/skills/tools/configure-xopc/SKILL.md +10 -3
  387. package/skills/tools/configure-xopc/references/browser/chrome-extension.md +4 -1
  388. package/skills/tools/configure-xopc/references/browser/overview.md +2 -2
  389. package/skills/tools/configure-xopc/references/phone/aliyun.md +3 -2
  390. package/skills/tools/configure-xopc/references/phone/overview.md +2 -2
  391. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DlvjxWg6.js +0 -1
  392. package/dist/gateway/static/root/assets/agent-plugin-dialog-OBueuQSc.js +0 -1
  393. package/dist/gateway/static/root/assets/agents-Cp6_5OOQ.js +0 -77
  394. package/dist/gateway/static/root/assets/app-link-1j40sJ-z.js +0 -1
  395. package/dist/gateway/static/root/assets/apps-page-C2WKUwtN.js +0 -1
  396. package/dist/gateway/static/root/assets/attachment-load-qjPpQzYY.js +0 -1
  397. package/dist/gateway/static/root/assets/automation-task-card-wbnR5i6N.js +0 -3
  398. package/dist/gateway/static/root/assets/automations-workspace-D6cTOKr7.js +0 -9
  399. package/dist/gateway/static/root/assets/browser-settings-page-L0nBjfhG.js +0 -3
  400. package/dist/gateway/static/root/assets/capabilities-aT-QjNTl.js +0 -1
  401. package/dist/gateway/static/root/assets/capabilities-page-DlpuHdHi.js +0 -2
  402. package/dist/gateway/static/root/assets/capabilities-settings-panel-pvqkN2-2.js +0 -8
  403. package/dist/gateway/static/root/assets/channels-BUPtawh6.js +0 -1
  404. package/dist/gateway/static/root/assets/chat-page-BP0huA-W.js +0 -72
  405. package/dist/gateway/static/root/assets/composer-payload-handoff-CYIhcczq.js +0 -1
  406. package/dist/gateway/static/root/assets/confirm-dialog-XGclfBqe.js +0 -1
  407. package/dist/gateway/static/root/assets/connected-providers-grid-CKZfhHSD.js +0 -1
  408. package/dist/gateway/static/root/assets/connectors-page-Lf1ZzaVn.js +0 -1
  409. package/dist/gateway/static/root/assets/dependency-picker-UqKVJ9dv.js +0 -1
  410. package/dist/gateway/static/root/assets/device-pairing-wizard-ByEL5lvM.js +0 -1
  411. package/dist/gateway/static/root/assets/dist-CaUuvp8-.js +0 -1
  412. package/dist/gateway/static/root/assets/dist-D3lWNSe7.js +0 -1
  413. package/dist/gateway/static/root/assets/dist-DfWfZ9iu.js +0 -1
  414. package/dist/gateway/static/root/assets/dist-DusecO_p.js +0 -1
  415. package/dist/gateway/static/root/assets/gateway-realtime-store-Bkt1z-xo.js +0 -1
  416. package/dist/gateway/static/root/assets/home-page-k9LFXcVa.js +0 -2
  417. package/dist/gateway/static/root/assets/index-CpwPxKQ8.css +0 -1
  418. package/dist/gateway/static/root/assets/index-DKW7BeT_.js +0 -11
  419. package/dist/gateway/static/root/assets/install-connector-dialog-CTQAKTPv.js +0 -1
  420. package/dist/gateway/static/root/assets/local-app-workbench-page-CD_8_gd_.js +0 -1
  421. package/dist/gateway/static/root/assets/management-settings-t_Z2mCyw.js +0 -1
  422. package/dist/gateway/static/root/assets/messages-DG4HLOER.js +0 -3
  423. package/dist/gateway/static/root/assets/model-selector-a7PIT1Lk.js +0 -1
  424. package/dist/gateway/static/root/assets/note-detail-panel-BsHYUFgk.js +0 -5
  425. package/dist/gateway/static/root/assets/note-image-lightbox-B-bEtjhj.js +0 -1
  426. package/dist/gateway/static/root/assets/page-header-store-BdZnUh-D.js +0 -1
  427. package/dist/gateway/static/root/assets/personal-page-KJezmTKP.js +0 -1
  428. package/dist/gateway/static/root/assets/phone-settings-page-Cg_BPss4.js +0 -1
  429. package/dist/gateway/static/root/assets/plugin-details-dialog-DgibLkc3.js +0 -1
  430. package/dist/gateway/static/root/assets/project-detail-page-B_HlZux_.js +0 -7
  431. package/dist/gateway/static/root/assets/projects-page-CdfKjp95.js +0 -1
  432. package/dist/gateway/static/root/assets/route-preload-BtObM-co.js +0 -2
  433. package/dist/gateway/static/root/assets/session-manager-CtKgACGl.js +0 -23
  434. package/dist/gateway/static/root/assets/sessions-page-BAsKzRHt.js +0 -1
  435. package/dist/gateway/static/root/assets/settings-advanced-gate-CjAFqg2U.js +0 -1
  436. package/dist/gateway/static/root/assets/setup-status-panel-BpaPb625.js +0 -1
  437. package/dist/gateway/static/root/assets/share-link-dialog-CQJ6Ykm2.js +0 -1
  438. package/dist/gateway/static/root/assets/shares-settings-DZEkZDR0.js +0 -1
  439. package/dist/gateway/static/root/assets/skills-page-CV0X9rvG.js +0 -2
  440. package/dist/gateway/static/root/assets/task-detail-page-CY2C4AM2.js +0 -2
  441. package/dist/gateway/static/root/assets/tool-friendly-title-o6sxGVUu.js +0 -1
  442. package/dist/gateway/static/root/assets/tracing-settings-page-B1ZRh-Is.js +0 -1
  443. package/dist/gateway/static/root/assets/use-composer-attachments-BLc4dBfe.js +0 -2
  444. package/dist/gateway/static/root/assets/use-file-preview-expanded-BaOmTXsT.js +0 -2
  445. package/dist/gateway/static/root/assets/user-model-page-Den5Lg-k.js +0 -2
  446. package/dist/gateway/static/root/assets/voice-transcribe-api-CxVeANPX.js +0 -1
  447. package/dist/gateway/static/root/assets/working-directory-picker-modal-BO9qdJyZ.js +0 -1
  448. package/dist/gateway/static/root/assets/workspace-editor-agent-store-Bo5dwoWP.js +0 -1
@@ -20,19 +20,20 @@ import { CapabilityError } from "../../capabilities/runtime/errors.js";
20
20
  import { getAutomationSetup } from "../../automations/configuration-conversation.js";
21
21
  import { getEmbeddedExecutionRunId } from "../embedded/execution-context.js";
22
22
  import "../../capabilities/runtime/dispatcher.js";
23
+ import { AutomationMcpSourceInput, prepareAutomationMcpSource } from "../../automations/mcp-source.js";
23
24
  import { resolveProjectAgentId } from "../../projects/project-agent.js";
24
- import "../../projects/index.js";
25
- import { TaskCollaborationRepository } from "../../tasks/task-collaboration-repository.js";
26
- import { defineTaskContract } from "../../tasks/task-contract-definition.js";
27
- import { resolveResponseLanguageForSession } from "../prompt/response-language.js";
28
25
  import { TaskDeletionService } from "../../tasks/task-deletion-service.js";
29
26
  import { TaskDeleteOutputSchema } from "../../tasks/capabilities/management.js";
27
+ import "../../projects/index.js";
30
28
  import { parseTaskHandoffReferences } from "../../tasks/task-handoff.js";
29
+ import { TaskCollaborationRepository } from "../../tasks/task-collaboration-repository.js";
31
30
  import { TaskApplicationService } from "../../tasks/task-application-service.js";
32
31
  import { AutomationCreateCapabilityInputSchema, AutomationUpdatePatchSchema } from "../../automations/capabilities/write.js";
32
+ import { resolveResponseLanguageForSession } from "../prompt/response-language.js";
33
33
  import { TaskMutationOutputSchema } from "../../tasks/capabilities/write.js";
34
34
  import { createProductDispatcher } from "../../capabilities/runtime/product.js";
35
35
  import { localAppCapabilities } from "../../local-apps/capabilities/runtime.js";
36
+ import { defineTaskContract } from "../../tasks/task-contract-definition.js";
36
37
  import "../../tasks/index.js";
37
38
  import { randomUUID } from "node:crypto";
38
39
  import { Type } from "@sinclair/typebox";
@@ -53,9 +54,10 @@ const XopcUseToolSchema = Type.Object({
53
54
  Type.Literal("agent"),
54
55
  Type.Literal("settings"),
55
56
  Type.Literal("browser_setup"),
56
- Type.Literal("phone_setup")
57
+ Type.Literal("phone_setup"),
58
+ Type.Literal("mcp_setup")
57
59
  ]),
58
- command: Type.String({ description: "Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Agent profile-only changes: patch_profile {id, expectedRevision, patch:{name?,description?,style?,language?,...}, idempotencyKey?} preserves omitted fields. Agent commands: list, get {id}, create {id, profile, workspace?, models?, skills?, tools?, runtime?, idempotencyKey?}, update {id, expectedRevision, patch, idempotencyKey?}, set_default {id, expectedRevision, idempotencyKey?}, disable/delete/purge {id, expectedRevision, idempotencyKey?}. Purge also removes on-disk data. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, events {eventType?, source?, limit?}, deliveries {runId?, limit?}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Recovery commands: replay_event {eventId, reason, idempotencyKey}, retry_delivery {runId, destinationKey, reason, idempotencyKey}. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
60
+ command: Type.String({ description: "HTTP MCP configuration: mode mcp_setup inspect/start/get/advance/cancel/set_enabled/remove; load tool_manual topic mcp. Never pass credentials or OAuth callbacks as tool arguments. Context resolve takes an explicit AppContextEnvelope; never guess a current page. Automation draft/repair_draft accept prompt/id, agentId?, language?, idempotencyKey?; simulate explains an automation without running it. Local_app record_acceptance records supplied checks and sourceHash, not proof that checks were executed. Agent profile-only changes: patch_profile {id, expectedRevision, patch:{name?,description?,style?,language?,...}, idempotencyKey?} preserves omitted fields. Agent commands: list, get {id}, create {id, profile, workspace?, models?, skills?, tools?, runtime?, idempotencyKey?}, update {id, expectedRevision, patch, idempotencyKey?}, set_default {id, expectedRevision, idempotencyKey?}, disable/delete/purge {id, expectedRevision, idempotencyKey?}. Purge also removes on-disk data. Project create accepts idempotencyKey; update/pin/unpin/delete accepts {projectId, expectedVersion?, idempotencyKey?}; stable retries require the original expectedVersion. Delete preserves workspace files and does not confirm external execution stopped. Project milestone writes support idempotencyKey; update_milestone/delete_milestone require original expectedRevision for stable retries, and create_update requires original expectedVersion. TaskRun cancel accepts idempotencyKey and expectedVersion, and does not confirm external execution stopped. Automation diagnostics: get_run/run_events {runId}, metrics {}, events {eventType?, source?, limit?}, deliveries {runId?, limit?}, product_events {eventType, source?, payloadKey?, payloadValue?, limit?}; payload filters require both key and value. Recovery commands: replay_event {eventId, reason, idempotencyKey}, retry_delivery {runId, destinationKey, reason, idempotencyKey}. Automation also supports cancel/read {runId, idempotencyKey?} and read_all {projectId?, idempotencyKey?}; omitted projectId means all projects. Cancel acceptance is not confirmation of stopping. Object command. Supports project list/get/create/update/resolve_workspace/list_milestones/create_milestone/update_milestone/list_updates/create_update, automation list/get/create/update/delete/run/rerun/pause/resume/history (rerun takes runId; run/rerun accept idempotencyKey), note list/get/project_summaries/history {noteId}/snapshot {noteId, timestamp}/create/append/update/preview_edit/delete, task list/get/create/update_dependencies/add_context/remove_context/command/delete, task_run list/get/cancel, chat_preview create/revise/get, local_app list/get/create/validate, and settings open." }),
59
61
  args: Type.Optional(Type.Record(Type.String(), Type.Any())),
60
62
  dryRun: Type.Optional(Type.Boolean({ description: "Validate and preview the action without mutating xopc state." }))
61
63
  });
@@ -743,7 +745,7 @@ async function handleProject(command, args, deps, dryRun, capabilities) {
743
745
  error: `Unsupported project command: ${command}`
744
746
  };
745
747
  }
746
- async function handleAutomation(command, args, deps, dryRun, capabilities) {
748
+ async function handleAutomation(command, args, deps, dryRun, capabilities, toolCallId) {
747
749
  const automations = deps.getAutomationService?.();
748
750
  if (!automations) return {
749
751
  ok: false,
@@ -760,7 +762,7 @@ async function handleAutomation(command, args, deps, dryRun, capabilities) {
760
762
  try {
761
763
  return (operation === "xopc.automations.delete" ? AutomationDeleteOutputSchema : operation === "xopc.automations.cancel" ? AutomationCancelOutputSchema : operation === "xopc.automations.read" ? AutomationReadOutputSchema : operation === "xopc.automations.read_all" ? AutomationReadAllOutputSchema : operation === "xopc.automations.replay_event" || operation === "xopc.automations.retry_delivery" ? AutomationRecoveryOutputSchema : operation === "xopc.automations.run" || operation === "xopc.automations.rerun" ? AutomationRunMutationOutputSchema : AutomationMutationOutputSchema).parse(await capabilities.call(operation, input, caller, {
762
764
  ...capabilities.describe(operation, caller),
763
- idempotencyKey: trimString(args.idempotencyKey) ?? randomUUID()
765
+ idempotencyKey: trimString(args.idempotencyKey) ?? toolCallId
764
766
  }));
765
767
  } catch (error) {
766
768
  if (error instanceof CapabilityError) return {
@@ -1937,6 +1939,50 @@ function createXopcUseTool(deps) {
1937
1939
  dryRun
1938
1940
  };
1939
1941
  if (!command) return errorText("command is required", details);
1942
+ if (mode === "mcp_setup") {
1943
+ const service = deps.getMcpSetupService?.();
1944
+ const conversationId = deps.getCurrentConversationId?.();
1945
+ const agentId = deps.getCurrentAgentId?.();
1946
+ if (!service || !conversationId || !agentId) return errorText("MCP setup requires a Gateway conversation.", details);
1947
+ if (deps.authorizeCapability && !await deps.authorizeCapability(`xopc.mcp_setup.${command}`, args)) return errorText("MCP setup access denied", details);
1948
+ try {
1949
+ return okText({
1950
+ ...details,
1951
+ result: await service.command(command, args, {
1952
+ conversationId,
1953
+ agentId,
1954
+ canConfigure: deps.canConfigureFromConversation?.() === true,
1955
+ canRequestWeixinSetup: deps.canRequestWeixinMcpSetup?.() === true
1956
+ }, dryRun)
1957
+ });
1958
+ } catch (error) {
1959
+ return errorText(error instanceof Error ? error.message : String(error), details);
1960
+ }
1961
+ }
1962
+ if (mode === "automation" && command === "prepare_source") {
1963
+ const config = deps.getConfig?.();
1964
+ if (!config || !deps.getWorkspace) return errorText("MCP source preparation is unavailable in this runtime.", details);
1965
+ if (deps.authorizeCapability && !await deps.authorizeCapability("xopc.automations.prepare_source", args)) return errorText("Source preparation denied", details);
1966
+ const input = AutomationMcpSourceInput.parse(args);
1967
+ if (dryRun) return okText({
1968
+ ...details,
1969
+ result: {
1970
+ dryRun: true,
1971
+ ...input
1972
+ }
1973
+ });
1974
+ return okText({
1975
+ ...details,
1976
+ result: await prepareAutomationMcpSource(input, {
1977
+ conversationId: deps.getCurrentConversationId?.(),
1978
+ agentId: deps.getCurrentAgentId?.(),
1979
+ canConfigure: deps.canConfigureFromConversation?.() === true,
1980
+ workspaceDir: deps.getWorkspace(),
1981
+ readConfig: () => deps.getConfig?.() ?? config,
1982
+ signal
1983
+ })
1984
+ });
1985
+ }
1940
1986
  if (mode === "phone_setup") {
1941
1987
  const service = deps.getPhoneSetupService?.();
1942
1988
  const conversationId = deps.getCurrentConversationId?.();
@@ -1950,6 +1996,7 @@ function createXopcUseTool(deps) {
1950
1996
  conversationId,
1951
1997
  agentId,
1952
1998
  canConfigure: deps.canConfigureFromConversation?.() === true,
1999
+ isAuthorized: deps.canConfigureFromConversation,
1953
2000
  runId: getEmbeddedExecutionRunId()
1954
2001
  }, dryRun)
1955
2002
  });
@@ -2155,7 +2202,10 @@ function createXopcUseTool(deps) {
2155
2202
  payloadKey: args.payloadKey,
2156
2203
  payloadValue: args.payloadValue,
2157
2204
  limit: args.limit
2158
- } : { id: args.runId ?? args.id };
2205
+ } : {
2206
+ id: args.runId ?? args.id,
2207
+ ...command === "get_run" && args.waitMs !== void 0 ? { waitMs: args.waitMs } : {}
2208
+ };
2159
2209
  const caller = {
2160
2210
  principalId: `agent:${deps.getCurrentAgentId?.() ?? "main"}`,
2161
2211
  surface: "agent",
@@ -2315,7 +2365,7 @@ function createXopcUseTool(deps) {
2315
2365
  kind: "xopc_use",
2316
2366
  toolCallId
2317
2367
  }
2318
- }, async () => mode === "agent" ? await handleAgent(command, args, dryRun, capabilities, deps, toolCallId, signal) : mode === "project" ? await handleProject(command, args, deps, dryRun, capabilities) : mode === "automation" ? await handleAutomation(command, args, deps, dryRun, capabilities) : mode === "note" ? await handleNote(command, args, deps, dryRun, capabilities) : mode === "task" ? await handleTask(command, args, deps, dryRun, capabilities) : mode === "task_run" ? await handleTaskRun(command, args, dryRun, deps, capabilities) : mode === "local_app" ? await handleLocalApp(command, args, deps, dryRun) : mode === "chat_preview" ? await handleChatPreview(command, args, deps, dryRun) : {
2368
+ }, async () => mode === "agent" ? await handleAgent(command, args, dryRun, capabilities, deps, toolCallId, signal) : mode === "project" ? await handleProject(command, args, deps, dryRun, capabilities) : mode === "automation" ? await handleAutomation(command, args, deps, dryRun, capabilities, toolCallId) : mode === "note" ? await handleNote(command, args, deps, dryRun, capabilities) : mode === "task" ? await handleTask(command, args, deps, dryRun, capabilities) : mode === "task_run" ? await handleTaskRun(command, args, dryRun, deps, capabilities) : mode === "local_app" ? await handleLocalApp(command, args, deps, dryRun) : mode === "chat_preview" ? await handleChatPreview(command, args, deps, dryRun) : {
2319
2369
  ok: false,
2320
2370
  error: `Unsupported mode: ${String(mode)}`
2321
2371
  });
@@ -9,7 +9,7 @@ export declare class AgentCatalogService {
9
9
  resumePendingProvisioning(): Promise<void>;
10
10
  /** Startup recovery for catalog rows committed before their directories were provisioned. */
11
11
  resumePendingProvisioningSync(): void;
12
- update(agentIdRaw: string, patch: Partial<Omit<AgentEntry, 'id'>>, expectedRevision?: number): Promise<StoredAgent>;
12
+ update(agentIdRaw: string, patch: Partial<Omit<AgentEntry, 'id'>>, expectedRevision?: number, beforeCommit?: () => void): Promise<StoredAgent>;
13
13
  /** Remove data for an Agent that has already been deleted from the catalog. */
14
14
  purgeEntryData(entry: AgentEntry, defaultAgentId: string): Promise<void>;
15
15
  validatePurgeEntry(entry: AgentEntry, defaultAgentId: string): void;
@@ -59,7 +59,7 @@ var AgentCatalogService = class {
59
59
  }
60
60
  this.resumePendingPurgeSync();
61
61
  }
62
- async update(agentIdRaw, patch, expectedRevision) {
62
+ async update(agentIdRaw, patch, expectedRevision, beforeCommit) {
63
63
  const agentId = normalizeAgentId(agentIdRaw);
64
64
  const current = this.repository.get(agentId);
65
65
  if (!current) throw new Error(`Agent "${agentId}" not found`);
@@ -71,6 +71,7 @@ var AgentCatalogService = class {
71
71
  id: agentId
72
72
  };
73
73
  await this.provision(next);
74
+ beforeCommit?.();
74
75
  return this.repository.update(agentId, revision, next);
75
76
  }
76
77
  /** Remove data for an Agent that has already been deleted from the catalog. */
@@ -7,7 +7,7 @@ import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope
7
7
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
8
8
  import { ExternalEffectNotAppliedError } from "../../capabilities/runtime/external-operations.js";
9
9
  import { defineExternalCapability, defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
10
- import { AutomationCreateCapabilityInputSchema } from "./write.js";
10
+ import { AutomationCreateCapabilityInputSchema, materializeAutomationTrigger } from "./write.js";
11
11
  import { simulateAutomation } from "../draft/automation-draft-validator.js";
12
12
  import { AutomationDraftService } from "../draft/automation-draft-service.js";
13
13
  import "../draft/index.js";
@@ -39,7 +39,10 @@ function registerAutomationDraftCapabilities(dispatcher, service, getConfig) {
39
39
  output: z.object({ simulation: AutomationSimulationSchema }),
40
40
  execute(input) {
41
41
  try {
42
- return { simulation: simulateAutomation(input) };
42
+ return { simulation: simulateAutomation({
43
+ ...input,
44
+ trigger: materializeAutomationTrigger(input.trigger)
45
+ }) };
43
46
  } catch (error) {
44
47
  throw new CapabilityError("INVALID_INPUT", error instanceof Error ? error.message : "Invalid automation");
45
48
  }
@@ -2,6 +2,7 @@ import { ProductReadContracts } from "../../../packages/gateway-contract/src/cap
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
4
4
  import { defineReadCapability } from "../../capabilities/runtime/dispatcher.js";
5
+ import { setTimeout } from "node:timers/promises";
5
6
  //#region src/automations/capabilities/read.ts
6
7
  init_src();
7
8
  function registerAutomationReadCapabilities(dispatcher, service, projects) {
@@ -23,13 +24,23 @@ function registerAutomationReadCapabilities(dispatcher, service, projects) {
23
24
  id: "xopc.automations.get_run",
24
25
  description: "Read current run state rather than the historical submission receipt.",
25
26
  ...ProductReadContracts["xopc.automations.get_run"],
26
- async execute({ id }) {
27
- const run = await service.getRun(id);
28
- if (!run) throw new CapabilityError("NOT_FOUND", "Run not found");
29
- return {
30
- ok: true,
31
- run: { ...run }
32
- };
27
+ async execute({ id, waitMs }, context) {
28
+ const deadline = Date.now() + (waitMs ?? 0);
29
+ for (;;) {
30
+ context.signal?.throwIfAborted();
31
+ const run = await service.getRun(id);
32
+ if (!run) throw new CapabilityError("NOT_FOUND", "Run not found");
33
+ const remaining = deadline - Date.now();
34
+ if (![
35
+ "queued",
36
+ "running",
37
+ "cancelling"
38
+ ].includes(run.status) || remaining <= 0) return {
39
+ ok: true,
40
+ run: { ...run }
41
+ };
42
+ await setTimeout(Math.min(250, remaining), void 0, { signal: context.signal });
43
+ }
33
44
  }
34
45
  }));
35
46
  dispatcher.register(defineReadCapability({
@@ -1,7 +1,41 @@
1
1
  import { z } from 'zod';
2
2
  import { type CapabilityDispatcher } from '../../capabilities/runtime/dispatcher.js';
3
3
  import { type AutomationService } from '../service/automation-service.js';
4
+ import type { AutomationTrigger } from '../domain/types.js';
4
5
  import type { ProjectService } from '../../projects/project-service.js';
6
+ declare const triggerRequest: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
7
+ kind: z.ZodLiteral<"manual">;
8
+ }, z.core.$strict>, z.ZodObject<{
9
+ kind: z.ZodLiteral<"schedule">;
10
+ schedule: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ kind: z.ZodLiteral<"once">;
12
+ at: z.ZodString;
13
+ }, z.core.$strict>, z.ZodObject<{
14
+ kind: z.ZodLiteral<"interval">;
15
+ everyMs: z.ZodNumber;
16
+ anchorMs: z.ZodOptional<z.ZodNumber>;
17
+ }, z.core.$strict>, z.ZodObject<{
18
+ kind: z.ZodLiteral<"cron">;
19
+ expr: z.ZodString;
20
+ tz: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
21
+ }, z.core.$strict>], "kind">;
22
+ }, z.core.$strict>, z.ZodObject<{
23
+ kind: z.ZodLiteral<"webhook">;
24
+ secretId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
25
+ }, z.core.$strict>, z.ZodObject<{
26
+ kind: z.ZodLiteral<"event">;
27
+ eventType: z.ZodString;
28
+ source: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
29
+ payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
30
+ }, z.core.$strict>], "kind">, z.ZodObject<{
31
+ kind: z.ZodLiteral<"schedule">;
32
+ schedule: z.ZodObject<{
33
+ kind: z.ZodLiteral<"once">;
34
+ afterMs: z.ZodNumber;
35
+ }, z.core.$strict>;
36
+ }, z.core.$strict>]>;
37
+ /** Anchor a relative one-time intent inside the receipt's single atomic execution. */
38
+ export declare function materializeAutomationTrigger(trigger: z.infer<typeof triggerRequest>): AutomationTrigger;
5
39
  export declare const AutomationCreateCapabilityInputSchema: z.ZodObject<{
6
40
  projectId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
7
41
  name: z.ZodString;
@@ -10,6 +44,7 @@ export declare const AutomationCreateCapabilityInputSchema: z.ZodObject<{
10
44
  kind: z.ZodLiteral<"agent">;
11
45
  agentId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
12
46
  instruction: z.ZodString;
47
+ mcpSourceId: z.ZodOptional<z.ZodString>;
13
48
  workingDirectory: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
14
49
  model: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
15
50
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
@@ -123,31 +158,6 @@ export declare const AutomationCreateCapabilityInputSchema: z.ZodObject<{
123
158
  }, z.core.$strict>], "kind">;
124
159
  id: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
125
160
  description: z.ZodOptional<z.ZodString>;
126
- trigger: z.ZodDiscriminatedUnion<[z.ZodObject<{
127
- kind: z.ZodLiteral<"manual">;
128
- }, z.core.$strict>, z.ZodObject<{
129
- kind: z.ZodLiteral<"schedule">;
130
- schedule: z.ZodDiscriminatedUnion<[z.ZodObject<{
131
- kind: z.ZodLiteral<"once">;
132
- at: z.ZodString;
133
- }, z.core.$strict>, z.ZodObject<{
134
- kind: z.ZodLiteral<"interval">;
135
- everyMs: z.ZodNumber;
136
- anchorMs: z.ZodOptional<z.ZodNumber>;
137
- }, z.core.$strict>, z.ZodObject<{
138
- kind: z.ZodLiteral<"cron">;
139
- expr: z.ZodString;
140
- tz: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
141
- }, z.core.$strict>], "kind">;
142
- }, z.core.$strict>, z.ZodObject<{
143
- kind: z.ZodLiteral<"webhook">;
144
- secretId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
145
- }, z.core.$strict>, z.ZodObject<{
146
- kind: z.ZodLiteral<"event">;
147
- eventType: z.ZodString;
148
- source: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
149
- payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
150
- }, z.core.$strict>], "kind">;
151
161
  delivery: z.ZodDefault<z.ZodObject<{
152
162
  notificationPolicy: z.ZodDefault<z.ZodEnum<{
153
163
  attention: "attention";
@@ -157,6 +167,11 @@ export declare const AutomationCreateCapabilityInputSchema: z.ZodObject<{
157
167
  destinations: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
158
168
  key: z.ZodString;
159
169
  kind: z.ZodLiteral<"gateway_event">;
170
+ }, z.core.$strict>, z.ZodObject<{
171
+ key: z.ZodString;
172
+ kind: z.ZodLiteral<"weixin">;
173
+ conversationId: z.ZodString;
174
+ principalId: z.ZodString;
160
175
  }, z.core.$strict>, z.ZodObject<{
161
176
  key: z.ZodString;
162
177
  kind: z.ZodLiteral<"webhook">;
@@ -191,8 +206,72 @@ export declare const AutomationCreateCapabilityInputSchema: z.ZodObject<{
191
206
  maxConcurrentRuns: z.ZodOptional<z.ZodNumber>;
192
207
  disableAfterConsecutiveFailures: z.ZodOptional<z.ZodNumber>;
193
208
  }, z.core.$strict>>;
209
+ trigger: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
210
+ kind: z.ZodLiteral<"manual">;
211
+ }, z.core.$strict>, z.ZodObject<{
212
+ kind: z.ZodLiteral<"schedule">;
213
+ schedule: z.ZodDiscriminatedUnion<[z.ZodObject<{
214
+ kind: z.ZodLiteral<"once">;
215
+ at: z.ZodString;
216
+ }, z.core.$strict>, z.ZodObject<{
217
+ kind: z.ZodLiteral<"interval">;
218
+ everyMs: z.ZodNumber;
219
+ anchorMs: z.ZodOptional<z.ZodNumber>;
220
+ }, z.core.$strict>, z.ZodObject<{
221
+ kind: z.ZodLiteral<"cron">;
222
+ expr: z.ZodString;
223
+ tz: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
224
+ }, z.core.$strict>], "kind">;
225
+ }, z.core.$strict>, z.ZodObject<{
226
+ kind: z.ZodLiteral<"webhook">;
227
+ secretId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
228
+ }, z.core.$strict>, z.ZodObject<{
229
+ kind: z.ZodLiteral<"event">;
230
+ eventType: z.ZodString;
231
+ source: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
232
+ payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
233
+ }, z.core.$strict>], "kind">, z.ZodObject<{
234
+ kind: z.ZodLiteral<"schedule">;
235
+ schedule: z.ZodObject<{
236
+ kind: z.ZodLiteral<"once">;
237
+ afterMs: z.ZodNumber;
238
+ }, z.core.$strict>;
239
+ }, z.core.$strict>]>;
194
240
  }, z.core.$strict>;
195
241
  export declare const AutomationUpdatePatchSchema: z.ZodObject<{
242
+ trigger: z.ZodOptional<z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.ZodObject<{
243
+ kind: z.ZodLiteral<"manual">;
244
+ }, z.core.$strict>, z.ZodObject<{
245
+ kind: z.ZodLiteral<"schedule">;
246
+ schedule: z.ZodDiscriminatedUnion<[z.ZodObject<{
247
+ kind: z.ZodLiteral<"once">;
248
+ at: z.ZodString;
249
+ }, z.core.$strict>, z.ZodObject<{
250
+ kind: z.ZodLiteral<"interval">;
251
+ everyMs: z.ZodNumber;
252
+ anchorMs: z.ZodOptional<z.ZodNumber>;
253
+ }, z.core.$strict>, z.ZodObject<{
254
+ kind: z.ZodLiteral<"cron">;
255
+ expr: z.ZodString;
256
+ tz: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
257
+ }, z.core.$strict>], "kind">;
258
+ }, z.core.$strict>, z.ZodObject<{
259
+ kind: z.ZodLiteral<"webhook">;
260
+ secretId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
261
+ }, z.core.$strict>, z.ZodObject<{
262
+ kind: z.ZodLiteral<"event">;
263
+ eventType: z.ZodString;
264
+ source: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
265
+ payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
266
+ }, z.core.$strict>], "kind">, z.ZodObject<{
267
+ kind: z.ZodLiteral<"schedule">;
268
+ schedule: z.ZodObject<{
269
+ kind: z.ZodLiteral<"once">;
270
+ afterMs: z.ZodNumber;
271
+ }, z.core.$strict>;
272
+ }, z.core.$strict>]>>;
273
+ state: z.ZodOptional<z.ZodNever>;
274
+ management: z.ZodOptional<z.ZodNever>;
196
275
  projectId: z.ZodOptional<z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>>;
197
276
  name: z.ZodOptional<z.ZodString>;
198
277
  enabled: z.ZodOptional<z.ZodBoolean>;
@@ -200,6 +279,7 @@ export declare const AutomationUpdatePatchSchema: z.ZodObject<{
200
279
  kind: z.ZodLiteral<"agent">;
201
280
  agentId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
202
281
  instruction: z.ZodString;
282
+ mcpSourceId: z.ZodOptional<z.ZodString>;
203
283
  workingDirectory: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
204
284
  model: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
205
285
  timeoutSeconds: z.ZodOptional<z.ZodNumber>;
@@ -312,31 +392,6 @@ export declare const AutomationUpdatePatchSchema: z.ZodObject<{
312
392
  }>;
313
393
  }, z.core.$strict>], "kind">>;
314
394
  description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
315
- trigger: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
316
- kind: z.ZodLiteral<"manual">;
317
- }, z.core.$strict>, z.ZodObject<{
318
- kind: z.ZodLiteral<"schedule">;
319
- schedule: z.ZodDiscriminatedUnion<[z.ZodObject<{
320
- kind: z.ZodLiteral<"once">;
321
- at: z.ZodString;
322
- }, z.core.$strict>, z.ZodObject<{
323
- kind: z.ZodLiteral<"interval">;
324
- everyMs: z.ZodNumber;
325
- anchorMs: z.ZodOptional<z.ZodNumber>;
326
- }, z.core.$strict>, z.ZodObject<{
327
- kind: z.ZodLiteral<"cron">;
328
- expr: z.ZodString;
329
- tz: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
330
- }, z.core.$strict>], "kind">;
331
- }, z.core.$strict>, z.ZodObject<{
332
- kind: z.ZodLiteral<"webhook">;
333
- secretId: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
334
- }, z.core.$strict>, z.ZodObject<{
335
- kind: z.ZodLiteral<"event">;
336
- eventType: z.ZodString;
337
- source: z.ZodPipe<z.ZodOptional<z.ZodNullable<z.ZodString>>, z.ZodTransform<string, string>>;
338
- payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
339
- }, z.core.$strict>], "kind">>;
340
395
  safety: z.ZodOptional<z.ZodOptional<z.ZodObject<{
341
396
  mode: z.ZodEnum<{
342
397
  suggest_only: "suggest_only";
@@ -363,6 +418,11 @@ export declare const AutomationUpdatePatchSchema: z.ZodObject<{
363
418
  destinations: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
364
419
  key: z.ZodString;
365
420
  kind: z.ZodLiteral<"gateway_event">;
421
+ }, z.core.$strict>, z.ZodObject<{
422
+ key: z.ZodString;
423
+ kind: z.ZodLiteral<"weixin">;
424
+ conversationId: z.ZodString;
425
+ principalId: z.ZodString;
366
426
  }, z.core.$strict>, z.ZodObject<{
367
427
  key: z.ZodString;
368
428
  kind: z.ZodLiteral<"webhook">;
@@ -380,7 +440,6 @@ export declare const AutomationUpdatePatchSchema: z.ZodObject<{
380
440
  templateId: z.ZodString;
381
441
  }, z.core.$strict>], "kind">>>;
382
442
  }, z.core.$strict>>>;
383
- state: z.ZodOptional<z.ZodNever>;
384
- management: z.ZodOptional<z.ZodNever>;
385
443
  }, z.core.$strict>;
386
444
  export declare function registerAutomationWriteCapabilities(dispatcher: CapabilityDispatcher, service: AutomationService, projects?: ProjectService): void;
445
+ export {};
@@ -1,7 +1,7 @@
1
1
  import { AutomationCancelOutputSchema, AutomationDeleteInputSchema, AutomationDeleteOutputSchema, AutomationMutationOutputSchema, AutomationReadAllInputSchema, AutomationReadAllOutputSchema, AutomationReadOutputSchema, AutomationRecoveryOutputSchema, AutomationReplayEventInputSchema, AutomationRetryDeliveryInputSchema, AutomationRunMutationOutputSchema, AutomationSetEnabledInputSchema, CapabilityResourceInputSchema } from "../../../packages/gateway-contract/src/capabilities.js";
2
2
  import { init_src } from "../../../packages/gateway-contract/src/index.js";
3
3
  import { CapabilityError } from "../../capabilities/runtime/errors.js";
4
- import { CreateAutomationSchema, UpdateAutomationSchema } from "../domain/validation.js";
4
+ import { AutomationTriggerSchema, CreateAutomationSchema, UpdateAutomationSchema } from "../domain/validation.js";
5
5
  import { getAutomation } from "../storage/automation-repository.js";
6
6
  import { getAutomationRun, markAllAutomationRunsRead, markAutomationRunRead } from "../storage/automation-run-repository.js";
7
7
  import "../storage/index.js";
@@ -9,18 +9,43 @@ import { getAutomationEventForRun } from "../events/event-repository.js";
9
9
  import "../events/index.js";
10
10
  import { assertAutomationSetupTarget, bindAutomationSetup } from "../configuration-conversation.js";
11
11
  import { defineAtomicCapability } from "../../capabilities/runtime/dispatcher.js";
12
- import { AutomationAlreadyExistsError, AutomationAlreadyRunningError, AutomationInvalidAgentError, AutomationInvalidScheduleError } from "../service/automation-service.js";
12
+ import { AutomationAlreadyExistsError, AutomationAlreadyRunningError, AutomationInvalidAgentError, AutomationInvalidScheduleError, AutomationInvalidSourceError } from "../service/automation-service.js";
13
13
  import { z } from "zod";
14
14
  //#region src/automations/capabilities/write.ts
15
15
  init_src();
16
+ const triggerRequest = z.union([AutomationTriggerSchema, z.object({
17
+ kind: z.literal("schedule"),
18
+ schedule: z.object({
19
+ kind: z.literal("once"),
20
+ afterMs: z.number().int().min(1).max(366 * 864e5)
21
+ }).strict()
22
+ }).strict()]);
23
+ /** Anchor a relative one-time intent inside the receipt's single atomic execution. */
24
+ function materializeAutomationTrigger(trigger) {
25
+ if (trigger.kind !== "schedule") return trigger;
26
+ const schedule = trigger.schedule;
27
+ return "afterMs" in schedule ? {
28
+ kind: "schedule",
29
+ schedule: {
30
+ kind: "once",
31
+ at: new Date(Date.now() + schedule.afterMs).toISOString()
32
+ }
33
+ } : {
34
+ kind: "schedule",
35
+ schedule
36
+ };
37
+ }
16
38
  const AutomationCreateCapabilityInputSchema = CreateAutomationSchema.omit({
17
39
  state: true,
18
- management: true
19
- }).refine((input) => input.action.kind !== "system", { message: "System actions can only be created by the runtime" });
20
- const AutomationUpdatePatchSchema = UpdateAutomationSchema.safeExtend({
40
+ management: true,
41
+ trigger: true
42
+ }).extend({ trigger: triggerRequest }).refine((input) => input.action.kind !== "system", { message: "System actions can only be created by the runtime" });
43
+ const AutomationUpdatePatchSchema = z.object({
44
+ ...UpdateAutomationSchema.shape,
45
+ trigger: triggerRequest.optional(),
21
46
  state: z.never().optional(),
22
47
  management: z.never().optional()
23
- });
48
+ }).strict().refine((data) => Object.keys(data).length > 0, { message: "At least one field must be provided" });
24
49
  function assertManagedOperation(automation, operation, patch) {
25
50
  const management = automation.management;
26
51
  if (!management) return;
@@ -39,7 +64,7 @@ function validateSchedule(operation) {
39
64
  try {
40
65
  return operation();
41
66
  } catch (error) {
42
- if (error instanceof AutomationInvalidScheduleError || error instanceof AutomationInvalidAgentError) throw new CapabilityError("INVALID_INPUT", error.message);
67
+ if (error instanceof AutomationInvalidScheduleError || error instanceof AutomationInvalidAgentError || error instanceof AutomationInvalidSourceError) throw new CapabilityError("INVALID_INPUT", error.message);
43
68
  throw error;
44
69
  }
45
70
  }
@@ -198,7 +223,11 @@ function registerAutomationWriteCapabilities(dispatcher, service, projects) {
198
223
  requireProject(input.projectId);
199
224
  assertAutomationSetupTarget(context.conversationId);
200
225
  try {
201
- const automation = validateSchedule(() => service.createAtomically(input));
226
+ const automation = validateSchedule(() => service.createAtomically({
227
+ ...input,
228
+ delivery: service.bindConversationDelivery(context.conversationId, input.delivery),
229
+ trigger: materializeAutomationTrigger(input.trigger)
230
+ }));
202
231
  bindAutomationSetup(context.conversationId, automation.id);
203
232
  return {
204
233
  ok: true,
@@ -226,9 +255,14 @@ function registerAutomationWriteCapabilities(dispatcher, service, projects) {
226
255
  if (current.updatedAtMs !== expectedRevision) throw new CapabilityError("REVISION_CONFLICT", "Automation changed");
227
256
  assertManagedOperation(current, "update", patch);
228
257
  requireProject(patch.projectId);
258
+ const { trigger, ...fields } = patch;
229
259
  return {
230
260
  ok: true,
231
- automation: { ...validateSchedule(() => service.updateAtomically(id, patch)) }
261
+ automation: { ...validateSchedule(() => service.updateAtomically(id, {
262
+ ...fields,
263
+ ...fields.delivery ? { delivery: service.bindConversationDelivery(context.conversationId, fields.delivery) } : {},
264
+ ...trigger ? { trigger: materializeAutomationTrigger(trigger) } : {}
265
+ })) }
232
266
  };
233
267
  }
234
268
  }));
@@ -258,4 +292,4 @@ function registerAutomationWriteCapabilities(dispatcher, service, projects) {
258
292
  }));
259
293
  }
260
294
  //#endregion
261
- export { AutomationCreateCapabilityInputSchema, AutomationUpdatePatchSchema, registerAutomationWriteCapabilities };
295
+ export { AutomationCreateCapabilityInputSchema, AutomationUpdatePatchSchema, materializeAutomationTrigger, registerAutomationWriteCapabilities };
@@ -27,6 +27,7 @@ export declare class AutomationDeliveryRouter {
27
27
  private readonly owner;
28
28
  private readonly abortController;
29
29
  constructor(options?: {
30
+ deliverWeixin?: (conversationId: string, principalId: string, run: AutomationRun) => Promise<void>;
30
31
  deliverGatewayEvent?: (run: AutomationRun, context: AutomationRunDeliveryContext) => void | Promise<void>;
31
32
  onDeadLetter?: (input: {
32
33
  phase: 'result_delivery';
@@ -123,6 +123,11 @@ var AutomationDeliveryRouter = class {
123
123
  ...typeof config.projectId === "string" ? { projectId: config.projectId } : {}
124
124
  });
125
125
  });
126
+ this.register("weixin", ({ run, config }) => {
127
+ if (config.notificationPolicy === "none" || config.notificationPolicy === "attention" && !config.requiresAttention) return;
128
+ if (!this.options.deliverWeixin) throw new Error("Weixin delivery is unavailable. Delivery will retry.");
129
+ return this.options.deliverWeixin(String(config.conversationId), String(config.principalId), run);
130
+ });
126
131
  this.register("webhook", (input) => this.postWebhook(input));
127
132
  }
128
133
  register(kind, handler) {
@@ -157,7 +162,8 @@ var AutomationDeliveryRouter = class {
157
162
  next_attempt_at_ms, created_at_ms, updated_at_ms
158
163
  ) VALUES (?, ?, ?, ?, 'pending', ?, 0, ?, ?, ?)`);
159
164
  for (const destination of destinations) {
160
- const config = destination.kind === "gateway_event" ? {
165
+ if (destination.kind === "weixin" && (automation.delivery.notificationPolicy === "none" || automation.delivery.notificationPolicy === "attention" && run.status === "succeeded" && (automation.safety?.mode ?? "auto_apply") === "auto_apply")) continue;
166
+ const config = destination.kind === "gateway_event" || destination.kind === "weixin" ? {
161
167
  ...destination,
162
168
  notificationPolicy: automation.delivery.notificationPolicy,
163
169
  requiresAttention: run.status !== "succeeded" || (automation.safety?.mode ?? "auto_apply") !== "auto_apply",
@@ -30,6 +30,7 @@ export type AutomationAction = {
30
30
  kind: 'agent';
31
31
  agentId?: string;
32
32
  instruction: string;
33
+ mcpSourceId?: string;
33
34
  workingDirectory?: string;
34
35
  model?: string;
35
36
  timeoutSeconds?: number;
@@ -59,6 +60,11 @@ export type AutomationNotificationPolicy = 'attention' | 'all' | 'none';
59
60
  export type AutomationDeliveryDestination = {
60
61
  key: string;
61
62
  kind: 'gateway_event';
63
+ } | {
64
+ key: string;
65
+ kind: 'weixin';
66
+ conversationId: string;
67
+ principalId: string;
62
68
  } | {
63
69
  key: string;
64
70
  kind: 'webhook';
@@ -312,6 +318,7 @@ export interface PrepareAutomationAgentSessionInput {
312
318
  runId: string;
313
319
  }
314
320
  export interface AutomationDeps {
321
+ getConfig?: () => unknown;
315
322
  agentService?: {
316
323
  sessionConfig?: {
317
324
  applyAutomationWorkingDirectory?: (conversationId: string, workingDirectory: string | undefined) => Promise<void>;
@@ -349,6 +356,7 @@ export interface AutomationDeps {
349
356
  error?: string;
350
357
  }>;
351
358
  };
359
+ onWeixinRunCompleted?: (conversationId: string, principalId: string, run: AutomationRun) => Promise<void>;
352
360
  onRunCompleted?: (run: AutomationRun, context: AutomationRunDeliveryContext) => void | Promise<void>;
353
361
  onEvent?: (event: AutomationEventEnvelope, signal?: AbortSignal) => void | Promise<void>;
354
362
  onReliabilityAttention?: (input: {