@xopcai/xopc 0.0.248 → 0.0.249

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 (452) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-etpmyV7S.js → activity-store-B759R_qf.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BmKxSM1k.js → agent-avatar-dicebear-BUu7EnwM.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.js +1 -0
  6. package/dist/gateway/static/root/assets/agents-DK9HjHO0.js +1 -0
  7. package/dist/gateway/static/root/assets/{api-B0-hLuZ1.js → api-Cg0v7Lpn.js} +1 -1
  8. package/dist/gateway/static/root/assets/app-management-settings-panel-C9DkCW_d.js +1 -0
  9. package/dist/gateway/static/root/assets/appearance-settings-CFggS95Y.js +1 -0
  10. package/dist/gateway/static/root/assets/apps-page-jOvT-fzU.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BnMSgZvR.js → archive-plugin-BQrilVVv.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-CejsQMev.js → attachment-load-BG0BliqV.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-RC8EyoAf.js → automations-page-Bo4RiTkh.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-BKjKTlW8.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-DGjppLSG.js → binary-plugins-BCnyNU0C.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-CWdP4bUc.js → block-editor-Db8DlVvg.js} +50 -50
  17. package/dist/gateway/static/root/assets/browser-settings-page-Dzq18pO1.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BQ1Ilw_o.js → browser-workflow-inputs-C71vfl0b.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-CJh4NyxT.js → browser-workflows-page-vvmSYKsO.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-DW4SBQf4.js +7 -0
  21. package/dist/gateway/static/root/assets/channels-settings-57OGuewD.js +1 -0
  22. package/dist/gateway/static/root/assets/{channels-status-swr-Ohhee4vm.js → channels-status-swr-CKyV3jY5.js} +1 -1
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-BOtoKTK3.js → chat-terminal-dock-B1Xd6OFB.js} +2 -2
  24. package/dist/gateway/static/root/assets/connectors-page-CT_I3kbR.js +2 -0
  25. package/dist/gateway/static/root/assets/{cron-expression-DTj1V3Sw.js → cron-expression-D-F9vjtE.js} +1 -1
  26. package/dist/gateway/static/root/assets/{date-picker-Yr6OCvGL.js → date-picker-B2OoYvic.js} +1 -1
  27. package/dist/gateway/static/root/assets/dependency-picker-BiGx9Sbj.js +1 -0
  28. package/dist/gateway/static/root/assets/{desktop-pet-DbGzggPF.js → desktop-pet-BNMRqipe.js} +1 -1
  29. package/dist/gateway/static/root/assets/desktop-pet-settings-DeYbIV7A.js +1 -0
  30. package/dist/gateway/static/root/assets/{extension-debug-page-DgTtk4KC.js → extension-debug-page-COyn05ub.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-DtQeiP6f.js → extension-page-oH43chS2.js} +1 -1
  32. package/dist/gateway/static/root/assets/extension-settings-page-BMO59994.js +1 -0
  33. package/dist/gateway/static/root/assets/gateway-config-api-cimpViGk.js +1 -0
  34. package/dist/gateway/static/root/assets/{gateway-config-swr-DXuXtU1w.js → gateway-config-swr-BGdHwT4e.js} +1 -1
  35. package/dist/gateway/static/root/assets/gateway-settings-BHJtnSic.js +1 -0
  36. package/dist/gateway/static/root/assets/{gateway-startup-retry-CzBzglzQ.js → gateway-startup-retry-CuaM3b4c.js} +1 -1
  37. package/dist/gateway/static/root/assets/heartbeat-settings-DNhrZHqx.js +1 -0
  38. package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +1 -0
  39. package/dist/gateway/static/root/assets/{image-generation-api-TIgsn04n.js → image-generation-api-D7duj7Uj.js} +1 -1
  40. package/dist/gateway/static/root/assets/index-DGeGmj4k.css +2 -0
  41. package/dist/gateway/static/root/assets/index-aBs0EfQB.js +72 -0
  42. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-wsWuoa8p.js → keyboard-shortcuts-settings-D8Zw_lYd.js} +1 -1
  43. package/dist/gateway/static/root/assets/{local-app-workbench-page-CpyvYyrb.js → local-app-workbench-page-eBFVWmtH.js} +2 -2
  44. package/dist/gateway/static/root/assets/{local-apps-page-CXrbrGo8.js → local-apps-page-CvPDPRwb.js} +1 -1
  45. package/dist/gateway/static/root/assets/{locale-store-BJFLQY8O.js → locale-store-zEL8bkwx.js} +1 -1
  46. package/dist/gateway/static/root/assets/logs-page-ClvcWlL6.js +2 -0
  47. package/dist/gateway/static/root/assets/{management-settings-BdJZFR7U.js → management-settings-D8moh99U.js} +1 -1
  48. package/dist/gateway/static/root/assets/{markdown-split-NK3ACVG2.js → markdown-split-D7V3j0vE.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-view-DTF9v1gg.js → markdown-view-DGRN-8wP.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-F0jcUxyl.js → media-plugins-BLaE5b1Y.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-W5P19VTF.js +11 -0
  52. package/dist/gateway/static/root/assets/mobile-pairing-wizard-DiVDuCxl.js +1 -0
  53. package/dist/gateway/static/root/assets/note-detail-panel-CEEvR-fV.js +5 -0
  54. package/dist/gateway/static/root/assets/notes-page-BLqgXNCx.js +8 -0
  55. package/dist/gateway/static/root/assets/page-tabs-BFMGjA60.js +1 -0
  56. package/dist/gateway/static/root/assets/preview-open-alternatives-DNEWZN7H.js +1 -0
  57. package/dist/gateway/static/root/assets/{product-open-page-CxGGlWA8.js → product-open-page-Co5u7asH.js} +1 -1
  58. package/dist/gateway/static/root/assets/project-detail-page-CIiFJ5tk.js +1 -0
  59. package/dist/gateway/static/root/assets/projects-page-B3UF-Pfm.js +1 -0
  60. package/dist/gateway/static/root/assets/{registry-api-CIsNlSBi.js → registry-api-Cg92zSod.js} +1 -1
  61. package/dist/gateway/static/root/assets/remote-access-hub-BUtpkJPG.js +1 -0
  62. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-YkjhiQfA.js → runtime-tools-settings-panel-C0ByNmlV.js} +2 -2
  63. package/dist/gateway/static/root/assets/{schema-form-oFGf3G3s.js → schema-form-Dq_VQpuY.js} +1 -1
  64. package/dist/gateway/static/root/assets/sessions-page-UgJmG-V4.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-advanced-gate-DDCzpdkl.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-form-section-CZu6FX4k.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-page-C7VWs0IT.js → settings-page-S8ekeUZd.js} +1 -1
  68. package/dist/gateway/static/root/assets/setup-status-panel-BdVmwXMv.js +1 -0
  69. package/dist/gateway/static/root/assets/{share-preview-page-t5oz18rh.js → share-preview-page-D2fEidbn.js} +1 -1
  70. package/dist/gateway/static/root/assets/shares-settings-BdsqnCYj.js +1 -0
  71. package/dist/gateway/static/root/assets/skill-reload-api-ghzAQKna.js +1 -0
  72. package/dist/gateway/static/root/assets/skills-page-AYiPlgZE.js +2 -0
  73. package/dist/gateway/static/root/assets/{skills-page.utils-DEDTYs2W.js → skills-page.utils-DGzl-ib-.js} +1 -1
  74. package/dist/gateway/static/root/assets/system-settings-panel-5Xd5mIiR.js +1 -0
  75. package/dist/gateway/static/root/assets/task-detail-page-BQAUaCDD.js +1 -0
  76. package/dist/gateway/static/root/assets/{theme-store-O597U8q_.js → theme-store-ZVClZKQ0.js} +1 -1
  77. package/dist/gateway/static/root/assets/tunnel-api-CdZN1Jin.js +1 -0
  78. package/dist/gateway/static/root/assets/{use-autosave-B5eUJ6Zq.js → use-autosave-czRI0NBc.js} +1 -1
  79. package/dist/gateway/static/root/assets/user-model-page-W3GTm6nA.js +2 -0
  80. package/dist/gateway/static/root/assets/{voice-api-key-field-CMKSwz4C.js → voice-api-key-field-8YEvA3cU.js} +1 -1
  81. package/dist/gateway/static/root/assets/{voice-config-api-q7B6fOFB.js → voice-config-api-CopF64lY.js} +1 -1
  82. package/dist/gateway/static/root/assets/work-discovery-overlay-keLtqYYJ.js +1 -0
  83. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DZmvLZjb.js → workflow-run-setup-panel-Dy5WgYMO.js} +2 -2
  84. package/dist/gateway/static/root/assets/workflows-page-BbAV3h7n.js +5 -0
  85. package/dist/gateway/static/root/index.html +10 -26
  86. package/dist/package.js +1 -1
  87. package/dist/src/agent/agent-instance-gateway.d.ts +2 -2
  88. package/dist/src/agent/agent-manager.d.ts +4 -4
  89. package/dist/src/agent/agent-manager.js +31 -15
  90. package/dist/src/agent/background-review/coordinator.d.ts +2 -4
  91. package/dist/src/agent/background-review/coordinator.js +5 -30
  92. package/dist/src/agent/background-review/prompts.d.ts +4 -2
  93. package/dist/src/agent/background-review/prompts.js +24 -19
  94. package/dist/src/agent/background-review/run-background-review.d.ts +6 -7
  95. package/dist/src/agent/background-review/run-background-review.js +47 -41
  96. package/dist/src/agent/background-review/settings.d.ts +0 -1
  97. package/dist/src/agent/background-review/settings.js +6 -7
  98. package/dist/src/agent/context/audit.d.ts +36 -0
  99. package/dist/src/agent/context/audit.js +97 -0
  100. package/dist/src/agent/context/coordinator.d.ts +26 -0
  101. package/dist/src/agent/context/coordinator.js +72 -0
  102. package/dist/src/agent/context/execution-context.d.ts +54 -0
  103. package/dist/src/agent/context/execution-context.js +147 -0
  104. package/dist/src/agent/context/execution-scope.js +1 -1
  105. package/dist/src/agent/context/prepend.d.ts +2 -0
  106. package/dist/src/agent/context/prepend.js +28 -0
  107. package/dist/src/agent/context/project-context.d.ts +3 -3
  108. package/dist/src/agent/context/project-context.js +26 -23
  109. package/dist/src/agent/embedded/index.js +1 -1
  110. package/dist/src/agent/embedded/run-for-session.js +1 -0
  111. package/dist/src/agent/embedded/run-turn.js +22 -2
  112. package/dist/src/agent/embedded/types.d.ts +1 -25
  113. package/dist/src/agent/external-tools/composio-provider.js +87 -92
  114. package/dist/src/agent/external-tools/gateway-tools.d.ts +4 -1
  115. package/dist/src/agent/external-tools/gateway-tools.js +153 -41
  116. package/dist/src/agent/external-tools/index.js +1 -1
  117. package/dist/src/agent/external-tools/search-error.d.ts +12 -0
  118. package/dist/src/agent/external-tools/search-error.js +29 -0
  119. package/dist/src/agent/external-tools/service.d.ts +4 -0
  120. package/dist/src/agent/external-tools/service.js +22 -2
  121. package/dist/src/agent/memory/compaction-policy.js +1 -1
  122. package/dist/src/agent/memory/compaction-promotion.js +45 -77
  123. package/dist/src/agent/memory/create-memory-manager.js +1 -3
  124. package/dist/src/agent/memory/index.d.ts +0 -5
  125. package/dist/src/agent/memory/index.js +2 -5
  126. package/dist/src/agent/memory/manager.d.ts +0 -16
  127. package/dist/src/agent/memory/manager.js +11 -40
  128. package/dist/src/agent/memory/memory-config.js +1 -1
  129. package/dist/src/agent/memory/runtime.d.ts +2 -2
  130. package/dist/src/agent/memory/runtime.js +9 -19
  131. package/dist/src/agent/memory/types.d.ts +1 -1
  132. package/dist/src/agent/orchestration/agent-orchestrator.js +13 -21
  133. package/dist/src/agent/prompt/sections/memory-skills.js +25 -36
  134. package/dist/src/agent/prompt/sections/tooling.js +10 -4
  135. package/dist/src/agent/prompt/service-prompt-builder.js +4 -3
  136. package/dist/src/agent/service/direct-turn-helpers.js +6 -23
  137. package/dist/src/agent/service/process-direct-streaming.js +5 -3
  138. package/dist/src/agent/service.js +4 -3
  139. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  140. package/dist/src/agent/tools/clarify-tool.d.ts +1 -0
  141. package/dist/src/agent/tools/delegate-tool.js +5 -2
  142. package/dist/src/agent/tools/factory.js +36 -19
  143. package/dist/src/agent/tools/index.d.ts +3 -2
  144. package/dist/src/agent/tools/index.js +4 -3
  145. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +9 -0
  146. package/dist/src/agent/tools/knowledge-memory-tool.js +129 -0
  147. package/dist/src/agent/tools/{dreaming-tool.d.ts → memory-maintenance-tool.d.ts} +2 -2
  148. package/dist/src/agent/tools/memory-maintenance-tool.js +31 -0
  149. package/dist/src/agent/tools/user-context-tool.d.ts +8 -0
  150. package/dist/src/agent/tools/user-context-tool.js +81 -0
  151. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  152. package/dist/src/chat-commands/builtins/understanding.js +24 -6
  153. package/dist/src/cli/commands/connectors.js +1 -1
  154. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  155. package/dist/src/config/schema.d.ts +68 -75
  156. package/dist/src/config/schema.js +29 -18
  157. package/dist/src/config/web-patch.d.ts +1 -1
  158. package/dist/src/connectors/auth-provider-registry.js +1 -1
  159. package/dist/src/connectors/composio-managed-client.js +6 -2
  160. package/dist/src/connectors/connected-source-ingestion.js +1 -1
  161. package/dist/src/connectors/connected-source-understanding.d.ts +1 -3
  162. package/dist/src/connectors/connected-source-understanding.js +86 -99
  163. package/dist/src/connectors/connection-candidates.d.ts +11 -0
  164. package/dist/src/connectors/connection-candidates.js +58 -0
  165. package/dist/src/connectors/connection-capabilities.d.ts +4 -0
  166. package/dist/src/connectors/connection-capabilities.js +37 -0
  167. package/dist/src/connectors/connection-recovery-service.d.ts +42 -0
  168. package/dist/src/connectors/connection-recovery-service.js +396 -0
  169. package/dist/src/connectors/health.js +1 -1
  170. package/dist/src/connectors/learning-coordinator.d.ts +0 -2
  171. package/dist/src/connectors/learning-coordinator.js +6 -7
  172. package/dist/src/connectors/principal.d.ts +5 -0
  173. package/dist/src/connectors/principal.js +18 -0
  174. package/dist/src/gateway/agent-builtin-tools.d.ts +28 -10
  175. package/dist/src/gateway/agent-builtin-tools.js +30 -9
  176. package/dist/src/gateway/chat-stream/mapper.js +1 -28
  177. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -24
  178. package/dist/src/gateway/clarify-bridge.d.ts +4 -0
  179. package/dist/src/gateway/clarify-bridge.js +9 -4
  180. package/dist/src/gateway/heartbeat/service.js +1 -1
  181. package/dist/src/gateway/hono/lib/config-payload.d.ts +52 -30
  182. package/dist/src/gateway/hono/lib/config-payload.js +4 -4
  183. package/dist/src/gateway/hono/middleware/auth.js +1 -2
  184. package/dist/src/gateway/hono/routes/capabilities.js +1 -1
  185. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  186. package/dist/src/gateway/hono/routes/config-patch/misc.js +72 -28
  187. package/dist/src/gateway/hono/routes/connection-waits.d.ts +3 -0
  188. package/dist/src/gateway/hono/routes/connection-waits.js +58 -0
  189. package/dist/src/gateway/hono/routes/connectors.js +7 -15
  190. package/dist/src/gateway/hono/routes/context-sources.d.ts +4 -0
  191. package/dist/src/gateway/hono/routes/context-sources.js +159 -0
  192. package/dist/src/gateway/hono/routes/index.js +4 -2
  193. package/dist/src/gateway/hono/routes/lazy-bundles.js +9 -4
  194. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  195. package/dist/src/gateway/hono/routes/notes.js +22 -7
  196. package/dist/src/gateway/hono/routes/projects.js +36 -44
  197. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +15 -1
  198. package/dist/src/gateway/hono/routes/side-chats.js +13 -2
  199. package/dist/src/gateway/hono/routes/tasks.js +2 -2
  200. package/dist/src/gateway/hono/routes/user-model.d.ts +3 -0
  201. package/dist/src/gateway/hono/routes/user-model.js +480 -0
  202. package/dist/src/gateway/memory-maintenance-automation-reconciler.d.ts +11 -0
  203. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +72 -0
  204. package/dist/src/gateway/service/agent-runner.d.ts +9 -1
  205. package/dist/src/gateway/service/agent-runner.js +25 -1
  206. package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
  207. package/dist/src/gateway/service/config-coordinator.js +4 -4
  208. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  209. package/dist/src/gateway/service/run-gateway-agent.js +18 -14
  210. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  211. package/dist/src/gateway/service/session-input-coordinator.js +12 -2
  212. package/dist/src/gateway/service.d.ts +3 -1
  213. package/dist/src/gateway/service.js +45 -14
  214. package/dist/src/gateway/side-chat/manager.d.ts +16 -3
  215. package/dist/src/gateway/side-chat/manager.js +117 -28
  216. package/dist/src/gateway/side-chat/run-service.d.ts +2 -0
  217. package/dist/src/gateway/side-chat/run-service.js +28 -5
  218. package/dist/src/gateway/side-chat/types.d.ts +9 -1
  219. package/dist/src/heartbeat/index.js +1 -1
  220. package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +0 -2
  221. package/dist/src/knowledge/connected-knowledge-pipeline.js +46 -217
  222. package/dist/src/knowledge-memory/domain.d.ts +35 -0
  223. package/dist/src/knowledge-memory/index.d.ts +2 -0
  224. package/dist/src/knowledge-memory/index.js +2 -0
  225. package/dist/src/knowledge-memory/repository.d.ts +45 -0
  226. package/dist/src/knowledge-memory/repository.js +154 -0
  227. package/dist/src/memory-maintenance/index.d.ts +2 -0
  228. package/dist/src/memory-maintenance/index.js +3 -0
  229. package/dist/src/memory-maintenance/schedule.d.ts +13 -0
  230. package/dist/src/memory-maintenance/schedule.js +51 -0
  231. package/dist/src/memory-maintenance/service.d.ts +28 -0
  232. package/dist/src/memory-maintenance/service.js +216 -0
  233. package/dist/src/notes/service.d.ts +1 -0
  234. package/dist/src/notes/service.js +7 -1
  235. package/dist/src/notes/types.d.ts +16 -0
  236. package/dist/src/proactive/execution/context.d.ts +2 -2
  237. package/dist/src/proactive/execution/context.js +16 -11
  238. package/dist/src/proactive/index.d.ts +1 -1
  239. package/dist/src/proactive/index.js +2 -2
  240. package/dist/src/projects/index.d.ts +1 -1
  241. package/dist/src/projects/index.js +2 -2
  242. package/dist/src/projects/knowledge-bind.d.ts +1 -0
  243. package/dist/src/projects/knowledge-bind.js +15 -0
  244. package/dist/src/projects/project-loop.d.ts +3 -3
  245. package/dist/src/projects/project-loop.js +4 -4
  246. package/dist/src/projects/project-store.js +2 -1
  247. package/dist/src/realtime/runtime.js +1 -0
  248. package/dist/src/runtime-tools/manager.js +1 -1
  249. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +17 -0
  250. package/dist/src/storage/sqlite/collaboration-rule-repository.js +54 -0
  251. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +30 -0
  252. package/dist/src/storage/sqlite/connection-wait-repository.js +338 -0
  253. package/dist/src/storage/sqlite/connector-account-repository.js +1 -1
  254. package/dist/src/storage/sqlite/context-evidence-repository.d.ts +24 -0
  255. package/dist/src/storage/sqlite/context-evidence-repository.js +52 -0
  256. package/dist/src/storage/sqlite/index.d.ts +3 -5
  257. package/dist/src/storage/sqlite/index.js +4 -6
  258. package/dist/src/storage/sqlite/knowledge-repository.d.ts +0 -19
  259. package/dist/src/storage/sqlite/knowledge-repository.js +1 -90
  260. package/dist/src/storage/sqlite/migrations/148_user_model_foundation.sql +554 -0
  261. package/dist/src/storage/sqlite/migrations/149_separate_source_index_from_memory.sql +18 -0
  262. package/dist/src/storage/sqlite/migrations/150_session_connection_waits.sql +47 -0
  263. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  264. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  265. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  266. package/dist/src/storage/sqlite/notes-repository.d.ts +2 -1
  267. package/dist/src/storage/sqlite/notes-repository.js +37 -3
  268. package/dist/src/storage/sqlite/schema.js +1 -1
  269. package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -2
  270. package/dist/src/storage/sqlite/session-input-repository.js +16 -13
  271. package/dist/src/storage/sqlite/session-repository.js +4 -1
  272. package/dist/src/storage/sqlite/transcript-repository.js +1 -1
  273. package/dist/src/tasks/index.js +2 -2
  274. package/dist/src/tasks/project-operating-view-service.js +1 -1
  275. package/dist/src/tasks/task-application-service.js +6 -1
  276. package/dist/src/tasks/task-context-assembler.js +1 -1
  277. package/dist/src/tasks/task-context-repository.d.ts +0 -1
  278. package/dist/src/tasks/task-context-repository.js +1 -1
  279. package/dist/src/tasks/task-deletion-service.js +1 -1
  280. package/dist/src/tasks/task-handoff-service.js +1 -1
  281. package/dist/src/tasks/task-read-model-projector.js +1 -1
  282. package/dist/src/tasks/task-run-coordinator.js +1 -1
  283. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  284. package/dist/src/tasks/task-run-repository.js +1 -0
  285. package/dist/src/tasks/task-signal-service.js +1 -1
  286. package/dist/src/tui/tool-summary.js +2 -1
  287. package/dist/src/tui/tui-startup-resources.js +1 -1
  288. package/dist/src/user-context/changes.d.ts +1 -1
  289. package/dist/src/user-context/config.d.ts +135 -153
  290. package/dist/src/user-context/config.js +94 -99
  291. package/dist/src/user-context/relationship-continuity.d.ts +2 -2
  292. package/dist/src/user-context/relationship-continuity.js +34 -24
  293. package/dist/src/user-context/sources/activity-clustering.d.ts +9 -3
  294. package/dist/src/user-context/sources/index.js +2 -2
  295. package/dist/src/user-context/sources/repository.d.ts +1 -21
  296. package/dist/src/user-context/sources/repository.js +1 -183
  297. package/dist/src/user-context/sources/types.d.ts +0 -23
  298. package/dist/src/user-model/capture/executor.d.ts +40 -0
  299. package/dist/src/user-model/capture/executor.js +134 -0
  300. package/dist/src/user-model/capture/index.d.ts +2 -0
  301. package/dist/src/user-model/capture/index.js +3 -0
  302. package/dist/src/user-model/capture/semantic.d.ts +21 -0
  303. package/dist/src/user-model/capture/semantic.js +197 -0
  304. package/dist/src/user-model/domain.d.ts +93 -0
  305. package/dist/src/user-model/domain.js +33 -0
  306. package/dist/src/user-model/goals.d.ts +58 -0
  307. package/dist/src/user-model/goals.js +89 -0
  308. package/dist/src/user-model/importance.d.ts +11 -0
  309. package/dist/src/user-model/importance.js +17 -0
  310. package/dist/src/user-model/index.d.ts +5 -0
  311. package/dist/src/user-model/index.js +6 -0
  312. package/dist/src/user-model/repository.d.ts +23 -0
  313. package/dist/src/user-model/repository.js +268 -0
  314. package/dist/src/user-model/temporal.d.ts +10 -0
  315. package/dist/src/user-model/temporal.js +44 -0
  316. package/dist/src/voice/realtime/memory-context.d.ts +7 -2
  317. package/dist/src/voice/realtime/memory-context.js +39 -51
  318. package/dist/src/work-discovery/service.d.ts +3 -14
  319. package/dist/src/work-discovery/service.js +138 -99
  320. package/dist/src/work-discovery/types.d.ts +3 -3
  321. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  322. package/dist/src/workflows/service/workflow-session-bridge.js +12 -20
  323. package/package.json +1 -1
  324. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CUXApfcE.js +0 -1
  325. package/dist/gateway/static/root/assets/agents-DNq_GKuc.js +0 -1
  326. package/dist/gateway/static/root/assets/app-management-settings-panel-qfwAgyhQ.js +0 -1
  327. package/dist/gateway/static/root/assets/appearance-settings-DqQVUpCC.js +0 -1
  328. package/dist/gateway/static/root/assets/apps-page-dwIqYmXk.js +0 -1
  329. package/dist/gateway/static/root/assets/automations-workspace-SkdcSZ0i.js +0 -6
  330. package/dist/gateway/static/root/assets/browser-settings-page-CKCa6TvG.js +0 -8
  331. package/dist/gateway/static/root/assets/capabilities-settings-panel-DSp--zIZ.js +0 -7
  332. package/dist/gateway/static/root/assets/channels-settings-CMd2dDrI.js +0 -1
  333. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +0 -1
  334. package/dist/gateway/static/root/assets/connectors-page-udWs5Kdm.js +0 -2
  335. package/dist/gateway/static/root/assets/dependency-picker-DpN3XZg9.js +0 -1
  336. package/dist/gateway/static/root/assets/desktop-pet-settings-DinCToZh.js +0 -1
  337. package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +0 -1
  338. package/dist/gateway/static/root/assets/extension-settings-page-DcguCgsH.js +0 -1
  339. package/dist/gateway/static/root/assets/eye-CABVeTq0.js +0 -1
  340. package/dist/gateway/static/root/assets/eye-off-DEAzt3g1.js +0 -1
  341. package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +0 -1
  342. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +0 -1
  343. package/dist/gateway/static/root/assets/gateway-config-api-Br7lSf6H.js +0 -1
  344. package/dist/gateway/static/root/assets/gateway-settings-CdPoDMuj.js +0 -1
  345. package/dist/gateway/static/root/assets/heartbeat-settings-DHk1hawP.js +0 -1
  346. package/dist/gateway/static/root/assets/home-page-YGipe_W6.js +0 -1
  347. package/dist/gateway/static/root/assets/index-D5TQQpeb.js +0 -71
  348. package/dist/gateway/static/root/assets/index-DReBaaTX.css +0 -2
  349. package/dist/gateway/static/root/assets/interaction-BmQogeqz.js +0 -1
  350. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +0 -1
  351. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  352. package/dist/gateway/static/root/assets/local-context-graph-BjUf7fQ9.js +0 -1
  353. package/dist/gateway/static/root/assets/logs-page-CXKy6E_l.js +0 -2
  354. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +0 -1
  355. package/dist/gateway/static/root/assets/messages-CHNYp8EQ.js +0 -3
  356. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +0 -1
  357. package/dist/gateway/static/root/assets/mobile-pairing-wizard-3NKCniSp.js +0 -1
  358. package/dist/gateway/static/root/assets/models-hub-cache-nCfkBN8M.js +0 -1
  359. package/dist/gateway/static/root/assets/notes-page-DuqLahi6.js +0 -1
  360. package/dist/gateway/static/root/assets/notes-workbench-C7j9EdQk.js +0 -5
  361. package/dist/gateway/static/root/assets/oauth-api-8lP_qJpq.js +0 -1
  362. package/dist/gateway/static/root/assets/oauth-authorization-window-Cdolr2wE.js +0 -1
  363. package/dist/gateway/static/root/assets/page-tabs-BaEQMYm_.js +0 -1
  364. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +0 -1
  365. package/dist/gateway/static/root/assets/preview-open-alternatives-CsNVTKC0.js +0 -1
  366. package/dist/gateway/static/root/assets/project-detail-page-CfebYVX0.js +0 -1
  367. package/dist/gateway/static/root/assets/projects-page-48GvzSVa.js +0 -1
  368. package/dist/gateway/static/root/assets/remote-access-hub-64xj_s2m.js +0 -1
  369. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +0 -1
  370. package/dist/gateway/static/root/assets/search-DA7gz22f.js +0 -1
  371. package/dist/gateway/static/root/assets/sessions-page-CcwcdRN8.js +0 -1
  372. package/dist/gateway/static/root/assets/settings-advanced-gate-BaN84CyW.js +0 -1
  373. package/dist/gateway/static/root/assets/settings-form-section-DjWzRk4z.js +0 -1
  374. package/dist/gateway/static/root/assets/setup-status-panel-DVVOCNbr.js +0 -1
  375. package/dist/gateway/static/root/assets/shares-settings-DUYbYLi7.js +0 -1
  376. package/dist/gateway/static/root/assets/skill-reload-api-BGyD0gB9.js +0 -1
  377. package/dist/gateway/static/root/assets/skills-page-CjF8DTsN.js +0 -2
  378. package/dist/gateway/static/root/assets/system-settings-panel-BSYuRgFI.js +0 -1
  379. package/dist/gateway/static/root/assets/task-detail-page-YZYSTJH7.js +0 -1
  380. package/dist/gateway/static/root/assets/tunnel-api-FKUi9wDL.js +0 -1
  381. package/dist/gateway/static/root/assets/user-context-page-BCyiduKd.js +0 -2
  382. package/dist/gateway/static/root/assets/work-discovery-overlay-jhT2EzeH.js +0 -1
  383. package/dist/gateway/static/root/assets/workflows-page-DQC0TpMa.js +0 -5
  384. package/dist/src/agent/memory/builtin-provider.d.ts +0 -37
  385. package/dist/src/agent/memory/builtin-provider.js +0 -225
  386. package/dist/src/agent/memory/context/types.d.ts +0 -40
  387. package/dist/src/agent/memory/understanding/quality.d.ts +0 -8
  388. package/dist/src/agent/memory/understanding/quality.js +0 -18
  389. package/dist/src/agent/memory/understanding/service.d.ts +0 -19
  390. package/dist/src/agent/memory/understanding/service.js +0 -209
  391. package/dist/src/agent/memory/understanding/types.d.ts +0 -34
  392. package/dist/src/agent/memory/understanding/types.js +0 -1
  393. package/dist/src/agent/memory/user-context-coordinator.d.ts +0 -23
  394. package/dist/src/agent/memory/user-context-coordinator.js +0 -113
  395. package/dist/src/agent/tools/dreaming-tool.js +0 -37
  396. package/dist/src/agent/tools/memory-tool.d.ts +0 -9
  397. package/dist/src/agent/tools/memory-tool.js +0 -119
  398. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +0 -11
  399. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -63
  400. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +0 -21
  401. package/dist/src/gateway/hono/routes/understanding-sources.js +0 -387
  402. package/dist/src/gateway/hono/routes/you.d.ts +0 -3
  403. package/dist/src/gateway/hono/routes/you.js +0 -457
  404. package/dist/src/projects/memory-bind.d.ts +0 -1
  405. package/dist/src/projects/memory-bind.js +0 -14
  406. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +0 -37
  407. package/dist/src/storage/sqlite/context-consolidation-repository.js +0 -64
  408. package/dist/src/storage/sqlite/memory-records-repository.d.ts +0 -217
  409. package/dist/src/storage/sqlite/memory-records-repository.js +0 -715
  410. package/dist/src/storage/sqlite/remote-context-repository.d.ts +0 -3
  411. package/dist/src/storage/sqlite/remote-context-repository.js +0 -40
  412. package/dist/src/storage/sqlite/understanding-focus-exclusions.d.ts +0 -2
  413. package/dist/src/storage/sqlite/understanding-focus-exclusions.js +0 -24
  414. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +0 -49
  415. package/dist/src/storage/sqlite/user-context-quality-repository.js +0 -118
  416. package/dist/src/storage/sqlite/user-context-repository.d.ts +0 -85
  417. package/dist/src/storage/sqlite/user-context-repository.js +0 -535
  418. package/dist/src/user-context/automatic-context.d.ts +0 -17
  419. package/dist/src/user-context/automatic-context.js +0 -85
  420. package/dist/src/user-context/consolidation.d.ts +0 -27
  421. package/dist/src/user-context/consolidation.js +0 -187
  422. package/dist/src/user-context/context-objects.d.ts +0 -17
  423. package/dist/src/user-context/context-objects.js +0 -99
  424. package/dist/src/user-context/evaluation/harness.d.ts +0 -13
  425. package/dist/src/user-context/evaluation/harness.js +0 -31
  426. package/dist/src/user-context/extraction/executor.d.ts +0 -22
  427. package/dist/src/user-context/extraction/executor.js +0 -142
  428. package/dist/src/user-context/extraction/repair.d.ts +0 -19
  429. package/dist/src/user-context/extraction/repair.js +0 -71
  430. package/dist/src/user-context/extraction/semantic.d.ts +0 -18
  431. package/dist/src/user-context/extraction/semantic.js +0 -148
  432. package/dist/src/user-context/focus-lifecycle.d.ts +0 -2
  433. package/dist/src/user-context/focus-lifecycle.js +0 -26
  434. package/dist/src/user-context/manual-understanding.d.ts +0 -12
  435. package/dist/src/user-context/manual-understanding.js +0 -37
  436. package/dist/src/user-context/planner.d.ts +0 -17
  437. package/dist/src/user-context/planner.js +0 -465
  438. package/dist/src/user-context/relationships/indexer.d.ts +0 -13
  439. package/dist/src/user-context/relationships/indexer.js +0 -185
  440. package/dist/src/user-context/relationships/service.d.ts +0 -22
  441. package/dist/src/user-context/relationships/service.js +0 -50
  442. package/dist/src/user-context/retriever.d.ts +0 -15
  443. package/dist/src/user-context/retriever.js +0 -124
  444. package/dist/src/user-context/scope.d.ts +0 -7
  445. package/dist/src/user-context/scope.js +0 -9
  446. package/dist/src/user-context/selection-policy.d.ts +0 -20
  447. package/dist/src/user-context/selection-policy.js +0 -33
  448. package/dist/src/user-context/understanding.d.ts +0 -15
  449. package/dist/src/user-context/understanding.js +0 -24
  450. package/dist/src/user-context/understandingQuality.d.ts +0 -5
  451. package/dist/src/user-context/understandingQuality.js +0 -48
  452. /package/dist/src/{agent/memory/context/types.js → knowledge-memory/domain.js} +0 -0
