@xopcai/xopc 0.0.188 → 0.0.190

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 (490) hide show
  1. package/README.md +1 -4
  2. package/README.zh-CN.md +0 -3
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store--QoUGhiS.js → activity-store-DstnJCS5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B0yweLNQ.js → agent-avatar-dicebear-9vAbkroX.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-D1t4SfMQ.js +68 -0
  8. package/dist/gateway/static/root/assets/{api-5laWqfiE.js → api-BTL9kayv.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BXJ8Jiv_.js → app-management-settings-panel-DkFeIdBf.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-DG9n9D1M.js → appearance-settings-Bxs8Fpaj.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-Cgrgu5OW.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Ceh5qrZf.js → archive-plugin-Ch2RmLCC.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-jFW7uYf7.js → attachment-load-BhMQM_Ky.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-CtJxstKh.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-XDlkI1r4.js → binary-plugins-D6CqlymH.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-kyKc2IhE.js → block-editor-ClL6HEg9.js} +56 -56
  17. package/dist/gateway/static/root/assets/browser-settings-page-DW99iDmD.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BJa5Iz_v.js → browser-workflow-inputs-BYy48VhN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-CTQQOsn5.js → browser-workflows-page-zgLibuMH.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-CHUrT9EB.js +7 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Cycrv0YV.js +1 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-BgIkWq01.js → channel-recipient-api-BThDGiO3.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-V96gPUAU.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-api-DS9ED-EL.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-BhlyQoQI.js +2 -0
  28. package/dist/gateway/static/root/assets/cron-expression-CkgsvhtW.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-CSwd00CV.js → desktop-pet-Cv8rGhYW.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-CuNQvHGu.js → desktop-pet-settings-CIeJdwfV.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-ct0n5Rje.js → directory-picker-path-field-D8jXEiAY.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-BeRBuMUU.js → extension-debug-page-CCZ9u6TZ.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-DbK-Cwao.js → extension-page-CV36ILRG.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-IyQrSILY.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CC7EvEFp.js → gateway-config-api-D4_r5iJM.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-CYlntpBH.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-B2DmdlwO.js → gateway-startup-retry-EO9mKvzE.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-D4SyWob8.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-B2Kagoh8.js +3 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-GMTaS6eI.js → image-generation-api-Bu7PyVSh.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-CYT5DOzr.js +150 -0
  42. package/dist/gateway/static/root/assets/index-D6e3tPL-.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DhGYddbI.js → keyboard-shortcuts-settings-BMhCuVBZ.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-BHYbFjqy.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-CmnrBmWi.js → local-apps-page-ijIe7_y2.js} +1 -1
  46. package/dist/gateway/static/root/assets/locale-store-deR2zRaE.js +1 -0
  47. package/dist/gateway/static/root/assets/logs-page-IIn8Tess.js +2 -0
  48. package/dist/gateway/static/root/assets/management-settings--V_fovKD.js +1 -0
  49. package/dist/gateway/static/root/assets/{markdown-split-CZaBPOVn.js → markdown-split-Dt9-in6W.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-CiKvSgCv.js → media-plugins-B3pj_iO0.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +3 -0
  52. package/dist/gateway/static/root/assets/{notes-page-Bisbzqlz.js → notes-page-DZ366lIT.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-S2sBVOLw.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs-BxlwhAbH.js → page-tabs-C5ge434C.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-RM8wXxfT.js → preview-open-alternatives-BFa9DgSV.js} +1 -1
  56. package/dist/gateway/static/root/assets/product-delivery-tRr-7IxY.js +1 -0
  57. package/dist/gateway/static/root/assets/{product-open-page-DdBlibek.js → product-open-page-Dc9CcWdu.js} +1 -1
  58. package/dist/gateway/static/root/assets/project-detail-page-BilzoCJ7.js +1 -0
  59. package/dist/gateway/static/root/assets/projects-page-BoQUyacP.js +1 -0
  60. package/dist/gateway/static/root/assets/remote-access-hub-DUyUaCRF.js +1 -0
  61. package/dist/gateway/static/root/assets/{schema-form-BDKbpmXv.js → schema-form-B84DckWe.js} +1 -1
  62. package/dist/gateway/static/root/assets/{schemas-C6onAggk.js → schemas-zIBW3wiV.js} +1 -1
  63. package/dist/gateway/static/root/assets/sessions-page-Dzxlq1F0.js +1 -0
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-TzwlZxU6.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-form-section-Dp9itvdy.js +1 -0
  66. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DgIp8_S6.js → settings-loading-skeleton-CCtlhoy7.js} +1 -1
  67. package/dist/gateway/static/root/assets/settings-page-DQmMKf8r.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-page-layout-97LmwrzC.js → settings-page-layout-EQIOJa_L.js} +1 -1
  69. package/dist/gateway/static/root/assets/setup-status-panel-Cwi-SPja.js +1 -0
  70. package/dist/gateway/static/root/assets/{share-preview-page-BH7i3g1S.js → share-preview-page-C4_B2jvf.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-CkyuGlZK.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-BJCePQK5.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-BYWLfmJi.js +2 -0
  74. package/dist/gateway/static/root/assets/{skills-page.utils-s-a5WV9j.js → skills-page.utils-Jhm24i4h.js} +1 -1
  75. package/dist/gateway/static/root/assets/{system-settings-panel-BxjeMT5k.js → system-settings-panel-Dpx2ags2.js} +1 -1
  76. package/dist/gateway/static/root/assets/{task-detail-page-BahycnfW.js → task-detail-page-DLAdxI6e.js} +1 -1
  77. package/dist/gateway/static/root/assets/{theme-store-BRxdsmic.js → theme-store-DnBOcGXi.js} +1 -1
  78. package/dist/gateway/static/root/assets/{typed-models-lib-39MjwPSq.js → typed-models-lib-DULmTHUB.js} +1 -1
  79. package/dist/gateway/static/root/assets/use-autosave-BrjVk5VH.js +1 -0
  80. package/dist/gateway/static/root/assets/user-context-page-9AAFpGAL.js +1 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-XU-7sBSg.js → voice-api-key-field-BISTPfq_.js} +1 -1
  82. package/dist/gateway/static/root/assets/{work-discovery-overlay-CJqu8UHq.js → work-discovery-overlay-Wr-uF7VA.js} +1 -1
  83. package/dist/gateway/static/root/assets/work-discovery-page-BWds95sL.js +1 -0
  84. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DXtg8Qxl.js → workflow-run-setup-panel-DHqHP8_6.js} +2 -2
  85. package/dist/gateway/static/root/assets/workflows-page-0b4_DFHr.js +11 -0
  86. package/dist/gateway/static/root/index.html +9 -9
  87. package/dist/package.js +1 -1
  88. package/dist/packages/endpoint-tools-protocol/src/index.js +184 -0
  89. package/dist/packages/gateway-contract/src/tool-activity.js +0 -36
  90. package/dist/packages/realtime-client/src/index.js +256 -0
  91. package/dist/packages/realtime-protocol/src/index.js +88 -0
  92. package/dist/src/agent/agent-manager.d.ts +1 -1
  93. package/dist/src/agent/agent-manager.js +7 -13
  94. package/dist/src/agent/background-review/coordinator.js +1 -1
  95. package/dist/src/agent/background-review/prompts.d.ts +1 -1
  96. package/dist/src/agent/background-review/prompts.js +3 -1
  97. package/dist/src/agent/background-review/run-background-review.d.ts +2 -0
  98. package/dist/src/agent/background-review/run-background-review.js +10 -9
  99. package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +0 -1
  100. package/dist/src/agent/bootstrap/bootstrap-cache.js +3 -4
  101. package/dist/src/agent/bootstrap/bootstrap-files.d.ts +0 -4
  102. package/dist/src/agent/bootstrap/bootstrap-files.js +3 -4
  103. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -4
  104. package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +0 -1
  105. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -14
  106. package/dist/src/agent/bootstrap/types.d.ts +1 -1
  107. package/dist/src/agent/client-error-format.d.ts +1 -1
  108. package/dist/src/agent/client-error-format.js +1 -1
  109. package/dist/src/agent/context/workspace-templates/SOUL.md +1 -1
  110. package/dist/src/agent/external-tools/endpoint-provider.d.ts +17 -0
  111. package/dist/src/agent/external-tools/endpoint-provider.js +93 -0
  112. package/dist/src/agent/external-tools/gateway-tools.js +1 -1
  113. package/dist/src/agent/external-tools/index.d.ts +4 -5
  114. package/dist/src/agent/external-tools/index.js +8 -2
  115. package/dist/src/agent/external-tools/types.d.ts +8 -1
  116. package/dist/src/agent/external-tools/types.js +2 -1
  117. package/dist/src/agent/inbound/inbound-loop.js +4 -0
  118. package/dist/src/agent/inbound/turn-dispatcher.d.ts +9 -8
  119. package/dist/src/agent/inbound/turn-dispatcher.js +13 -11
  120. package/dist/src/agent/memory/builtin-provider.d.ts +2 -4
  121. package/dist/src/agent/memory/builtin-provider.js +35 -15
  122. package/dist/src/agent/memory/context/types.d.ts +3 -1
  123. package/dist/src/agent/memory/create-memory-manager.js +2 -0
  124. package/dist/src/agent/memory/index.d.ts +1 -1
  125. package/dist/src/agent/memory/index.js +1 -1
  126. package/dist/src/agent/memory/manager.d.ts +9 -1
  127. package/dist/src/agent/memory/manager.js +39 -9
  128. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  129. package/dist/src/agent/memory/memory-config.js +1 -1
  130. package/dist/src/agent/memory/source-origin.js +0 -2
  131. package/dist/src/agent/memory/types.d.ts +5 -1
  132. package/dist/src/agent/memory/understanding/service.d.ts +10 -10
  133. package/dist/src/agent/memory/understanding/service.js +108 -176
  134. package/dist/src/agent/memory/understanding/types.d.ts +7 -8
  135. package/dist/src/agent/memory/user-context-coordinator.d.ts +2 -1
  136. package/dist/src/agent/memory/user-context-coordinator.js +27 -41
  137. package/dist/src/agent/messaging/command-handler.d.ts +2 -2
  138. package/dist/src/agent/messaging/command-handler.js +3 -3
  139. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -7
  140. package/dist/src/agent/prompt/sections/memory-skills.js +4 -4
  141. package/dist/src/agent/prompt/sections/tooling.js +0 -10
  142. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  143. package/dist/src/agent/prompt/service-prompt-builder.js +4 -33
  144. package/dist/src/agent/prompt/system-prompt.js +1 -2
  145. package/dist/src/agent/service/async-queue.d.ts +1 -1
  146. package/dist/src/agent/service/async-queue.js +1 -1
  147. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -1
  148. package/dist/src/agent/service/direct-turn-helpers.js +2 -2
  149. package/dist/src/agent/service/process-direct-one-shot.d.ts +3 -1
  150. package/dist/src/agent/service/process-direct-one-shot.js +1 -1
  151. package/dist/src/agent/service/process-direct-streaming.d.ts +7 -5
  152. package/dist/src/agent/service/process-direct-streaming.js +5 -5
  153. package/dist/src/agent/service.d.ts +2 -3
  154. package/dist/src/agent/service.js +10 -21
  155. package/dist/src/agent/service.types.d.ts +2 -0
  156. package/dist/src/agent/session/index.d.ts +1 -1
  157. package/dist/src/agent/session/session-context.d.ts +2 -0
  158. package/dist/src/agent/session/session-context.js +4 -0
  159. package/dist/src/agent/session/session-state-bag.d.ts +4 -4
  160. package/dist/src/agent/session/session-state-bag.js +1 -1
  161. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +1 -1
  162. package/dist/src/agent/streaming/reasoning-visibility.d.ts +6 -0
  163. package/dist/src/agent/streaming/{reasoning-visibility-sse.js → reasoning-visibility.js} +3 -6
  164. package/dist/src/agent/tools/dreaming-tool.d.ts +0 -2
  165. package/dist/src/agent/tools/dreaming-tool.js +13 -38
  166. package/dist/src/agent/tools/factory.d.ts +4 -3
  167. package/dist/src/agent/tools/factory.js +2 -10
  168. package/dist/src/agent/tools/index.d.ts +0 -1
  169. package/dist/src/agent/tools/index.js +1 -2
  170. package/dist/src/agent/tools/memory-tool.js +1 -1
  171. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -5
  172. package/dist/src/agent/workspace-runtime/registry.js +2 -15
  173. package/dist/src/agent-manifest/schema.d.ts +17 -17
  174. package/dist/src/agent-runtime/index.js +1 -1
  175. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  176. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  177. package/dist/src/automations/domain/types.d.ts +2 -1
  178. package/dist/src/automations/domain/validation.d.ts +29 -29
  179. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  180. package/dist/src/automations/service/action-executor.js +4 -1
  181. package/dist/src/channels/pairing/pairing-challenge.d.ts +1 -1
  182. package/dist/src/channels/pairing/pairing-challenge.js +1 -1
  183. package/dist/src/chat-commands/builtins/understanding.js +2 -5
  184. package/dist/src/cli/commands/agent/stream-renderer.js +4 -1
  185. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  186. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  187. package/dist/src/cli/commands/init.js +3 -22
  188. package/dist/src/cli/templates.js +1 -1
  189. package/dist/src/config/index.js +3 -3
  190. package/dist/src/config/paths.d.ts +0 -5
  191. package/dist/src/config/paths.js +2 -11
  192. package/dist/src/config/rules.js +0 -5
  193. package/dist/src/config/schema.d.ts +27 -122
  194. package/dist/src/config/schema.js +9 -42
  195. package/dist/src/config/web-patch.js +0 -1
  196. package/dist/src/connectors/learning-coordinator.js +75 -3
  197. package/dist/src/endpoint-tools/auth.d.ts +20 -0
  198. package/dist/src/endpoint-tools/auth.js +51 -0
  199. package/dist/src/endpoint-tools/index.d.ts +5 -0
  200. package/dist/src/endpoint-tools/index.js +6 -0
  201. package/dist/src/endpoint-tools/invocation-service.d.ts +68 -0
  202. package/dist/src/endpoint-tools/invocation-service.js +190 -0
  203. package/dist/src/endpoint-tools/policy.d.ts +10 -0
  204. package/dist/src/endpoint-tools/policy.js +18 -0
  205. package/dist/src/endpoint-tools/registry.d.ts +45 -0
  206. package/dist/src/endpoint-tools/registry.js +121 -0
  207. package/dist/src/endpoint-tools/runtime.d.ts +23 -0
  208. package/dist/src/endpoint-tools/runtime.js +86 -0
  209. package/dist/src/endpoint-tools/upload-service.d.ts +41 -0
  210. package/dist/src/endpoint-tools/upload-service.js +103 -0
  211. package/dist/src/extensions/types/hooks.d.ts +1 -1
  212. package/dist/src/extensions/update.js +1 -1
  213. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  214. package/dist/src/gateway/agent-builtin-tools.js +0 -5
  215. package/dist/src/gateway/agents-admin.d.ts +0 -7
  216. package/dist/src/gateway/agents-admin.js +3 -32
  217. package/dist/src/gateway/chat-stream/protocol.d.ts +0 -1
  218. package/dist/src/gateway/clarify-bridge.d.ts +5 -4
  219. package/dist/src/gateway/clarify-bridge.js +3 -4
  220. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +3 -3
  221. package/dist/src/gateway/dreaming-automation-reconciler.js +48 -88
  222. package/dist/src/gateway/heartbeat/service.js +4 -1
  223. package/dist/src/gateway/hono/app.js +1 -5
  224. package/dist/src/gateway/hono/index.d.ts +0 -1
  225. package/dist/src/gateway/hono/index.js +1 -2
  226. package/dist/src/gateway/hono/lib/config-payload.d.ts +20 -9
  227. package/dist/src/gateway/hono/lib/config-payload.js +3 -2
  228. package/dist/src/gateway/hono/middleware/auth.js +3 -5
  229. package/dist/src/gateway/hono/oauth-async.d.ts +1 -0
  230. package/dist/src/gateway/hono/oauth-async.js +17 -2
  231. package/dist/src/gateway/hono/routes/agent-stream.js +49 -6
  232. package/dist/src/gateway/hono/routes/agents.js +1 -33
  233. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  234. package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +2 -2
  235. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -19
  236. package/dist/src/gateway/hono/routes/config-patch/misc.js +17 -1
  237. package/dist/src/gateway/hono/routes/connectors.js +13 -12
  238. package/dist/src/gateway/hono/routes/deps.d.ts +0 -2
  239. package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +3 -0
  240. package/dist/src/gateway/hono/routes/endpoint-tools.js +196 -0
  241. package/dist/src/gateway/hono/routes/index.js +6 -2
  242. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -5
  243. package/dist/src/gateway/hono/routes/logs.js +0 -4
  244. package/dist/src/gateway/hono/routes/public-gateway.js +2 -2
  245. package/dist/src/gateway/hono/routes/realtime.d.ts +3 -0
  246. package/dist/src/gateway/hono/routes/realtime.js +35 -0
  247. package/dist/src/gateway/hono/routes/status.js +0 -7
  248. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +3 -0
  249. package/dist/src/gateway/hono/routes/understanding-sources.js +203 -0
  250. package/dist/src/gateway/hono/routes/work-discovery.d.ts +2 -0
  251. package/dist/src/gateway/hono/routes/work-discovery.js +3 -134
  252. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  253. package/dist/src/gateway/hono/routes/you.d.ts +0 -31
  254. package/dist/src/gateway/hono/routes/you.js +230 -1161
  255. package/dist/src/gateway/index.d.ts +1 -1
  256. package/dist/src/gateway/index.js +1 -2
  257. package/dist/src/gateway/protocol.d.ts +1 -7
  258. package/dist/src/gateway/security/index.js +1 -1
  259. package/dist/src/gateway/security/operator-scopes.js +1 -1
  260. package/dist/src/gateway/server.js +4 -4
  261. package/dist/src/gateway/service/agent-runner.d.ts +11 -9
  262. package/dist/src/gateway/service/agent-runner.js +18 -18
  263. package/dist/src/gateway/service/config-coordinator.d.ts +3 -3
  264. package/dist/src/gateway/service/run-gateway-agent.d.ts +4 -3
  265. package/dist/src/gateway/service/run-gateway-agent.js +15 -17
  266. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  267. package/dist/src/gateway/service/session-input-coordinator.js +4 -2
  268. package/dist/src/gateway/service/types.d.ts +0 -5
  269. package/dist/src/gateway/service.d.ts +7 -6
  270. package/dist/src/gateway/service.js +43 -26
  271. package/dist/src/infra/update-runner.js +1 -1
  272. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  273. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +2 -4
  274. package/dist/src/knowledge/connected-understanding-pipeline.js +31 -81
  275. package/dist/src/knowledge/index.js +2 -2
  276. package/dist/src/knowledge/people-graph.d.ts +22 -25
  277. package/dist/src/knowledge/people-graph.js +76 -43
  278. package/dist/src/mcp/channel-bridge.d.ts +6 -9
  279. package/dist/src/mcp/channel-bridge.js +48 -76
  280. package/dist/src/mcp/channel-server.js +2 -6
  281. package/dist/src/proactive/execution/context.js +8 -13
  282. package/dist/src/realtime/broker.d.ts +31 -0
  283. package/dist/src/realtime/broker.js +114 -0
  284. package/dist/src/realtime/runtime.d.ts +20 -0
  285. package/dist/src/realtime/runtime.js +263 -0
  286. package/dist/src/realtime/tickets.d.ts +15 -0
  287. package/dist/src/realtime/tickets.js +38 -0
  288. package/dist/src/realtime/writer.d.ts +15 -0
  289. package/dist/src/realtime/writer.js +78 -0
  290. package/dist/src/share/share-config.js +0 -1
  291. package/dist/src/share/site-share-config.js +0 -1
  292. package/dist/src/storage/sqlite/connector-account-repository.js +0 -1
  293. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +37 -0
  294. package/dist/src/storage/sqlite/context-consolidation-repository.js +64 -0
  295. package/dist/src/storage/sqlite/endpoint-principal-repository.d.ts +17 -0
  296. package/dist/src/storage/sqlite/endpoint-principal-repository.js +54 -0
  297. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.d.ts +25 -0
  298. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +42 -0
  299. package/dist/src/storage/sqlite/fts.d.ts +2 -0
  300. package/dist/src/storage/sqlite/fts.js +29 -1
  301. package/dist/src/storage/sqlite/index.d.ts +6 -6
  302. package/dist/src/storage/sqlite/index.js +7 -7
  303. package/dist/src/storage/sqlite/knowledge-repository.d.ts +9 -2
  304. package/dist/src/storage/sqlite/knowledge-repository.js +58 -10
  305. package/dist/src/storage/sqlite/memory-records-repository.d.ts +7 -56
  306. package/dist/src/storage/sqlite/memory-records-repository.js +68 -218
  307. package/dist/src/storage/sqlite/migrations/109_endpoint_principals.sql +14 -0
  308. package/dist/src/storage/sqlite/migrations/110_session_input_origin.sql +43 -0
  309. package/dist/src/storage/sqlite/migrations/111_endpoint_tool_invocations.sql +18 -0
  310. package/dist/src/storage/sqlite/migrations/112_endpoint_instance_bindings.sql +8 -0
  311. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +54 -0
  312. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +193 -0
  313. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +6 -0
  314. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +38 -0
  315. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +110 -0
  316. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  317. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  318. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  319. package/dist/src/storage/sqlite/schema.js +1 -1
  320. package/dist/src/storage/sqlite/schema.sql +0 -20
  321. package/dist/src/storage/sqlite/session-input-repository.d.ts +3 -0
  322. package/dist/src/storage/sqlite/session-input-repository.js +5 -3
  323. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +34 -0
  324. package/dist/src/storage/sqlite/user-context-quality-repository.js +74 -0
  325. package/dist/src/storage/sqlite/user-context-repository.d.ts +64 -0
  326. package/dist/src/storage/sqlite/user-context-repository.js +383 -0
  327. package/dist/src/tasks/home-query-service.d.ts +1 -1
  328. package/dist/src/tui/backends/embedded-backend.js +5 -2
  329. package/dist/src/tui/backends/{gateway-sse-backend.d.ts → gateway-realtime-backend.d.ts} +13 -10
  330. package/dist/src/tui/backends/{gateway-sse-backend.js → gateway-realtime-backend.js} +114 -151
  331. package/dist/src/tui/tool-summary.js +1 -7
  332. package/dist/src/tui/tui-agent-events.d.ts +0 -1
  333. package/dist/src/tui/tui-agent-events.js +2 -15
  334. package/dist/src/tui/tui-backend.d.ts +4 -4
  335. package/dist/src/tui/tui-run-state.js +0 -4
  336. package/dist/src/tui/tui-startup-resources.js +1 -2
  337. package/dist/src/tui/tui-types.d.ts +2 -9
  338. package/dist/src/tui/tui-types.js +0 -1
  339. package/dist/src/tui/tui.js +5 -5
  340. package/dist/src/tunnel/gateway-lifecycle.d.ts +1 -1
  341. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  342. package/dist/src/user-context/config.d.ts +17 -210
  343. package/dist/src/user-context/config.js +19 -85
  344. package/dist/src/user-context/consolidation.d.ts +26 -0
  345. package/dist/src/user-context/consolidation.js +115 -0
  346. package/dist/src/user-context/domain.d.ts +75 -0
  347. package/dist/src/user-context/domain.js +4 -0
  348. package/dist/src/user-context/manual-understanding.d.ts +7 -14
  349. package/dist/src/user-context/manual-understanding.js +19 -49
  350. package/dist/src/{agent/memory/context → user-context}/planner.d.ts +5 -6
  351. package/dist/src/user-context/planner.js +311 -0
  352. package/dist/src/user-context/relationship-continuity.d.ts +3 -6
  353. package/dist/src/user-context/relationship-continuity.js +39 -32
  354. package/dist/src/user-context/sources/catalog.d.ts +2 -0
  355. package/dist/src/user-context/sources/catalog.js +149 -0
  356. package/dist/src/user-context/sources/index.d.ts +3 -0
  357. package/dist/src/user-context/sources/index.js +3 -0
  358. package/dist/src/user-context/sources/repository.d.ts +40 -0
  359. package/dist/src/user-context/sources/repository.js +164 -0
  360. package/dist/src/user-context/sources/types.d.ts +83 -0
  361. package/dist/src/user-context/understandingQuality.d.ts +5 -0
  362. package/dist/src/user-context/understandingQuality.js +44 -0
  363. package/dist/src/utils/logger/log-stream.d.ts +3 -10
  364. package/dist/src/utils/logger/log-stream.js +2 -73
  365. package/dist/src/utils/logger/pino-record.d.ts +1 -1
  366. package/dist/src/utils/logger/streams.js +1 -1
  367. package/dist/src/work-discovery/analyzer.d.ts +4 -3
  368. package/dist/src/work-discovery/analyzer.js +21 -16
  369. package/dist/src/work-discovery/incremental-repository.js +42 -40
  370. package/dist/src/work-discovery/index.js +3 -3
  371. package/dist/src/work-discovery/service.d.ts +7 -7
  372. package/dist/src/work-discovery/service.js +241 -190
  373. package/dist/src/work-discovery/source-repository.js +42 -53
  374. package/dist/src/work-discovery/types.d.ts +2 -14
  375. package/package.json +5 -7
  376. package/dist/gateway/static/root/assets/agents-C6OV-gMm.js +0 -2
  377. package/dist/gateway/static/root/assets/apps-page-Ci14lDeO.js +0 -1
  378. package/dist/gateway/static/root/assets/automations-page-Q1xmb4Rh.js +0 -6
  379. package/dist/gateway/static/root/assets/browser-settings-page-DbowrHXD.js +0 -8
  380. package/dist/gateway/static/root/assets/capabilities-settings-panel-DoZPFdKF.js +0 -7
  381. package/dist/gateway/static/root/assets/capability-presets-api-Dn-7MMEo.js +0 -1
  382. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Bt8Hnx0h.js +0 -1
  383. package/dist/gateway/static/root/assets/channels-settings-Bpsebsru.js +0 -1
  384. package/dist/gateway/static/root/assets/channels-status-swr-DFmdYRE5.js +0 -1
  385. package/dist/gateway/static/root/assets/connector-logo-TRr9ybf6.js +0 -1
  386. package/dist/gateway/static/root/assets/connectors-page-Tg5kl22i.js +0 -2
  387. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +0 -2
  388. package/dist/gateway/static/root/assets/extension-settings-page-C9ag5tb5.js +0 -1
  389. package/dist/gateway/static/root/assets/gateway-settings-9g8uIry9.js +0 -1
  390. package/dist/gateway/static/root/assets/heartbeat-settings-fl1oC_-5.js +0 -1
  391. package/dist/gateway/static/root/assets/home-page-Bao9jq_z.js +0 -3
  392. package/dist/gateway/static/root/assets/index-Cl5n1f_U.css +0 -1
  393. package/dist/gateway/static/root/assets/index-OJgiMh07.js +0 -223
  394. package/dist/gateway/static/root/assets/local-app-workbench-page-B69NvtvH.js +0 -2
  395. package/dist/gateway/static/root/assets/locale-store-D6hs74o5.js +0 -1
  396. package/dist/gateway/static/root/assets/logs-page-Cq3cABqg.js +0 -7
  397. package/dist/gateway/static/root/assets/messages-D02NNLCZ.js +0 -3
  398. package/dist/gateway/static/root/assets/notes-workbench-BOZfJFhE.js +0 -4
  399. package/dist/gateway/static/root/assets/product-delivery-C8JbSj5Y.js +0 -1
  400. package/dist/gateway/static/root/assets/project-detail-page-TSKFb2tN.js +0 -1
  401. package/dist/gateway/static/root/assets/projects-page-BokeBrTT.js +0 -1
  402. package/dist/gateway/static/root/assets/remote-access-hub-C56anxCX.js +0 -1
  403. package/dist/gateway/static/root/assets/segmented-styles-BL8oLBEp.js +0 -1
  404. package/dist/gateway/static/root/assets/sessions-page-C7TQADrD.js +0 -1
  405. package/dist/gateway/static/root/assets/settings-advanced-gate-BDOPKeAX.js +0 -1
  406. package/dist/gateway/static/root/assets/settings-form-section-zxo5ZGOu.js +0 -1
  407. package/dist/gateway/static/root/assets/settings-page-BUPSIa9P.js +0 -1
  408. package/dist/gateway/static/root/assets/setup-status-panel-BRg766eW.js +0 -1
  409. package/dist/gateway/static/root/assets/shares-settings-DhEAviQ_.js +0 -1
  410. package/dist/gateway/static/root/assets/skill-reload-api-Ct7AV8ls.js +0 -1
  411. package/dist/gateway/static/root/assets/skills-page-DoVuprZm.js +0 -2
  412. package/dist/gateway/static/root/assets/time-picker-BGk_Tbsj.js +0 -1
  413. package/dist/gateway/static/root/assets/use-save-bar-registration-5aVSjTjO.js +0 -1
  414. package/dist/gateway/static/root/assets/user-context-page-B9K41qmy.js +0 -1
  415. package/dist/gateway/static/root/assets/work-discovery-page-BBVnRHju.js +0 -1
  416. package/dist/gateway/static/root/assets/workflows-page-Bs_tYfst.js +0 -11
  417. package/dist/src/agent/code-intelligence/binary.d.ts +0 -15
  418. package/dist/src/agent/code-intelligence/binary.js +0 -372
  419. package/dist/src/agent/code-intelligence/index.d.ts +0 -4
  420. package/dist/src/agent/code-intelligence/index.js +0 -4
  421. package/dist/src/agent/code-intelligence/runtime.d.ts +0 -34
  422. package/dist/src/agent/code-intelligence/runtime.js +0 -280
  423. package/dist/src/agent/code-intelligence/tool-gating.d.ts +0 -5
  424. package/dist/src/agent/code-intelligence/tool-gating.js +0 -6
  425. package/dist/src/agent/code-intelligence/tools.d.ts +0 -6
  426. package/dist/src/agent/code-intelligence/tools.js +0 -266
  427. package/dist/src/agent/code-intelligence/types.d.ts +0 -22
  428. package/dist/src/agent/memory/context/planner.js +0 -286
  429. package/dist/src/agent/memory/dreaming/config.d.ts +0 -48
  430. package/dist/src/agent/memory/dreaming/config.js +0 -98
  431. package/dist/src/agent/memory/dreaming/constants.d.ts +0 -12
  432. package/dist/src/agent/memory/dreaming/constants.js +0 -18
  433. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +0 -19
  434. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -152
  435. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -16
  436. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -115
  437. package/dist/src/agent/memory/dreaming/preview.d.ts +0 -23
  438. package/dist/src/agent/memory/dreaming/preview.js +0 -52
  439. package/dist/src/agent/memory/dreaming/promotion-lifecycle.d.ts +0 -16
  440. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -44
  441. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +0 -19
  442. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -150
  443. package/dist/src/agent/memory/dreaming/runner.d.ts +0 -10
  444. package/dist/src/agent/memory/dreaming/runner.js +0 -78
  445. package/dist/src/agent/memory/dreaming/schedule.d.ts +0 -23
  446. package/dist/src/agent/memory/dreaming/schedule.js +0 -38
  447. package/dist/src/agent/memory/dreaming/scope.d.ts +0 -11
  448. package/dist/src/agent/memory/dreaming/scope.js +0 -33
  449. package/dist/src/agent/memory/dreaming/utils.d.ts +0 -3
  450. package/dist/src/agent/memory/dreaming/utils.js +0 -31
  451. package/dist/src/agent/streaming/reasoning-visibility-sse.d.ts +0 -15
  452. package/dist/src/gateway/agent-run-relay.d.ts +0 -19
  453. package/dist/src/gateway/agent-run-relay.js +0 -169
  454. package/dist/src/gateway/hono/routes/memory.d.ts +0 -3
  455. package/dist/src/gateway/hono/routes/memory.js +0 -460
  456. package/dist/src/gateway/hono/sse.d.ts +0 -53
  457. package/dist/src/gateway/hono/sse.js +0 -207
  458. package/dist/src/gateway/service/sse-hub.d.ts +0 -10
  459. package/dist/src/gateway/service/sse-hub.js +0 -53
  460. package/dist/src/storage/sqlite/dreaming-repository.d.ts +0 -61
  461. package/dist/src/storage/sqlite/dreaming-repository.js +0 -88
  462. package/dist/src/storage/sqlite/memory-readiness-repository.d.ts +0 -7
  463. package/dist/src/storage/sqlite/memory-readiness-repository.js +0 -30
  464. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +0 -27
  465. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -107
  466. package/dist/src/storage/sqlite/user-claims-repository.d.ts +0 -101
  467. package/dist/src/storage/sqlite/user-claims-repository.js +0 -241
  468. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +0 -3
  469. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -32
  470. package/dist/src/tui/sse-consumer.d.ts +0 -15
  471. package/dist/src/tui/sse-consumer.js +0 -73
  472. package/dist/src/user-context/context-compiler.d.ts +0 -27
  473. package/dist/src/user-context/context-compiler.js +0 -48
  474. package/dist/src/user-context/import.d.ts +0 -12
  475. package/dist/src/user-context/import.js +0 -51
  476. package/dist/src/user-context/memory-episode-evaluator.d.ts +0 -32
  477. package/dist/src/user-context/memory-episode-evaluator.js +0 -35
  478. package/dist/src/user-context/memory-readiness.d.ts +0 -33
  479. package/dist/src/user-context/memory-readiness.js +0 -41
  480. package/dist/src/user-context/memory-use-audit.d.ts +0 -10
  481. package/dist/src/user-context/memory-use-audit.js +0 -26
  482. package/dist/src/user-context/personal-playbook.d.ts +0 -11
  483. package/dist/src/user-context/personal-playbook.js +0 -41
  484. package/dist/src/user-context/profile.d.ts +0 -37
  485. package/dist/src/user-context/profile.js +0 -163
  486. package/dist/src/user-context/projection.d.ts +0 -120
  487. package/dist/src/user-context/projection.js +0 -262
  488. package/dist/src/user-context/source-recommendations.d.ts +0 -13
  489. package/dist/src/user-context/source-recommendations.js +0 -85
  490. /package/dist/src/{agent/code-intelligence → user-context/sources}/types.js +0 -0
