@xopcai/xopc 0.0.308 → 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 (554) hide show
  1. package/dist/browser-ext/_locales/en/messages.json +8 -0
  2. package/dist/browser-ext/_locales/zh_CN/messages.json +8 -0
  3. package/dist/browser-ext/dist/assets/{sidepanel-BbSQr-6P.css → sidepanel-DD6GEMvc.css} +16 -0
  4. package/dist/browser-ext/dist/sidepanel.html +1 -1
  5. package/dist/browser-ext/dist/sidepanel.js +537 -96
  6. package/dist/browser-ext/manifest.json +1 -1
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/gateway/static/root/assets/{activity-store-wgSB2HYK.js → activity-store-DVUTs1fk.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-dUotwUO6.js → agent-avatar-dicebear-zKINl7UH.js} +1 -1
  10. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-D2ePZKdY.js +1 -0
  11. package/dist/gateway/static/root/assets/{agents-VPDIGRSS.js → agents-BiD9STyv.js} +1 -1
  12. package/dist/gateway/static/root/assets/{api-BKHmTb0w.js → api-_aHQA8bd.js} +1 -1
  13. package/dist/gateway/static/root/assets/{app-link-BiBXVEvp.js → app-link-wamYbNUl.js} +1 -1
  14. package/dist/gateway/static/root/assets/{app-management-settings-panel-zPz0rOND.js → app-management-settings-panel-C94LAxyt.js} +1 -1
  15. package/dist/gateway/static/root/assets/{appearance-settings-DhvhR43G.js → appearance-settings-CP01zHvC.js} +1 -1
  16. package/dist/gateway/static/root/assets/apps-page-B7DmSJQj.js +1 -0
  17. package/dist/gateway/static/root/assets/{archive-plugin-BQVZMreT.js → archive-plugin-SwWFt5MT.js} +1 -1
  18. package/dist/gateway/static/root/assets/{attachment-load-CPE-TMPf.js → attachment-load-DdTFml9l.js} +1 -1
  19. package/dist/gateway/static/root/assets/{automations-page-C4IAy_zF.js → automations-page-Kmr5WVFp.js} +1 -1
  20. package/dist/gateway/static/root/assets/automations-workspace-bkijiu-Y.js +7 -0
  21. package/dist/gateway/static/root/assets/{binary-plugins-DgTl7diZ.js → binary-plugins-47UTtDNq.js} +1 -1
  22. package/dist/gateway/static/root/assets/{block-editor-CcOVA-Gw.js → block-editor-DvzZkMG8.js} +3 -3
  23. package/dist/gateway/static/root/assets/{browser-automation-inputs-BzkJog8e.js → browser-automation-inputs-C611KRBx.js} +1 -1
  24. package/dist/gateway/static/root/assets/{browser-automations-page--zKAgj1k.js → browser-automations-page-DrUKNL9X.js} +2 -2
  25. package/dist/gateway/static/root/assets/browser-settings-page-Dhf_MWCf.js +3 -0
  26. package/dist/gateway/static/root/assets/capabilities-settings-panel-BCubrDf8.js +8 -0
  27. package/dist/gateway/static/root/assets/channels-settings-e4T1DEfN.js +1 -0
  28. package/dist/gateway/static/root/assets/{chat-terminal-dock-BfLd2rIJ.js → chat-terminal-dock-Bg_m7HUE.js} +2 -2
  29. package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-Cq1tE_3b.js → chunk-KS7C4IRE-BMYIfy9x.js} +2 -2
  30. package/dist/gateway/static/root/assets/computer-settings-page-CosCmVsT.js +1 -0
  31. package/dist/gateway/static/root/assets/{connector-service-page-BlC1OXX4.js → connector-service-page-BL-hSR7_.js} +1 -1
  32. package/dist/gateway/static/root/assets/connectors-page-C0WWxnxJ.js +2 -0
  33. package/dist/gateway/static/root/assets/date-picker-DqYFVasF.js +1 -0
  34. package/dist/gateway/static/root/assets/{dependency-picker-CF_zYzxX.js → dependency-picker-DCyyFLKp.js} +1 -1
  35. package/dist/gateway/static/root/assets/{desktop-pet-CDwtLR7Z.js → desktop-pet-CFnnpRA_.js} +1 -1
  36. package/dist/gateway/static/root/assets/desktop-pet-settings-U5wWRH4c.js +1 -0
  37. package/dist/gateway/static/root/assets/device-pairing-wizard-BhHxvFO1.js +1 -0
  38. package/dist/gateway/static/root/assets/{extension-debug-page-CX5OXxEU.js → extension-debug-page-DA8WJ3-E.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-page-BytR1PaY.js → extension-page-C2BIB88m.js} +1 -1
  40. package/dist/gateway/static/root/assets/{extension-settings-page-CkaMJA5F.js → extension-settings-page-kpYo979N.js} +1 -1
  41. package/dist/gateway/static/root/assets/{gateway-config-swr-B6wHa6ZI.js → gateway-config-swr-DUDX42qY.js} +1 -1
  42. package/dist/gateway/static/root/assets/{gateway-realtime-B53R0CA4.js → gateway-realtime-CGOW0-b4.js} +1 -1
  43. package/dist/gateway/static/root/assets/gateway-realtime-store-D4um_sV7.js +1 -0
  44. package/dist/gateway/static/root/assets/gateway-settings-CE9t1yTa.js +1 -0
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-DRzGnEV-.js → gateway-startup-retry-Cf8OxlvY.js} +1 -1
  46. package/dist/gateway/static/root/assets/home-page-C7Ezx8Du.js +1 -0
  47. package/dist/gateway/static/root/assets/{image-generation-api-Ck_pyDom.js → image-generation-api-D2YorS--.js} +1 -1
  48. package/dist/gateway/static/root/assets/{imports-page-DrtbjL8O.js → imports-page-NPk698vI.js} +1 -1
  49. package/dist/gateway/static/root/assets/index-1wIKA-kM.css +1 -0
  50. package/dist/gateway/static/root/assets/index-DxYitLp8.js +79 -0
  51. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BlZh41Xq.js → keyboard-shortcuts-settings-BhreF0_O.js} +1 -1
  52. package/dist/gateway/static/root/assets/local-app-workbench-page-CPmynb3x.js +2 -0
  53. package/dist/gateway/static/root/assets/{local-apps-page-DbP7wWuh.js → local-apps-page-DOZZBdqj.js} +1 -1
  54. package/dist/gateway/static/root/assets/{locale-store-msTfRK8P.js → locale-store-DA0Z5jM_.js} +1 -1
  55. package/dist/gateway/static/root/assets/{logs-page-C0n66FiO.js → logs-page-M8kz26yo.js} +2 -2
  56. package/dist/gateway/static/root/assets/{management-settings-i6GhxpGV.js → management-settings-JLqHYQvY.js} +1 -1
  57. package/dist/gateway/static/root/assets/{markdown-view-BInabSKf.js → markdown-view-BDpcjR_Z.js} +1 -1
  58. package/dist/gateway/static/root/assets/markdown-view-DSjfHfaW.css +1 -0
  59. package/dist/gateway/static/root/assets/{media-plugins-CnWChQ3Y.js → media-plugins-B75SWUJd.js} +1 -1
  60. package/dist/gateway/static/root/assets/messages-4BtQKYlM.js +3 -0
  61. package/dist/gateway/static/root/assets/note-detail-panel-B_Ft0M32.js +5 -0
  62. package/dist/gateway/static/root/assets/notes-page-C32mxSD-.js +8 -0
  63. package/dist/gateway/static/root/assets/{page-tabs-BWitjb3e.js → page-tabs-CMlQUzT6.js} +1 -1
  64. package/dist/gateway/static/root/assets/{popover-select-9i-ZtHXL.js → popover-select-B-GDnZO9.js} +1 -1
  65. package/dist/gateway/static/root/assets/preview-open-alternatives-cZ2hszQT.js +1 -0
  66. package/dist/gateway/static/root/assets/{product-open-page-gmi5LLwM.js → product-open-page-CPoSbglF.js} +1 -1
  67. package/dist/gateway/static/root/assets/project-detail-page-DYttWua0.js +1 -0
  68. package/dist/gateway/static/root/assets/projects-page-D46drWbl.js +1 -0
  69. package/dist/gateway/static/root/assets/{registry-api-BSWtko7U.js → registry-api-C0DCx3wv.js} +1 -1
  70. package/dist/gateway/static/root/assets/remote-access-hub-C9n9Nuhi.js +1 -0
  71. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CtOjKGWg.js → runtime-tools-settings-panel-bMLWRApp.js} +2 -2
  72. package/dist/gateway/static/root/assets/scenes-page-Dw3hmHAr.js +1 -0
  73. package/dist/gateway/static/root/assets/{schema-form-DkyyDcl2.js → schema-form-UVJV_7AS.js} +1 -1
  74. package/dist/gateway/static/root/assets/sessions-page-C8P6ff91.js +1 -0
  75. package/dist/gateway/static/root/assets/settings-advanced-gate-whpUsAy3.js +1 -0
  76. package/dist/gateway/static/root/assets/{settings-form-section-C0JDGN_V.js → settings-form-section-BqzOqonM.js} +1 -1
  77. package/dist/gateway/static/root/assets/settings-page-DQ9RJ8-b.js +1 -0
  78. package/dist/gateway/static/root/assets/settings-page-layout-D3Spald3.js +1 -0
  79. package/dist/gateway/static/root/assets/{settings-shell-layer-context-DCp6ykjQ.js → settings-shell-layer-context-BTQUDoJ2.js} +1 -1
  80. package/dist/gateway/static/root/assets/setup-status-panel-C8u601m8.js +1 -0
  81. package/dist/gateway/static/root/assets/{share-preview-page-Bt1K657Y.js → share-preview-page-BcgYzA7y.js} +1 -1
  82. package/dist/gateway/static/root/assets/shares-settings-Bv-2rZ8e.js +1 -0
  83. package/dist/gateway/static/root/assets/skill-reload-api-LM-cgWUS.js +1 -0
  84. package/dist/gateway/static/root/assets/skills-page-ggmb7rCW.js +2 -0
  85. package/dist/gateway/static/root/assets/{skills-page.utils-vq5Ujm03.js → skills-page.utils-ADABzrtk.js} +1 -1
  86. package/dist/gateway/static/root/assets/system-settings-panel-DfkcW_Za.js +1 -0
  87. package/dist/gateway/static/root/assets/task-detail-page-DC4yqDFd.js +1 -0
  88. package/dist/gateway/static/root/assets/{theme-store-1SZ-HFHX.js → theme-store-CegIlB8d.js} +1 -1
  89. package/dist/gateway/static/root/assets/tunnel-api-CTuwTdMm.js +1 -0
  90. package/dist/gateway/static/root/assets/use-autosave-5ZDd9XKh.js +1 -0
  91. package/dist/gateway/static/root/assets/user-model-page-BFKFhdZ0.js +2 -0
  92. package/dist/gateway/static/root/assets/{voice-api-key-field-B2pZCcxY.js → voice-api-key-field-D3urfd-n.js} +1 -1
  93. package/dist/gateway/static/root/assets/{voice-config-api-DgJML_uM.js → voice-config-api-DTyMdGOR.js} +1 -1
  94. package/dist/gateway/static/root/assets/{work-discovery-overlay-Bptv7bEY.js → work-discovery-overlay-JzM3Ylbs.js} +1 -1
  95. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BijCrNc4.js → workflow-run-setup-panel-Bn2CtRdB.js} +2 -2
  96. package/dist/gateway/static/root/assets/workflows-page-BiCmt98A.js +6 -0
  97. package/dist/gateway/static/root/connector-icons/SOURCES.md +0 -2
  98. package/dist/gateway/static/root/index.html +17 -20
  99. package/dist/gateway/static/root/notification-sw.js +1 -1
  100. package/dist/package.js +1 -1
  101. package/dist/packages/gateway-contract/src/notifications.js +12 -11
  102. package/dist/packages/gateway-contract/src/proactive.js +6 -6
  103. package/dist/packages/gateway-contract/src/project-monitoring.js +4 -4
  104. package/dist/packages/gateway-contract/src/project-operating.js +1 -4
  105. package/dist/packages/gateway-contract/src/sessions.js +6 -1
  106. package/dist/src/agent/agent-manager.d.ts +2 -6
  107. package/dist/src/agent/agent-manager.js +31 -5
  108. package/dist/src/agent/background-review/run-background-review.js +1 -1
  109. package/dist/src/agent/child-agent-factory.d.ts +1 -0
  110. package/dist/src/agent/child-agent-factory.js +18 -4
  111. package/dist/src/agent/coding/repository-instructions.d.ts +4 -0
  112. package/dist/src/agent/coding/repository-instructions.js +46 -2
  113. package/dist/src/agent/commands/command-registry.js +1 -1
  114. package/dist/src/agent/context/execution-scope.js +1 -1
  115. package/dist/src/agent/data-acquisition/git.d.ts +17 -0
  116. package/dist/src/agent/data-acquisition/git.js +100 -0
  117. package/dist/src/agent/data-acquisition/render.d.ts +7 -0
  118. package/dist/src/agent/data-acquisition/render.js +79 -0
  119. package/dist/src/agent/data-acquisition/scheduler.d.ts +12 -0
  120. package/dist/src/agent/data-acquisition/scheduler.js +53 -0
  121. package/dist/src/agent/data-acquisition/schema.d.ts +75 -0
  122. package/dist/src/agent/data-acquisition/schema.js +206 -0
  123. package/dist/src/agent/data-acquisition/service.d.ts +10 -0
  124. package/dist/src/agent/data-acquisition/service.js +292 -0
  125. package/dist/src/agent/data-acquisition/types.d.ts +37 -0
  126. package/dist/src/agent/data-acquisition/types.js +5 -0
  127. package/dist/src/agent/embedded/run-turn.js +16 -4
  128. package/dist/src/agent/embedded/session-runner.d.ts +1 -0
  129. package/dist/src/agent/embedded/session-runner.js +3 -0
  130. package/dist/src/agent/embedded/tool-result-truncation.js +11 -0
  131. package/dist/src/agent/embedded/xopc-tools-bridge.js +2 -1
  132. package/dist/src/agent/external-tools/cliProvider.d.ts +47 -0
  133. package/dist/src/agent/external-tools/cliProvider.js +317 -0
  134. package/dist/src/agent/external-tools/composio-provider.js +15 -4
  135. package/dist/src/agent/external-tools/gateway-tools.js +10 -3
  136. package/dist/src/agent/external-tools/index.js +14 -1
  137. package/dist/src/agent/external-tools/read-policy.d.ts +6 -0
  138. package/dist/src/agent/external-tools/read-policy.js +21 -0
  139. package/dist/src/agent/external-tools/service.d.ts +1 -0
  140. package/dist/src/agent/external-tools/service.js +4 -1
  141. package/dist/src/agent/external-tools/types.d.ts +3 -1
  142. package/dist/src/agent/external-tools/types.js +1 -0
  143. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  144. package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +1 -1
  145. package/dist/src/agent/memory/turn-provenance.js +2 -1
  146. package/dist/src/agent/orchestration/agent-turn-policy.js +25 -10
  147. package/dist/src/agent/orchestration/delegation-scope.d.ts +9 -0
  148. package/dist/src/agent/orchestration/delegation-scope.js +11 -0
  149. package/dist/src/agent/prompt/sections/tooling.js +3 -1
  150. package/dist/src/agent/prompt/subagent-context.js +4 -2
  151. package/dist/src/agent/sandbox/fileAccess.d.ts +2 -0
  152. package/dist/src/agent/sandbox/fileAccess.js +31 -2
  153. package/dist/src/agent/service/parse-outbound-session-key.js +1 -1
  154. package/dist/src/agent/service.js +1 -0
  155. package/dist/src/agent/service.types.d.ts +2 -0
  156. package/dist/src/agent/tools/dataBatch.d.ts +4 -0
  157. package/dist/src/agent/tools/dataBatch.js +50 -0
  158. package/dist/src/agent/tools/delegate-tool.d.ts +6 -3
  159. package/dist/src/agent/tools/delegate-tool.js +65 -48
  160. package/dist/src/agent/tools/delegation-parent-policy.d.ts +7 -0
  161. package/dist/src/agent/tools/delegation-parent-policy.js +41 -0
  162. package/dist/src/agent/tools/delegation-policy.d.ts +16 -0
  163. package/dist/src/agent/tools/delegation-policy.js +93 -0
  164. package/dist/src/agent/tools/factory.d.ts +4 -0
  165. package/dist/src/agent/tools/factory.js +45 -5
  166. package/dist/src/agent/tools/fetch-text.d.ts +7 -0
  167. package/dist/src/agent/tools/fetch-text.js +86 -0
  168. package/dist/src/agent/tools/find.js +1 -1
  169. package/dist/src/agent/tools/grep.js +11 -23
  170. package/dist/src/agent/tools/index.d.ts +1 -0
  171. package/dist/src/agent/tools/index.js +2 -1
  172. package/dist/src/agent/tools/knowledge-memory-tool.js +10 -2
  173. package/dist/src/agent/tools/read.js +7 -5
  174. package/dist/src/agent/tools/repository-search.d.ts +12 -2
  175. package/dist/src/agent/tools/repository-search.js +127 -74
  176. package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +20 -0
  177. package/dist/src/agent/tools/search/providers/xopc-cloud.js +56 -0
  178. package/dist/src/agent/tools/search/registry.d.ts +4 -2
  179. package/dist/src/agent/tools/search/registry.js +5 -3
  180. package/dist/src/agent/tools/web.js +19 -28
  181. package/dist/src/agent/tools/xopc-use-tool.d.ts +4 -2
  182. package/dist/src/agent/tools/xopc-use-tool.js +46 -43
  183. package/dist/src/agent/workflow/subagent-runner.js +25 -3
  184. package/dist/src/agent/workflow/workflow-child-tools.js +13 -8
  185. package/dist/src/agent-config/schema.d.ts +7 -0
  186. package/dist/src/agent-config/schema.js +2 -0
  187. package/dist/src/automations/service/automation-service.d.ts +0 -4
  188. package/dist/src/automations/service/automation-service.js +0 -31
  189. package/dist/src/capabilities/store-connector.js +46 -0
  190. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  191. package/dist/src/cli/commands/project.js +1 -1
  192. package/dist/src/config/schema.d.ts +8 -4
  193. package/dist/src/config/schema.js +2 -12
  194. package/dist/src/config/web-patch.js +0 -5
  195. package/dist/src/connectors/account-selection.d.ts +14 -0
  196. package/dist/src/connectors/account-selection.js +26 -0
  197. package/dist/src/connectors/china-catalog.js +93 -226
  198. package/dist/src/connectors/cli/adapterRegistry.d.ts +4 -0
  199. package/dist/src/connectors/cli/adapterRegistry.js +26 -0
  200. package/dist/src/connectors/cli/adapters/lark.d.ts +2 -0
  201. package/dist/src/connectors/cli/adapters/lark.js +143 -0
  202. package/dist/src/connectors/cli/adapters/larkShortcuts.d.ts +3 -0
  203. package/dist/src/connectors/cli/adapters/larkShortcuts.js +64 -0
  204. package/dist/src/connectors/cli/adapters/wecom.d.ts +2 -0
  205. package/dist/src/connectors/cli/adapters/wecom.js +97 -0
  206. package/dist/src/connectors/cli/adapters/wps365/bundle.js +575 -0
  207. package/dist/src/connectors/cli/adapters/wps365.d.ts +2 -0
  208. package/dist/src/connectors/cli/adapters/wps365.js +115 -0
  209. package/dist/src/connectors/cli/assets.d.ts +3 -0
  210. package/dist/src/connectors/cli/assets.js +44 -0
  211. package/dist/src/connectors/cli/authorization.d.ts +16 -0
  212. package/dist/src/connectors/cli/authorization.js +184 -0
  213. package/dist/src/connectors/cli/distributions.d.ts +4 -0
  214. package/dist/src/connectors/cli/distributions.js +69 -0
  215. package/dist/src/connectors/cli/installer.d.ts +5 -0
  216. package/dist/src/connectors/cli/installer.js +102 -0
  217. package/dist/src/connectors/cli/lifecycle.d.ts +1 -0
  218. package/dist/src/connectors/cli/lifecycle.js +19 -0
  219. package/dist/src/connectors/cli/process.d.ts +18 -0
  220. package/dist/src/connectors/cli/process.js +100 -0
  221. package/dist/src/connectors/cli/protocol.d.ts +10 -0
  222. package/dist/src/connectors/cli/protocol.js +63 -0
  223. package/dist/src/connectors/cli/runtime.d.ts +10 -0
  224. package/dist/src/connectors/cli/runtime.js +93 -0
  225. package/dist/src/connectors/cli/store.d.ts +35 -0
  226. package/dist/src/connectors/cli/store.js +121 -0
  227. package/dist/src/connectors/cli/types.d.ts +73 -0
  228. package/dist/src/connectors/composio-backends.js +1 -1
  229. package/dist/src/connectors/composio-sessions.d.ts +1 -0
  230. package/dist/src/connectors/composio-sessions.js +8 -3
  231. package/dist/src/connectors/composio.js +1 -1
  232. package/dist/src/connectors/connection-candidates.js +22 -3
  233. package/dist/src/connectors/connection-recovery-service.d.ts +1 -0
  234. package/dist/src/connectors/connection-recovery-service.js +53 -8
  235. package/dist/src/connectors/health.js +52 -0
  236. package/dist/src/connectors/instances.js +5 -1
  237. package/dist/src/connectors/lifecycle.js +2 -0
  238. package/dist/src/connectors/principal.js +2 -1
  239. package/dist/src/connectors/runtime-adapter-registry.js +31 -0
  240. package/dist/src/connectors/types.d.ts +13 -1
  241. package/dist/src/connectors/usage.js +1 -1
  242. package/dist/src/connectors/workflow-preflight.js +8 -4
  243. package/dist/src/extensions/install.js +1 -1
  244. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  245. package/dist/src/gateway/hono/app.d.ts +2 -0
  246. package/dist/src/gateway/hono/app.js +4 -2
  247. package/dist/src/gateway/hono/lib/config-payload.d.ts +2 -15
  248. package/dist/src/gateway/hono/lib/config-payload.js +0 -11
  249. package/dist/src/gateway/hono/routes/cli-connectors.d.ts +3 -0
  250. package/dist/src/gateway/hono/routes/cli-connectors.js +219 -0
  251. package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +2 -2
  252. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -59
  253. package/dist/src/gateway/hono/routes/config.js +0 -16
  254. package/dist/src/gateway/hono/routes/connectors.js +21 -22
  255. package/dist/src/gateway/hono/routes/deps.d.ts +2 -0
  256. package/dist/src/gateway/hono/routes/lazy-bundles.js +4 -17
  257. package/dist/src/gateway/hono/routes/projects.js +1 -1
  258. package/dist/src/gateway/hono/routes/public-gateway.js +0 -1
  259. package/dist/src/gateway/hono/routes/scenes.d.ts +3 -0
  260. package/dist/src/gateway/hono/routes/scenes.js +142 -0
  261. package/dist/src/gateway/hono/routes/sessions.js +141 -13
  262. package/dist/src/gateway/hono/routes/tasks.js +0 -46
  263. package/dist/src/gateway/hono/routes/user-model.js +54 -1
  264. package/dist/src/gateway/scenes/browserNotifications.d.ts +4 -0
  265. package/dist/src/gateway/scenes/browserNotifications.js +54 -0
  266. package/dist/src/gateway/scenes/host.d.ts +34 -0
  267. package/dist/src/gateway/scenes/host.js +129 -0
  268. package/dist/src/gateway/scenes/mailContext.d.ts +32 -0
  269. package/dist/src/gateway/scenes/mailContext.js +235 -0
  270. package/dist/src/gateway/security/gateway-scopes.js +0 -4
  271. package/dist/src/gateway/security/index.js +1 -1
  272. package/dist/src/gateway/service/config-coordinator.d.ts +1 -10
  273. package/dist/src/gateway/service/config-coordinator.js +0 -16
  274. package/dist/src/gateway/service/run-gateway-agent.js +1 -1
  275. package/dist/src/gateway/service.d.ts +4 -25
  276. package/dist/src/gateway/service.js +44 -99
  277. package/dist/src/gateway/session-context-summary.js +2 -1
  278. package/dist/src/infra/unhandled-rejections.js +1 -1
  279. package/dist/src/migrations/runner.js +1 -4
  280. package/dist/src/notifications/browser-endpoint.d.ts +2 -0
  281. package/dist/src/notifications/browser-endpoint.js +13 -0
  282. package/dist/src/notifications/browserSubscriptions.d.ts +20 -0
  283. package/dist/src/notifications/browserSubscriptions.js +59 -0
  284. package/dist/src/notifications/browserTransport.d.ts +9 -0
  285. package/dist/src/notifications/browserTransport.js +64 -0
  286. package/dist/src/notifications/dispatch.d.ts +46 -0
  287. package/dist/src/notifications/dispatch.js +109 -0
  288. package/dist/src/notifications/domain-delivery.d.ts +21 -0
  289. package/dist/src/notifications/planner.js +0 -36
  290. package/dist/src/notifications/quietHours.d.ts +6 -0
  291. package/dist/src/notifications/quietHours.js +23 -0
  292. package/dist/src/notifications/resultOutbox.d.ts +23 -0
  293. package/dist/src/notifications/resultOutbox.js +49 -0
  294. package/dist/src/notifications/service.d.ts +18 -4
  295. package/dist/src/notifications/service.js +42 -61
  296. package/dist/src/notifications/store.d.ts +2 -1
  297. package/dist/src/notifications/store.js +7 -8
  298. package/dist/src/projects/project-service.d.ts +1 -4
  299. package/dist/src/projects/project-service.js +2 -30
  300. package/dist/src/projects/workspace.js +1 -1
  301. package/dist/src/providers/model-catalog-persistence.js +19 -1
  302. package/dist/src/providers/model-catalog-store.js +1 -0
  303. package/dist/src/providers/model-catalog-types.d.ts +17 -0
  304. package/dist/src/providers/xopc-cloud-model-source.js +27 -0
  305. package/dist/src/scenes/agentExecutor.d.ts +8 -0
  306. package/dist/src/scenes/agentExecutor.js +63 -0
  307. package/dist/src/scenes/contracts.d.ts +118 -0
  308. package/dist/src/scenes/contracts.js +145 -0
  309. package/dist/src/scenes/execution.d.ts +56 -0
  310. package/dist/src/scenes/execution.js +168 -0
  311. package/dist/src/scenes/httpServices.d.ts +34 -0
  312. package/dist/src/scenes/inbox.d.ts +16 -0
  313. package/dist/src/scenes/inbox.js +68 -0
  314. package/dist/src/scenes/mailContext.d.ts +20 -0
  315. package/dist/src/scenes/mailContext.js +106 -0
  316. package/dist/src/scenes/mailObservations.d.ts +20 -0
  317. package/dist/src/scenes/mailObservations.js +107 -0
  318. package/dist/src/scenes/maintenance.d.ts +3 -0
  319. package/dist/src/scenes/maintenance.js +24 -0
  320. package/dist/src/scenes/metrics.d.ts +35 -0
  321. package/dist/src/scenes/metrics.js +94 -0
  322. package/dist/src/scenes/notificationEligibility.d.ts +17 -0
  323. package/dist/src/scenes/notificationEligibility.js +72 -0
  324. package/dist/src/scenes/notificationPublication.d.ts +7 -0
  325. package/dist/src/scenes/notificationPublication.js +43 -0
  326. package/dist/src/scenes/preferences.d.ts +40 -0
  327. package/dist/src/scenes/preferences.js +108 -0
  328. package/dist/src/scenes/readiness.d.ts +7 -0
  329. package/dist/src/scenes/readiness.js +20 -0
  330. package/dist/src/scenes/repository.d.ts +174 -0
  331. package/dist/src/scenes/repository.js +740 -0
  332. package/dist/src/scenes/resultNotifications.d.ts +17 -0
  333. package/dist/src/scenes/resultNotifications.js +204 -0
  334. package/dist/src/scenes/runtime.d.ts +25 -0
  335. package/dist/src/scenes/runtime.js +101 -0
  336. package/dist/src/scenes/schedule.d.ts +9 -0
  337. package/dist/src/scenes/schedule.js +45 -0
  338. package/dist/src/scenes/service.d.ts +29 -0
  339. package/dist/src/scenes/service.js +116 -0
  340. package/dist/src/scenes/templates.d.ts +64 -0
  341. package/dist/src/scenes/templates.js +76 -0
  342. package/dist/src/scenes/userNotes.d.ts +10 -0
  343. package/dist/src/scenes/userNotes.js +34 -0
  344. package/dist/src/session/resolve-session.js +2 -1
  345. package/dist/src/session/store.js +2 -1
  346. package/dist/src/share/share-config.js +0 -5
  347. package/dist/src/share/site-share-config.js +0 -5
  348. package/dist/src/storage/sqlite/connection-wait-repository.js +20 -7
  349. package/dist/src/storage/sqlite/connection.js +1 -1
  350. package/dist/src/storage/sqlite/connector-account-repository.js +1 -0
  351. package/dist/src/storage/sqlite/connector-sync-policy-repository.d.ts +0 -4
  352. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +3 -17
  353. package/dist/src/storage/sqlite/conversation-repository.js +2 -1
  354. package/dist/src/storage/sqlite/index.d.ts +1 -0
  355. package/dist/src/storage/sqlite/index.js +4 -2
  356. package/dist/src/storage/sqlite/migrations/186_sidebar_layout.sql +16 -0
  357. package/dist/src/storage/sqlite/migrations/187_cli_connectors.sql +34 -0
  358. package/dist/src/storage/sqlite/migrations/188_scene_storage.sql +2 -0
  359. package/dist/src/storage/sqlite/migrations/189_scene_source_health.sql +8 -0
  360. package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +2 -0
  361. package/dist/src/storage/sqlite/migrations/conversation-backup.js +7 -3
  362. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  363. package/dist/src/storage/sqlite/migrations/runner.js +20 -44
  364. package/dist/src/storage/sqlite/migrations/scene-reset.d.ts +5 -0
  365. package/dist/src/storage/sqlite/migrations/scene-reset.js +40 -0
  366. package/dist/src/storage/sqlite/scenes-schema.d.ts +8 -0
  367. package/dist/src/storage/sqlite/scenes-schema.js +61 -0
  368. package/dist/src/storage/sqlite/schema.js +4 -10
  369. package/dist/src/storage/sqlite/schemas/notifications.sql +65 -0
  370. package/dist/src/storage/sqlite/schemas/scenes.sql +212 -0
  371. package/dist/src/storage/sqlite/session-read-repository.d.ts +8 -0
  372. package/dist/src/storage/sqlite/session-read-repository.js +35 -0
  373. package/dist/src/storage/sqlite/session-repository.d.ts +1 -1
  374. package/dist/src/storage/sqlite/session-repository.js +2 -25
  375. package/dist/src/storage/sqlite/sidebar-layout-repository.d.ts +12 -0
  376. package/dist/src/storage/sqlite/sidebar-layout-repository.js +53 -0
  377. package/dist/src/storage/sqlite/sql-assets.d.ts +2 -0
  378. package/dist/src/storage/sqlite/sql-assets.js +18 -0
  379. package/dist/src/storage/sqlite/transaction.d.ts +2 -0
  380. package/dist/src/storage/sqlite/transaction.js +20 -1
  381. package/dist/src/tasks/home-query-service.d.ts +0 -2
  382. package/dist/src/tasks/home-query-service.js +13 -43
  383. package/dist/src/tasks/index.d.ts +0 -1
  384. package/dist/src/tasks/index.js +4 -5
  385. package/dist/src/tasks/project-operating-view-service.js +1 -4
  386. package/dist/src/tui/backends/embedded-backend.js +1 -1
  387. package/dist/src/tui/tui-commands.js +1 -1
  388. package/dist/src/user-model/goals.d.ts +10 -0
  389. package/dist/src/user-model/goals.js +29 -1
  390. package/dist/src/user-model/index.js +2 -2
  391. package/dist/src/voice/realtime/memory-context.js +2 -1
  392. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  393. package/package.json +5 -3
  394. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C6LflMXr.js +0 -1
  395. package/dist/gateway/static/root/assets/api-DFOlahZv.js +0 -1
  396. package/dist/gateway/static/root/assets/apps-page-Pmslbzzr.js +0 -1
  397. package/dist/gateway/static/root/assets/automations-workspace-Fx5VUJRu.js +0 -6
  398. package/dist/gateway/static/root/assets/browser-settings-page-DBms6d35.js +0 -3
  399. package/dist/gateway/static/root/assets/capabilities-settings-panel-epdDWIZy.js +0 -8
  400. package/dist/gateway/static/root/assets/channels-settings-B0bsDtmP.js +0 -1
  401. package/dist/gateway/static/root/assets/channels-status-swr-B2JwuTjG.js +0 -1
  402. package/dist/gateway/static/root/assets/computer-settings-page-Ckgc0Py-.js +0 -1
  403. package/dist/gateway/static/root/assets/connectors-page-By33-bF1.js +0 -2
  404. package/dist/gateway/static/root/assets/cron-expression-CqNE-nf6.js +0 -2
  405. package/dist/gateway/static/root/assets/date-picker-BS9ZjzYJ.js +0 -1
  406. package/dist/gateway/static/root/assets/desktop-pet-settings-C0djIc1J.js +0 -1
  407. package/dist/gateway/static/root/assets/device-pairing-wizard-CDKj9LQj.js +0 -1
  408. package/dist/gateway/static/root/assets/external-link-DjqjBmc3.js +0 -1
  409. package/dist/gateway/static/root/assets/gateway-realtime-store-BLDgrJ30.js +0 -1
  410. package/dist/gateway/static/root/assets/gateway-settings-_YU-1p0z.js +0 -1
  411. package/dist/gateway/static/root/assets/globe-DSSGFWFn.js +0 -1
  412. package/dist/gateway/static/root/assets/heartbeat-settings-CVIvvm4x.js +0 -1
  413. package/dist/gateway/static/root/assets/home-page-COCHelcL.js +0 -1
  414. package/dist/gateway/static/root/assets/index-CDfcPiPb.js +0 -79
  415. package/dist/gateway/static/root/assets/index-CRu1p38D.css +0 -1
  416. package/dist/gateway/static/root/assets/loader-circle-CifKLtgG.js +0 -1
  417. package/dist/gateway/static/root/assets/local-app-workbench-page-D7_Raxjw.js +0 -2
  418. package/dist/gateway/static/root/assets/markdown-view-Y68dCxuc.css +0 -1
  419. package/dist/gateway/static/root/assets/messages-F74LVAiU.js +0 -3
  420. package/dist/gateway/static/root/assets/note-detail-panel-C59d8vDW.js +0 -5
  421. package/dist/gateway/static/root/assets/notes-page-C1GBPrVI.js +0 -8
  422. package/dist/gateway/static/root/assets/preview-open-alternatives-UaCWCxZv.js +0 -1
  423. package/dist/gateway/static/root/assets/proactive-page-CtSFJxoM.js +0 -1
  424. package/dist/gateway/static/root/assets/project-detail-page-ILTmQ1YN.js +0 -1
  425. package/dist/gateway/static/root/assets/projects-page-snl4rOQZ.js +0 -1
  426. package/dist/gateway/static/root/assets/remote-access-hub-BbaAcEN3.js +0 -1
  427. package/dist/gateway/static/root/assets/sessions-page-DrWL71O8.js +0 -1
  428. package/dist/gateway/static/root/assets/settings-advanced-gate-BG0kl4HT.js +0 -1
  429. package/dist/gateway/static/root/assets/settings-page-DiIyMQ52.js +0 -1
  430. package/dist/gateway/static/root/assets/settings-page-layout-X1x-2Cp9.js +0 -1
  431. package/dist/gateway/static/root/assets/setup-status-panel-EPazhoZO.js +0 -1
  432. package/dist/gateway/static/root/assets/shares-settings-g2MdRXSZ.js +0 -1
  433. package/dist/gateway/static/root/assets/skill-reload-api-B1DPzu98.js +0 -1
  434. package/dist/gateway/static/root/assets/skills-page-Wd0uYSPG.js +0 -2
  435. package/dist/gateway/static/root/assets/system-settings-panel-Cz1P-HDH.js +0 -1
  436. package/dist/gateway/static/root/assets/task-detail-page-BG3A5gPZ.js +0 -1
  437. package/dist/gateway/static/root/assets/tunnel-api-DQGoFuZO.js +0 -1
  438. package/dist/gateway/static/root/assets/use-autosave-DVDlBb95.js +0 -1
  439. package/dist/gateway/static/root/assets/user-model-page-qM5UiTGx.js +0 -2
  440. package/dist/gateway/static/root/assets/workflows-page-DRy1RAYH.js +0 -6
  441. package/dist/gateway/static/root/connector-icons/wps-calendar.svg +0 -14
  442. package/dist/gateway/static/root/connector-icons/wps-mail.svg +0 -7
  443. package/dist/src/connectors/source-change-publisher.d.ts +0 -17
  444. package/dist/src/connectors/source-change-publisher.js +0 -151
  445. package/dist/src/gateway/heartbeat/check-store.d.ts +0 -18
  446. package/dist/src/gateway/heartbeat/check-store.js +0 -74
  447. package/dist/src/gateway/heartbeat/index.d.ts +0 -1
  448. package/dist/src/gateway/heartbeat/index.js +0 -2
  449. package/dist/src/gateway/heartbeat/service.d.ts +0 -55
  450. package/dist/src/gateway/heartbeat/service.js +0 -228
  451. package/dist/src/gateway/hono/routes/proactive-control.d.ts +0 -3
  452. package/dist/src/gateway/hono/routes/proactive-control.js +0 -135
  453. package/dist/src/gateway/hono/routes/proactive.d.ts +0 -4
  454. package/dist/src/gateway/hono/routes/proactive.js +0 -164
  455. package/dist/src/gateway/hono/routes/workspace.d.ts +0 -3
  456. package/dist/src/gateway/hono/routes/workspace.js +0 -62
  457. package/dist/src/gateway/workspace-heartbeat-path.d.ts +0 -3
  458. package/dist/src/gateway/workspace-heartbeat-path.js +0 -14
  459. package/dist/src/migrations/conversation-routing-config.d.ts +0 -2
  460. package/dist/src/migrations/conversation-routing-config.js +0 -42
  461. package/dist/src/notifications/proactive-channel.d.ts +0 -8
  462. package/dist/src/notifications/proactive-channel.js +0 -60
  463. package/dist/src/notifications/proactive-policy.d.ts +0 -3
  464. package/dist/src/notifications/proactive-policy.js +0 -35
  465. package/dist/src/notifications/web-push.d.ts +0 -19
  466. package/dist/src/notifications/web-push.js +0 -185
  467. package/dist/src/proactive/actions/service.d.ts +0 -1
  468. package/dist/src/proactive/actions/service.js +0 -82
  469. package/dist/src/proactive/events/envelope.d.ts +0 -2
  470. package/dist/src/proactive/events/envelope.js +0 -54
  471. package/dist/src/proactive/events/product-event-bridge.d.ts +0 -7
  472. package/dist/src/proactive/events/product-event-bridge.js +0 -87
  473. package/dist/src/proactive/events/publisher.d.ts +0 -4
  474. package/dist/src/proactive/events/repository.d.ts +0 -9
  475. package/dist/src/proactive/events/repository.js +0 -63
  476. package/dist/src/proactive/events/types.d.ts +0 -44
  477. package/dist/src/proactive/events/types.js +0 -15
  478. package/dist/src/proactive/execution/agent-executor.d.ts +0 -21
  479. package/dist/src/proactive/execution/agent-executor.js +0 -125
  480. package/dist/src/proactive/execution/authorization.d.ts +0 -7
  481. package/dist/src/proactive/execution/authorization.js +0 -71
  482. package/dist/src/proactive/execution/context.d.ts +0 -49
  483. package/dist/src/proactive/execution/context.js +0 -408
  484. package/dist/src/proactive/execution/insight.d.ts +0 -14
  485. package/dist/src/proactive/execution/insight.js +0 -132
  486. package/dist/src/proactive/execution/repository.d.ts +0 -28
  487. package/dist/src/proactive/execution/repository.js +0 -211
  488. package/dist/src/proactive/execution/types.d.ts +0 -80
  489. package/dist/src/proactive/execution/worker.d.ts +0 -15
  490. package/dist/src/proactive/execution/worker.js +0 -146
  491. package/dist/src/proactive/experience.d.ts +0 -89
  492. package/dist/src/proactive/experience.js +0 -195
  493. package/dist/src/proactive/follow-ups.d.ts +0 -128
  494. package/dist/src/proactive/follow-ups.js +0 -182
  495. package/dist/src/proactive/inbox/cards.d.ts +0 -21
  496. package/dist/src/proactive/inbox/cards.js +0 -276
  497. package/dist/src/proactive/inbox/delivery.d.ts +0 -6
  498. package/dist/src/proactive/inbox/delivery.js +0 -54
  499. package/dist/src/proactive/inbox/digest.d.ts +0 -8
  500. package/dist/src/proactive/inbox/digest.js +0 -123
  501. package/dist/src/proactive/inbox/lifecycle.d.ts +0 -4
  502. package/dist/src/proactive/inbox/lifecycle.js +0 -62
  503. package/dist/src/proactive/inbox/notification-policy.d.ts +0 -1
  504. package/dist/src/proactive/inbox/notification-policy.js +0 -25
  505. package/dist/src/proactive/inbox/repository.d.ts +0 -25
  506. package/dist/src/proactive/inbox/repository.js +0 -244
  507. package/dist/src/proactive/inbox/service.d.ts +0 -23
  508. package/dist/src/proactive/inbox/service.js +0 -46
  509. package/dist/src/proactive/inbox/types.d.ts +0 -64
  510. package/dist/src/proactive/inbox/worker.d.ts +0 -13
  511. package/dist/src/proactive/inbox/worker.js +0 -71
  512. package/dist/src/proactive/index.d.ts +0 -20
  513. package/dist/src/proactive/index.js +0 -14
  514. package/dist/src/proactive/mail-thread.d.ts +0 -13
  515. package/dist/src/proactive/mail-thread.js +0 -55
  516. package/dist/src/proactive/maintenance.d.ts +0 -4
  517. package/dist/src/proactive/maintenance.js +0 -28
  518. package/dist/src/proactive/metrics.d.ts +0 -10
  519. package/dist/src/proactive/metrics.js +0 -28
  520. package/dist/src/proactive/policy/presence.d.ts +0 -2
  521. package/dist/src/proactive/policy/presence.js +0 -30
  522. package/dist/src/proactive/policy/service.d.ts +0 -54
  523. package/dist/src/proactive/policy/service.js +0 -123
  524. package/dist/src/proactive/routing/batch-repository.d.ts +0 -27
  525. package/dist/src/proactive/routing/batch-repository.js +0 -57
  526. package/dist/src/proactive/routing/matcher.d.ts +0 -5
  527. package/dist/src/proactive/routing/matcher.js +0 -57
  528. package/dist/src/proactive/routing/types.d.ts +0 -44
  529. package/dist/src/proactive/routing/types.js +0 -1
  530. package/dist/src/proactive/scenarios/control.d.ts +0 -52
  531. package/dist/src/proactive/scenarios/control.js +0 -75
  532. package/dist/src/proactive/scenarios/prompt-composer.d.ts +0 -14
  533. package/dist/src/proactive/scenarios/prompt-composer.js +0 -26
  534. package/dist/src/proactive/scenarios/repository.d.ts +0 -23
  535. package/dist/src/proactive/scenarios/repository.js +0 -174
  536. package/dist/src/proactive/scenarios/service.d.ts +0 -15
  537. package/dist/src/proactive/scenarios/service.js +0 -26
  538. package/dist/src/proactive/scenarios/types.d.ts +0 -43
  539. package/dist/src/proactive/scenarios/types.js +0 -1
  540. package/dist/src/proactive/service.d.ts +0 -25
  541. package/dist/src/proactive/service.js +0 -78
  542. package/dist/src/proactive/source-freshness.d.ts +0 -8
  543. package/dist/src/proactive/source-freshness.js +0 -28
  544. package/dist/src/proactive/status.d.ts +0 -2
  545. package/dist/src/proactive/status.js +0 -22
  546. package/dist/src/proactive/temporal/schedule.d.ts +0 -3
  547. package/dist/src/proactive/temporal/schedule.js +0 -68
  548. package/dist/src/proactive/temporal/worker.d.ts +0 -17
  549. package/dist/src/proactive/temporal/worker.js +0 -129
  550. package/dist/src/tasks/project-monitoring-service.d.ts +0 -32
  551. package/dist/src/tasks/project-monitoring-service.js +0 -118
  552. /package/dist/src/{proactive/execution → connectors/cli}/types.js +0 -0
  553. /package/dist/src/{proactive/events/publisher.js → notifications/domain-delivery.js} +0 -0
  554. /package/dist/src/{proactive/inbox/types.js → scenes/httpServices.js} +0 -0