@@ -1,40 +1,29 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, listKnowledgeSourceItems, pruneBoundedKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
4
- import { deleteMemoryRecord, getMemoryRecord, upsertMemoryRecord } from "../storage/sqlite/memory-records-repository.js";
3
+ import { claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, listKnowledgeSourceItems, pruneBoundedKnowledgeSourceItems } from "../storage/sqlite/knowledge-repository.js";
5
4
  import "../storage/sqlite/index.js";
6
- import { createHash, randomUUID } from "node:crypto";
5
+ import { listKnowledgeItems, setKnowledgeStatus, writeKnowledgeItem } from "../knowledge-memory/repository.js";
6
+ import "../knowledge-memory/index.js";
7
+ import { randomUUID } from "node:crypto";
7
8
  //#region src/knowledge/connected-knowledge-pipeline.ts
8
9
  init_logger();
9
10
  const log = createLogger("ConnectedKnowledge");
10
11
  const MAX_ITEM_CHARS = 8e3;
11
- const MAX_SUMMARY_CHARS = 6e3;
12
- const MAX_SUMMARY_ITEMS = 24;
13
12
  function providerId(item) {
14
13
  const connectorId = item.metadata.connectorId;
15
- if (typeof connectorId === "string" && connectorId.trim()) return connectorId.trim();
16
- return item.sourceInstanceId.split(":")[0] || "connected-source";
14
+ return typeof connectorId === "string" && connectorId.trim() ? connectorId.trim() : item.sourceInstanceId.split(":")[0] || "connected-source";
17
15
  }
