@xopcai/xopc 0.0.309 → 0.0.311

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 (489) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-XKNYlFUI.js → activity-store-DVUTs1fk.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-1S2TFECE.js → agent-avatar-dicebear-zKINl7UH.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D2ePZKdY.js +1 -0
  6. package/dist/gateway/static/root/assets/{agents-CPqUMtCL.js → agents-BiD9STyv.js} +1 -1
  7. package/dist/gateway/static/root/assets/{api-BEUEE4f2.js → api-_aHQA8bd.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-link-BiBXVEvp.js → app-link-wamYbNUl.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-CgVBSqzu.js → app-management-settings-panel-C94LAxyt.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-CoWdCokb.js → appearance-settings-CP01zHvC.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-B7DmSJQj.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-C3ZA6LRS.js → archive-plugin-SwWFt5MT.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-CdgS6_zy.js → attachment-load-DdTFml9l.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-BtHL2hpg.js → automations-page-Kmr5WVFp.js} +1 -1
  15. package/dist/gateway/static/root/assets/automations-workspace-bkijiu-Y.js +7 -0
  16. package/dist/gateway/static/root/assets/{binary-plugins-CiDhtq_H.js → binary-plugins-47UTtDNq.js} +1 -1
  17. package/dist/gateway/static/root/assets/{block-editor-Br00T83w.js → block-editor-DvzZkMG8.js} +3 -3
  18. package/dist/gateway/static/root/assets/{browser-automation-inputs-D2tILykA.js → browser-automation-inputs-C611KRBx.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-automations-page-BVuEmryB.js → browser-automations-page-DrUKNL9X.js} +2 -2
  20. package/dist/gateway/static/root/assets/browser-settings-page-Dhf_MWCf.js +3 -0
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel-BCubrDf8.js +8 -0
  22. package/dist/gateway/static/root/assets/channels-settings-e4T1DEfN.js +1 -0
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-JsMtzDao.js → chat-terminal-dock-Bg_m7HUE.js} +2 -2
  24. package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-Cq1tE_3b.js → chunk-KS7C4IRE-BMYIfy9x.js} +2 -2
  25. package/dist/gateway/static/root/assets/computer-settings-page-CosCmVsT.js +1 -0
  26. package/dist/gateway/static/root/assets/{connector-service-page-DZFNUTiN.js → connector-service-page-BL-hSR7_.js} +1 -1
  27. package/dist/gateway/static/root/assets/connectors-page-C0WWxnxJ.js +2 -0
  28. package/dist/gateway/static/root/assets/date-picker-DqYFVasF.js +1 -0
  29. package/dist/gateway/static/root/assets/{dependency-picker-B-BcuG1y.js → dependency-picker-DCyyFLKp.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-CdBBhhdY.js → desktop-pet-CFnnpRA_.js} +1 -1
  31. package/dist/gateway/static/root/assets/desktop-pet-settings-U5wWRH4c.js +1 -0
  32. package/dist/gateway/static/root/assets/device-pairing-wizard-BhHxvFO1.js +1 -0
  33. package/dist/gateway/static/root/assets/{extension-debug-page-BFp5eKtY.js → extension-debug-page-DA8WJ3-E.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-DL3vyyH6.js → extension-page-C2BIB88m.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-BXtvdAsY.js → extension-settings-page-kpYo979N.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-swr-xAOGtenO.js → gateway-config-swr-DUDX42qY.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-realtime-BuaTsMSi.js → gateway-realtime-CGOW0-b4.js} +1 -1
  38. package/dist/gateway/static/root/assets/gateway-realtime-store-D4um_sV7.js +1 -0
  39. package/dist/gateway/static/root/assets/gateway-settings-CE9t1yTa.js +1 -0
  40. package/dist/gateway/static/root/assets/{gateway-startup-retry-BwDxKHd4.js → gateway-startup-retry-Cf8OxlvY.js} +1 -1
  41. package/dist/gateway/static/root/assets/home-page-C7Ezx8Du.js +1 -0
  42. package/dist/gateway/static/root/assets/{image-generation-api-wGMeI_yW.js → image-generation-api-D2YorS--.js} +1 -1
  43. package/dist/gateway/static/root/assets/{imports-page-zexFT5Rq.js → imports-page-NPk698vI.js} +1 -1
  44. package/dist/gateway/static/root/assets/index-1wIKA-kM.css +1 -0
  45. package/dist/gateway/static/root/assets/index-DxYitLp8.js +79 -0
  46. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CutG9zLh.js → keyboard-shortcuts-settings-BhreF0_O.js} +1 -1
  47. package/dist/gateway/static/root/assets/local-app-workbench-page-CPmynb3x.js +2 -0
  48. package/dist/gateway/static/root/assets/{local-apps-page-CJy6I7Dt.js → local-apps-page-DOZZBdqj.js} +1 -1
  49. package/dist/gateway/static/root/assets/{locale-store-DPZ79W1-.js → locale-store-DA0Z5jM_.js} +1 -1
  50. package/dist/gateway/static/root/assets/{logs-page-egGcPHNi.js → logs-page-M8kz26yo.js} +2 -2
  51. package/dist/gateway/static/root/assets/{management-settings-BQhIOELc.js → management-settings-JLqHYQvY.js} +1 -1
  52. package/dist/gateway/static/root/assets/{markdown-view-p2P5hP1U.js → markdown-view-BDpcjR_Z.js} +1 -1
  53. package/dist/gateway/static/root/assets/markdown-view-DSjfHfaW.css +1 -0
  54. package/dist/gateway/static/root/assets/{media-plugins-CsBylqlN.js → media-plugins-B75SWUJd.js} +1 -1
  55. package/dist/gateway/static/root/assets/messages-4BtQKYlM.js +3 -0
  56. package/dist/gateway/static/root/assets/note-detail-panel-B_Ft0M32.js +5 -0
  57. package/dist/gateway/static/root/assets/notes-page-C32mxSD-.js +8 -0
  58. package/dist/gateway/static/root/assets/{page-tabs-ChQ4jJFs.js → page-tabs-CMlQUzT6.js} +1 -1
  59. package/dist/gateway/static/root/assets/{popover-select-9i-ZtHXL.js → popover-select-B-GDnZO9.js} +1 -1
  60. package/dist/gateway/static/root/assets/preview-open-alternatives-cZ2hszQT.js +1 -0
  61. package/dist/gateway/static/root/assets/{product-open-page-BADxWEdP.js → product-open-page-CPoSbglF.js} +1 -1
  62. package/dist/gateway/static/root/assets/project-detail-page-DYttWua0.js +1 -0
  63. package/dist/gateway/static/root/assets/projects-page-D46drWbl.js +1 -0
  64. package/dist/gateway/static/root/assets/{registry-api-B_e_nZSN.js → registry-api-C0DCx3wv.js} +1 -1
  65. package/dist/gateway/static/root/assets/remote-access-hub-C9n9Nuhi.js +1 -0
  66. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-D-pwiIyp.js → runtime-tools-settings-panel-bMLWRApp.js} +2 -2
  67. package/dist/gateway/static/root/assets/scenes-page-Dw3hmHAr.js +1 -0
  68. package/dist/gateway/static/root/assets/{schema-form-IWmb05DX.js → schema-form-UVJV_7AS.js} +1 -1
  69. package/dist/gateway/static/root/assets/sessions-page-C8P6ff91.js +1 -0
  70. package/dist/gateway/static/root/assets/settings-advanced-gate-whpUsAy3.js +1 -0
  71. package/dist/gateway/static/root/assets/{settings-form-section-B0veRBZs.js → settings-form-section-BqzOqonM.js} +1 -1
  72. package/dist/gateway/static/root/assets/settings-page-DQ9RJ8-b.js +1 -0
  73. package/dist/gateway/static/root/assets/settings-page-layout-D3Spald3.js +1 -0
  74. package/dist/gateway/static/root/assets/{settings-shell-layer-context-DCp6ykjQ.js → settings-shell-layer-context-BTQUDoJ2.js} +1 -1
  75. package/dist/gateway/static/root/assets/setup-status-panel-C8u601m8.js +1 -0
  76. package/dist/gateway/static/root/assets/{share-preview-page-CirpgkfD.js → share-preview-page-BcgYzA7y.js} +1 -1
  77. package/dist/gateway/static/root/assets/shares-settings-Bv-2rZ8e.js +1 -0
  78. package/dist/gateway/static/root/assets/skill-reload-api-LM-cgWUS.js +1 -0
  79. package/dist/gateway/static/root/assets/skills-page-ggmb7rCW.js +2 -0
  80. package/dist/gateway/static/root/assets/{skills-page.utils-B42mpWKV.js → skills-page.utils-ADABzrtk.js} +1 -1
  81. package/dist/gateway/static/root/assets/system-settings-panel-DfkcW_Za.js +1 -0
  82. package/dist/gateway/static/root/assets/task-detail-page-DC4yqDFd.js +1 -0
  83. package/dist/gateway/static/root/assets/{theme-store-BFbj_2Tu.js → theme-store-CegIlB8d.js} +1 -1
  84. package/dist/gateway/static/root/assets/tunnel-api-CTuwTdMm.js +1 -0
  85. package/dist/gateway/static/root/assets/use-autosave-5ZDd9XKh.js +1 -0
  86. package/dist/gateway/static/root/assets/user-model-page-BFKFhdZ0.js +2 -0
  87. package/dist/gateway/static/root/assets/{voice-api-key-field-BZbKQ8HT.js → voice-api-key-field-D3urfd-n.js} +1 -1
  88. package/dist/gateway/static/root/assets/{voice-config-api-SKCeQLrH.js → voice-config-api-DTyMdGOR.js} +1 -1
  89. package/dist/gateway/static/root/assets/{work-discovery-overlay-BRVTTXNG.js → work-discovery-overlay-JzM3Ylbs.js} +1 -1
  90. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D2kuwv5e.js → workflow-run-setup-panel-Bn2CtRdB.js} +2 -2
  91. package/dist/gateway/static/root/assets/workflows-page-BiCmt98A.js +6 -0
  92. package/dist/gateway/static/root/connector-icons/SOURCES.md +0 -2
  93. package/dist/gateway/static/root/index.html +17 -20
  94. package/dist/gateway/static/root/notification-sw.js +1 -1
  95. package/dist/package.js +1 -1
  96. package/dist/packages/gateway-contract/src/notifications.js +12 -11
  97. package/dist/packages/gateway-contract/src/proactive.js +6 -6
  98. package/dist/packages/gateway-contract/src/project-monitoring.js +4 -4
  99. package/dist/packages/gateway-contract/src/project-operating.js +1 -4
  100. package/dist/src/agent/agent-manager.d.ts +2 -6
  101. package/dist/src/agent/agent-manager.js +2 -1
  102. package/dist/src/agent/background-review/run-background-review.js +1 -1
  103. package/dist/src/agent/commands/command-registry.js +1 -1
  104. package/dist/src/agent/context/execution-scope.js +1 -1
  105. package/dist/src/agent/external-tools/cliProvider.d.ts +47 -0
  106. package/dist/src/agent/external-tools/cliProvider.js +317 -0
  107. package/dist/src/agent/external-tools/composio-provider.js +3 -3
  108. package/dist/src/agent/external-tools/gateway-tools.js +8 -2
  109. package/dist/src/agent/external-tools/index.js +6 -0
  110. package/dist/src/agent/external-tools/service.js +1 -1
  111. package/dist/src/agent/external-tools/types.d.ts +1 -1
  112. package/dist/src/agent/external-tools/types.js +1 -0
  113. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  114. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +1 -1
  115. package/dist/src/agent/memory/turn-provenance.js +2 -1
  116. package/dist/src/agent/service/parse-outbound-session-key.js +1 -1
  117. package/dist/src/agent/service.js +1 -0
  118. package/dist/src/agent/service.types.d.ts +2 -0
  119. package/dist/src/agent/tools/factory.d.ts +2 -0
  120. package/dist/src/agent/tools/factory.js +3 -2
  121. package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +20 -0
  122. package/dist/src/agent/tools/search/providers/xopc-cloud.js +56 -0
  123. package/dist/src/agent/tools/search/registry.d.ts +4 -2
  124. package/dist/src/agent/tools/search/registry.js +5 -3
  125. package/dist/src/agent/tools/xopc-use-tool.d.ts +4 -2
  126. package/dist/src/agent/tools/xopc-use-tool.js +46 -43
  127. package/dist/src/automations/service/automation-service.d.ts +0 -4
  128. package/dist/src/automations/service/automation-service.js +0 -31
  129. package/dist/src/capabilities/store-connector.js +46 -0
  130. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  131. package/dist/src/cli/commands/project.js +1 -1
  132. package/dist/src/config/schema.d.ts +4 -4
  133. package/dist/src/config/schema.js +2 -12
  134. package/dist/src/config/web-patch.js +0 -5
  135. package/dist/src/connectors/account-selection.d.ts +14 -0
  136. package/dist/src/connectors/account-selection.js +26 -0
  137. package/dist/src/connectors/china-catalog.js +93 -226
  138. package/dist/src/connectors/cli/adapterRegistry.d.ts +4 -0
  139. package/dist/src/connectors/cli/adapterRegistry.js +26 -0
  140. package/dist/src/connectors/cli/adapters/lark.d.ts +2 -0
  141. package/dist/src/connectors/cli/adapters/lark.js +143 -0
  142. package/dist/src/connectors/cli/adapters/larkShortcuts.d.ts +3 -0
  143. package/dist/src/connectors/cli/adapters/larkShortcuts.js +64 -0
  144. package/dist/src/connectors/cli/adapters/wecom.d.ts +2 -0
  145. package/dist/src/connectors/cli/adapters/wecom.js +97 -0
  146. package/dist/src/connectors/cli/adapters/wps365/bundle.js +575 -0
  147. package/dist/src/connectors/cli/adapters/wps365.d.ts +2 -0
  148. package/dist/src/connectors/cli/adapters/wps365.js +115 -0
  149. package/dist/src/connectors/cli/assets.d.ts +3 -0
  150. package/dist/src/connectors/cli/assets.js +44 -0
  151. package/dist/src/connectors/cli/authorization.d.ts +16 -0
  152. package/dist/src/connectors/cli/authorization.js +184 -0
  153. package/dist/src/connectors/cli/distributions.d.ts +4 -0
  154. package/dist/src/connectors/cli/distributions.js +69 -0
  155. package/dist/src/connectors/cli/installer.d.ts +5 -0
  156. package/dist/src/connectors/cli/installer.js +102 -0
  157. package/dist/src/connectors/cli/lifecycle.d.ts +1 -0
  158. package/dist/src/connectors/cli/lifecycle.js +19 -0
  159. package/dist/src/connectors/cli/process.d.ts +18 -0
  160. package/dist/src/connectors/cli/process.js +100 -0
  161. package/dist/src/connectors/cli/protocol.d.ts +10 -0
  162. package/dist/src/connectors/cli/protocol.js +63 -0
  163. package/dist/src/connectors/cli/runtime.d.ts +10 -0
  164. package/dist/src/connectors/cli/runtime.js +93 -0
  165. package/dist/src/connectors/cli/store.d.ts +35 -0
  166. package/dist/src/connectors/cli/store.js +121 -0
  167. package/dist/src/connectors/cli/types.d.ts +73 -0
  168. package/dist/src/connectors/composio-backends.js +1 -1
  169. package/dist/src/connectors/composio-sessions.d.ts +1 -0
  170. package/dist/src/connectors/composio-sessions.js +8 -3
  171. package/dist/src/connectors/composio.js +1 -1
  172. package/dist/src/connectors/connection-candidates.js +22 -3
  173. package/dist/src/connectors/connection-recovery-service.d.ts +1 -0
  174. package/dist/src/connectors/connection-recovery-service.js +53 -8
  175. package/dist/src/connectors/health.js +52 -0
  176. package/dist/src/connectors/instances.js +5 -1
  177. package/dist/src/connectors/lifecycle.js +2 -0
  178. package/dist/src/connectors/principal.js +2 -1
  179. package/dist/src/connectors/runtime-adapter-registry.js +31 -0
  180. package/dist/src/connectors/types.d.ts +13 -1
  181. package/dist/src/connectors/usage.js +1 -1
  182. package/dist/src/connectors/workflow-preflight.js +8 -4
  183. package/dist/src/extensions/install.js +1 -1
  184. package/dist/src/gateway/hono/app.d.ts +2 -0
  185. package/dist/src/gateway/hono/app.js +4 -2
  186. package/dist/src/gateway/hono/lib/config-payload.d.ts +0 -15
  187. package/dist/src/gateway/hono/lib/config-payload.js +0 -11
  188. package/dist/src/gateway/hono/routes/cli-connectors.d.ts +3 -0
  189. package/dist/src/gateway/hono/routes/cli-connectors.js +219 -0
  190. package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +2 -2
  191. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -59
  192. package/dist/src/gateway/hono/routes/config.js +0 -16
  193. package/dist/src/gateway/hono/routes/connectors.js +21 -22
  194. package/dist/src/gateway/hono/routes/deps.d.ts +2 -0
  195. package/dist/src/gateway/hono/routes/lazy-bundles.js +4 -17
  196. package/dist/src/gateway/hono/routes/projects.js +1 -1
  197. package/dist/src/gateway/hono/routes/public-gateway.js +0 -1
  198. package/dist/src/gateway/hono/routes/scenes.d.ts +3 -0
  199. package/dist/src/gateway/hono/routes/scenes.js +142 -0
  200. package/dist/src/gateway/hono/routes/tasks.js +0 -46
  201. package/dist/src/gateway/hono/routes/user-model.js +54 -1
  202. package/dist/src/gateway/scenes/browserNotifications.d.ts +4 -0
  203. package/dist/src/gateway/scenes/browserNotifications.js +54 -0
  204. package/dist/src/gateway/scenes/host.d.ts +34 -0
  205. package/dist/src/gateway/scenes/host.js +129 -0
  206. package/dist/src/gateway/scenes/mailContext.d.ts +32 -0
  207. package/dist/src/gateway/scenes/mailContext.js +235 -0
  208. package/dist/src/gateway/security/gateway-scopes.js +0 -4
  209. package/dist/src/gateway/security/index.js +1 -1
  210. package/dist/src/gateway/service/config-coordinator.d.ts +1 -10
  211. package/dist/src/gateway/service/config-coordinator.js +0 -16
  212. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  213. package/dist/src/gateway/service.d.ts +4 -25
  214. package/dist/src/gateway/service.js +44 -99
  215. package/dist/src/gateway/session-context-summary.js +2 -1
  216. package/dist/src/heartbeat/index.js +1 -1
  217. package/dist/src/infra/unhandled-rejections.js +1 -1
  218. package/dist/src/migrations/runner.js +1 -4
  219. package/dist/src/notifications/browser-endpoint.d.ts +2 -0
  220. package/dist/src/notifications/browser-endpoint.js +13 -0
  221. package/dist/src/notifications/browserSubscriptions.d.ts +20 -0
  222. package/dist/src/notifications/browserSubscriptions.js +59 -0
  223. package/dist/src/notifications/browserTransport.d.ts +9 -0
  224. package/dist/src/notifications/browserTransport.js +64 -0
  225. package/dist/src/notifications/dispatch.d.ts +46 -0
  226. package/dist/src/notifications/dispatch.js +109 -0
  227. package/dist/src/notifications/domain-delivery.d.ts +21 -0
  228. package/dist/src/notifications/planner.js +0 -36
  229. package/dist/src/notifications/quietHours.d.ts +6 -0
  230. package/dist/src/notifications/quietHours.js +23 -0
  231. package/dist/src/notifications/resultOutbox.d.ts +23 -0
  232. package/dist/src/notifications/resultOutbox.js +49 -0
  233. package/dist/src/notifications/service.d.ts +18 -4
  234. package/dist/src/notifications/service.js +42 -61
  235. package/dist/src/notifications/store.d.ts +2 -1
  236. package/dist/src/notifications/store.js +7 -8
  237. package/dist/src/projects/project-service.d.ts +1 -4
  238. package/dist/src/projects/project-service.js +2 -30
  239. package/dist/src/projects/workspace.js +1 -1
  240. package/dist/src/providers/model-catalog-persistence.js +19 -1
  241. package/dist/src/providers/model-catalog-store.js +1 -0
  242. package/dist/src/providers/model-catalog-types.d.ts +17 -0
  243. package/dist/src/providers/xopc-cloud-model-source.js +27 -0
  244. package/dist/src/scenes/agentExecutor.d.ts +8 -0
  245. package/dist/src/scenes/agentExecutor.js +63 -0
  246. package/dist/src/scenes/contracts.d.ts +118 -0
  247. package/dist/src/scenes/contracts.js +145 -0
  248. package/dist/src/scenes/execution.d.ts +56 -0
  249. package/dist/src/scenes/execution.js +168 -0
  250. package/dist/src/scenes/httpServices.d.ts +34 -0
  251. package/dist/src/scenes/inbox.d.ts +16 -0
  252. package/dist/src/scenes/inbox.js +68 -0
  253. package/dist/src/scenes/mailContext.d.ts +20 -0
  254. package/dist/src/scenes/mailContext.js +106 -0
  255. package/dist/src/scenes/mailObservations.d.ts +20 -0
  256. package/dist/src/scenes/mailObservations.js +107 -0
  257. package/dist/src/scenes/maintenance.d.ts +3 -0
  258. package/dist/src/scenes/maintenance.js +24 -0
  259. package/dist/src/scenes/metrics.d.ts +35 -0
  260. package/dist/src/scenes/metrics.js +94 -0
  261. package/dist/src/scenes/notificationEligibility.d.ts +17 -0
  262. package/dist/src/scenes/notificationEligibility.js +72 -0
  263. package/dist/src/scenes/notificationPublication.d.ts +7 -0
  264. package/dist/src/scenes/notificationPublication.js +43 -0
  265. package/dist/src/scenes/preferences.d.ts +40 -0
  266. package/dist/src/scenes/preferences.js +108 -0
  267. package/dist/src/scenes/readiness.d.ts +7 -0
  268. package/dist/src/scenes/readiness.js +20 -0
  269. package/dist/src/scenes/repository.d.ts +174 -0
  270. package/dist/src/scenes/repository.js +740 -0
  271. package/dist/src/scenes/resultNotifications.d.ts +17 -0
  272. package/dist/src/scenes/resultNotifications.js +204 -0
  273. package/dist/src/scenes/runtime.d.ts +25 -0
  274. package/dist/src/scenes/runtime.js +101 -0
  275. package/dist/src/scenes/schedule.d.ts +9 -0
  276. package/dist/src/scenes/schedule.js +45 -0
  277. package/dist/src/scenes/service.d.ts +29 -0
  278. package/dist/src/scenes/service.js +116 -0
  279. package/dist/src/scenes/templates.d.ts +64 -0
  280. package/dist/src/scenes/templates.js +76 -0
  281. package/dist/src/scenes/userNotes.d.ts +10 -0
  282. package/dist/src/scenes/userNotes.js +34 -0
  283. package/dist/src/session/resolve-session.js +2 -1
  284. package/dist/src/session/store.js +2 -1
  285. package/dist/src/share/share-config.js +0 -5
  286. package/dist/src/share/site-share-config.js +0 -5
  287. package/dist/src/storage/sqlite/connection-wait-repository.js +20 -7
  288. package/dist/src/storage/sqlite/connection.js +1 -1
  289. package/dist/src/storage/sqlite/connector-account-repository.js +1 -0
  290. package/dist/src/storage/sqlite/connector-sync-policy-repository.d.ts +0 -4
  291. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +3 -17
  292. package/dist/src/storage/sqlite/conversation-repository.js +2 -1
  293. package/dist/src/storage/sqlite/index.js +2 -1
  294. package/dist/src/storage/sqlite/migrations/187_cli_connectors.sql +34 -0
  295. package/dist/src/storage/sqlite/migrations/188_scene_storage.sql +2 -0
  296. package/dist/src/storage/sqlite/migrations/189_scene_source_health.sql +8 -0
  297. package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +2 -0
  298. package/dist/src/storage/sqlite/migrations/conversation-backup.js +7 -3
  299. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  300. package/dist/src/storage/sqlite/migrations/runner.js +20 -44
  301. package/dist/src/storage/sqlite/migrations/scene-reset.d.ts +5 -0
  302. package/dist/src/storage/sqlite/migrations/scene-reset.js +40 -0
  303. package/dist/src/storage/sqlite/scenes-schema.d.ts +8 -0
  304. package/dist/src/storage/sqlite/scenes-schema.js +61 -0
  305. package/dist/src/storage/sqlite/schema.js +4 -10
  306. package/dist/src/storage/sqlite/schemas/notifications.sql +65 -0
  307. package/dist/src/storage/sqlite/schemas/scenes.sql +212 -0
  308. package/dist/src/storage/sqlite/session-read-repository.d.ts +8 -0
  309. package/dist/src/storage/sqlite/session-read-repository.js +35 -0
  310. package/dist/src/storage/sqlite/session-repository.d.ts +1 -1
  311. package/dist/src/storage/sqlite/session-repository.js +2 -25
  312. package/dist/src/storage/sqlite/sql-assets.d.ts +2 -0
  313. package/dist/src/storage/sqlite/sql-assets.js +18 -0
  314. package/dist/src/storage/sqlite/transaction.d.ts +2 -0
  315. package/dist/src/storage/sqlite/transaction.js +20 -1
  316. package/dist/src/tasks/home-query-service.d.ts +0 -2
  317. package/dist/src/tasks/home-query-service.js +13 -43
  318. package/dist/src/tasks/index.d.ts +0 -1
  319. package/dist/src/tasks/index.js +4 -5
  320. package/dist/src/tasks/project-operating-view-service.js +1 -4
  321. package/dist/src/tui/backends/embedded-backend.js +1 -1
  322. package/dist/src/tui/tui-commands.js +1 -1
  323. package/dist/src/user-model/goals.d.ts +10 -0
  324. package/dist/src/user-model/goals.js +29 -1
  325. package/dist/src/user-model/index.js +2 -2
  326. package/dist/src/voice/realtime/memory-context.js +2 -1
  327. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  328. package/package.json +4 -2
  329. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-f0-YFMUz.js +0 -1
  330. package/dist/gateway/static/root/assets/api-CN4id43t.js +0 -1
  331. package/dist/gateway/static/root/assets/apps-page-CexHOcWg.js +0 -1
  332. package/dist/gateway/static/root/assets/automations-workspace-onJPfmO6.js +0 -6
  333. package/dist/gateway/static/root/assets/browser-settings-page-BgVTyPFY.js +0 -3
  334. package/dist/gateway/static/root/assets/capabilities-settings-panel-Dra8wj1S.js +0 -8
  335. package/dist/gateway/static/root/assets/channels-settings-CkxiMDJ4.js +0 -1
  336. package/dist/gateway/static/root/assets/channels-status-swr-Dtder4G_.js +0 -1
  337. package/dist/gateway/static/root/assets/computer-settings-page-DHerePwo.js +0 -1
  338. package/dist/gateway/static/root/assets/connectors-page-cl9ZrV4D.js +0 -2
  339. package/dist/gateway/static/root/assets/cron-expression-DAhdv_Xv.js +0 -2
  340. package/dist/gateway/static/root/assets/date-picker-PacO1m3a.js +0 -1
  341. package/dist/gateway/static/root/assets/desktop-pet-settings-Gy03NgMI.js +0 -1
  342. package/dist/gateway/static/root/assets/device-pairing-wizard-aV25nKag.js +0 -1
  343. package/dist/gateway/static/root/assets/external-link-DjqjBmc3.js +0 -1
  344. package/dist/gateway/static/root/assets/gateway-realtime-store-BG95uGVW.js +0 -1
  345. package/dist/gateway/static/root/assets/gateway-settings-Dcr2Ikeh.js +0 -1
  346. package/dist/gateway/static/root/assets/globe-DSSGFWFn.js +0 -1
  347. package/dist/gateway/static/root/assets/heartbeat-settings-DOy3alvT.js +0 -1
  348. package/dist/gateway/static/root/assets/home-page-CDm3dGVy.js +0 -1
  349. package/dist/gateway/static/root/assets/index-D-vczw_0.css +0 -1
  350. package/dist/gateway/static/root/assets/index-DJo4DimT.js +0 -79
  351. package/dist/gateway/static/root/assets/loader-circle-CifKLtgG.js +0 -1
  352. package/dist/gateway/static/root/assets/local-app-workbench-page-CwLvTwjn.js +0 -2
  353. package/dist/gateway/static/root/assets/markdown-view-Y68dCxuc.css +0 -1
  354. package/dist/gateway/static/root/assets/messages-BiYTyLJr.js +0 -3
  355. package/dist/gateway/static/root/assets/note-detail-panel-c2k5Uz6X.js +0 -5
  356. package/dist/gateway/static/root/assets/notes-page-BLQWJMhf.js +0 -8
  357. package/dist/gateway/static/root/assets/preview-open-alternatives-9B5W7nVE.js +0 -1
  358. package/dist/gateway/static/root/assets/proactive-page-iOjI0d_e.js +0 -1
  359. package/dist/gateway/static/root/assets/project-detail-page-BcxbQn2M.js +0 -1
  360. package/dist/gateway/static/root/assets/projects-page-BuSvld0O.js +0 -1
  361. package/dist/gateway/static/root/assets/remote-access-hub-CFS8LQKW.js +0 -1
  362. package/dist/gateway/static/root/assets/sessions-page-DZjc__ok.js +0 -1
  363. package/dist/gateway/static/root/assets/settings-advanced-gate-C1SM5B93.js +0 -1
  364. package/dist/gateway/static/root/assets/settings-page-CxRWyWYe.js +0 -1
  365. package/dist/gateway/static/root/assets/settings-page-layout-X1x-2Cp9.js +0 -1
  366. package/dist/gateway/static/root/assets/setup-status-panel-D9Rl7Tec.js +0 -1
  367. package/dist/gateway/static/root/assets/shares-settings-CwCThBs0.js +0 -1
  368. package/dist/gateway/static/root/assets/skill-reload-api-DG6VGbOX.js +0 -1
  369. package/dist/gateway/static/root/assets/skills-page-BdRJ2vnL.js +0 -2
  370. package/dist/gateway/static/root/assets/system-settings-panel-DXIZpAvU.js +0 -1
  371. package/dist/gateway/static/root/assets/task-detail-page-QXo9LJly.js +0 -1
  372. package/dist/gateway/static/root/assets/tunnel-api-Db2guRdW.js +0 -1
  373. package/dist/gateway/static/root/assets/use-autosave-DDY9qoXZ.js +0 -1
  374. package/dist/gateway/static/root/assets/user-model-page-CzPmMkaO.js +0 -2
  375. package/dist/gateway/static/root/assets/workflows-page-CQXtiYtq.js +0 -6
  376. package/dist/gateway/static/root/connector-icons/wps-calendar.svg +0 -14
  377. package/dist/gateway/static/root/connector-icons/wps-mail.svg +0 -7
  378. package/dist/src/connectors/source-change-publisher.d.ts +0 -17
  379. package/dist/src/connectors/source-change-publisher.js +0 -151
  380. package/dist/src/gateway/heartbeat/check-store.d.ts +0 -18
  381. package/dist/src/gateway/heartbeat/check-store.js +0 -74
  382. package/dist/src/gateway/heartbeat/index.d.ts +0 -1
  383. package/dist/src/gateway/heartbeat/index.js +0 -2
  384. package/dist/src/gateway/heartbeat/service.d.ts +0 -55
  385. package/dist/src/gateway/heartbeat/service.js +0 -228
  386. package/dist/src/gateway/hono/routes/proactive-control.d.ts +0 -3
  387. package/dist/src/gateway/hono/routes/proactive-control.js +0 -135
  388. package/dist/src/gateway/hono/routes/proactive.d.ts +0 -4
  389. package/dist/src/gateway/hono/routes/proactive.js +0 -164
  390. package/dist/src/gateway/hono/routes/workspace.d.ts +0 -3
  391. package/dist/src/gateway/hono/routes/workspace.js +0 -62
  392. package/dist/src/gateway/workspace-heartbeat-path.d.ts +0 -3
  393. package/dist/src/gateway/workspace-heartbeat-path.js +0 -14
  394. package/dist/src/migrations/conversation-routing-config.d.ts +0 -2
  395. package/dist/src/migrations/conversation-routing-config.js +0 -42
  396. package/dist/src/notifications/proactive-channel.d.ts +0 -8
  397. package/dist/src/notifications/proactive-channel.js +0 -60
  398. package/dist/src/notifications/proactive-policy.d.ts +0 -3
  399. package/dist/src/notifications/proactive-policy.js +0 -35
  400. package/dist/src/notifications/web-push.d.ts +0 -19
  401. package/dist/src/notifications/web-push.js +0 -185
  402. package/dist/src/proactive/actions/service.d.ts +0 -1
  403. package/dist/src/proactive/actions/service.js +0 -82
  404. package/dist/src/proactive/events/envelope.d.ts +0 -2
  405. package/dist/src/proactive/events/envelope.js +0 -54
  406. package/dist/src/proactive/events/product-event-bridge.d.ts +0 -7
  407. package/dist/src/proactive/events/product-event-bridge.js +0 -87
  408. package/dist/src/proactive/events/publisher.d.ts +0 -4
  409. package/dist/src/proactive/events/repository.d.ts +0 -9
  410. package/dist/src/proactive/events/repository.js +0 -63
  411. package/dist/src/proactive/events/types.d.ts +0 -44
  412. package/dist/src/proactive/events/types.js +0 -15
  413. package/dist/src/proactive/execution/agent-executor.d.ts +0 -21
  414. package/dist/src/proactive/execution/agent-executor.js +0 -125
  415. package/dist/src/proactive/execution/authorization.d.ts +0 -7
  416. package/dist/src/proactive/execution/authorization.js +0 -71
  417. package/dist/src/proactive/execution/context.d.ts +0 -49
  418. package/dist/src/proactive/execution/context.js +0 -408
  419. package/dist/src/proactive/execution/insight.d.ts +0 -14
  420. package/dist/src/proactive/execution/insight.js +0 -132
  421. package/dist/src/proactive/execution/repository.d.ts +0 -28
  422. package/dist/src/proactive/execution/repository.js +0 -211
  423. package/dist/src/proactive/execution/types.d.ts +0 -80
  424. package/dist/src/proactive/execution/worker.d.ts +0 -15
  425. package/dist/src/proactive/execution/worker.js +0 -146
  426. package/dist/src/proactive/experience.d.ts +0 -89
  427. package/dist/src/proactive/experience.js +0 -195
  428. package/dist/src/proactive/follow-ups.d.ts +0 -128
  429. package/dist/src/proactive/follow-ups.js +0 -182
  430. package/dist/src/proactive/inbox/cards.d.ts +0 -21
  431. package/dist/src/proactive/inbox/cards.js +0 -276
  432. package/dist/src/proactive/inbox/delivery.d.ts +0 -6
  433. package/dist/src/proactive/inbox/delivery.js +0 -54
  434. package/dist/src/proactive/inbox/digest.d.ts +0 -8
  435. package/dist/src/proactive/inbox/digest.js +0 -123
  436. package/dist/src/proactive/inbox/lifecycle.d.ts +0 -4
  437. package/dist/src/proactive/inbox/lifecycle.js +0 -62
  438. package/dist/src/proactive/inbox/notification-policy.d.ts +0 -1
  439. package/dist/src/proactive/inbox/notification-policy.js +0 -25
  440. package/dist/src/proactive/inbox/repository.d.ts +0 -25
  441. package/dist/src/proactive/inbox/repository.js +0 -244
  442. package/dist/src/proactive/inbox/service.d.ts +0 -23
  443. package/dist/src/proactive/inbox/service.js +0 -46
  444. package/dist/src/proactive/inbox/types.d.ts +0 -64
  445. package/dist/src/proactive/inbox/worker.d.ts +0 -13
  446. package/dist/src/proactive/inbox/worker.js +0 -71
  447. package/dist/src/proactive/index.d.ts +0 -20
  448. package/dist/src/proactive/index.js +0 -14
  449. package/dist/src/proactive/mail-thread.d.ts +0 -13
  450. package/dist/src/proactive/mail-thread.js +0 -55
  451. package/dist/src/proactive/maintenance.d.ts +0 -4
  452. package/dist/src/proactive/maintenance.js +0 -28
  453. package/dist/src/proactive/metrics.d.ts +0 -10
  454. package/dist/src/proactive/metrics.js +0 -28
  455. package/dist/src/proactive/policy/presence.d.ts +0 -2
  456. package/dist/src/proactive/policy/presence.js +0 -30
  457. package/dist/src/proactive/policy/service.d.ts +0 -54
  458. package/dist/src/proactive/policy/service.js +0 -123
  459. package/dist/src/proactive/routing/batch-repository.d.ts +0 -27
  460. package/dist/src/proactive/routing/batch-repository.js +0 -57
  461. package/dist/src/proactive/routing/matcher.d.ts +0 -5
  462. package/dist/src/proactive/routing/matcher.js +0 -57
  463. package/dist/src/proactive/routing/types.d.ts +0 -44
  464. package/dist/src/proactive/routing/types.js +0 -1
  465. package/dist/src/proactive/scenarios/control.d.ts +0 -52
  466. package/dist/src/proactive/scenarios/control.js +0 -75
  467. package/dist/src/proactive/scenarios/prompt-composer.d.ts +0 -14
  468. package/dist/src/proactive/scenarios/prompt-composer.js +0 -26
  469. package/dist/src/proactive/scenarios/repository.d.ts +0 -23
  470. package/dist/src/proactive/scenarios/repository.js +0 -174
  471. package/dist/src/proactive/scenarios/service.d.ts +0 -15
  472. package/dist/src/proactive/scenarios/service.js +0 -26
  473. package/dist/src/proactive/scenarios/types.d.ts +0 -43
  474. package/dist/src/proactive/scenarios/types.js +0 -1
  475. package/dist/src/proactive/service.d.ts +0 -25
  476. package/dist/src/proactive/service.js +0 -78
  477. package/dist/src/proactive/source-freshness.d.ts +0 -8
  478. package/dist/src/proactive/source-freshness.js +0 -28
  479. package/dist/src/proactive/status.d.ts +0 -2
  480. package/dist/src/proactive/status.js +0 -22
  481. package/dist/src/proactive/temporal/schedule.d.ts +0 -3
  482. package/dist/src/proactive/temporal/schedule.js +0 -68
  483. package/dist/src/proactive/temporal/worker.d.ts +0 -17
  484. package/dist/src/proactive/temporal/worker.js +0 -129
  485. package/dist/src/tasks/project-monitoring-service.d.ts +0 -32
  486. package/dist/src/tasks/project-monitoring-service.js +0 -118
  487. /package/dist/src/{proactive/execution → connectors/cli}/types.js +0 -0
  488. /package/dist/src/{proactive/events/publisher.js → notifications/domain-delivery.js} +0 -0
  489. /package/dist/src/{proactive/inbox/types.js → scenes/httpServices.js} +0 -0