@@ -0,0 +1,129 @@
1
+ import { createLogger } from "../../utils/logger/index.js";
2
+ import { init_logger } from "../../utils/logger.js";
3
+ import { assertSceneStorageReady, init_scenes_schema } from "../../storage/sqlite/scenes-schema.js";
4
+ import { getDefaultModelSync, init_providers, isProviderConfiguredSync, resolveModel } from "../../providers/index.js";
5
+ import { BrowserSubscriptionService } from "../../notifications/browserSubscriptions.js";
6
+ import { SceneRepository } from "../../scenes/repository.js";
7
+ import { ScenePreferenceService } from "../../scenes/preferences.js";
8
+ import { SceneExecutionService } from "../../scenes/execution.js";
9
+ import { SceneAgentExecutor } from "../../scenes/agentExecutor.js";
10
+ import { SceneInboxService } from "../../scenes/inbox.js";
11
+ import { SceneMailObservationService } from "../../scenes/mailObservations.js";
12
+ import { maintainSceneStorage } from "../../scenes/maintenance.js";
13
+ import { SceneMetrics } from "../../scenes/metrics.js";
14
+ import { SceneResultNotifications } from "../../scenes/resultNotifications.js";
15
+ import { SceneRuntime } from "../../scenes/runtime.js";
16
+ import { SceneApplicationService } from "../../scenes/service.js";
17
+ import { familyPlanTemplate, mailFollowUpTemplate } from "../../scenes/templates.js";
18
+ import { SceneUserNotesProvider } from "../../scenes/userNotes.js";
19
+ import { createSceneBrowserDispatcher } from "./browserNotifications.js";
20
+ import { GatewaySceneMailContext } from "./mailContext.js";
21
+ //#region src/gateway/scenes/host.ts
22
+ init_providers();
23
+ init_scenes_schema();
24
+ init_logger();
25
+ const log = createLogger("Gateway:Scenes");
26
+ /** Composition root for the initialized database. Never creates tables or starts an old worker. */
27
+ var GatewaySceneHost = class {
28
+ http;
29
+ runtime;
30
+ notifications;
31
+ browserDispatcher;
32
+ timer;
33
+ active;
34
+ stopped = false;
35
+ nextMaintenanceAt = 0;
36
+ clock;
37
+ constructor(db, input) {
38
+ this.db = db;
39
+ assertSceneStorageReady(db);
40
+ if (!input.principal.ownerId.trim() || !input.principal.workspaceId.trim()) throw new Error("Scene host principal is required");
41
+ const clock = input.clock ?? Date.now;
42
+ this.clock = clock;
43
+ const repository = new SceneRepository(db);
44
+ repository.installTemplate(mailFollowUpTemplate);
45
+ repository.installTemplate(familyPlanTemplate);
46
+ const mail = input.mail ?? new GatewaySceneMailContext(db, clock);
47
+ const providers = [mail, new SceneUserNotesProvider(db, clock)];
48
+ const authorize = (activation) => {
49
+ if (activation.ownerId !== input.principal.ownerId || activation.workspaceId !== input.principal.workspaceId) return {
50
+ accountIds: [],
51
+ contextProviders: [],
52
+ effectHandlers: []
53
+ };
54
+ const accountIds = mail.authorizedAccounts(activation);
55
+ return {
56
+ accountIds,
57
+ contextProviders: [...activation.scope.kind === "personal" ? ["user_notes"] : [], ...accountIds.length ? ["mail"] : []],
58
+ effectHandlers: []
59
+ };
60
+ };
61
+ const grant = async (activation) => authorize(activation);
62
+ const executor = input.executor ?? new SceneAgentExecutor(() => resolveModel(getDefaultModelSync(input.config())));
63
+ this.http = {
64
+ repository,
65
+ mail,
66
+ mailDiscovery: mail instanceof GatewaySceneMailContext ? mail : void 0,
67
+ application: new SceneApplicationService(repository, providers, grant, clock, () => {
68
+ if (input.executor) return [];
69
+ try {
70
+ return isProviderConfiguredSync(resolveModel(getDefaultModelSync(input.config())).provider) ? [] : ["model_credentials"];
71
+ } catch {
72
+ return ["model_configuration"];
73
+ }
74
+ }),
75
+ inbox: new SceneInboxService(db, clock),
76
+ browser: new BrowserSubscriptionService(db, clock),
77
+ preferences: new ScenePreferenceService(db),
78
+ metrics: new SceneMetrics(db, clock)
79
+ };
80
+ this.runtime = new SceneRuntime(repository, new SceneExecutionService(repository, providers, executor, grant, clock), new SceneMailObservationService(repository, mail, grant, clock, 6e4), clock, input.intervalMs ?? 5e3);
81
+ this.notifications = new SceneResultNotifications(db, authorize, (event) => input.publish("notification.created", event), clock);
82
+ this.browserDispatcher = createSceneBrowserDispatcher(db, authorize, clock);
83
+ this.intervalMs = input.intervalMs ?? 5e3;
84
+ }
85
+ intervalMs;
86
+ start() {
87
+ if (this.stopped) throw new Error("Create a new scene host after shutdown");
88
+ if (this.timer) return;
89
+ assertSceneStorageReady(this.db);
90
+ this.runtime.start();
91
+ const poll = () => {
92
+ try {
93
+ if (this.clock() >= this.nextMaintenanceAt) {
94
+ maintainSceneStorage(this.db, this.clock());
95
+ this.nextMaintenanceAt = this.clock() + 36e5;
96
+ }
97
+ this.notifications.drain();
98
+ this.browserDispatcher.drainOne().catch((err) => log.error({ err }, "Scene browser reminder failed"));
99
+ } catch (err) {
100
+ log.error({ err }, "Scene result publication failed");
101
+ }
102
+ };
103
+ this.timer = setInterval(poll, this.intervalMs);
104
+ this.timer.unref();
105
+ poll();
106
+ }
107
+ tick() {
108
+ if (this.stopped) return Promise.reject(/* @__PURE__ */ new Error("Scene host stopped"));
109
+ if (this.active) return this.active;
110
+ const work = this.runtime.tick().then(() => {
111
+ if (!this.stopped) this.notifications.drain();
112
+ });
113
+ this.active = work.finally(() => {
114
+ this.active = void 0;
115
+ });
116
+ return this.active;
117
+ }
118
+ /** Must finish before the Gateway closes SQLite or its realtime broker. */
119
+ async stop() {
120
+ this.stopped = true;
121
+ if (this.timer) clearInterval(this.timer);
122
+ this.timer = void 0;
123
+ await this.runtime.stop();
124
+ await this.browserDispatcher.stop();
125
+ await this.active?.catch(() => void 0);
126
+ }
127
+ };
128
+ //#endregion
129
+ export { GatewaySceneHost };
@@ -0,0 +1,32 @@
1
+ import type { DatabaseSync } from 'node:sqlite';
2
+ import { ComposioSessionsAdapter } from '../../connectors/composio-sessions.js';
3
+ import { type SceneActivation, type ScenePrincipal } from '../../scenes/contracts.js';
4
+ import type { SceneContextProvider, SceneEvidence } from '../../scenes/execution.js';
5
+ import { SceneMailContextProvider } from '../../scenes/mailContext.js';
6
+ /** Reads only the delegated thread; never starts mailbox learning or persists raw mail. */
7
+ export declare class GatewaySceneMailContext extends SceneMailContextProvider {
8
+ private readonly connectionDb;
9
+ private readonly now;
10
+ private readonly adapter;
11
+ constructor(connectionDb: DatabaseSync, now?: () => number, adapter?: Pick<ComposioSessionsAdapter, 'executeWithPolicy'>);
12
+ private recordRequest;
13
+ listAccounts(principal: ScenePrincipal): Array<{
14
+ id: string;
15
+ label: string;
16
+ }>;
17
+ authorizedAccounts(activation: SceneActivation): string[];
18
+ listSources(principal: ScenePrincipal, limit?: number, afterId?: string): {
19
+ id: string;
20
+ accountId: string;
21
+ subject: string;
22
+ sender: string;
23
+ }[];
24
+ searchSources(principal: ScenePrincipal, value: unknown, signal: AbortSignal): Promise<{
25
+ id: string;
26
+ accountId: string;
27
+ subject: string;
28
+ sender: string;
29
+ }[]>;
30
+ private source;
31
+ read(input: Parameters<SceneContextProvider['read']>[0]): Promise<SceneEvidence[]>;
32
+ }
@@ -0,0 +1,235 @@
1
+ import { getConnectorConnection, getConnectorInstallation, init_connector_repository } from "../../storage/sqlite/connector-repository.js";
2
+ import { ComposioSessionsAdapter } from "../../connectors/composio-sessions.js";
3
+ import { getConnectorDefinition } from "../../connectors/catalog.js";
4
+ import { normalizeConnectedSourceResult } from "../../connectors/connected-source-normalizers.js";
5
+ import { sanitizeConnectedSourceValue } from "../../connectors/connected-source-sanitization.js";
6
+ import { sceneContentHash } from "../../scenes/contracts.js";
7
+ import { SceneSourceNotReady, sceneSourceFailureReason } from "../../scenes/readiness.js";
8
+ import { SceneMailContextProvider } from "../../scenes/mailContext.js";
9
+ import { createHash } from "node:crypto";
10
+ import { z } from "zod";
11
+ //#region src/gateway/scenes/mailContext.ts
12
+ init_connector_repository();
13
+ const ACTION = "GMAIL_FETCH_MESSAGE_BY_THREAD_ID";
14
+ function record(value) {
15
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
16
+ }
17
+ /** Reads only the delegated thread; never starts mailbox learning or persists raw mail. */
18
+ var GatewaySceneMailContext = class extends SceneMailContextProvider {
19
+ constructor(connectionDb, now = Date.now, adapter = new ComposioSessionsAdapter()) {
20
+ super(connectionDb, now);
21
+ this.connectionDb = connectionDb;
22
+ this.now = now;
23
+ this.adapter = adapter;
24
+ }
25
+ recordRequest(principal, accountId) {
26
+ this.connectionDb.prepare(`INSERT INTO scene_connector_usage VALUES (?, ?, ?, ?, 1)
27
+ ON CONFLICT(owner_id, workspace_id, account_id, utc_day) DO UPDATE SET request_count = request_count + 1`).run(principal.ownerId, principal.workspaceId, accountId, Math.floor(this.now() / 864e5));
28
+ }
29
+ listAccounts(principal) {
30
+ return this.connectionDb.prepare(`SELECT a.id, a.label, a.identity_json, c.connector_id FROM connector_accounts a
31
+ JOIN connector_connections c ON c.id = a.current_connection_id AND c.account_id = a.id
32
+ AND c.principal_id = a.principal_id AND c.connector_id = a.connector_id
33
+ JOIN connector_installations i ON i.id = c.installation_id AND i.principal_id = a.principal_id AND i.connector_id = a.connector_id
34
+ WHERE a.principal_id = ? AND a.enabled = 1 AND c.status = 'active' AND c.provider = 'composio'
35
+ AND i.enabled = 1 AND i.confirmation_policy <> 'always'
36
+ AND json_array_length(i.allowed_agent_ids_json) = 0 AND a.allowed_agent_ids_json IS NULL
37
+ AND (i.selected_account_ids_json = 'null' OR EXISTS (SELECT 1 FROM json_each(i.selected_account_ids_json) WHERE value = a.id))
38
+ AND (c.expires_at IS NULL OR julianday(c.expires_at) > julianday(?, 'unixepoch')) ORDER BY a.id LIMIT 100`).all(principal.ownerId, this.now() / 1e3).filter((row) => {
39
+ const definition = getConnectorDefinition(String(row.connector_id));
40
+ return definition?.runtime.type === "composio" && definition.runtime.toolkit === "gmail";
41
+ }).map((row) => {
42
+ const identity = record(JSON.parse(String(row.identity_json)));
43
+ return {
44
+ id: String(row.id),
45
+ label: String(row.label || identity.email || identity.name || row.id).slice(0, 300)
46
+ };
47
+ });
48
+ }
49
+ authorizedAccounts(activation) {
50
+ if (activation.scope.kind !== "objects" || activation.scope.ids.length !== 1) return [];
51
+ const source = this.connectionDb.prepare("SELECT account_id FROM scene_mail_sources WHERE id = ? AND owner_id = ? AND workspace_id = ?").get(activation.scope.ids[0], activation.ownerId, activation.workspaceId);
52
+ return source && activation.permissions.accountIds.includes(String(source.account_id)) && this.listAccounts(activation).some((account) => account.id === source.account_id) ? [String(source.account_id)] : [];
53
+ }
54
+ listSources(principal, limit = 50, afterId = "") {
55
+ const accounts = new Set(this.listAccounts(principal).map((account) => account.id));
56
+ return this.connectionDb.prepare("SELECT id, account_id, subject, sender FROM scene_mail_sources WHERE owner_id = ? AND workspace_id = ? AND id > ? ORDER BY id LIMIT ?").all(principal.ownerId, principal.workspaceId, afterId, limit).filter((row) => accounts.has(String(row.account_id))).map((row) => ({
57
+ id: String(row.id),
58
+ accountId: String(row.account_id),
59
+ subject: String(row.subject),
60
+ sender: String(row.sender)
61
+ }));
62
+ }
63
+ async searchSources(principal, value, signal) {
64
+ const { accountId, query } = z.strictObject({
65
+ accountId: z.string().min(1).max(200),
66
+ query: z.string().trim().min(1).max(500)
67
+ }).parse(value);
68
+ if (!this.listAccounts(principal).some((account) => account.id === accountId)) throw new Error("Mail account is not available for scene reads");
69
+ const account = this.connectionDb.prepare("SELECT current_connection_id FROM connector_accounts WHERE id = ?").get(accountId);
70
+ const connection = getConnectorConnection(String(account.current_connection_id));
71
+ const installation = getConnectorInstallation(connection.installationId);
72
+ signal.throwIfAborted();
73
+ this.recordRequest(principal, accountId);
74
+ const response = await this.adapter.executeWithPolicy({
75
+ context: {
76
+ principalId: principal.ownerId,
77
+ toolkits: ["gmail"]
78
+ },
79
+ connection,
80
+ installation,
81
+ signal,
82
+ action: {
83
+ connectorId: connection.connectorId,
84
+ toolkit: "gmail",
85
+ actionId: "GMAIL_FETCH_EMAILS",
86
+ scope: "read",
87
+ curated: true,
88
+ cachedAt: new Date(this.now()).toISOString()
89
+ },
90
+ args: {
91
+ query: `(${query}) -in:spam -in:trash -in:drafts`,
92
+ max_results: 30,
93
+ include_payload: true,
94
+ verbose: false
95
+ }
96
+ });
97
+ signal.throwIfAborted();
98
+ if (response.decision !== "allowed") throw new Error("Mail search permission is required");
99
+ const envelope = record(response.result);
100
+ if (envelope.successful === false || envelope.error || !Array.isArray(record(envelope.data).messages)) throw new SceneSourceNotReady();
101
+ if (!this.listAccounts(principal).some((account) => account.id === accountId) || this.connectionDb.prepare("SELECT current_connection_id FROM connector_accounts WHERE id = ?").get(accountId)?.current_connection_id !== connection.id) throw new Error("Mail authorization changed");
102
+ const normalized = normalizeConnectedSourceResult({
103
+ toolkit: "gmail",
104
+ actionId: "GMAIL_FETCH_EMAILS",
105
+ result: envelope.data
106
+ });
107
+ const sources = /* @__PURE__ */ new Map();
108
+ for (const mail of normalized.slice(0, 30)) {
109
+ const threadId = mail.value.threadId;
110
+ if (typeof threadId !== "string" || !threadId.trim() || threadId.length > 200) continue;
111
+ if (Array.isArray(mail.value.labels) && mail.value.labels.some((label) => [
112
+ "DRAFT",
113
+ "TRASH",
114
+ "SPAM"
115
+ ].includes(String(label)))) continue;
116
+ const id = createHash("sha256").update(JSON.stringify([
117
+ principal.ownerId,
118
+ principal.workspaceId,
119
+ accountId,
120
+ threadId
121
+ ])).digest("hex");
122
+ const subject = String(mail.value.subject ?? "").slice(0, 300);
123
+ const sender = String(mail.value.sender ?? "").slice(0, 300);
124
+ this.connectionDb.prepare(`INSERT INTO scene_mail_sources VALUES (?, ?, ?, ?, ?, ?, ?, ?)
125
+ ON CONFLICT(id) DO UPDATE SET subject = excluded.subject, sender = excluded.sender, selected_at = excluded.selected_at`).run(id, principal.ownerId, principal.workspaceId, accountId, threadId, subject, sender, this.now());
126
+ sources.set(id, {
127
+ id,
128
+ accountId,
129
+ subject,
130
+ sender
131
+ });
132
+ }
133
+ return [...sources.values()];
134
+ }
135
+ source(subjectId) {
136
+ const row = this.connectionDb.prepare(`SELECT a.current_connection_id, s.thread_id FROM scene_mail_sources s
137
+ JOIN connector_accounts a ON a.id = s.account_id WHERE s.id = ?`).get(subjectId);
138
+ if (!row) throw new Error("Mail source unavailable");
139
+ return {
140
+ connectionId: String(row.current_connection_id),
141
+ threadId: String(row.thread_id)
142
+ };
143
+ }
144
+ async read(input) {
145
+ input.signal.throwIfAborted();
146
+ const accounts = this.authorizedAccounts(input.activation);
147
+ if (!input.permissions.contextProviders.includes("mail") || accounts.length !== 1 || !input.permissions.accountIds.includes(accounts[0]) || input.activation.scope.kind !== "objects" || input.activation.scope.ids[0] !== input.subjectId) throw new Error("Mail permission is required");
148
+ const origin = this.source(input.subjectId);
149
+ const startedAt = this.now();
150
+ if (input.notBefore !== void 0 && startedAt < input.notBefore) throw new SceneSourceNotReady();
151
+ const connection = getConnectorConnection(origin.connectionId);
152
+ const installation = getConnectorInstallation(connection.installationId);
153
+ const messages = [];
154
+ const tokens = /* @__PURE__ */ new Set();
155
+ let pageToken;
156
+ do {
157
+ input.signal.throwIfAborted();
158
+ if (!this.authorizedAccounts(input.activation).includes(accounts[0]) || sceneContentHash(this.source(input.subjectId)) !== sceneContentHash(origin)) throw new Error("Mail permission changed");
159
+ let response;
160
+ try {
161
+ this.recordRequest(input.activation, accounts[0]);
162
+ response = await this.adapter.executeWithPolicy({
163
+ context: {
164
+ principalId: input.activation.ownerId,
165
+ toolkits: ["gmail"]
166
+ },
167
+ connection,
168
+ installation,
169
+ signal: input.signal,
170
+ action: {
171
+ connectorId: connection.connectorId,
172
+ toolkit: "gmail",
173
+ actionId: ACTION,
174
+ scope: "read",
175
+ curated: true,
176
+ cachedAt: new Date(startedAt).toISOString()
177
+ },
178
+ args: {
179
+ user_id: "me",
180
+ thread_id: origin.threadId,
181
+ ...pageToken ? { page_token: pageToken } : {}
182
+ }
183
+ });
184
+ } catch (error) {
185
+ input.signal.throwIfAborted();
186
+ throw new SceneSourceNotReady(sceneSourceFailureReason(error));
187
+ }
188
+ input.signal.throwIfAborted();
189
+ if (response.decision !== "allowed") throw new Error("Mail connector permission is required");
190
+ const envelope = record(response.result);
191
+ const data = record(envelope.data);
192
+ if (envelope.successful === false || envelope.error || !Array.isArray(data.messages) || data.messages.some((message) => !message || typeof message !== "object")) throw new SceneSourceNotReady(sceneSourceFailureReason(envelope.error));
193
+ messages.push(...data.messages.map(record));
194
+ if (messages.length > 30 || JSON.stringify(messages).length > 5e5) throw new Error("Mail thread exceeds its context budget");
195
+ if (data.nextPageToken != null && typeof data.nextPageToken !== "string") throw new SceneSourceNotReady();
196
+ pageToken = typeof data.nextPageToken === "string" && data.nextPageToken ? data.nextPageToken : void 0;
197
+ if (pageToken) {
198
+ if (!data.messages.length || tokens.has(pageToken) || tokens.size >= 29) throw new SceneSourceNotReady();
199
+ tokens.add(pageToken);
200
+ }
201
+ } while (pageToken);
202
+ if (!this.authorizedAccounts(input.activation).includes(accounts[0]) || sceneContentHash(this.source(input.subjectId)) !== sceneContentHash(origin)) throw new Error("Mail permission changed");
203
+ if (messages.some((message) => message.threadId !== origin.threadId || !Array.isArray(message.labelIds))) throw new SceneSourceNotReady();
204
+ const normalized = normalizeConnectedSourceResult({
205
+ toolkit: "gmail",
206
+ actionId: ACTION,
207
+ result: { messages }
208
+ });
209
+ if (normalized.length !== messages.length || new Set(normalized.map((message) => message.externalId)).size !== messages.length) throw new SceneSourceNotReady();
210
+ const active = normalized.filter((message) => !message.value.labels.some((label) => [
211
+ "DRAFT",
212
+ "TRASH",
213
+ "SPAM"
214
+ ].includes(String(label))));
215
+ if (!active.length || active.some((message) => typeof message.value.content !== "string" || !message.value.content.trim())) throw new SceneSourceNotReady();
216
+ const evidence = active.map((message) => {
217
+ const content = JSON.stringify(sanitizeConnectedSourceValue(message.value));
218
+ return {
219
+ id: `mail:${accounts[0]}:${message.externalId}`,
220
+ subjectId: input.subjectId,
221
+ ownerId: input.activation.ownerId,
222
+ workspaceId: input.activation.workspaceId,
223
+ accountId: accounts[0],
224
+ content,
225
+ revision: sceneContentHash(content),
226
+ freshUntil: startedAt + 30 * 6e4,
227
+ ...message.occurredAt ? { occurredAt: Date.parse(message.occurredAt) } : {}
228
+ };
229
+ });
230
+ if (evidence.reduce((size, message) => size + message.content.length, 0) > 12e4) throw new Error("Mail thread exceeds its context budget");
231
+ return evidence;
232
+ }
233
+ };
234
+ //#endregion
235
+ export { GatewaySceneMailContext };
@@ -23,10 +23,6 @@ function requiredGatewayScope(method, path) {
23
23
  if (path.startsWith("/api/agents") || path.startsWith("/api/models")) return methodScope(method, "agents.read", "gateway.admin");
24
24
  if (path.startsWith("/api/sessions") || path.startsWith("/api/side-chats")) return methodScope(method, "sessions.read", "sessions.write");
25
25
  if (path.startsWith("/api/tasks")) return methodScope(method, "tasks.read", "tasks.write");
26
- if (/^\/api\/inbox\/judgments\/[^/]+\/workflow$/.test(path)) return methodScope(method, "automations.read", "automations.write");
27
- if (method === "POST" && /^\/api\/inbox\/judgments\/[^/]+\/prepare$/.test(path)) return "automations.write";
28
- if (path.startsWith("/api/proactive/web-push")) return "notifications.self";
29
- if (path === "/api/proactive" || path.startsWith("/api/proactive/")) return methodScope(method, "tasks.read", "tasks.write");
30
26
  if (path.startsWith("/api/home") || path.startsWith("/api/inbox")) return methodScope(method, "tasks.read", "tasks.write");
31
27
  if (path.startsWith("/api/automations") || path.startsWith("/api/automation-runs")) return methodScope(method, "automations.read", "automations.write");
32
28
  if (path.startsWith("/api/workflows")) return methodScope(method, "automations.read", "automations.write");
@@ -3,10 +3,10 @@ import { hasGatewayScope, parseGatewayScopes, requiredGatewayScope } from "./gat
3
3
  import { safeEqualSecret } from "./secret-equal.js";
4
4
  import { KNOWN_WEAK_GATEWAY_TOKEN_PLACEHOLDERS, assertGatewayAuthNotKnownWeak } from "./known-weak-secrets.js";
5
5
  import { auditGatewayConfig, collectGatewayConfigFindings, collectGatewaySecurityFindings, collectGatewayStartupGuardFindings } from "./audit.js";
6
- import { detectSuspiciousPatterns, wrapExternalContent, wrapWebContent } from "./external-content.js";
7
6
  import { createPreauthConnectionBudget, getMaxPreauthConnectionsPerIp } from "./preauth-connection-budget.js";
8
7
  import { buildGatewayConsoleCspHeader, computeInlineScriptHashes } from "./csp.js";
9
8
  import { checkBrowserOrigin } from "./origin-check.js";
10
9
  import { getGatewayPrincipal, setGatewayPrincipal } from "./gateway-principal.js";
11
10
  import { DEFAULT_GATEWAY_HTTP_TOOL_DENY, filterDangerousHttpTools, isDangerousHttpTool } from "./dangerous-tools.js";
11
+ import { detectSuspiciousPatterns, wrapExternalContent, wrapWebContent } from "./external-content.js";
12
12
  export { DEFAULT_GATEWAY_HTTP_TOOL_DENY, DEFAULT_MOBILE_SCOPES, GATEWAY_SCOPES, KNOWN_WEAK_GATEWAY_TOKEN_PLACEHOLDERS, assertGatewayAuthNotKnownWeak, auditGatewayConfig, buildGatewayConsoleCspHeader, checkBrowserOrigin, collectGatewayConfigFindings, collectGatewaySecurityFindings, collectGatewayStartupGuardFindings, computeInlineScriptHashes, createPreauthConnectionBudget, detectSuspiciousPatterns, filterDangerousHttpTools, getGatewayPrincipal, getMaxPreauthConnectionsPerIp, hasGatewayScope, isDangerousHttpTool, isGatewayScope, parseGatewayScopes, requiredGatewayScope, safeEqualSecret, setGatewayPrincipal, wrapExternalContent, wrapWebContent };
@@ -10,7 +10,7 @@
10
10
  * (QR-login follow-ups that bypass the watcher)
11
11
  * - `ConfigHotReloader` (fs.watch → debounced per-section dispatch)
12
12
  * - Section reload handlers (models / agents / channels /
13
- * heartbeat / tools / mcp / extensions)
13
+ * tools / mcp / extensions)
14
14
  * - `scheduleChannelPluginsAfterPersist` (coalesces rapid saves so
15
15
  * Telegram/Weixin do not stop/start repeatedly)