18
16
  function ownerAgentId(item, fallback) {
19
- const agentId = item.metadata.agentId;
20
- return typeof agentId === "string" && agentId.trim() ? agentId.trim() : fallback;
17
+ const value = item.metadata.agentId;
18
+ return typeof value === "string" && value.trim() ? value.trim() : fallback;
21
19
  }
22
20
  function ownerWorkspaceId(item, fallback) {
23
- const workspaceId = item.metadata.workspaceId;
24
- return typeof workspaceId === "string" && workspaceId.trim() ? workspaceId.trim() : fallback;
25
- }
26
- function knowledgeRecordId(itemId) {
27
- return `knowledge:${itemId}`;
21
+ const value = item.metadata.workspaceId;
22
+ return typeof value === "string" && value.trim() ? value.trim() : fallback;
28
23
  }
29
24
  function boundedText(item) {
30
- const text = item.normalizedText?.trim() ?? "";
31
- return text.length > MAX_ITEM_CHARS ? `${text.slice(0, MAX_ITEM_CHARS)}\n…` : text;
32
- }
33
- function dayFor(item) {
34
- return (item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt).slice(0, 10);
35
- }
36
- function summaryRecordId(sourceInstanceId, day) {
37
- return `knowledge-summary:${createHash("sha256").update(`${sourceInstanceId}:${day}`).digest("hex").slice(0, 24)}`;
25
+ const value = item.normalizedText?.trim() ?? "";
26
+ return value.length > MAX_ITEM_CHARS ? `${value.slice(0, MAX_ITEM_CHARS)}\n…` : value;
38
27
  }
39
28
  var ConnectedKnowledgePipeline = class {
40
29
  workerId;
@@ -58,51 +47,20 @@ var ConnectedKnowledgePipeline = class {
58
47
  failed: 0,
59
48
  recordIds: []
60
49
  };
61
- const summaryKeys = /* @__PURE__ */ new Set();
62
50
  for (const item of claimed) try {
63
- const recordId = knowledgeRecordId(item.id);
64
51
  const content = boundedText(item);
52
+ const existing = listKnowledgeItems({
53
+ recordClass: "source_index",
54
+ limit: 2e3
55
+ }).find((entry) => entry.canonicalKey === `source-item:${item.sourceInstanceId}:${item.externalId}`);
65
56
  if (item.deletedAt) {
66
- const existing = getMemoryRecord(recordId);
67
- if (existing) upsertMemoryRecord({
68
- id: existing.id,
69
- providerId: "connected-knowledge",
70
- kind: existing.kind,
71
- sourceAgentId: existing.provenance.sourceAgentId,
72
- workspaceId: existing.scope.workspaceId,
73
- content: existing.content,
74
- source: existing.source,
75
- confidence: existing.confidence,
76
- tags: existing.tags,
77
- status: "archived",
78
- sensitivity: existing.sensitivity,
79
- explicitness: existing.explicitness,
80
- durability: existing.durability,
81
- importance: existing.importance,
82
- disclosurePolicy: existing.disclosurePolicy,
83
- evidence: existing.evidence,
84
- validFrom: existing.validFrom,
85
- validTo: item.deletedAt,
86
- reviewAfter: existing.reviewAfter,
87
- expiresAt: existing.expiresAt,
88
- canonicalKey: existing.canonicalKey,
89
- supersedesRecordId: existing.supersedesRecordId,
90
- conflictGroupId: existing.conflictGroupId,
91
- originClass: existing.provenance.originClass,
92
- sessionKind: existing.provenance.sessionKind,
93
- observedAt: existing.provenance.observedAt,
94
- sourceSessionId: existing.provenance.sourceSessionId,
95
- sourceTurnId: existing.provenance.sourceTurnId,
96
- supersedesKey: existing.provenance.supersedesKey,
97
- derivedFromRecalledContext: existing.provenance.derivedFromRecalledContext
98
- });
57
+ if (existing) setKnowledgeStatus(existing.id, "archived");
99
58
  completeKnowledgeSourceItemSynthesis({
100
59
  itemId: item.id,
101
60
  workerId: this.workerId,
102
61
  status: "ignored"
103
62
  });
104
63
  result.ignored += 1;
105
- summaryKeys.add(`${item.sourceInstanceId}\u0000${dayFor(item)}`);
106
64
  continue;
107
65
  }
108
66
  if (!content || item.sensitivity === "secret" || item.sensitivity === "regulated") {
@@ -114,53 +72,28 @@ var ConnectedKnowledgePipeline = class {
114
72
  result.ignored += 1;
115
73
  continue;
116
74
  }
117
- const sourceProvider = providerId(item);
118
- const record = upsertMemoryRecord({
119
- id: recordId,
120
- providerId: "connected-knowledge",
75
+ const written = writeKnowledgeItem({
121
76
  kind: "workspace_fact",
122
- sourceAgentId: ownerAgentId(item, this.options.agentId),
123
- workspaceId: ownerWorkspaceId(item, this.options.workspaceId),
77
+ scope: {
78
+ type: "workspace",
79
+ id: ownerWorkspaceId(item, this.options.workspaceId)
80
+ },
124
81
  content,
125
82
  canonicalKey: `source-item:${item.sourceInstanceId}:${item.externalId}`,
126
- source: {
127
- provider: sourceProvider,
128
- sourceInstanceId: item.sourceInstanceId,
129
- path: item.payloadRef
130
- },
131
- confidence: .78,
132
- tags: [
133
- "connected-source",
134
- "external",
135
- sourceProvider,
136
- item.itemType
137
- ],
83
+ recordClass: "source_index",
138
84
  status: "active",
139
- sensitivity: item.sensitivity,
140
- explicitness: "observed",
141
- durability: item.retentionClass === "durable" ? "durable" : "recurring",
85
+ confidence: .78,
142
86
  importance: .5,
143
- disclosurePolicy: "referenceable",
144
- evidence: [{
145
- sourceItemId: item.id,
146
- relation: "derived_from",
147
- sourceText: content.slice(0, 1e3),
148
- confidence: .78,
149
- observedAt: item.occurredAt ?? item.sourceUpdatedAt
150
- }],
151
- validFrom: item.occurredAt ?? item.sourceUpdatedAt,
87
+ validFrom: Date.parse(item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt),
152
88
  originClass: "untrusted",
153
- sessionKind: "background",
154
- observedAt: item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt,
155
- derivedFromRecalledContext: false
156
- });
157
- attachMemoryEvidence({
158
- recordId: record.id,
159
- sourceItemId: item.id,
160
- relation: "derived_from",
161
- excerpt: content.slice(0, 1e3),
162
- confidence: .78,
163
- observedAt: item.occurredAt ?? item.sourceUpdatedAt
89
+ sourceAgentId: ownerAgentId(item, this.options.agentId),
90
+ source: {
91
+ provider: providerId(item),
92
+ sourceInstanceId: item.sourceInstanceId,
93
+ sourceItemId: item.id,
94
+ payloadRef: item.payloadRef
95
+ },
96
+ replaceExisting: true
164
97
  });
165
98
  completeKnowledgeSourceItemSynthesis({
166
99
  itemId: item.id,
@@ -168,30 +101,24 @@ var ConnectedKnowledgePipeline = class {
168
101
  status: "completed"
169
102
  });
170
103
  result.completed += 1;
171
- result.recordIds.push(record.id);
172
- summaryKeys.add(`${item.sourceInstanceId}\u0000${dayFor(item)}`);
173
- } catch (err) {
174
- const errorMessage = err instanceof Error ? err.message : String(err);
104
+ result.recordIds.push(written.item.id);
105
+ } catch (error) {
106
+ const message = error instanceof Error ? error.message : String(error);
175
107
  completeKnowledgeSourceItemSynthesis({
176
108
  itemId: item.id,
177
109
  workerId: this.workerId,
178
110
  status: "failed",
179
- error: errorMessage.slice(0, 1e3)
111
+ error: message.slice(0, 1e3)
180
112
  });
181
113
  result.failed += 1;
182
114
  log.warn({
183
- err,
115
+ err: error,
184
116
  itemId: item.id,
185
117
  sourceInstanceId: item.sourceInstanceId
186
- }, `Connected knowledge synthesis failed: ${errorMessage}`);
187
- }
188
- for (const key of summaryKeys) {
189
- const [sourceInstanceId, day] = key.split("\0");
190
- if (sourceInstanceId && day) this.rebuildDailySummary(sourceInstanceId, day);
118
+ }, `Connected knowledge synthesis failed: ${message}`);
191
119
  }
192
120
  return result;
193
121
  }
194
- /** Remove bounded raw items and every content-bearing memory derived only from them. */
195
122
  pruneBoundedRetention(sourceInstanceId, olderThanMs) {
196
123
  const expired = [];
197
124
  for (let offset = 0;; offset += 500) {
@@ -206,117 +133,19 @@ var ConnectedKnowledgePipeline = class {
206
133
  expired.push(...page);
207
134
  if (page.length < 500) break;
208
135
  }
209
- if (!expired.length) return {
210
- rawDeleted: 0,
211
- derivedDeleted: 0
212
- };
213
- const affectedDays = new Set(expired.map(dayFor));
214
136
  let derivedDeleted = 0;
215
- for (const item of expired) if (deleteMemoryRecord(knowledgeRecordId(item.id))) derivedDeleted += 1;
216
- const rawDeleted = pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs);
217
- for (const day of affectedDays) if (this.rebuildDailySummary(sourceInstanceId, day, true)) derivedDeleted += 1;
137
+ const expiredIds = new Set(expired.map((item) => item.id));
138
+ for (const item of listKnowledgeItems({
139
+ recordClass: "source_index",
140
+ limit: 2e3
141
+ })) if (typeof item.source.sourceItemId === "string" && expiredIds.has(item.source.sourceItemId)) {
142
+ if (setKnowledgeStatus(item.id, "archived")) derivedDeleted += 1;
143
+ }
218
144
  return {
219
- rawDeleted,
145
+ rawDeleted: pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs),
220
146
  derivedDeleted
221
147
  };
222
148
  }
223
- rebuildDailySummary(sourceInstanceId, day, deleteWhenEmpty = false) {
224
- const items = listKnowledgeSourceItems({
225
- sourceInstanceId,
226
- limit: 500
227
- }).filter((item) => dayFor(item) === day && item.synthesisStatus === "completed").slice(0, MAX_SUMMARY_ITEMS);
228
- if (items.length === 0) {
229
- const existing = getMemoryRecord(summaryRecordId(sourceInstanceId, day));
230
- if (existing && deleteWhenEmpty) return deleteMemoryRecord(existing.id);
231
- if (existing) upsertMemoryRecord({
232
- id: existing.id,
233
- providerId: "connected-knowledge",
234
- kind: existing.kind,
235
- sourceAgentId: existing.provenance.sourceAgentId,
236
- workspaceId: existing.scope.workspaceId,
237
- content: existing.content,
238
- source: existing.source,
239
- confidence: existing.confidence,
240
- tags: existing.tags,
241
- status: "archived",
242
- sensitivity: existing.sensitivity,
243
- explicitness: existing.explicitness,
244
- durability: existing.durability,
245
- importance: existing.importance,
246
- disclosurePolicy: existing.disclosurePolicy,
247
- evidence: existing.evidence,
248
- validFrom: existing.validFrom,
249
- validTo: (/* @__PURE__ */ new Date()).toISOString(),
250
- reviewAfter: existing.reviewAfter,
251
- expiresAt: existing.expiresAt,
252
- canonicalKey: existing.canonicalKey,
253
- originClass: existing.provenance.originClass,
254
- sessionKind: existing.provenance.sessionKind,
255
- observedAt: existing.provenance.observedAt,
256
- sourceSessionId: existing.provenance.sourceSessionId,
257
- sourceTurnId: existing.provenance.sourceTurnId,
258
- supersedesKey: existing.provenance.supersedesKey,
259
- derivedFromRecalledContext: existing.provenance.derivedFromRecalledContext
260
- });
261
- return false;
262
- }
263
- const sourceProvider = providerId(items[0]);
264
- const lines = [`# ${sourceProvider} updates for ${day}`, ""];
265
- for (const item of items) {
266
- const text = boundedText(item).replace(/\s+/g, " ").trim();
267
- if (!text) continue;
268
- lines.push(`- ${text.slice(0, 360)}`);
269
- if (lines.join("\n").length >= MAX_SUMMARY_CHARS) break;
270
- }
271
- const content = lines.join("\n").slice(0, MAX_SUMMARY_CHARS);
272
- const summary = upsertMemoryRecord({
273
- id: summaryRecordId(sourceInstanceId, day),
274
- providerId: "connected-knowledge",
275
- kind: "daily_note",
276
- sourceAgentId: ownerAgentId(items[0], this.options.agentId),
277
- workspaceId: ownerWorkspaceId(items[0], this.options.workspaceId),
278
- content,
279
- canonicalKey: `source-day:${sourceInstanceId}:${day}`,
280
- source: {
281
- provider: sourceProvider,
282
- sourceInstanceId
283
- },
284
- confidence: .72,
285
- tags: [
286
- "connected-source",
287
- "source-day-summary",
288
- sourceProvider
289
- ],
290
- status: "active",
291
- sensitivity: items.some((item) => item.sensitivity === "personal") ? "personal" : "normal",
292
- explicitness: "observed",
293
- durability: "recurring",
294
- importance: .55,
295
- disclosurePolicy: "referenceable",
296
- evidence: items.map((item) => ({
297
- sourceItemId: item.id,
298
- relation: "derived_from",
299
- sourceText: boundedText(item).slice(0, 500),
300
- confidence: .72,
301
- observedAt: item.occurredAt ?? item.sourceUpdatedAt
302
- })),
303
- validFrom: `${day}T00:00:00.000Z`,
304
- originClass: "untrusted",
305
- sessionKind: "background",
306
- observedAt: items.map((item) => item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt).sort().at(-1),
307
- derivedFromRecalledContext: false
308
- });
309
- deleteMemoryEvidenceForRecord(summary.id, "derived_from");
310
- for (const item of items) attachMemoryEvidence({
311
- recordId: summary.id,
312
- sourceItemId: item.id,
313
- relation: "derived_from",
314
- excerpt: boundedText(item).slice(0, 500),
315
- confidence: .72,
316
- observedAt: item.occurredAt ?? item.sourceUpdatedAt
317
- });
318
- return false;
319
- }
320
149
  };