@@ -8,12 +8,14 @@ import { getConnectorConnection, getConnectorInstallation, init_connector_reposi
8
8
  import { cancelConnectionObjective, getActiveConnectionWait, getConnectionWait, init_connection_wait_repository, listConnectionWaitsToCheck, publishConnectionWait, queueConnectionResolution, updateConnectionWait } from "../storage/sqlite/connection-wait-repository.js";
9
9
  import { init_session_repository } from "../storage/sqlite/session-repository.js";
10
10
  import { canAccessConnectorAccount, currentAccountConnections } from "./account-access.js";
11
+ import { getCliAdapter } from "./cli/adapterRegistry.js";
11
12
  import { ComposioSessionsAdapter } from "./composio-sessions.js";
12
13
  import { getConfiguredComposioAuthConfigs, isComposioActionAllowedByCatalog, scopeForComposioAction } from "./composio.js";
13
14
  import { getConnectorDefinition } from "./catalog.js";
14
- import { listConnectorInstances } from "./instances.js";
15
- import { capabilityActions, isToolInputSchema, missingConnectionCapabilities } from "./connection-capabilities.js";
15
+ import { getInstalledConnectorDefinition, listConnectorInstances } from "./instances.js";
16
+ import { describeCliAction, verifyCliConnection } from "./cli/runtime.js";
16
17
  import { connectorPrincipalForSession } from "./principal.js";
18
+ import { capabilityActions, isToolInputSchema, missingConnectionCapabilities } from "./connection-capabilities.js";
17
19
  import { resolveConnectionCandidate } from "./connection-candidates.js";
18
20
  import { installConnector } from "./install.js";
19
21
  import { persistConfigMutation } from "../config/config-mutation.js";
@@ -90,7 +92,8 @@ var ConnectionRecoveryService = class {
90
92
  const needs = wait.needs.map((need) => {
91
93
  const instance = listConnectorInstances(this.deps.getConfig()).find((instance) => instance.connectorId === need.connectorId);
92
94
  const installation = getConnectorInstallation(`${need.connectorId}-${wait.principalId}`);
93
- const scopeBlocked = Math.max(1, ...need.capabilities.filter((capability) => /^[A-Z]+_/.test(capability)).map((capability) => SCOPE_ORDER[scopeForComposioAction(capability).scope])) > SCOPE_ORDER[installation?.maxScope ?? "read"];
95
+ const cli = instance?.materialized.type === "cli" ? getCliAdapter(instance.materialized.adapterId) : void 0;
96
+ const scopeBlocked = Math.max(1, ...need.capabilities.filter((capability) => cli || /^[A-Z]+_/.test(capability)).map((capability) => SCOPE_ORDER[cli ? cli.curatedActions[capability] ?? "read" : scopeForComposioAction(capability).scope])) > SCOPE_ORDER[installation?.maxScope ?? "read"];
94
97
  const all = listConnectorConnections({
95
98
  principalId: wait.principalId,
96
99
  connectorId: need.connectorId
@@ -176,8 +179,19 @@ var ConnectionRecoveryService = class {
176
179
  capabilityError: void 0
177
180
  };
178
181
  try {
179
- if (!listConnectorInstances(this.deps.getConfig()).some((instance) => instance.connectorId === need.connectorId && instance.enabled)) throw new Error("Connector setup is unavailable");
180
- const definition = getConnectorDefinition(need.connectorId);
182
+ const instance = listConnectorInstances(this.deps.getConfig()).find((instance) => instance.connectorId === need.connectorId && instance.enabled);
183
+ if (!instance) throw new Error("Connector setup is unavailable");
184
+ const definition = getInstalledConnectorDefinition(this.deps.getConfig(), instance.instanceId) ?? getConnectorDefinition(need.connectorId);
185
+ if (definition?.runtime.type === "cli") {
186
+ const selected = views.find((view) => view.key === need.key);
187
+ const connection = selected?.connectionId ? getConnectorConnection(selected.connectionId) : void 0;
188
+ if (!connection || typeof connection.metadata.runtimeInstanceId !== "string") throw new Error("CLI account is unavailable.");
189
+ for (const capability of need.capabilities) await describeCliAction(this.deps.getConfig(), connection.metadata.runtimeInstanceId, connection, capability);
190
+ return {
191
+ ...need,
192
+ capabilityError: void 0
193
+ };
194
+ }
181
195
  if (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit") throw new Error("Unsupported connector");
182
196
  const toolkit = definition.runtime.toolkit;
183
197
  const selected = views.find((view) => view.key === need.key);
@@ -217,13 +231,29 @@ var ConnectionRecoveryService = class {
217
231
  }
218
232
  }));
219
233
  }
234
+ async syncConnections(wait) {
235
+ const config = this.deps.getConfig();
236
+ const instances = listConnectorInstances(config);
237
+ const cliIds = new Set(instances.filter((item) => item.materialized.type === "cli").map((item) => item.connectorId));
238
+ const fresh = wait.needs.some((need) => !cliIds.has(need.connectorId)) ? await this.adapter.syncConnections({ principalId: wait.principalId }) : [];
239
+ for (const connection of currentAccountConnections(listConnectorConnections({ principalId: wait.principalId }))) {
240
+ if (connection.provider !== "cli" || !wait.needs.some((need) => need.connectorId === connection.connectorId)) continue;
241
+ const policy = getConnectorInstallation(`${connection.connectorId}-${wait.principalId}`);
242
+ if (!policy || !canAccessConnectorAccount(connection, policy, wait.agentId)) continue;
243
+ const instanceId = connection.metadata.runtimeInstanceId;
244
+ if (typeof instanceId !== "string" || !instances.some((item) => item.instanceId === instanceId && item.enabled)) continue;
245
+ await verifyCliConnection(config, instanceId, connection);
246
+ fresh.push(connection);
247
+ }
248
+ return fresh;
249
+ }
220
250
  async preflight(input) {
221
251
  if (input.kind !== "connection_resume") return true;
222
252
  const wait = input.payload ? getConnectionWait(input.payload.waitId) : void 0;
223
253
  if (!wait || wait.status !== "queued" || wait.queuedInputId !== input.id || wait.transcriptId !== readCurrentTranscriptId(getSqliteDatabase(), input.conversationId)) return false;
224
254
  if (wait.resolution === "skipped") return true;
225
255
  try {
226
- const fresh = await this.adapter.syncConnections({ principalId: wait.principalId });
256
+ const fresh = await this.syncConnections(wait);
227
257
  const verified = new Set(fresh.filter((item) => item.status === "active").map((item) => item.id));
228
258
  wait.needs = await this.checkCapabilities(wait, verified);
229
259
  const ready = this.view(wait, verified).needs.every((need) => need.phase === "ready");
@@ -289,7 +319,22 @@ var ConnectionRecoveryService = class {
289
319
  const need = wait.needs.find((need) => need.key === action.needKey);
290
320
  if (!need) throw new Error("Unknown connection requirement.");
291
321
  if (this.view(wait).needs.find((item) => item.key === need.key)?.phase === "blocked") throw new Error("Connector policy blocks this connection.");
292
- const definition = getConnectorDefinition(need.connectorId);
322
+ const instance = listConnectorInstances(this.deps.getConfig()).find((item) => item.connectorId === need.connectorId);
323
+ const definition = (instance ? getInstalledConnectorDefinition(this.deps.getConfig(), instance.instanceId) : void 0) ?? getConnectorDefinition(need.connectorId);
324
+ if (definition?.runtime.type === "cli") {
325
+ updateConnectionWait({
326
+ ...wait,
327
+ intent: {
328
+ objectiveRevision: wait.objectiveRevision,
329
+ validUntil: Date.now() + INTENT_TTL
330
+ }
331
+ }, wait.version);
332
+ publishConnectionWait(conversationId);
333
+ return {
334
+ snapshot: this.snapshot(conversationId),
335
+ authorizationUrl: `/#/connectors?connector=${encodeURIComponent(need.connectorId)}`
336
+ };
337
+ }
293
338
  if (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit") throw new Error("Unsupported connector.");
294
339
  const attemptId = randomUUID();
295
340
  wait = updateConnectionWait({
@@ -343,7 +388,7 @@ var ConnectionRecoveryService = class {
343
388
  authorizationUrl: auth.connectUrl
344
389
  };
345
390
  } else {
346
- const fresh = await this.adapter.syncConnections({ principalId: wait.principalId });
391
+ const fresh = await this.syncConnections(wait);
347
392
  const verified = new Set(fresh.filter((item) => item.status === "active").map((item) => item.id));
348
393
  const latest = getConnectionWait(wait.id);
349
394
  if (!latest || latest.version !== wait.version || latest.status !== "open") throw new Error("WAIT_CHANGED");
@@ -1,8 +1,12 @@
1
+ import { init_connector_repository, listConnectorConnections } from "../storage/sqlite/connector-repository.js";
2
+ import { currentAccountConnections } from "./account-access.js";
1
3
  import { materializeConnectorMcpServer } from "./materialize.js";
2
4
  import { getConnectorInstance } from "./instances.js";
5
+ import { describeCliAction, verifyCliConnection } from "./cli/runtime.js";
3
6
  import { getWorkspacePath } from "../config/workspace-path-helpers.js";
4
7
  import { listBundleMcpServerCapabilitiesForGateway } from "../agent/mcp/bundle-mcp-gateway.js";
5
8
  //#region src/connectors/health.ts
9
+ init_connector_repository();
6
10
  function classifyConnectorHealthError(error) {
7
11
  const message = error instanceof Error ? error.message : String(error);
8
12
  if (/timed out|timeout/i.test(message)) return "timeout";
@@ -45,6 +49,54 @@ async function testConnectorInstance(config, serverId) {
45
49
  prompts: [],
46
50
  action: "Enable the connector before running a health check."
47
51
  };
52
+ if (instance.materialized.type === "cli") {
53
+ const base = {
54
+ serverId,
55
+ toolCount: 0,
56
+ resourceCount: 0,
57
+ promptCount: 0,
58
+ tools: [],
59
+ resources: [],
60
+ prompts: []
61
+ };
62
+ try {
63
+ const connections = currentAccountConnections(listConnectorConnections({
64
+ principalId: "local-owner",
65
+ connectorId: instance.connectorId
66
+ })).filter((connection) => connection.provider === "cli" && connection.status === "active" && connection.metadata.runtimeInstanceId === serverId);
67
+ if (!connections.length) return {
68
+ ...base,
69
+ ok: false,
70
+ status: "unauthorized",
71
+ action: "Connect an account."
72
+ };
73
+ const tools = [];
74
+ for (const connection of connections) {
75
+ const { adapter } = await verifyCliConnection(config, serverId, connection);
76
+ for (const id of Object.keys(adapter.curatedActions)) {
77
+ const action = await describeCliAction(config, serverId, connection, id);
78
+ if (!tools.some((tool) => tool.name === id)) tools.push({
79
+ name: id,
80
+ description: action.description
81
+ });
82
+ }
83
+ }
84
+ return {
85
+ ...base,
86
+ ok: true,
87
+ status: "ok",
88
+ tools,
89
+ toolCount: tools.length
90
+ };
91
+ } catch (error) {
92
+ return {
93
+ ...base,
94
+ ok: false,
95
+ status: classifyConnectorHealthError(error),
96
+ error: error instanceof Error ? error.message : String(error)
97
+ };
98
+ }
99
+ }
48
100
  const workspaceDir = getWorkspacePath(config) || "./workspace";
49
101
  try {
50
102
  const capabilities = await listBundleMcpServerCapabilitiesForGateway({
@@ -27,7 +27,7 @@ function connectorInstanceFromRecord(instanceId, record) {
27
27
  const definition = connectorDefinitionFromManagedMarker(markerRecord) ?? getConnectorDefinition(connectorId);
28
28
  const runtime = record.runtime && typeof record.runtime === "object" && !Array.isArray(record.runtime) ? record.runtime : {};
29
29
  const runtimeType = runtime.type;
30
- if (runtimeType !== "composio" && runtimeType !== "memorySource") return [];
30
+ if (runtimeType !== "cli" && runtimeType !== "composio" && runtimeType !== "memorySource") return [];
31
31
  if (runtimeType === "composio" && (typeof runtime.toolkit !== "string" || runtime.role !== "credential" && runtime.role !== "toolkit")) return [];
32
32
  const enabled = markerRecord.enabled !== false;
33
33
  return [{
@@ -47,6 +47,10 @@ function connectorInstanceFromRecord(instanceId, record) {
47
47
  id: instanceId,
48
48
  toolkit: runtime.toolkit,
49
49
  role: runtime.role
50
+ } : runtimeType === "cli" ? {
51
+ type: "cli",
52
+ id: instanceId,
53
+ adapterId: String(runtime.adapterId)
50
54
  } : {
51
55
  type: "memorySource",
52
56
  id: instanceId
@@ -1,5 +1,6 @@
1
1
  import { isManagedConnectorServer } from "./materialize.js";
2
2
  import { getConnectorInstance } from "./instances.js";
3
+ import { stopCliInstance } from "./cli/lifecycle.js";
3
4
  //#region src/connectors/lifecycle.ts
4
5
  function setConnectorEnabled(config, instanceId, enabled) {
5
6
  const server = config.mcp?.servers?.[instanceId];
@@ -15,6 +16,7 @@ function setConnectorEnabled(config, instanceId, enabled) {
15
16
  }
16
17
  const instance = getConnectorInstance(config, instanceId);
17
18
  if (!instance) throw new Error(`Connector instance not found: ${instanceId}`);
19
+ if (!enabled && instance.materialized.type === "cli") stopCliInstance(instanceId);
18
20
  return instance;
19
21
  }
20
22
  //#endregion
@@ -1,4 +1,5 @@
1
- import { getSessionMetadata, init_session_repository } from "../storage/sqlite/session-repository.js";
1
+ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js";
2
+ import { init_session_repository } from "../storage/sqlite/session-repository.js";
2
3
  import { getConversationRouting } from "../storage/sqlite/conversation-repository.js";
3
4
  import { init_session_key } from "../routing/session-key.js";
4
5
  //#region src/connectors/principal.ts
@@ -1,11 +1,14 @@
1
1
  import { isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
2
2
  import { deleteConnectorInstallation, getConnectorInstallation, upsertConnectorInstallation } from "../storage/sqlite/connector-repository.js";
3
3
  import "../storage/sqlite/index.js";
4
+ import { getCliAdapter } from "./cli/adapterRegistry.js";
4
5
  import { assertComposioAccessConfigured } from "./composio-sessions.js";
5
6
  import { saveConnectorSecrets } from "./secret-store.js";
6
7
  import { isManagedConnectorServer, materializeConnectorMcpServer } from "./materialize.js";
7
8
  import { appendConnectorAuditRecord } from "./usage.js";
8
9
  import { listConnectorInstances } from "./instances.js";
10
+ import { installCli } from "./cli/installer.js";
11
+ import { stopCliInstance } from "./cli/lifecycle.js";
9
12
  //#region src/connectors/runtime-adapter-registry.ts
10
13
  const adapters = /* @__PURE__ */ new Map();
11
14
  function registerConnectorRuntimeAdapter(adapter) {
@@ -49,6 +52,34 @@ function uninstallRecord(config, instanceId) {
49
52
  instances: nextInstances
50
53
  };
51
54
  }
55
+ registerConnectorRuntimeAdapter({
56
+ type: "cli",
57
+ async install({ config, definition }) {
58
+ if (definition.runtime.type !== "cli") throw new Error("Invalid CLI runtime.");
59
+ const adapter = getCliAdapter(definition.runtime.adapterId);
60
+ if (definition.runtime.binaryVersion !== adapter.binaryVersion || definition.runtime.adapterVersion !== adapter.version) throw new Error("CLI version does not match its registered adapter.");
61
+ await installCli(adapter);
62
+ const instance = installRecord(config, definition);
63
+ if (isXopcDatabaseOpen()) {
64
+ const id = `${definition.id}-local-owner`;
65
+ if (!getConnectorInstallation(id)) upsertConnectorInstallation({
66
+ id,
67
+ connectorId: definition.id,
68
+ principalId: "local-owner",
69
+ enabled: true,
70
+ allowedAgentIds: [],
71
+ maxScope: "read",
72
+ confirmationPolicy: "writes",
73
+ selectedAccountIds: null
74
+ });
75
+ }
76
+ return instance;
77
+ },
78
+ uninstall({ config, instance }) {
79
+ stopCliInstance(instance.instanceId, true);
80
+ uninstallRecord(config, instance.instanceId);
81
+ }
82
+ });
52
83
  registerConnectorRuntimeAdapter({
53
84
  type: "mcp",
54
85
  async install({ config, definition, input, resolver }) {
@@ -1,8 +1,10 @@
1
1
  export type ConnectorKind = 'mcp' | 'cli' | 'http' | 'browser' | 'extension' | 'builtin' | 'composio' | 'memorySource';
2
2
  export type ConnectorCategory = 'code' | 'docs' | 'browser' | 'data' | 'automation' | 'custom';
3
3
  export type ConnectorCapability = 'tools' | 'resources' | 'prompts' | 'context' | 'channel' | 'events' | 'ui' | 'memory_source' | 'workflows' | 'auth.apiKey' | 'auth.oauth' | 'runtime.mcp.stdio' | 'runtime.mcp.sse' | 'runtime.mcp.streamableHttp';
4
- export type ConnectorAuthMode = 'none' | 'apiKey' | 'oauth';
4
+ export type ConnectorAuthMode = 'none' | 'apiKey' | 'oauth' | 'cli';
5
5
  export type ConnectorAuthDefinition = {
6
+ mode: 'cli';
7
+ } | {
6
8
  mode: 'none';
7
9
  } | {
8
10
  mode: 'apiKey';
@@ -64,6 +66,11 @@ export type ConnectorConfigField = {
64
66
  description?: string;
65
67
  };
66
68
  export type ConnectorRuntimeDefinition = {
69
+ type: 'cli';
70
+ adapterId: string;
71
+ adapterVersion: string;
72
+ binaryVersion: string;
73
+ } | {
67
74
  type: 'mcp';
68
75
  serverId: string;
69
76
  serverTemplate: Record<string, unknown>;
@@ -149,6 +156,7 @@ export type ConnectorAccount = {
149
156
  connectorId: string;
150
157
  principalId: string;
151
158
  identityKey?: string;
159
+ runtimeInstanceId?: string;
152
160
  backendId?: string;
153
161
  identity: Record<string, unknown>;
154
162
  currentConnectionId?: string;
@@ -244,6 +252,10 @@ export type ConnectorInstance = {
244
252
  id: string;
245
253
  toolkit: string;
246
254
  role: 'credential' | 'toolkit';
255
+ } | {
256
+ type: 'cli';
257
+ id: string;
258
+ adapterId: string;
247
259
  } | {
248
260
  type: 'memorySource';
249
261
  id: string;
@@ -2,7 +2,7 @@ import { isManagedConnectorServer } from "./materialize.js";
2
2
  //#region src/connectors/usage.ts
3
3
  const MAX_AUDIT_RECORDS = 50;
4
4
  function getManagedConnectorMarker(config, instanceId) {
5
- const server = config.mcp?.servers?.[instanceId];
5
+ const server = config.mcp?.servers?.[instanceId] ?? config.connectors?.instances?.[instanceId];
6
6
  if (!isManagedConnectorServer(server)) return;
7
7
  return server.xopcConnector;
8
8
  }
@@ -38,14 +38,18 @@ function preflightWorkflowConnectors(input) {
38
38
  continue;
39
39
  }
40
40
  const definition = getConnectorDefinition(requirement.connectorId);
41
- if (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit") continue;
42
- const toolkit = definition.runtime.toolkit;
41
+ if (definition?.runtime.type !== "cli" && (definition?.runtime.type !== "composio" || definition.runtime.role !== "toolkit")) continue;
42
+ const toolkit = definition.runtime.type === "composio" ? definition.runtime.toolkit : void 0;
43
43
  const installation = getConnectorInstallation(`${requirement.connectorId}-${principalId}`);
44
+ if (definition.runtime.type === "cli" && (!installation || !installation.enabled)) {
45
+ add(requirement, issue(requirement, "disabled", `${requirement.connectorId} policy is disabled or missing.`));
46
+ continue;
47
+ }
44
48
  if (installation?.allowedAgentIds.length && !installation.allowedAgentIds.includes(input.agentId)) {
45
49
  add(requirement, issue(requirement, "agent_not_allowed", `${input.agentId} is not allowed to use ${requirement.connectorId}.`));
46
50
  continue;
47
51
  }
48
- const allowedScope = installation?.maxScope ?? getComposioToolkitScope(input.config, toolkit);
52
+ const allowedScope = installation?.maxScope ?? (toolkit ? getComposioToolkitScope(input.config, toolkit) : "read");
49
53
  const requiredScope = requirement.scope ?? "read";
50
54
  if (SCOPE_ORDER[allowedScope] < SCOPE_ORDER[requiredScope]) {
51
55
  add(requirement, issue(requirement, "scope_too_narrow", `${requirement.connectorId} requires ${requiredScope} scope but allows ${allowedScope}.`));
@@ -55,7 +59,7 @@ function preflightWorkflowConnectors(input) {
55
59
  const connections = listConnectorConnections({
56
60
  principalId,
57
61
  connectorId: requirement.connectorId
58
- });
62
+ }).filter((connection) => definition.runtime.type !== "cli" || connection.provider === "cli" && connection.metadata.runtimeInstanceId === instance.instanceId);
59
63
  const selected = installation && installation.selectedAccountIds !== null ? connections.filter((connection) => connection.accountId && installation.selectedAccountIds.includes(connection.accountId)) : connections;
60
64
  const active = currentAccountConnections(selected.filter((connection) => installation && canAccessConnectorAccount(connection, installation, input.agentId)));
61
65
  if (requirement.accountIds) {
@@ -6,9 +6,9 @@ import { MAX_EXTENSION_STORE_ZIP_BYTES } from "./store-zip-limits.js";
6
6
  import { checkEngineCompatibility } from "./engine-check.js";
7
7
  import { EXTENSION_API_VERSION, EXTENSION_UI_API_VERSION, checkExtensionApiCompatibility } from "./api-version.js";
8
8
  import { collectExtensionPackageDependencyIssues } from "./package-contract.js";
9
- import { execFileSync } from "node:child_process";
10
9
  import { dirname, isAbsolute, join, resolve, sep } from "path";
11
10
  import { cpSync, existsSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, rmSync, writeFileSync } from "fs";
11
+ import { execFileSync } from "node:child_process";
12
12
  import semver from "semver";
13
13
  import { tmpdir } from "os";
14
14
  import AdmZip from "adm-zip";
@@ -1,9 +1,11 @@
1
1
  import { Hono } from 'hono';
2
2
  import type { GatewayService } from '../service.js';
3
+ import type { SceneHttpServices } from '../../scenes/httpServices.js';
3
4
  export interface HonoAppConfig {
4
5
  service: GatewayService;
5
6
  /** Actual host selected for this process; bind config changes take effect after restart. */
6
7
  listenHost?: string;
8
+ scenes?: SceneHttpServices;
7
9
  }
8
10
  /**
9
11
  * Extension sandbox HTML under `/api/extensions/:id/assets/*` ships its own CSP
@@ -124,7 +124,8 @@ function createHonoApp(config) {
124
124
  "Authorization",
125
125
  "Accept",
126
126
  "X-Session-Id",
127
- "Last-Event-ID"
127
+ "Last-Event-ID",
128
+ "Idempotency-Key"
128
129
  ],
129
130
  credentials: true,
130
131
  maxAge: 86400
@@ -269,7 +270,8 @@ function createHonoApp(config) {
269
270
  trustedProxies: service.currentConfig.gateway?.trustedProxies,
270
271
  allowRealIpFallback: service.currentConfig.gateway?.allowRealIpFallback === true
271
272
  }) }),
272
- channelRateLimitMiddleware
273
+ channelRateLimitMiddleware,
274
+ scenes: config.scenes ?? service.sceneAccess?.services
273
275
  });
274
276
  const prewarm = prewarmStaticUiCache();
275
277
  if (prewarm.loaded > 0) log.debug({
@@ -176,21 +176,6 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
176
176
  exemptLoopback: boolean;
177
177
  };
178
178
  };
179
- heartbeat: {
180
- enabled: boolean;
181
- intervalMs: number;
182
- includeSystemPromptSection: boolean;
183
- target: string;
184
- targetChatId: string;
185
- prompt: string;
186
- ackMaxChars: number;
187
- isolatedSession: boolean;
188
- activeHours: {
189
- start: string;
190
- end: string;
191
- timezone?: string;
192
- };
193
- };
194
179
  webchat: {
195
180
  activityDetailDefault: "stream" | "on" | "off";
196
181
  };
@@ -124,17 +124,6 @@ async function buildSafeWebConfigPayload(service, options = {}) {
124
124
  exemptLoopback: config.gateway?.auth?.rateLimit?.exemptLoopback !== false
125
125
  }
126
126
  },
127
- heartbeat: {
128
- enabled: config.gateway?.heartbeat?.enabled,
129
- intervalMs: config.gateway?.heartbeat?.intervalMs,
130
- includeSystemPromptSection: config.gateway?.heartbeat?.includeSystemPromptSection === true,
131
- target: config.gateway?.heartbeat?.target,
132
- targetChatId: config.gateway?.heartbeat?.targetChatId,
133
- prompt: config.gateway?.heartbeat?.prompt,
134
- ackMaxChars: config.gateway?.heartbeat?.ackMaxChars,
135
- isolatedSession: config.gateway?.heartbeat?.isolatedSession,
136
- activeHours: config.gateway?.heartbeat?.activeHours
137
- },
138
127
  webchat: { activityDetailDefault: config.gateway?.webchat?.activityDetailDefault ?? "on" },
139
128
  channelConnectDeferMode: config.gateway?.channelConnectDeferMode ?? "auto",
140
129
  channelConnectDeferIds: Array.isArray(config.gateway?.channelConnectDeferIds) ? config.gateway.channelConnectDeferIds : [],
@@ -0,0 +1,3 @@
1
+ import type { Hono } from 'hono';
2
+ import type { AuthenticatedRouteDeps } from './deps.js';
3
+ export declare function registerCliConnectorRoutes(app: Hono, deps: AuthenticatedRouteDeps): void;