16
16
  *
@@ -26,7 +26,6 @@
26
26
  import type { Config } from '../../config/schema.js';
27
27
  import type { AgentService } from '../../agent/service.js';
28
28
  import type { ChannelManager } from '../../channels/manager.js';
29
- import type { HeartbeatService } from '../heartbeat/index.js';
30
29
  import type { ExtensionLoader } from '../../extensions/loader.js';
31
30
  import type { MessageBus } from '../../infra/bus/index.js';
32
31
  export interface GatewayConfigCoordinatorOptions {
@@ -39,7 +38,6 @@ export interface GatewayConfigCoordinatorOptions {
39
38
  setConfig: (next: Config) => void;
40
39
  getAgentService: () => AgentService;
41
40
  getChannelManager: () => ChannelManager;
42
- getHeartbeatService: () => HeartbeatService | null;
43
41
  getExtensionLoader: () => ExtensionLoader | null;
44
42
  /** Sync deterministic user-model maintenance automations after config changes. */
45
43
  reconcileMemoryMaintenanceAutomations: () => Promise<void>;
@@ -88,12 +86,6 @@ export declare class GatewayConfigCoordinator {
88
86
  * saves, and Weixin QR follow-up.
89
87
  */
90
88
  handleChannelsReload(newConfig: Config): Promise<void>;
91
- /**
92
- * Apply `gateway.heartbeat` from current config after PATCH /api/config (and
93
- * when hot reload is off). File watcher uses `handleHeartbeatReload` with
94
- * the same effect when paths match.
95
- */
96
- reloadHeartbeatFromCurrentConfig(): void;
97
89
  private handleModelsReload;
98
90
  private handleAgentDefaultsReload;
99
91
  /**
@@ -103,7 +95,6 @@ export declare class GatewayConfigCoordinator {
103
95
  */
104
96
  private scheduleChannelPluginsAfterPersist;
105
97
  private handleAutomationReload;
106
- private handleHeartbeatReload;
107
98
  private handleToolsReload;
108
99
  private handleMcpReload;
109
100
  /** Dispatch config hot reload to extensions that registered `registerReload`. */
@@ -31,7 +31,6 @@ var GatewayConfigCoordinator = class {
31
31
  onAgentDefaultsReload: (newConfig) => this.handleAgentDefaultsReload(newConfig),
32
32
  onChannelsReload: (newConfig) => this.handleChannelsReload(newConfig),
33
33
  onCronReload: (newConfig) => this.handleAutomationReload(newConfig),
34
- onHeartbeatReload: (newConfig) => this.handleHeartbeatReload(newConfig),
35
34
  onToolsReload: (newConfig) => this.handleToolsReload(newConfig),
36
35
  onMcpReload: (newConfig) => this.handleMcpReload(newConfig),
37
36
  onExtensionsReload: async (newConfig, changedPaths) => {
@@ -206,14 +205,6 @@ var GatewayConfigCoordinator = class {
206
205
  this.opts.emit("channels.status", { channels: this.opts.getChannelsStatus() });
207
206
  log.debug("Channels config reloaded");
208
207
  }
209
- /**
210
- * Apply `gateway.heartbeat` from current config after PATCH /api/config (and
211
- * when hot reload is off). File watcher uses `handleHeartbeatReload` with
212
- * the same effect when paths match.
213
- */
214
- reloadHeartbeatFromCurrentConfig() {
215
- this.handleHeartbeatReload(this.opts.getConfig());
216
- }
217
208
  handleModelsReload(newConfig) {
218
209
  log.debug("Reloading models config...");
219
210
  this.opts.setConfig(newConfig);
@@ -268,13 +259,6 @@ var GatewayConfigCoordinator = class {
268
259
  this.opts.emit("config.reload", { section: "automations" });
269
260
  log.debug("Automation-related config reloaded");
270
261
  }
271
- handleHeartbeatReload(newConfig) {
272
- log.debug("Reloading heartbeat config...");
273
- this.opts.setConfig(newConfig);
274
- this.opts.getHeartbeatService()?.updateConfig(newConfig);
275
- this.opts.emit("config.reload", { section: "heartbeat" });
276
- log.debug("Heartbeat config reloaded");
277
- }
278
262
  handleToolsReload(newConfig) {
279
263
  log.debug("Reloading tools config...");
280
264
  this.opts.setConfig(newConfig);
@@ -12,8 +12,8 @@ import { TaskRunCoordinator } from "../../tasks/task-run-coordinator.js";
12
12
  import { formatAgentRunErrorForClient } from "../../agent/client-error-format.js";
13
13
  import "../chat-limits.js";
14
14
  import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
15
- import { markdownNotificationPreview } from "../../notifications/plain-text.js";
16
15
  import { ChatStreamMapper } from "../chat-stream/mapper.js";
16
+ import { markdownNotificationPreview } from "../../notifications/plain-text.js";
17
17
  import { resolveWebchatConversationId } from "../resolve-webchat-session-key.js";
18
18
  import { recordExplicitRelationshipFollowUp } from "../../user-context/relationship-continuity.js";
19
19
  import { coalesceThinkingDeltas } from "../chat-stream/thinking-delta-coalescer.js";
@@ -16,7 +16,6 @@ import { ProjectService } from '../projects/index.js';
16
16
  import { LocalAppService } from '../local-apps/index.js';
17
17
  import { TaskConversationRepository } from '../tasks/task-conversation-repository.js';
18
18
  import { type BrowserAutomationService } from '../browser/automations/index.js';
19
- import { listInsights, ProactiveEventService, ProactiveInboxService, ProactiveInboxWorker, ProactiveScenarioService, ProactiveTemporalWorker, ProactiveWorker } from '../proactive/index.js';
20
19
  import { GatewaySessionsApi } from './service/sessions-api.js';
21
20
  import { GatewayMarketplaceService } from './service/marketplace-service.js';
22
21
  import { GatewayAgentRunner } from './service/agent-runner.js';
@@ -25,6 +24,7 @@ import { VoiceRealtimeRuntime } from '../voice/realtime/runtime.js';
25
24
  import type { GatewayServiceConfig } from './service/types.js';
26
25
  import { type GatewayReadinessSnapshot } from './startup-readiness.js';
27
26
  import { type ConnectorLearningCoordinator } from '../connectors/learning-coordinator.js';
27
+ import type { SceneAccess } from '../scenes/httpServices.js';
28
28
  import { type ProductLanguage } from '../voice/language-profile.js';
29
29
  import { EndpointToolRuntime } from '../endpoint-tools/index.js';
30
30
  export type { GatewayChannelStartupPhase1Metrics, GatewayChannelStartupPhase2Metrics, GatewayServiceConfig, } from './service/types.js';
@@ -40,7 +40,7 @@ export declare class GatewayService {
40
40
  private notesService;
41
41
  private extensionLoader;
42
42
  private extensionMetadataSnapshot;
43
- private heartbeatService;
43
+ private sceneHost;
44
44
  private sessionIndex;
45
45
  private running;
46
46
  private startTime;
@@ -72,7 +72,6 @@ export declare class GatewayService {
72
72
  private notificationService;
73
73
  private connectorSupervisor;
74
74
  private connectorLearningCoordinator;
75
- private connectedSourceChangePublisher;
76
75
  private connectedKnowledgeCoordinator;
77
76
  private stopAutomationProductEventBridge;
78
77
  private stopSessionTranscriptAutomationEvents;
@@ -107,21 +106,13 @@ export declare class GatewayService {
107
106
  readonly discussionSealer: DiscussionSealer;
108
107
  /** Local user-created apps, their coder projects, previews, and installs. */
109
108
  readonly localApps: LocalAppService;
110
- /** Unified durable event spine for proactive scenarios. */
111
- readonly proactiveScenarios: ProactiveScenarioService;
112
- readonly proactive: ProactiveEventService;
113
- readonly proactiveInbox: ProactiveInboxService;
114
- readonly proactiveInsights: typeof listInsights;
115
- readonly proactiveWorker: ProactiveWorker;
116
- readonly proactiveTemporalWorker: ProactiveTemporalWorker;
117
- readonly proactiveInboxWorker: ProactiveInboxWorker;
109
+ get sceneAccess(): SceneAccess | undefined;
118
110
  constructor(serviceConfig?: GatewayServiceConfig);
119
111
  /** Lazy AgentService — constructed on first use or during `start()`. */
120
112
  get agentService(): AgentService;
121
113
  refreshActionTrustPolicy(): void;
122
114
  refreshUserProfileContext(): void;
123
115
  private ensureAgentService;
124
- private ensureHeartbeatService;
125
116
  private createTaskRunDispatcher;
126
117
  private createNotificationService;
127
118
  private readonly taskRunDispatch;
@@ -184,6 +175,7 @@ export declare class GatewayService {
184
175
  private schedulePostReadySidecars;
185
176
  private runPostReadySidecars;
186
177
  start(): Promise<void>;
178
+ private startRuntime;
187
179
  /** Called when the HTTP listener is bound (before deferred channel work). */
188
180
  markHttpListening(): void;
189
181
  isGatewayReady(): boolean;
@@ -202,7 +194,6 @@ export declare class GatewayService {
202
194
  * Start processing outbound messages and send through channels
203
195
  */
204
196
  private startOutboundProcessor;
205
- reloadHeartbeatFromCurrentConfig(): void;
206
197
  reloadConfig(): Promise<{
207
198
  reloaded: boolean;
208
199
  error?: string;
@@ -256,18 +247,6 @@ export declare class GatewayService {
256
247
  manageable: boolean;
257
248
  order: number;
258
249
  }>;
259
- heartbeatStatus(): {
260
- enabled: boolean;
261
- checksAllowed: boolean;
262
- nextCheckAt: string;
263
- recent: import("./heartbeat/check-store.js").HeartbeatCheck[];
264
- };
265
- /**
266
- * Request an immediate heartbeat run (coalesced like interval/cron wakes).
267
- */
268
- requestHeartbeatNow(opts?: {
269
- reason?: string;
270
- }): void;
271
250
  requestConnectorLearning(connectionId: string, request?: Parameters<ConnectorLearningCoordinator['enqueueConnection']>[1]): ReturnType<ConnectorLearningCoordinator['enqueueConnection']>;
272
251
  requestConnectorLearningForToolkit(toolkit: string): ReturnType<ConnectorLearningCoordinator['enqueueToolkit']>;
273
252
  setConnectorLearningPaused(connectionId: string, paused: boolean): number;