321
150
  //#endregion
322
151
  export { ConnectedKnowledgePipeline };
@@ -0,0 +1,35 @@
1
+ import type { UserModelScope } from '../user-model/domain.js';
2
+ export type KnowledgeKind = 'project_fact' | 'workspace_fact' | 'decision' | 'task_lesson' | 'commitment' | 'open_question' | 'episode' | 'note';
3
+ export type KnowledgeStatus = 'candidate' | 'active' | 'needs_review' | 'stale' | 'archived' | 'rejected';
4
+ export type KnowledgeOriginClass = 'owner' | 'agent' | 'system' | 'untrusted';
5
+ export type KnowledgeRecordClass = 'memory' | 'source_index';
6
+ export interface KnowledgeItem {
7
+ id: string;
8
+ principalId: string;
9
+ kind: KnowledgeKind;
10
+ scope: UserModelScope;
11
+ content: string;
12
+ canonicalKey: string;
13
+ recordClass: KnowledgeRecordClass;
14
+ status: KnowledgeStatus;
15
+ confidence: number;
16
+ importance: number;
17
+ validFrom?: number;
18
+ validTo?: number;
19
+ expiresAt?: number;
20
+ reviewAt?: number;
21
+ originClass: KnowledgeOriginClass;
22
+ sourceAgentId?: string;
23
+ sourceSessionId?: string;
24
+ sourceTurnId?: string;
25
+ derivedFromRecalledContext: boolean;
26
+ source: Record<string, unknown>;
27
+ createdAt: number;
28
+ updatedAt: number;
29
+ }
30
+ export interface KnowledgeVisibilityContext {
31
+ agentId: string;
32
+ workspaceId: string;
33
+ projectId?: string;
34
+ sessionId: string;
35
+ }
@@ -0,0 +1,2 @@
1
+ export * from './domain.js';
2
+ export * from './repository.js';
@@ -0,0 +1,2 @@
1
+ import { getKnowledgeItem, listKnowledgeItems, searchKnowledgeItems, setKnowledgeStatus, writeKnowledgeItem } from "./repository.js";
2
+ export { getKnowledgeItem, listKnowledgeItems, searchKnowledgeItems, setKnowledgeStatus, writeKnowledgeItem };
@@ -0,0 +1,45 @@
1
+ import { type UserModelScope } from '../user-model/domain.js';
2
+ import type { KnowledgeItem, KnowledgeKind, KnowledgeOriginClass, KnowledgeRecordClass, KnowledgeStatus, KnowledgeVisibilityContext } from './domain.js';
3
+ export interface WriteKnowledgeInput {
4
+ principalId?: string;
5
+ kind: KnowledgeKind;
6
+ scope: UserModelScope;
7
+ content: string;
8
+ canonicalKey: string;
9
+ recordClass?: KnowledgeRecordClass;
10
+ status?: KnowledgeStatus;
11
+ confidence: number;
12
+ importance: number;
13
+ validFrom?: number;
14
+ validTo?: number;
15
+ expiresAt?: number;
16
+ reviewAt?: number;
17
+ originClass: KnowledgeOriginClass;
18
+ sourceAgentId?: string;
19
+ sourceSessionId?: string;
20
+ sourceTurnId?: string;
21
+ derivedFromRecalledContext?: boolean;
22
+ source?: Record<string, unknown>;
23
+ replaceExisting?: boolean;
24
+ now?: number;
25
+ }
26
+ export declare function writeKnowledgeItem(input: WriteKnowledgeInput): {
27
+ item: KnowledgeItem;
28
+ created: boolean;
29
+ };
30
+ export declare function getKnowledgeItem(id: string): KnowledgeItem | undefined;
31
+ export declare function listKnowledgeItems(input?: {
32
+ principalId?: string;
33
+ statuses?: KnowledgeStatus[];
34
+ recordClass?: KnowledgeRecordClass;
35
+ limit?: number;
36
+ }): KnowledgeItem[];
37
+ export declare function setKnowledgeStatus(id: string, status: KnowledgeStatus, now?: number): KnowledgeItem | undefined;
38
+ export declare function searchKnowledgeItems(input: {
39
+ query: string;
40
+ context: KnowledgeVisibilityContext;
41
+ principalId?: string;
42
+ asOf?: number;
43
+ recordClass?: KnowledgeRecordClass;
44
+ limit?: number;
45
+ }): KnowledgeItem[];
@@ -0,0 +1,154 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
2
+ import { validateScope } from "../user-model/domain.js";
3
+ import { buildFts5SearchQuery } from "../storage/sqlite/fts.js";
4
+ import { randomUUID } from "node:crypto";
5
+ //#region src/knowledge-memory/repository.ts
6
+ function fromRow(row) {
7
+ return {
8
+ id: row.knowledge_id,
9
+ principalId: row.principal_id,
10
+ kind: row.kind,
11
+ scope: {
12
+ type: row.scope_type,
13
+ ...row.scope_id ? { id: row.scope_id } : {}
14
+ },
15
+ content: row.content,
16
+ canonicalKey: row.canonical_key,
17
+ recordClass: row.record_class,
18
+ status: row.status,
19
+ confidence: row.confidence,
20
+ importance: row.importance,
21
+ ...row.valid_from === null ? {} : { validFrom: row.valid_from },
22
+ ...row.valid_to === null ? {} : { validTo: row.valid_to },
23
+ ...row.expires_at === null ? {} : { expiresAt: row.expires_at },
24
+ ...row.review_at === null ? {} : { reviewAt: row.review_at },
25
+ originClass: row.origin_class,
26
+ ...row.source_agent_id ? { sourceAgentId: row.source_agent_id } : {},
27
+ ...row.source_session_id ? { sourceSessionId: row.source_session_id } : {},
28
+ ...row.source_turn_id ? { sourceTurnId: row.source_turn_id } : {},
29
+ derivedFromRecalledContext: row.derived_from_recalled_context === 1,
30
+ source: JSON.parse(row.source_json),
31
+ createdAt: row.created_at,
32
+ updatedAt: row.updated_at
33
+ };
34
+ }
35
+ function bounded(value, field) {
36
+ if (!Number.isFinite(value) || value < 0 || value > 1) throw new Error(`${field} must be between 0 and 1.`);
37
+ }
38
+ function writeKnowledgeItem(input) {
39
+ validateScope(input.scope);
40
+ bounded(input.confidence, "confidence");
41
+ bounded(input.importance, "importance");
42
+ if (!input.content.trim()) throw new Error("Knowledge content is required.");
43
+ if (!input.canonicalKey.trim()) throw new Error("Knowledge canonical key is required.");
44
+ if (input.validFrom !== void 0 && input.validTo !== void 0 && input.validTo < input.validFrom) throw new Error("Knowledge validTo must be greater than or equal to validFrom.");
45
+ const principalId = input.principalId ?? "local-owner";
46
+ const now = input.now ?? Date.now();
47
+ return runSqliteWriteTransaction((db) => {
48
+ const existingStatuses = input.replaceExisting ? [
49
+ "candidate",
50
+ "active",
51
+ "needs_review",
52
+ "stale",
53
+ "archived"
54
+ ] : [
55
+ "candidate",
56
+ "active",
57
+ "needs_review",
58
+ "stale"
59
+ ];
60
+ const existing = db.prepare(`SELECT * FROM knowledge_items WHERE principal_id = ?
61
+ AND canonical_key = ? AND scope_type = ? AND COALESCE(scope_id, '') = COALESCE(?, '')
62
+ AND status IN (${existingStatuses.map(() => "?").join(", ")})`).get(principalId, input.canonicalKey.trim(), input.scope.type, input.scope.id ?? null, ...existingStatuses);
63
+ if (existing && !input.replaceExisting) return {
64
+ item: fromRow(existing),
65
+ created: false
66
+ };
67
+ if (existing) {
68
+ db.prepare(`UPDATE knowledge_items SET kind = ?, content = ?, record_class = ?, status = ?, confidence = ?,
69
+ importance = ?, valid_from = ?, valid_to = ?, expires_at = ?, review_at = ?,
70
+ origin_class = ?, source_agent_id = ?, source_session_id = ?, source_turn_id = ?,
71
+ derived_from_recalled_context = ?, source_json = ?, updated_at = ? WHERE knowledge_id = ?`).run(input.kind, input.content.trim(), input.recordClass ?? "memory", input.status ?? (input.originClass === "owner" ? "active" : "candidate"), input.confidence, input.importance, input.validFrom ?? null, input.validTo ?? null, input.expiresAt ?? null, input.reviewAt ?? null, input.originClass, input.sourceAgentId ?? null, input.sourceSessionId ?? null, input.sourceTurnId ?? null, input.derivedFromRecalledContext ? 1 : 0, JSON.stringify(input.source ?? {}), now, existing.knowledge_id);
72
+ db.prepare("DELETE FROM knowledge_items_fts WHERE knowledge_id = ?").run(existing.knowledge_id);
73
+ db.prepare("INSERT INTO knowledge_items_fts(content, knowledge_id) VALUES (?, ?)").run(input.content.trim(), existing.knowledge_id);
74
+ return {
75
+ item: fromRow(db.prepare("SELECT * FROM knowledge_items WHERE knowledge_id = ?").get(existing.knowledge_id)),
76
+ created: false
77
+ };
78
+ }
79
+ const id = randomUUID();
80
+ db.prepare(`INSERT INTO knowledge_items (
81
+ knowledge_id, principal_id, kind, scope_type, scope_id, content, canonical_key, record_class,
82
+ status, confidence, importance, valid_from, valid_to, expires_at, review_at,
83
+ origin_class, source_agent_id, source_session_id, source_turn_id,
84
+ derived_from_recalled_context, source_json, created_at, updated_at
85
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, principalId, input.kind, input.scope.type, input.scope.id ?? null, input.content.trim(), input.canonicalKey.trim(), input.recordClass ?? "memory", input.status ?? (input.originClass === "owner" ? "active" : "candidate"), input.confidence, input.importance, input.validFrom ?? null, input.validTo ?? null, input.expiresAt ?? null, input.reviewAt ?? null, input.originClass, input.sourceAgentId ?? null, input.sourceSessionId ?? null, input.sourceTurnId ?? null, input.derivedFromRecalledContext ? 1 : 0, JSON.stringify(input.source ?? {}), now, now);
86
+ db.prepare("INSERT INTO knowledge_items_fts(content, knowledge_id) VALUES (?, ?)").run(input.content.trim(), id);
87
+ return {
88
+ item: fromRow(db.prepare("SELECT * FROM knowledge_items WHERE knowledge_id = ?").get(id)),
89
+ created: true
90
+ };
91
+ });
92
+ }
93
+ function getKnowledgeItem(id) {
94
+ const row = getSqliteDatabase().prepare("SELECT * FROM knowledge_items WHERE knowledge_id = ?").get(id);
95
+ return row ? fromRow(row) : void 0;
96
+ }
97
+ function listKnowledgeItems(input = {}) {
98
+ const statuses = input.statuses ?? [
99
+ "active",
100
+ "candidate",
101
+ "needs_review",
102
+ "stale"
103
+ ];
104
+ if (!statuses.length) return [];
105
+ const placeholders = statuses.map(() => "?").join(", ");
106
+ return getSqliteDatabase().prepare(`SELECT * FROM knowledge_items
107
+ WHERE principal_id = ? AND status IN (${placeholders})
108
+ ${input.recordClass ? "AND record_class = ?" : ""}
109
+ ORDER BY importance DESC, updated_at DESC LIMIT ?`).all(input.principalId ?? "local-owner", ...statuses, ...input.recordClass ? [input.recordClass] : [], Math.max(1, Math.min(2e3, input.limit ?? 200))).map(fromRow);
110
+ }
111
+ function setKnowledgeStatus(id, status, now = Date.now()) {
112
+ return getSqliteDatabase().prepare(`UPDATE knowledge_items SET status = ?, updated_at = ?
113
+ WHERE knowledge_id = ?`).run(status, now, id).changes ? getKnowledgeItem(id) : void 0;
114
+ }
115
+ function visibilityClause(context) {
116
+ const parts = [
117
+ "k.scope_type = 'global'",
118
+ "(k.scope_type = 'agent' AND k.scope_id = ?)",
119
+ "(k.scope_type = 'workspace' AND k.scope_id = ?)",
120
+ "(k.scope_type = 'session' AND k.scope_id = ?)"
121
+ ];
122
+ const values = [
123
+ context.agentId ?? "",
124
+ context.workspaceId ?? "",
125
+ context.sessionId ?? ""
126
+ ];
127
+ if (context.projectId) {
128
+ parts.push("(k.scope_type = 'project' AND k.scope_id = ?)");
129
+ values.push(context.projectId);
130
+ }
131
+ return {
132
+ sql: `(${parts.join(" OR ")})`,
133
+ values
134
+ };
135
+ }
136
+ function searchKnowledgeItems(input) {
137
+ const principalId = input.principalId ?? "local-owner";
138
+ const asOf = input.asOf ?? Date.now();
139
+ const limit = Math.max(1, Math.min(100, input.limit ?? 12));
140
+ const visible = visibilityClause(input.context);
141
+ const fts = buildFts5SearchQuery(input.query);
142
+ if (!fts) return [];
143
+ return getSqliteDatabase().prepare(`SELECT k.*, bm25(knowledge_items_fts) AS rank
144
+ FROM knowledge_items_fts JOIN knowledge_items k ON k.knowledge_id = knowledge_items_fts.knowledge_id
145
+ WHERE knowledge_items_fts MATCH ? AND k.principal_id = ? AND k.status = 'active'
146
+ AND (k.valid_from IS NULL OR k.valid_from <= ?)
147
+ AND (k.valid_to IS NULL OR k.valid_to >= ?)
148
+ AND (k.expires_at IS NULL OR k.expires_at >= ?)
149
+ ${input.recordClass ? "AND k.record_class = ?" : ""}
150
+ AND ${visible.sql}
151
+ ORDER BY rank ASC, k.importance DESC, k.updated_at DESC LIMIT ?`).all(fts, principalId, asOf, asOf, asOf, ...input.recordClass ? [input.recordClass] : [], ...visible.values, limit).map(fromRow);
152
+ }
153
+ //#endregion
154
+ export { getKnowledgeItem, listKnowledgeItems, searchKnowledgeItems, setKnowledgeStatus, writeKnowledgeItem };
@@ -0,0 +1,2 @@
1
+ export * from './schedule.js';
2
+ export * from './service.js';
@@ -0,0 +1,3 @@
1
+ import { MEMORY_MAINTENANCE_TOKEN, maintenanceInstruction, parseMaintenanceInstruction, resolveMemoryMaintenanceSchedules } from "./schedule.js";
2
+ import { listMemoryMaintenanceRuns, runMemoryMaintenance } from "./service.js";
3
+ export { MEMORY_MAINTENANCE_TOKEN, listMemoryMaintenanceRuns, maintenanceInstruction, parseMaintenanceInstruction, resolveMemoryMaintenanceSchedules, runMemoryMaintenance };
@@ -0,0 +1,13 @@
1
+ import type { Config } from '../config/schema.js';
2
+ import type { MemoryMaintenanceJob } from './service.js';
3
+ export declare const MEMORY_MAINTENANCE_TOKEN = "__xopc_memory_maintenance__";
4
+ export interface MemoryMaintenanceSchedule {
5
+ jobType: Exclude<MemoryMaintenanceJob, 'manual_repair'>;
6
+ automationId: string;
7
+ name: string;
8
+ cron: string;
9
+ timezone: string;
10
+ }
11
+ export declare function resolveMemoryMaintenanceSchedules(config: Config): MemoryMaintenanceSchedule[];
12
+ export declare function maintenanceInstruction(jobType: MemoryMaintenanceSchedule['jobType']): string;
13
+ export declare function parseMaintenanceInstruction(value: string): MemoryMaintenanceSchedule['jobType'] | undefined;
@@ -0,0 +1,51 @@
1
+ //#region src/memory-maintenance/schedule.ts
2
+ const MEMORY_MAINTENANCE_TOKEN = "__xopc_memory_maintenance__";
3
+ const WEEKDAY = {
4
+ sun: 0,
5
+ mon: 1,
6
+ tue: 2,
7
+ wed: 3,
8
+ thu: 4,
9
+ fri: 5,
10
+ sat: 6
11
+ };
12
+ function cronAt(time, weekday) {
13
+ const [hour, minute] = time.split(":").map(Number);
14
+ return `${minute} ${hour} * * ${weekday ?? "*"}`;
15
+ }
16
+ function resolveMemoryMaintenanceSchedules(config) {
17
+ const maintenance = config.userContext.userModel.maintenance;
18
+ if (!config.userContext.enabled || !config.userContext.userModel.enabled || !maintenance.enabled) return [];
19
+ const timezone = maintenance.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone ?? "UTC";
20
+ return [
21
+ {
22
+ jobType: "temporal_sweep",
23
+ automationId: "system-memory-temporal-sweep",
24
+ name: "Memory temporal sweep",
25
+ cron: `*/${maintenance.temporalSweepMinutes} * * * *`,
26
+ timezone
27
+ },
28
+ {
29
+ jobType: "daily_reconciliation",
30
+ automationId: "system-memory-daily-reconciliation",
31
+ name: "Memory daily reconciliation",
32
+ cron: cronAt(maintenance.dailyTime),
33
+ timezone
34
+ },
35
+ {
36
+ jobType: "weekly_knowledge",
37
+ automationId: "system-memory-weekly-knowledge",
38
+ name: "Memory weekly knowledge maintenance",
39
+ cron: cronAt(maintenance.weeklyTime, WEEKDAY[maintenance.weeklyDay]),
40
+ timezone
41
+ }
42
+ ];
43
+ }
44
+ function maintenanceInstruction(jobType) {
45
+ return `${MEMORY_MAINTENANCE_TOKEN}:${jobType}`;
46
+ }
47
+ function parseMaintenanceInstruction(value) {
48
+ return new RegExp(`${MEMORY_MAINTENANCE_TOKEN}:(temporal_sweep|daily_reconciliation|weekly_knowledge)`).exec(value)?.[1];
49
+ }
50
+ //#endregion
51
+ export { MEMORY_MAINTENANCE_TOKEN, maintenanceInstruction, parseMaintenanceInstruction, resolveMemoryMaintenanceSchedules };