@@ -1,53 +0,0 @@
1
- import type { Context } from 'hono';
2
- import type { GatewayService } from '../service.js';
3
- /** Close long-lived gateway event streams before the HTTP server starts draining. */
4
- export declare function closeAllEventStreams(): void;
5
- export interface SSEHandlerConfig {
6
- service: GatewayService;
7
- maxSseConnections?: number;
8
- }
9
- /**
10
- * POST /api/agent/resume — Re-attach to an in-progress agent run via SSE.
11
- *
12
- * Request body: { runId, sessionKey }
13
- * The relay replays retained buffered events from the beginning and then live-tails
14
- * until the run completes.
15
- *
16
- * SSE events are the active run's retained and live stream events.
17
- */
18
- export declare function createAgentResumeHandler(config: SSEHandlerConfig): (c: Context) => Promise<Response>;
19
- /**
20
- * POST /api/send — Send a message through a channel (non-streaming).
21
- */
22
- export declare function createSendHandler(config: SSEHandlerConfig): (c: Context) => Promise<(Response & import("hono").TypedResponse<{
23
- ok: false;
24
- error: {
25
- code: string;
26
- message: string;
27
- };
28
- }, 400, "json">) | (Response & import("hono").TypedResponse<{
29
- ok: true;
30
- payload: {
31
- sent: boolean;
32
- messageId?: string;
33
- };
34
- }, import("hono/dist/types/utils/http-status.js").ContentfulStatusCode, "json">) | (Response & import("hono").TypedResponse<{
35
- ok: false;
36
- error: {
37
- code: string;
38
- message: string;
39
- };
40
- }, 500, "json">)>;
41
- /**
42
- * GET /api/events — Server-pushed event stream (SSE).
43
- *
44
- * The client opens this long-lived connection to receive:
45
- * - channel status changes
46
- * - config reload notifications
47
- * - cron execution results
48
- * - any other server-initiated events
49
- *
50
- * Supports Last-Event-ID for reconnection.
51
- * Enforces maximum connection limit to prevent DoS.
52
- */
53
- export declare function createEventsSSEHandler(config: SSEHandlerConfig): (c: Context) => Promise<Response>;
@@ -1,207 +0,0 @@
1
- import { updateAsyncLogContext } from "../../utils/logger/context.js";
2
- import { createLogger } from "../../utils/logger/index.js";
3
- import { init_logger } from "../../utils/logger.js";
4
- import { stringifySSEData } from "./sse-json.js";
5
- import { streamSSE } from "hono/streaming";
6
- //#region src/gateway/hono/sse.ts
7
- init_logger();
8
- const log = createLogger("Gateway:SSE");
9
- const activeConnections = /* @__PURE__ */ new Map();
10
- /** Close long-lived gateway event streams before the HTTP server starts draining. */
11
- function closeAllEventStreams() {
12
- for (const controller of activeConnections.values()) controller.abort();
13
- }
14
- /**
15
- * POST /api/agent/resume — Re-attach to an in-progress agent run via SSE.
16
- *
17
- * Request body: { runId, sessionKey }
18
- * The relay replays retained buffered events from the beginning and then live-tails
19
- * until the run completes.
20
- *
21
- * SSE events are the active run's retained and live stream events.
22
- */
23
- function createAgentResumeHandler(config) {
24
- const { service } = config;
25
- return async (c) => {
26
- const body = await c.req.json().catch(() => null);
27
- if (!body || typeof body !== "object") return c.json({
28
- ok: false,
29
- error: {
30
- code: "BAD_REQUEST",
31
- message: "Invalid JSON body"
32
- }
33
- }, 400);
34
- const { runId, sessionKey } = body;
35
- if (typeof sessionKey === "string" && sessionKey.trim()) updateAsyncLogContext({ sessionKey: sessionKey.trim() });
36
- if (!runId || typeof runId !== "string") return c.json({
37
- ok: false,
38
- error: {
39
- code: "BAD_REQUEST",
40
- message: "Missing required field: runId"
41
- }
42
- }, 400);
43
- if (!service.agentRunner.runRelay.hasRun(runId)) return c.json({
44
- ok: false,
45
- error: {
46
- code: "NOT_FOUND",
47
- message: "Run not found or already expired"
48
- }
49
- }, 404);
50
- c.header("X-Accel-Buffering", "no");
51
- return streamSSE(c, async (stream) => {
52
- let eventId = 0;
53
- try {
54
- for await (const event of service.agentRunner.runRelay.subscribe(runId)) await stream.writeSSE({
55
- id: typeof event.seq === "number" ? String(event.seq) : String(++eventId),
56
- event: event.type || "message",
57
- data: stringifySSEData(event)
58
- });
59
- } catch (error) {
60
- log.error({
61
- err: error,
62
- runId
63
- }, "Resume stream failed");
64
- await stream.writeSSE({
65
- id: String(++eventId),
66
- event: "error",
67
- data: stringifySSEData({
68
- type: "error",
69
- runId,
70
- sessionKey: typeof sessionKey === "string" ? sessionKey : "",
71
- timestamp: Date.now(),
72
- payload: {
73
- code: "INTERNAL_ERROR",
74
- message: error instanceof Error ? error.message : "Unknown error"
75
- }
76
- })
77
- });
78
- }
79
- });
80
- };
81
- }
82
- /**
83
- * POST /api/send — Send a message through a channel (non-streaming).
84
- */
85
- function createSendHandler(config) {
86
- const { service } = config;
87
- return async (c) => {
88
- const body = await c.req.json().catch(() => ({}));
89
- const channel = body.channel;
90
- const chatId = body.chatId;
91
- const content = body.content;
92
- if (!channel || !chatId || !content) return c.json({
93
- ok: false,
94
- error: {
95
- code: "BAD_REQUEST",
96
- message: "Missing required fields: channel, chatId, content"
97
- }
98
- }, 400);
99
- try {
100
- const result = await service.sendMessage(channel, chatId, content);
101
- return c.json({
102
- ok: true,
103
- payload: result
104
- });
105
- } catch (error) {
106
- log.error({ err: error }, "Send failed");
107
- return c.json({
108
- ok: false,
109
- error: {
110
- code: "INTERNAL_ERROR",
111
- message: error instanceof Error ? error.message : "Unknown error"
112
- }
113
- }, 500);
114
- }
115
- };
116
- }
117
- /**
118
- * GET /api/events — Server-pushed event stream (SSE).
119
- *
120
- * The client opens this long-lived connection to receive:
121
- * - channel status changes
122
- * - config reload notifications
123
- * - cron execution results
124
- * - any other server-initiated events
125
- *
126
- * Supports Last-Event-ID for reconnection.
127
- * Enforces maximum connection limit to prevent DoS.
128
- */
129
- function createEventsSSEHandler(config) {
130
- const { service } = config;
131
- const maxConnections = config.maxSseConnections ?? 100;
132
- return async (c) => {
133
- if (activeConnections.size >= maxConnections) {
134
- log.warn({
135
- current: activeConnections.size,
136
- max: maxConnections
137
- }, "SSE connection limit reached");
138
- return c.json({
139
- ok: false,
140
- error: {
141
- code: "TOO_MANY_CONNECTIONS",
142
- message: "Maximum SSE connections exceeded"
143
- }
144
- }, 503);
145
- }
146
- const lastEventId = c.req.header("Last-Event-ID") || void 0;
147
- const sessionId = c.req.header("X-Session-Id") || c.req.query("sessionId") || crypto.randomUUID();
148
- updateAsyncLogContext({ sessionId: String(sessionId) });
149
- const abortController = new AbortController();
150
- activeConnections.set(sessionId, abortController);
151
- return streamSSE(c, async (stream) => {
152
- let aborted = false;
153
- await stream.writeSSE({
154
- id: "0",
155
- event: "connected",
156
- data: JSON.stringify({ sessionId })
157
- });
158
- const cleanup = service.subscribe(sessionId, async (event) => {
159
- if (aborted) return;
160
- try {
161
- await stream.writeSSE({
162
- id: event.id,
163
- event: event.type,
164
- data: JSON.stringify(event.payload)
165
- });
166
- } catch {}
167
- });
168
- if (lastEventId) {
169
- const missed = service.getEventsSince(sessionId, lastEventId);
170
- for (const event of missed) await stream.writeSSE({
171
- id: event.id,
172
- event: event.type,
173
- data: JSON.stringify(event.payload)
174
- });
175
- }
176
- const keepAlive = setInterval(async () => {
177
- if (aborted) {
178
- clearInterval(keepAlive);
179
- return;
180
- }
181
- try {
182
- await stream.writeSSE({
183
- event: "ping",
184
- data: ""
185
- });
186
- } catch {
187
- clearInterval(keepAlive);
188
- }
189
- }, 3e4);
190
- await new Promise((resolve) => {
191
- const finish = () => {
192
- aborted = true;
193
- clearInterval(keepAlive);
194
- cleanup();
195
- activeConnections.delete(sessionId);
196
- log.debug({ sessionId }, "Event stream disconnected");
197
- resolve();
198
- };
199
- stream.onAbort(finish);
200
- abortController.signal.addEventListener("abort", () => stream.abort(), { once: true });
201
- if (abortController.signal.aborted) stream.abort();
202
- });
203
- });
204
- };
205
- }
206
- //#endregion
207
- export { closeAllEventStreams, createAgentResumeHandler, createEventsSSEHandler, createSendHandler };
@@ -1,10 +0,0 @@
1
- import type { ServiceEvent } from './types.js';
2
- export type GatewaySseListener = (event: ServiceEvent) => Promise<void> | void;
3
- export declare class GatewaySseHub {
4
- private eventCounter;
5
- private subscribers;
6
- private eventBuffers;
7
- subscribe(sessionId: string, listener: GatewaySseListener): () => void;
8
- emit(type: string, payload: unknown): void;
9
- getEventsSince(sessionId: string, lastEventId: string): ServiceEvent[];
10
- }
@@ -1,53 +0,0 @@
1
- import { createLogger } from "../../utils/logger/index.js";
2
- import { init_logger } from "../../utils/logger.js";
3
- //#region src/gateway/service/sse-hub.ts
4
- init_logger();
5
- const log = createLogger("Gateway:Service");
6
- const EVENT_BUFFER_SIZE = 200;
7
- var GatewaySseHub = class {
8
- eventCounter = 0;
9
- subscribers = /* @__PURE__ */ new Map();
10
- eventBuffers = /* @__PURE__ */ new Map();
11
- subscribe(sessionId, listener) {
12
- this.subscribers.set(sessionId, listener);
13
- if (!this.eventBuffers.has(sessionId)) this.eventBuffers.set(sessionId, []);
14
- log.debug({ sessionId }, "Event subscriber added");
15
- return () => {
16
- this.subscribers.delete(sessionId);
17
- setTimeout(() => {
18
- if (!this.subscribers.has(sessionId)) this.eventBuffers.delete(sessionId);
19
- }, 5 * 6e4);
20
- log.debug({ sessionId }, "Event subscriber removed");
21
- };
22
- }
23
- emit(type, payload) {
24
- const event = {
25
- id: String(++this.eventCounter),
26
- type,
27
- payload
28
- };
29
- for (const [sessionId, listener] of this.subscribers) {
30
- const buf = this.eventBuffers.get(sessionId) || [];
31
- buf.push(event);
32
- if (buf.length > EVENT_BUFFER_SIZE) buf.shift();
33
- this.eventBuffers.set(sessionId, buf);
34
- try {
35
- listener(event);
36
- } catch (err) {
37
- log.warn({
38
- sessionId,
39
- err
40
- }, "Failed to deliver event to subscriber");
41
- }
42
- }
43
- }
44
- getEventsSince(sessionId, lastEventId) {
45
- const buf = this.eventBuffers.get(sessionId);
46
- if (!buf) return [];
47
- const idx = buf.findIndex((e) => e.id === lastEventId);
48
- if (idx === -1) return buf;
49
- return buf.slice(idx + 1);
50
- }
51
- };
52
- //#endregion
53
- export { GatewaySseHub };
@@ -1,61 +0,0 @@
1
- export type DreamingMode = 'off' | 'observe' | 'review' | 'automatic';
2
- export type DreamingActiveMode = Exclude<DreamingMode, 'off'>;
3
- export type DreamingPhase = 'light' | 'deep' | 'rem';
4
- export interface DreamingRun {
5
- runId: string;
6
- agentId: string;
7
- workspaceId: string;
8
- phase: DreamingPhase;
9
- mode: DreamingActiveMode;
10
- triggerKind: 'schedule' | 'manual';
11
- algorithmVersion: string;
12
- configSnapshot: Record<string, unknown>;
13
- status: 'running' | 'completed' | 'failed';
14
- reason?: string;
15
- metrics: Record<string, unknown>;
16
- startedAt: string;
17
- completedAt?: string;
18
- }
19
- export interface DreamingDecision {
20
- decisionId: string;
21
- runId: string;
22
- recordId?: string;
23
- action: 'observe' | 'propose' | 'activate' | 'skip';
24
- reasonCode: string;
25
- score?: number;
26
- evidence: Record<string, unknown>;
27
- createdAt: string;
28
- }
29
- export declare function startDreamingRun(input: {
30
- agentId: string;
31
- workspaceId: string;
32
- phase: DreamingPhase;
33
- mode: DreamingActiveMode;
34
- triggerKind?: 'schedule' | 'manual';
35
- algorithmVersion: string;
36
- configSnapshot: Record<string, unknown>;
37
- nowMs?: number;
38
- }): DreamingRun;
39
- export declare function finishDreamingRun(input: {
40
- runId: string;
41
- ok: boolean;
42
- reason: string;
43
- metrics?: Record<string, unknown>;
44
- nowMs?: number;
45
- }): DreamingRun | null;
46
- export declare function recordDreamingDecision(input: {
47
- runId: string;
48
- recordId?: string;
49
- action: 'observe' | 'propose' | 'activate' | 'skip';
50
- reasonCode: string;
51
- score?: number;
52
- evidence?: Record<string, unknown>;
53
- nowMs?: number;
54
- }): string;
55
- export declare function getDreamingRun(runId: string): DreamingRun | null;
56
- export declare function listDreamingRuns(options?: {
57
- agentId?: string;
58
- workspaceId?: string;
59
- limit?: number;
60
- }): DreamingRun[];
61
- export declare function listDreamingDecisions(runId: string, limit?: number): DreamingDecision[];
@@ -1,88 +0,0 @@
1
- import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
- import { randomUUID } from "node:crypto";
3
- //#region src/storage/sqlite/dreaming-repository.ts
4
- function rowToRun(row) {
5
- let metrics = {};
6
- let configSnapshot = {};
7
- try {
8
- metrics = JSON.parse(row.metrics_json);
9
- } catch {}
10
- try {
11
- configSnapshot = JSON.parse(row.config_snapshot_json);
12
- } catch {}
13
- return {
14
- runId: row.run_id,
15
- agentId: row.agent_id,
16
- workspaceId: row.workspace_id,
17
- phase: row.phase,
18
- mode: row.mode,
19
- triggerKind: row.trigger_kind,
20
- status: row.status,
21
- algorithmVersion: row.algorithm_version,
22
- configSnapshot,
23
- ...row.reason ? { reason: row.reason } : {},
24
- metrics,
25
- startedAt: new Date(row.started_at).toISOString(),
26
- ...row.completed_at ? { completedAt: new Date(row.completed_at).toISOString() } : {}
27
- };
28
- }
29
- function rowToDecision(row) {
30
- let evidence = {};
31
- try {
32
- evidence = JSON.parse(row.evidence_json);
33
- } catch {}
34
- return {
35
- decisionId: row.decision_id,
36
- runId: row.run_id,
37
- ...row.record_id ? { recordId: row.record_id } : {},
38
- action: row.action,
39
- reasonCode: row.reason_code,
40
- ...row.score == null ? {} : { score: row.score },
41
- evidence,
42
- createdAt: new Date(row.created_at).toISOString()
43
- };
44
- }
45
- function startDreamingRun(input) {
46
- const runId = randomUUID();
47
- const now = input.nowMs ?? Date.now();
48
- runSqliteWriteTransaction((db) => db.prepare(`INSERT INTO dreaming_runs (
49
- run_id, agent_id, workspace_id, phase, mode, trigger_kind,
50
- algorithm_version, config_snapshot_json, status, started_at
51
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, 'running', ?)`).run(runId, input.agentId, input.workspaceId, input.phase, input.mode, input.triggerKind ?? "schedule", input.algorithmVersion, JSON.stringify(input.configSnapshot), now));
52
- return getDreamingRun(runId);
53
- }
54
- function finishDreamingRun(input) {
55
- const now = input.nowMs ?? Date.now();
56
- runSqliteWriteTransaction((db) => db.prepare(`UPDATE dreaming_runs SET status = ?, reason = ?, metrics_json = ?, completed_at = ? WHERE run_id = ?`).run(input.ok ? "completed" : "failed", input.reason, JSON.stringify(input.metrics ?? {}), now, input.runId));
57
- return getDreamingRun(input.runId);
58
- }
59
- function recordDreamingDecision(input) {
60
- const id = randomUUID();
61
- runSqliteWriteTransaction((db) => db.prepare(`INSERT INTO dreaming_decisions (decision_id, run_id, record_id, action, reason_code, score, evidence_json, created_at)
62
- VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(id, input.runId, input.recordId ?? null, input.action, input.reasonCode, input.score == null ? null : Math.max(0, Math.min(1, input.score)), JSON.stringify(input.evidence ?? {}), input.nowMs ?? Date.now()));
63
- return id;
64
- }
65
- function getDreamingRun(runId) {
66
- const row = getSqliteDatabase().prepare(`SELECT * FROM dreaming_runs WHERE run_id = ?`).get(runId);
67
- return row ? rowToRun(row) : null;
68
- }
69
- function listDreamingRuns(options = {}) {
70
- const where = [];
71
- const params = [];
72
- if (options.agentId) {
73
- where.push("agent_id = ?");
74
- params.push(options.agentId);
75
- }
76
- if (options.workspaceId) {
77
- where.push("workspace_id = ?");
78
- params.push(options.workspaceId);
79
- }
80
- const limit = Math.max(1, Math.min(200, options.limit ?? 50));
81
- return getSqliteDatabase().prepare(`SELECT * FROM dreaming_runs ${where.length ? `WHERE ${where.join(" AND ")}` : ""} ORDER BY started_at DESC LIMIT ?`).all(...params, limit).map(rowToRun);
82
- }
83
- function listDreamingDecisions(runId, limit = 200) {
84
- const safeLimit = Math.max(1, Math.min(500, limit));
85
- return getSqliteDatabase().prepare(`SELECT * FROM dreaming_decisions WHERE run_id = ? ORDER BY created_at, decision_id LIMIT ?`).all(runId, safeLimit).map(rowToDecision);
86
- }
87
- //#endregion
88
- export { finishDreamingRun, getDreamingRun, listDreamingDecisions, listDreamingRuns, recordDreamingDecision, startDreamingRun };
@@ -1,7 +0,0 @@
1
- import { type MemoryReadiness } from '../../user-context/memory-readiness.js';
2
- export declare function getMemoryReadiness(options: {
3
- agentId: string;
4
- workspaceId: string;
5
- windowDays?: number;
6
- nowMs?: number;
7
- }): MemoryReadiness;
@@ -1,30 +0,0 @@
1
- import { getSqliteDatabase } from "./transaction.js";
2
- import { evaluateMemoryReadiness } from "../../user-context/memory-readiness.js";
3
- //#region src/storage/sqlite/memory-readiness-repository.ts
4
- function getMemoryReadiness(options) {
5
- const nowMs = options.nowMs ?? Date.now();
6
- const sinceMs = nowMs - Math.max(1, Math.min(90, Math.floor(options.windowDays ?? 30))) * 864e5;
7
- const db = getSqliteDatabase();
8
- const feedback = db.prepare(`SELECT feedback.level, feedback.rating
9
- FROM memory_feedback AS feedback
10
- JOIN memory_trace_events AS trace ON trace.trace_id = feedback.trace_id
11
- WHERE trace.phase IN ('search', 'inject')
12
- AND trace.source_agent_id = ?
13
- AND feedback.updated_at >= ?`).all(options.agentId, sinceMs);
14
- const runs = db.prepare(`SELECT status FROM dreaming_runs
15
- WHERE agent_id = ? AND workspace_id = ? AND started_at >= ?
16
- ORDER BY started_at DESC LIMIT 100`).all(options.agentId, options.workspaceId, sinceMs);
17
- const responseFeedback = feedback.filter((item) => item.level === "response");
18
- const recordFeedback = feedback.filter((item) => item.level === "record");
19
- return evaluateMemoryReadiness({
20
- evaluatedTurns: responseFeedback.length,
21
- helpfulTurns: responseFeedback.filter((item) => item.rating === "helpful").length,
22
- recordFeedback: recordFeedback.length,
23
- recordErrors: recordFeedback.filter((item) => item.rating === "incorrect" || item.rating === "outdated" || item.rating === "sensitive").length,
24
- sensitiveFeedback: recordFeedback.filter((item) => item.rating === "sensitive").length,
25
- dreamingRuns: runs.length,
26
- dreamingFailures: runs.filter((item) => item.status === "failed").length
27
- }, { nowMs });
28
- }
29
- //#endregion
30
- export { getMemoryReadiness };
@@ -1,27 +0,0 @@
1
- export type MemoryReferenceGrantScope = 'once' | 'session' | 'always';
2
- export type MemoryReferenceConsentStatus = 'pending' | 'granted' | 'denied' | 'consumed';
3
- export type MemoryReferenceConsent = {
4
- id: string;
5
- recordId: string;
6
- sessionKey: string;
7
- purpose: string;
8
- status: MemoryReferenceConsentStatus;
9
- grantScope?: MemoryReferenceGrantScope;
10
- expiresAt?: string;
11
- createdAt: string;
12
- updatedAt: string;
13
- };
14
- export declare function ensureMemoryReferenceConsentRequest(input: {
15
- recordId: string;
16
- sessionKey: string;
17
- purpose: string;
18
- }): MemoryReferenceConsent;
19
- export declare function listMemoryReferenceConsents(options?: {
20
- status?: MemoryReferenceConsentStatus;
21
- sessionKey?: string;
22
- }): MemoryReferenceConsent[];
23
- export declare function decideMemoryReferenceConsent(id: string, decision: 'deny' | MemoryReferenceGrantScope): MemoryReferenceConsent | undefined;
24
- export declare function revokeMemoryReferenceConsent(id: string): MemoryReferenceConsent | undefined;
25
- export declare function hasMemoryReferenceConsent(recordId: string, sessionKey: string): boolean;
26
- /** Resolve a valid grant. One-shot grants are consumed atomically. */
27
- export declare function consumeMemoryReferenceConsent(recordId: string, sessionKey: string): boolean;
@@ -1,107 +0,0 @@
1
- import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
- import { randomUUID } from "node:crypto";
3
- //#region src/storage/sqlite/memory-reference-consent-repository.ts
4
- function fromRow(row) {
5
- return {
6
- id: row.consent_id,
7
- recordId: row.record_id,
8
- sessionKey: row.session_key,
9
- purpose: row.purpose,
10
- status: row.status,
11
- ...row.grant_scope ? { grantScope: row.grant_scope } : {},
12
- ...row.expires_at ? { expiresAt: new Date(row.expires_at).toISOString() } : {},
13
- createdAt: new Date(row.created_at).toISOString(),
14
- updatedAt: new Date(row.updated_at).toISOString()
15
- };
16
- }
17
- function ensureMemoryReferenceConsentRequest(input) {
18
- return runSqliteWriteTransaction((db) => {
19
- const existing = db.prepare(`
20
- SELECT * FROM memory_reference_consents
21
- WHERE record_id = ? AND session_key = ? AND status = 'pending'
22
- `).get(input.recordId, input.sessionKey);
23
- if (existing) return fromRow(existing);
24
- const id = randomUUID();
25
- const now = Date.now();
26
- db.prepare(`
27
- INSERT INTO memory_reference_consents (
28
- consent_id, record_id, session_key, purpose, status, created_at, updated_at
29
- ) VALUES (?, ?, ?, ?, 'pending', ?, ?)
30
- `).run(id, input.recordId, input.sessionKey, input.purpose.trim().slice(0, 500), now, now);
31
- return fromRow(db.prepare("SELECT * FROM memory_reference_consents WHERE consent_id = ?").get(id));
32
- });
33
- }
34
- function listMemoryReferenceConsents(options = {}) {
35
- const clauses = [];
36
- const params = [];
37
- if (options.status) {
38
- clauses.push("status = ?");
39
- params.push(options.status);
40
- }
41
- if (options.sessionKey) {
42
- clauses.push("session_key = ?");
43
- params.push(options.sessionKey);
44
- }
45
- const where = clauses.length ? ` WHERE ${clauses.join(" AND ")}` : "";
46
- return getSqliteDatabase().prepare(`SELECT * FROM memory_reference_consents${where} ORDER BY created_at DESC`).all(...params).map(fromRow);
47
- }
48
- function decideMemoryReferenceConsent(id, decision) {
49
- return runSqliteWriteTransaction((db) => {
50
- const current = db.prepare("SELECT * FROM memory_reference_consents WHERE consent_id = ?").get(id);
51
- if (!current || current.status !== "pending") return void 0;
52
- const now = Date.now();
53
- const expiresAt = decision === "once" ? now + 900 * 1e3 : decision === "session" ? now + 1440 * 60 * 1e3 : null;
54
- db.prepare(`
55
- UPDATE memory_reference_consents
56
- SET status = ?, grant_scope = ?, expires_at = ?, updated_at = ?
57
- WHERE consent_id = ?
58
- `).run(decision === "deny" ? "denied" : "granted", decision === "deny" ? null : decision, expiresAt, now, id);
59
- return fromRow(db.prepare("SELECT * FROM memory_reference_consents WHERE consent_id = ?").get(id));
60
- });
61
- }
62
- function revokeMemoryReferenceConsent(id) {
63
- return runSqliteWriteTransaction((db) => {
64
- const current = db.prepare("SELECT * FROM memory_reference_consents WHERE consent_id = ?").get(id);
65
- if (!current || current.status !== "granted") return void 0;
66
- const now = Date.now();
67
- db.prepare(`
68
- UPDATE memory_reference_consents
69
- SET status = 'denied', grant_scope = NULL, expires_at = NULL, updated_at = ?
70
- WHERE consent_id = ? AND status = 'granted'
71
- `).run(now, id);
72
- return fromRow(db.prepare("SELECT * FROM memory_reference_consents WHERE consent_id = ?").get(id));
73
- });
74
- }
75
- function hasMemoryReferenceConsent(recordId, sessionKey) {
76
- const now = Date.now();
77
- return Boolean(getSqliteDatabase().prepare(`
78
- SELECT 1 FROM memory_reference_consents
79
- WHERE record_id = ? AND status = 'granted'
80
- AND (expires_at IS NULL OR expires_at > ?)
81
- AND (grant_scope = 'always' OR session_key = ?)
82
- LIMIT 1
83
- `).get(recordId, now, sessionKey));
84
- }
85
- /** Resolve a valid grant. One-shot grants are consumed atomically. */
86
- function consumeMemoryReferenceConsent(recordId, sessionKey) {
87
- return runSqliteWriteTransaction((db) => {
88
- const now = Date.now();
89
- const row = db.prepare(`
90
- SELECT * FROM memory_reference_consents
91
- WHERE record_id = ? AND status = 'granted'
92
- AND (expires_at IS NULL OR expires_at > ?)
93
- AND (grant_scope = 'always' OR session_key = ?)
94
- ORDER BY CASE grant_scope WHEN 'once' THEN 0 WHEN 'session' THEN 1 ELSE 2 END, updated_at DESC
95
- LIMIT 1
96
- `).get(recordId, now, sessionKey);
97
- if (!row) return false;
98
- if (row.grant_scope === "once") db.prepare(`UPDATE memory_reference_consents SET status = 'consumed', updated_at = ? WHERE consent_id = ?`).run(now, row.consent_id);
99
- db.prepare(`
100
- UPDATE memory_reference_consents SET status = 'consumed', updated_at = ?
101
- WHERE record_id = ? AND session_key = ? AND status = 'pending'
102
- `).run(now, recordId, sessionKey);
103
- return true;
104
- });
105
- }
106
- //#endregion
107
- export { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent };