@xopcai/xopc 0.0.189 → 0.0.191

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 (376) hide show
  1. package/README.md +0 -3
  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-DTFKTPs8.js → activity-store-DstnJCS5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DqO25Qe5.js → agent-avatar-dicebear-DvEkT222.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-CXyivfqY.js +68 -0
  8. package/dist/gateway/static/root/assets/{api-DWeXfwVU.js → api-BTL9kayv.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BRpV8PXG.js → app-management-settings-panel-COpP_pKN.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-3ntKM9nQ.js → appearance-settings-DTVNUEDq.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-DsE67BSO.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Df7Ycj_7.js → archive-plugin-IpX6VA0o.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-UHgfZYtj.js → attachment-load-CKVFNUi1.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-D0TVev47.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-BJah99wE.js → binary-plugins-BrfvfOS4.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-DNlY5KqF.js → block-editor-D9sEfg32.js} +48 -48
  17. package/dist/gateway/static/root/assets/browser-settings-page-DpZzq8j2.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-vyUfdzAd.js → browser-workflow-inputs-BixZ5lCR.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-C1cKZjx-.js → browser-workflows-page-YEFuodJI.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-B9Cmcuff.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-C_EpuQtk.js +1 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-BGG2kpJB.js → channel-recipient-api-BThDGiO3.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-CvzD5qSv.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-BMMqC0_9.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-BKrm7tJ9.js +2 -0
  28. package/dist/gateway/static/root/assets/cron-expression-Bm8koRoD.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-BUuBEJuP.js → desktop-pet-CMG3mcaJ.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-BGfVIJM3.js → desktop-pet-settings-D8aaPb0x.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-DrQFfHH_.js → directory-picker-path-field-C95yW03b.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-CEnIFOX-.js → extension-debug-page-DsG7Z9lV.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-CCqHbexs.js → extension-page-CUAXEbAt.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-CsR7QOJo.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CgUE2Ii1.js → gateway-config-api-DL70Nakc.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-BgDxQ08c.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-DxhKNiCF.js → gateway-startup-retry-EO9mKvzE.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-BX7q55uZ.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-C08Nen5T.js +3 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-DCFdc-HD.js → image-generation-api-Bu7PyVSh.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-B-_CEvIX.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-Bf2VLtXW.js → keyboard-shortcuts-settings-Dt6wS5zW.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-BQVC0tWq.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-Ca1RuI13.js → local-apps-page-DcD3-N00.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-D6yvW-E4.js +2 -0
  48. package/dist/gateway/static/root/assets/{management-settings-B3Eop1zn.js → management-settings-B6EVkJQy.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-split-BGOYjgnM.js → markdown-split-CHUjCnBh.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-CT0txyM4.js → media-plugins-DRrtI2O0.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +3 -0
  52. package/dist/gateway/static/root/assets/{notes-page-DfKgAe78.js → notes-page-fermYvpI.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-BVCwabjq.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs-DNrbCgmC.js → page-tabs-BO262zuu.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-BTqViDOR.js → preview-open-alternatives-yZYTy-2e.js} +1 -1
  56. package/dist/gateway/static/root/assets/{product-open-page-C_2L4_Iu.js → product-open-page-Dgy8XWhR.js} +1 -1
  57. package/dist/gateway/static/root/assets/project-detail-page-CS4Ujor7.js +1 -0
  58. package/dist/gateway/static/root/assets/projects-page-DMtPC8c4.js +1 -0
  59. package/dist/gateway/static/root/assets/remote-access-hub-BpfHZT88.js +1 -0
  60. package/dist/gateway/static/root/assets/{schema-form-BFLfkDGG.js → schema-form-DdE4gtw_.js} +1 -1
  61. package/dist/gateway/static/root/assets/sessions-page-BZkyrJBM.js +1 -0
  62. package/dist/gateway/static/root/assets/settings-advanced-gate-DQlK0A4l.js +1 -0
  63. package/dist/gateway/static/root/assets/settings-form-section-CiYU8AvV.js +1 -0
  64. package/dist/gateway/static/root/assets/{settings-loading-skeleton-C9a-EbTZ.js → settings-loading-skeleton-Bv03cWib.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-page-DI9qDH5x.js → settings-page-C-LdINFj.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-layout-D-LWQdI5.js → settings-page-layout-t_Ox1slk.js} +1 -1
  67. package/dist/gateway/static/root/assets/{setup-status-panel-CJwmPvgs.js → setup-status-panel-HRG_lK4_.js} +1 -1
  68. package/dist/gateway/static/root/assets/{share-preview-page-BKSMG9r5.js → share-preview-page-DF8gW6bo.js} +1 -1
  69. package/dist/gateway/static/root/assets/shares-settings-v_iLhxxa.js +1 -0
  70. package/dist/gateway/static/root/assets/skill-reload-api-S-bjtsXX.js +1 -0
  71. package/dist/gateway/static/root/assets/skills-page-BiNBfaX5.js +2 -0
  72. package/dist/gateway/static/root/assets/{skills-page.utils-zsz2HIlZ.js → skills-page.utils-DlnGtvAH.js} +1 -1
  73. package/dist/gateway/static/root/assets/{system-settings-panel-IWNDBI1O.js → system-settings-panel-Bv7GXFc6.js} +1 -1
  74. package/dist/gateway/static/root/assets/{task-detail-page-CgtK02kP.js → task-detail-page-BhQcOpnx.js} +1 -1
  75. package/dist/gateway/static/root/assets/{theme-store-BkJe7UDo.js → theme-store-DnBOcGXi.js} +1 -1
  76. package/dist/gateway/static/root/assets/{typed-models-lib-C07LGthO.js → typed-models-lib-4XBsLEuv.js} +1 -1
  77. package/dist/gateway/static/root/assets/use-autosave-BN2QgFGn.js +1 -0
  78. package/dist/gateway/static/root/assets/user-context-page-PtcY7BoJ.js +1 -0
  79. package/dist/gateway/static/root/assets/{voice-api-key-field-Boue1D46.js → voice-api-key-field-DnhJtC5l.js} +1 -1
  80. package/dist/gateway/static/root/assets/{work-discovery-overlay-bbmvCmc8.js → work-discovery-overlay-nmEAafFl.js} +1 -1
  81. package/dist/gateway/static/root/assets/work-discovery-page-C5Kwe_bc.js +1 -0
  82. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DlHv-GZC.js → workflow-run-setup-panel-BnNWBDwz.js} +2 -2
  83. package/dist/gateway/static/root/assets/workflows-page-Z_qzaohv.js +11 -0
  84. package/dist/gateway/static/root/index.html +7 -7
  85. package/dist/package.js +1 -1
  86. package/dist/packages/gateway-contract/src/tool-activity.js +0 -36
  87. package/dist/packages/realtime-client/src/index.js +105 -48
  88. package/dist/packages/realtime-protocol/src/index.js +6 -1
  89. package/dist/src/agent/agent-manager.d.ts +0 -1
  90. package/dist/src/agent/agent-manager.js +6 -13
  91. package/dist/src/agent/background-review/coordinator.js +1 -1
  92. package/dist/src/agent/background-review/run-background-review.js +5 -7
  93. package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +0 -1
  94. package/dist/src/agent/bootstrap/bootstrap-cache.js +3 -4
  95. package/dist/src/agent/bootstrap/bootstrap-files.d.ts +0 -4
  96. package/dist/src/agent/bootstrap/bootstrap-files.js +3 -4
  97. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -4
  98. package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +0 -1
  99. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -14
  100. package/dist/src/agent/bootstrap/types.d.ts +1 -1
  101. package/dist/src/agent/context/workspace-templates/SOUL.md +1 -1
  102. package/dist/src/agent/image/generation/openai-images-provider.d.ts +1 -1
  103. package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
  104. package/dist/src/agent/image/generation/provider-registry.d.ts +2 -0
  105. package/dist/src/agent/image/generation/provider-registry.js +20 -10
  106. package/dist/src/agent/image/generation/providers/xopc-cloud.d.ts +2 -0
  107. package/dist/src/agent/image/generation/providers/xopc-cloud.js +74 -0
  108. package/dist/src/agent/image/generation/types.d.ts +2 -2
  109. package/dist/src/agent/memory/builtin-provider.d.ts +2 -4
  110. package/dist/src/agent/memory/builtin-provider.js +35 -15
  111. package/dist/src/agent/memory/context/types.d.ts +3 -1
  112. package/dist/src/agent/memory/create-memory-manager.js +2 -0
  113. package/dist/src/agent/memory/index.d.ts +1 -1
  114. package/dist/src/agent/memory/index.js +1 -1
  115. package/dist/src/agent/memory/manager.d.ts +9 -1
  116. package/dist/src/agent/memory/manager.js +39 -9
  117. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  118. package/dist/src/agent/memory/memory-config.js +1 -1
  119. package/dist/src/agent/memory/source-origin.js +0 -2
  120. package/dist/src/agent/memory/types.d.ts +5 -1
  121. package/dist/src/agent/memory/understanding/service.d.ts +10 -10
  122. package/dist/src/agent/memory/understanding/service.js +108 -176
  123. package/dist/src/agent/memory/understanding/types.d.ts +7 -8
  124. package/dist/src/agent/memory/user-context-coordinator.d.ts +2 -1
  125. package/dist/src/agent/memory/user-context-coordinator.js +27 -41
  126. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -7
  127. package/dist/src/agent/prompt/sections/memory-skills.js +4 -4
  128. package/dist/src/agent/prompt/sections/tooling.js +0 -10
  129. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  130. package/dist/src/agent/prompt/service-prompt-builder.js +4 -33
  131. package/dist/src/agent/prompt/system-prompt.js +1 -2
  132. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  133. package/dist/src/agent/service.d.ts +1 -2
  134. package/dist/src/agent/service.js +4 -17
  135. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +1 -1
  136. package/dist/src/agent/tools/dreaming-tool.d.ts +0 -2
  137. package/dist/src/agent/tools/dreaming-tool.js +13 -38
  138. package/dist/src/agent/tools/factory.d.ts +0 -3
  139. package/dist/src/agent/tools/factory.js +1 -10
  140. package/dist/src/agent/tools/index.d.ts +0 -1
  141. package/dist/src/agent/tools/index.js +1 -2
  142. package/dist/src/agent/tools/memory-tool.js +1 -1
  143. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -5
  144. package/dist/src/agent/workspace-runtime/registry.js +2 -15
  145. package/dist/src/agent-manifest/schema.d.ts +17 -17
  146. package/dist/src/agent-runtime/index.js +1 -1
  147. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  148. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  149. package/dist/src/automations/domain/validation.d.ts +28 -28
  150. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  151. package/dist/src/chat-commands/builtins/understanding.js +2 -5
  152. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  153. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  154. package/dist/src/cli/commands/init.js +3 -22
  155. package/dist/src/cli/commands/onboard/model.d.ts +3 -0
  156. package/dist/src/cli/commands/onboard/model.js +19 -4
  157. package/dist/src/cli/commands/update.js +1 -1
  158. package/dist/src/cli/templates.js +1 -1
  159. package/dist/src/config/agent-profile.js +1 -1
  160. package/dist/src/config/index.js +3 -3
  161. package/dist/src/config/paths.d.ts +0 -5
  162. package/dist/src/config/paths.js +2 -11
  163. package/dist/src/config/schema.d.ts +24 -117
  164. package/dist/src/config/schema.js +9 -39
  165. package/dist/src/connectors/learning-coordinator.js +75 -3
  166. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  167. package/dist/src/gateway/agent-builtin-tools.js +0 -5
  168. package/dist/src/gateway/agents-admin.d.ts +0 -7
  169. package/dist/src/gateway/agents-admin.js +4 -33
  170. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +3 -3
  171. package/dist/src/gateway/dreaming-automation-reconciler.js +48 -88
  172. package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
  173. package/dist/src/gateway/hono/lib/config-payload.js +3 -1
  174. package/dist/src/gateway/hono/oauth-async.d.ts +1 -0
  175. package/dist/src/gateway/hono/oauth-async.js +17 -2
  176. package/dist/src/gateway/hono/routes/agents.js +1 -33
  177. package/dist/src/gateway/hono/routes/config-patch/misc.js +17 -1
  178. package/dist/src/gateway/hono/routes/connectors.js +13 -12
  179. package/dist/src/gateway/hono/routes/index.js +2 -2
  180. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -5
  181. package/dist/src/gateway/hono/routes/local-apps.js +1 -1
  182. package/dist/src/gateway/hono/routes/models.js +9 -8
  183. package/dist/src/gateway/hono/routes/status.js +0 -7
  184. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +3 -0
  185. package/dist/src/gateway/hono/routes/understanding-sources.js +203 -0
  186. package/dist/src/gateway/hono/routes/update.js +2 -2
  187. package/dist/src/gateway/hono/routes/work-discovery.d.ts +2 -0
  188. package/dist/src/gateway/hono/routes/work-discovery.js +3 -134
  189. package/dist/src/gateway/hono/routes/you.d.ts +0 -22
  190. package/dist/src/gateway/hono/routes/you.js +234 -1118
  191. package/dist/src/gateway/index.js +1 -1
  192. package/dist/src/gateway/run-loop.js +1 -1
  193. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  194. package/dist/src/gateway/service/run-gateway-agent.js +2 -4
  195. package/dist/src/gateway/service.js +5 -5
  196. package/dist/src/infra/gateway-processes.js +1 -1
  197. package/dist/src/infra/update-restart.js +1 -1
  198. package/dist/src/infra/update-runner.js +2 -2
  199. package/dist/src/infra/update-startup.js +1 -1
  200. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  201. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +2 -4
  202. package/dist/src/knowledge/connected-understanding-pipeline.js +31 -81
  203. package/dist/src/knowledge/index.js +2 -2
  204. package/dist/src/knowledge/people-graph.d.ts +22 -25
  205. package/dist/src/knowledge/people-graph.js +76 -43
  206. package/dist/src/proactive/execution/context.js +8 -13
  207. package/dist/src/providers/model-catalog-store.d.ts +15 -0
  208. package/dist/src/providers/model-catalog-store.js +14 -1
  209. package/dist/src/providers/model-catalog-sync-service.js +6 -0
  210. package/dist/src/providers/model-registry.js +4 -4
  211. package/dist/src/providers/register-runtime-providers.js +4 -4
  212. package/dist/src/providers/xopc-cloud-model-source.js +55 -8
  213. package/dist/src/realtime/broker.d.ts +1 -0
  214. package/dist/src/realtime/broker.js +19 -2
  215. package/dist/src/realtime/runtime.js +6 -1
  216. package/dist/src/storage/sqlite/connector-account-repository.js +0 -1
  217. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +37 -0
  218. package/dist/src/storage/sqlite/context-consolidation-repository.js +64 -0
  219. package/dist/src/storage/sqlite/fts.d.ts +2 -0
  220. package/dist/src/storage/sqlite/fts.js +29 -1
  221. package/dist/src/storage/sqlite/index.d.ts +4 -6
  222. package/dist/src/storage/sqlite/index.js +5 -7
  223. package/dist/src/storage/sqlite/knowledge-repository.d.ts +9 -2
  224. package/dist/src/storage/sqlite/knowledge-repository.js +58 -10
  225. package/dist/src/storage/sqlite/memory-records-repository.d.ts +7 -56
  226. package/dist/src/storage/sqlite/memory-records-repository.js +68 -218
  227. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +54 -0
  228. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +193 -0
  229. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +6 -0
  230. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +38 -0
  231. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +110 -0
  232. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  233. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  234. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  235. package/dist/src/storage/sqlite/schema.js +1 -1
  236. package/dist/src/storage/sqlite/schema.sql +0 -20
  237. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +34 -0
  238. package/dist/src/storage/sqlite/user-context-quality-repository.js +74 -0
  239. package/dist/src/storage/sqlite/user-context-repository.d.ts +64 -0
  240. package/dist/src/storage/sqlite/user-context-repository.js +383 -0
  241. package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
  242. package/dist/src/tui/tool-summary.js +1 -7
  243. package/dist/src/tui/tui-startup-resources.js +1 -2
  244. package/dist/src/user-context/config.d.ts +17 -210
  245. package/dist/src/user-context/config.js +19 -85
  246. package/dist/src/user-context/consolidation.d.ts +26 -0
  247. package/dist/src/user-context/consolidation.js +115 -0
  248. package/dist/src/user-context/domain.d.ts +75 -0
  249. package/dist/src/user-context/domain.js +4 -0
  250. package/dist/src/user-context/manual-understanding.d.ts +7 -14
  251. package/dist/src/user-context/manual-understanding.js +19 -54
  252. package/dist/src/{agent/memory/context → user-context}/planner.d.ts +5 -6
  253. package/dist/src/user-context/planner.js +311 -0
  254. package/dist/src/user-context/relationship-continuity.d.ts +3 -6
  255. package/dist/src/user-context/relationship-continuity.js +39 -32
  256. package/dist/src/user-context/sources/catalog.d.ts +2 -0
  257. package/dist/src/user-context/sources/catalog.js +149 -0
  258. package/dist/src/user-context/sources/index.d.ts +3 -0
  259. package/dist/src/user-context/sources/index.js +3 -0
  260. package/dist/src/user-context/sources/repository.d.ts +40 -0
  261. package/dist/src/user-context/sources/repository.js +164 -0
  262. package/dist/src/user-context/sources/types.d.ts +83 -0
  263. package/dist/src/work-discovery/analyzer.d.ts +4 -3
  264. package/dist/src/work-discovery/analyzer.js +21 -16
  265. package/dist/src/work-discovery/incremental-repository.js +42 -40
  266. package/dist/src/work-discovery/index.js +3 -3
  267. package/dist/src/work-discovery/service.d.ts +7 -7
  268. package/dist/src/work-discovery/service.js +241 -190
  269. package/dist/src/work-discovery/source-repository.js +42 -53
  270. package/dist/src/work-discovery/types.d.ts +2 -14
  271. package/package.json +3 -8
  272. package/dist/gateway/static/root/assets/agents-BvdqdER9.js +0 -2
  273. package/dist/gateway/static/root/assets/apps-page-nKLsfy6C.js +0 -1
  274. package/dist/gateway/static/root/assets/automations-page-Dh5bdZiN.js +0 -6
  275. package/dist/gateway/static/root/assets/browser-settings-page-CRJ_nAuh.js +0 -8
  276. package/dist/gateway/static/root/assets/capabilities-settings-panel-DeQR5BZt.js +0 -7
  277. package/dist/gateway/static/root/assets/capability-presets-api-D7tkhDMv.js +0 -1
  278. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D7uK3q1p.js +0 -1
  279. package/dist/gateway/static/root/assets/channels-settings-Bw6Dniyq.js +0 -1
  280. package/dist/gateway/static/root/assets/channels-status-swr-BrUTz4uU.js +0 -1
  281. package/dist/gateway/static/root/assets/connector-logo-8YU53RUT.js +0 -1
  282. package/dist/gateway/static/root/assets/connectors-page-k9tMiOL5.js +0 -2
  283. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +0 -2
  284. package/dist/gateway/static/root/assets/extension-settings-page-DEZw_7zN.js +0 -1
  285. package/dist/gateway/static/root/assets/gateway-settings-Dg8qCiIp.js +0 -1
  286. package/dist/gateway/static/root/assets/heartbeat-settings-27tRzDEo.js +0 -1
  287. package/dist/gateway/static/root/assets/home-page-VA511kMr.js +0 -3
  288. package/dist/gateway/static/root/assets/index-BvR-i-m6.js +0 -216
  289. package/dist/gateway/static/root/assets/index-zybP34zk.css +0 -1
  290. package/dist/gateway/static/root/assets/local-app-workbench-page-CaJq4-wV.js +0 -2
  291. package/dist/gateway/static/root/assets/locale-store-DUW5YE3R.js +0 -1
  292. package/dist/gateway/static/root/assets/logs-page-BLTCg69e.js +0 -2
  293. package/dist/gateway/static/root/assets/messages-CMjnbdbn.js +0 -3
  294. package/dist/gateway/static/root/assets/notes-workbench-Bp1w9UM1.js +0 -4
  295. package/dist/gateway/static/root/assets/project-detail-page-CZmbPDQN.js +0 -1
  296. package/dist/gateway/static/root/assets/projects-page-D5pzqfm5.js +0 -1
  297. package/dist/gateway/static/root/assets/remote-access-hub-CC-XhVGI.js +0 -1
  298. package/dist/gateway/static/root/assets/segmented-styles-BL8oLBEp.js +0 -1
  299. package/dist/gateway/static/root/assets/sessions-page-B2eTLVDV.js +0 -1
  300. package/dist/gateway/static/root/assets/settings-advanced-gate-CRuZ_bl0.js +0 -1
  301. package/dist/gateway/static/root/assets/settings-form-section-C4GXGeA4.js +0 -1
  302. package/dist/gateway/static/root/assets/shares-settings-YzSDS4G_.js +0 -1
  303. package/dist/gateway/static/root/assets/skill-reload-api-CwOo8zZk.js +0 -1
  304. package/dist/gateway/static/root/assets/skills-page-xd1cgSGN.js +0 -2
  305. package/dist/gateway/static/root/assets/time-picker-CstQ___Y.js +0 -1
  306. package/dist/gateway/static/root/assets/use-save-bar-registration-CQYE0l6z.js +0 -1
  307. package/dist/gateway/static/root/assets/user-context-page-BnQAWS_B.js +0 -1
  308. package/dist/gateway/static/root/assets/work-discovery-page-CAszL1y8.js +0 -1
  309. package/dist/gateway/static/root/assets/workflows-page-DxGzo3-x.js +0 -11
  310. package/dist/src/agent/code-intelligence/binary.d.ts +0 -15
  311. package/dist/src/agent/code-intelligence/binary.js +0 -372
  312. package/dist/src/agent/code-intelligence/index.d.ts +0 -4
  313. package/dist/src/agent/code-intelligence/index.js +0 -4
  314. package/dist/src/agent/code-intelligence/runtime.d.ts +0 -34
  315. package/dist/src/agent/code-intelligence/runtime.js +0 -280
  316. package/dist/src/agent/code-intelligence/tool-gating.d.ts +0 -5
  317. package/dist/src/agent/code-intelligence/tool-gating.js +0 -6
  318. package/dist/src/agent/code-intelligence/tools.d.ts +0 -6
  319. package/dist/src/agent/code-intelligence/tools.js +0 -266
  320. package/dist/src/agent/code-intelligence/types.d.ts +0 -22
  321. package/dist/src/agent/memory/context/planner.js +0 -286
  322. package/dist/src/agent/memory/dreaming/config.d.ts +0 -48
  323. package/dist/src/agent/memory/dreaming/config.js +0 -98
  324. package/dist/src/agent/memory/dreaming/constants.d.ts +0 -12
  325. package/dist/src/agent/memory/dreaming/constants.js +0 -18
  326. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +0 -19
  327. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -152
  328. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -16
  329. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -115
  330. package/dist/src/agent/memory/dreaming/preview.d.ts +0 -23
  331. package/dist/src/agent/memory/dreaming/preview.js +0 -52
  332. package/dist/src/agent/memory/dreaming/promotion-lifecycle.d.ts +0 -16
  333. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -44
  334. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +0 -19
  335. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -150
  336. package/dist/src/agent/memory/dreaming/runner.d.ts +0 -10
  337. package/dist/src/agent/memory/dreaming/runner.js +0 -78
  338. package/dist/src/agent/memory/dreaming/schedule.d.ts +0 -23
  339. package/dist/src/agent/memory/dreaming/schedule.js +0 -38
  340. package/dist/src/agent/memory/dreaming/scope.d.ts +0 -11
  341. package/dist/src/agent/memory/dreaming/scope.js +0 -33
  342. package/dist/src/agent/memory/dreaming/utils.d.ts +0 -3
  343. package/dist/src/agent/memory/dreaming/utils.js +0 -31
  344. package/dist/src/gateway/hono/routes/memory.d.ts +0 -3
  345. package/dist/src/gateway/hono/routes/memory.js +0 -460
  346. package/dist/src/storage/sqlite/dreaming-repository.d.ts +0 -61
  347. package/dist/src/storage/sqlite/dreaming-repository.js +0 -88
  348. package/dist/src/storage/sqlite/memory-readiness-repository.d.ts +0 -7
  349. package/dist/src/storage/sqlite/memory-readiness-repository.js +0 -30
  350. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +0 -27
  351. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -107
  352. package/dist/src/storage/sqlite/user-claims-repository.d.ts +0 -101
  353. package/dist/src/storage/sqlite/user-claims-repository.js +0 -241
  354. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +0 -3
  355. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -32
  356. package/dist/src/user-context/actionableInsights.d.ts +0 -14
  357. package/dist/src/user-context/actionableInsights.js +0 -34
  358. package/dist/src/user-context/context-compiler.d.ts +0 -27
  359. package/dist/src/user-context/context-compiler.js +0 -48
  360. package/dist/src/user-context/import.d.ts +0 -12
  361. package/dist/src/user-context/import.js +0 -51
  362. package/dist/src/user-context/memory-episode-evaluator.d.ts +0 -32
  363. package/dist/src/user-context/memory-episode-evaluator.js +0 -35
  364. package/dist/src/user-context/memory-readiness.d.ts +0 -33
  365. package/dist/src/user-context/memory-readiness.js +0 -41
  366. package/dist/src/user-context/memory-use-audit.d.ts +0 -10
  367. package/dist/src/user-context/memory-use-audit.js +0 -26
  368. package/dist/src/user-context/personal-playbook.d.ts +0 -11
  369. package/dist/src/user-context/personal-playbook.js +0 -41
  370. package/dist/src/user-context/profile.d.ts +0 -37
  371. package/dist/src/user-context/profile.js +0 -163
  372. package/dist/src/user-context/projection.d.ts +0 -120
  373. package/dist/src/user-context/projection.js +0 -262
  374. package/dist/src/user-context/source-recommendations.d.ts +0 -13
  375. package/dist/src/user-context/source-recommendations.js +0 -85
  376. /package/dist/src/{agent/code-intelligence → user-context/sources}/types.js +0 -0
@@ -53,7 +53,20 @@ var init_model_catalog_store = __esmMin((() => {
53
53
  cloneSource(source) {
54
54
  return {
55
55
  ...source,
56
- models: source.models.map((model) => ({ ...model }))
56
+ models: source.models.map((model) => ({
57
+ ...model,
58
+ input: [...model.input],
59
+ output: [...model.output],
60
+ operations: [...model.operations],
61
+ ...model.imageGeneration ? { imageGeneration: {
62
+ ...model.imageGeneration,
63
+ sizes: [...model.imageGeneration.sizes],
64
+ aspectRatios: [...model.imageGeneration.aspectRatios ?? []],
65
+ qualities: [...model.imageGeneration.qualities],
66
+ formats: [...model.imageGeneration.formats],
67
+ backgrounds: [...model.imageGeneration.backgrounds]
68
+ } } : {}
69
+ }))
57
70
  };
58
71
  }
59
72
  };
@@ -110,6 +110,12 @@ var ModelCatalogSyncService = class {
110
110
  }, models.map((model) => ({
111
111
  id: model.id,
112
112
  name: model.name ?? model.id,
113
+ kind: "language",
114
+ input: ["text"],
115
+ output: ["text"],
116
+ operations: provider.api === "openai-responses" ? ["responses"] : ["chat.completions"],
117
+ reasoning: false,
118
+ contextWindow: 128e3,
113
119
  maxOutputTokens: null
114
120
  })));
115
121
  return providerId;
@@ -236,21 +236,21 @@ var init_model_registry = __esmMin((() => {
236
236
  log.warn({ err }, "Failed to load remote model catalog");
237
237
  return [];
238
238
  }
239
- return Object.values(sources).flatMap((source) => source.models.filter((model) => model.availability === "available").map((model) => ({
239
+ return Object.values(sources).flatMap((source) => source.models.filter((model) => model.availability === "available" && model.kind === "language").map((model) => ({
240
240
  id: model.id,
241
241
  name: model.name,
242
242
  api: source.api,
243
243
  provider: source.providerId,
244
244
  baseUrl: source.baseUrl,
245
- reasoning: false,
246
- input: ["text"],
245
+ reasoning: model.reasoning,
246
+ input: model.input,
247
247
  cost: {
248
248
  input: 0,
249
249
  output: 0,
250
250
  cacheRead: 0,
251
251
  cacheWrite: 0
252
252
  },
253
- contextWindow: 128e3,
253
+ contextWindow: model.contextWindow,
254
254
  maxTokens: model.maxOutputTokens ?? 16384
255
255
  })));
256
256
  }
@@ -16,18 +16,18 @@ function registerRuntimeProvider(modelRuntime, source) {
16
16
  baseUrl: source.baseUrl,
17
17
  api: source.api,
18
18
  oauth,
19
- models: source.models.filter((model) => model.availability === "available").map((model) => ({
19
+ models: source.models.filter((model) => model.availability === "available" && model.kind === "language").map((model) => ({
20
20
  id: model.id,
21
21
  name: model.name,
22
- reasoning: false,
23
- input: ["text"],
22
+ reasoning: model.reasoning,
23
+ input: model.input,
24
24
  cost: {
25
25
  input: 0,
26
26
  output: 0,
27
27
  cacheRead: 0,
28
28
  cacheWrite: 0
29
29
  },
30
- contextWindow: 128e3,
30
+ contextWindow: model.contextWindow,
31
31
  maxTokens: model.maxOutputTokens ?? 16384
32
32
  }))
33
33
  });
@@ -2,6 +2,7 @@ import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-
2
2
  import { getModelRegistry, init_model_registry } from "./model-registry.js";
3
3
  import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
4
4
  import { getProviderAuthService, init_provider_auth_service } from "./provider-auth-service.js";
5
+ import { reloadImageGenerationProviders } from "../agent/image/generation/provider-registry.js";
5
6
  //#region src/providers/xopc-cloud-model-source.ts
6
7
  init_model_catalog_store();
7
8
  init_model_registry();
@@ -44,26 +45,72 @@ var XopcCloudModelSource = class {
44
45
  const body = await response.json().catch(() => null);
45
46
  if (!response.ok) throw new XopcCloudModelError(typeof body?.error?.message === "string" ? body.error.message : `XOPC model discovery failed (${response.status})`, response.status, typeof body?.error?.code === "string" ? body.error.code : void 0);
46
47
  if (!Array.isArray(body?.data)) throw new XopcCloudModelError("XOPC model discovery returned an invalid response", response.status, "invalid_response");
47
- const models = [...new Set(body.data.map((model) => model.id).filter((id) => typeof id === "string" && id.length > 0))];
48
+ const models = [...new Map(body.data.filter((model) => typeof model.id === "string" && model.id.length > 0).map((model) => {
49
+ const declaredInput = model.xopc?.capabilities?.input;
50
+ const parsedInput = Array.isArray(declaredInput) ? declaredInput.filter((value) => value === "text" || value === "image") : [];
51
+ const input = parsedInput.includes("text") ? [...new Set(parsedInput)] : ["text", ...new Set(parsedInput)];
52
+ const maxOutputTokens = model.xopc?.maxOutputTokens;
53
+ const declaredOutput = model.xopc?.capabilities?.output;
54
+ const output = Array.isArray(declaredOutput) ? declaredOutput.filter((value) => value === "text" || value === "image") : ["text"];
55
+ const declaredOperations = model.xopc?.operations ?? model.xopc?.capabilities?.operations;
56
+ const operations = Array.isArray(declaredOperations) ? declaredOperations.filter((value) => value === "chat.completions" || value === "responses" || value === "images.generate" || value === "images.edit") : ["chat.completions", "responses"];
57
+ const generation = parseImageGenerationCapabilities(model.xopc?.capabilities?.imageGeneration);
58
+ return [model.id, {
59
+ id: model.id,
60
+ name: model.id,
61
+ kind: model.xopc?.kind === "image" ? "image" : "language",
62
+ input,
63
+ output,
64
+ operations,
65
+ reasoning: model.xopc?.capabilities?.reasoning === true,
66
+ contextWindow: 128e3,
67
+ maxOutputTokens: typeof maxOutputTokens === "number" && Number.isSafeInteger(maxOutputTokens) ? maxOutputTokens : null,
68
+ ...generation ? { imageGeneration: generation } : {}
69
+ }];
70
+ })).values()];
48
71
  this.catalogStore.replaceSourceModels("xopc-cloud", {
49
72
  providerId: "xopc-cloud",
50
73
  baseUrl: this.routerUrl,
51
74
  api: "openai-completions",
52
75
  etag: response.headers.get("x-xopc-model-catalog-version"),
53
- recommendedModel: models[0] ?? null,
76
+ recommendedModel: models[0]?.id ?? null,
54
77
  lastSuccessAt: Date.now()
55
- }, models.map((id) => ({
56
- id,
57
- name: id,
58
- maxOutputTokens: null
59
- })));
78
+ }, models);
60
79
  this.refreshModels();
80
+ reloadImageGenerationProviders();
61
81
  return {
62
82
  status: "updated",
63
83
  modelCount: models.length,
64
- models
84
+ models: models.map((model) => model.id)
65
85
  };
66
86
  }
67
87
  };
88
+ function parseImageGenerationCapabilities(value) {
89
+ if (!value || typeof value !== "object" || Array.isArray(value)) return void 0;
90
+ const raw = value;
91
+ const strings = (candidate, allowed) => Array.isArray(candidate) ? candidate.filter((item) => typeof item === "string" && (!allowed || allowed.includes(item))) : [];
92
+ return {
93
+ maxCount: Number.isSafeInteger(raw.maxCount) && Number(raw.maxCount) > 0 ? Number(raw.maxCount) : 1,
94
+ sizes: strings(raw.sizes),
95
+ aspectRatios: strings(raw.aspectRatios),
96
+ qualities: strings(raw.qualities, [
97
+ "low",
98
+ "medium",
99
+ "high",
100
+ "auto"
101
+ ]),
102
+ formats: strings(raw.formats, [
103
+ "png",
104
+ "jpeg",
105
+ "webp"
106
+ ]),
107
+ backgrounds: strings(raw.backgrounds, [
108
+ "transparent",
109
+ "opaque",
110
+ "auto"
111
+ ]),
112
+ maxInputImages: Number.isSafeInteger(raw.maxInputImages) && Number(raw.maxInputImages) > 0 ? Number(raw.maxInputImages) : 0
113
+ };
114
+ }
68
115
  //#endregion
69
116
  export { XopcCloudModelError, XopcCloudModelSource };
@@ -12,6 +12,7 @@ export interface RealtimeTopicPolicy {
12
12
  export type RealtimeTopicPolicyResolver = (topic: string) => RealtimeTopicPolicy;
13
13
  export interface RealtimeSubscriptionHandle {
14
14
  initial: RealtimeDelivery[];
15
+ cursor: number;
15
16
  unsubscribe: () => void;
16
17
  }
17
18
  export declare function defaultRealtimeTopicPolicy(topic: string): RealtimeTopicPolicy;
@@ -47,8 +47,12 @@ var RealtimeBroker = class {
47
47
  realtimeTopicSchema.parse(topic);
48
48
  const state = this.ensureTopic(topic);
49
49
  state.listeners.add(listener);
50
+ const initial = afterSeq === void 0 ? [] : this.replayFrom(topic, state, afterSeq);
51
+ const gap = initial[0]?.kind === "realtime.gap" ? initial[0] : void 0;
52
+ const currentSeq = state.nextSeq - 1;
50
53
  return {
51
- initial: afterSeq === void 0 ? [] : this.replayFrom(topic, state, afterSeq),
54
+ initial,
55
+ cursor: gap ? gap.payload.earliestSeq - 1 : afterSeq === void 0 ? currentSeq : Math.min(afterSeq, currentSeq),
52
56
  unsubscribe: () => {
53
57
  state.listeners.delete(listener);
54
58
  }
@@ -65,6 +69,18 @@ var RealtimeBroker = class {
65
69
  }
66
70
  replayFrom(topic, state, afterSeq) {
67
71
  const currentSeq = state.nextSeq - 1;
72
+ if (afterSeq > currentSeq) return [{
73
+ protocolVersion: 1,
74
+ messageId: crypto.randomUUID(),
75
+ kind: "realtime.gap",
76
+ sentAt: Date.now(),
77
+ payload: {
78
+ topic,
79
+ requestedSeq: afterSeq,
80
+ earliestSeq: state.events[0]?.payload.seq ?? 1,
81
+ recoverable: false
82
+ }
83
+ }];
68
84
  if (currentSeq <= afterSeq) return [];
69
85
  const earliestSeq = state.events[0]?.payload.seq;
70
86
  if (earliestSeq === void 0 || afterSeq + 1 < earliestSeq) return [{
@@ -75,7 +91,8 @@ var RealtimeBroker = class {
75
91
  payload: {
76
92
  topic,
77
93
  requestedSeq: afterSeq,
78
- earliestSeq: earliestSeq ?? currentSeq + 1
94
+ earliestSeq: earliestSeq ?? currentSeq + 1,
95
+ recoverable: earliestSeq !== void 0
79
96
  }
80
97
  }, ...state.events];
81
98
  return state.events.filter((event) => event.payload.seq > afterSeq);
@@ -128,7 +128,8 @@ var RealtimeRuntime = class {
128
128
  writer.enqueue(serverMessage("realtime.gap", {
129
129
  topic: item.topic,
130
130
  requestedSeq: item.afterSeq,
131
- earliestSeq: 1
131
+ earliestSeq: 1,
132
+ recoverable: false
132
133
  }));
133
134
  continue;
134
135
  }
@@ -137,6 +138,10 @@ var RealtimeRuntime = class {
137
138
  writer.enqueue(event);
138
139
  });
139
140
  subscriptions.set(item.topic, handle);
141
+ writer.enqueue(serverMessage("realtime.subscribed", {
142
+ topic: item.topic,
143
+ cursor: handle.cursor
144
+ }), "critical");
140
145
  for (const message of handle.initial) writer.enqueue(message);
141
146
  }
142
147
  return true;
@@ -36,7 +36,6 @@ function mergeAccountSourceData(db, connectorId, sourceAccountId, targetAccountI
36
36
  db.prepare("UPDATE knowledge_source_items SET source_instance_id = ? WHERE source_instance_id = ?").run(targetId, sourceId);
37
37
  db.prepare("UPDATE knowledge_sync_runs SET source_instance_id = ? WHERE source_instance_id = ?").run(targetId, sourceId);
38
38
  db.prepare("UPDATE knowledge_source_changes SET source_instance_id = ? WHERE source_instance_id = ?").run(targetId, sourceId);
39
- db.prepare("UPDATE user_claim_evidence SET source_instance_id = ? WHERE source_instance_id = ?").run(targetId, sourceId);
40
39
  db.prepare(`
41
40
  DELETE FROM knowledge_collection_state AS source
42
41
  WHERE source.source_instance_id = ?
@@ -0,0 +1,37 @@
1
+ export type ContextConsolidationRun = {
2
+ runId: string;
3
+ triggerKind: 'schedule' | 'manual';
4
+ status: 'running' | 'completed' | 'failed';
5
+ reason?: string;
6
+ metrics: Record<string, unknown>;
7
+ startedAt: number;
8
+ completedAt?: number;
9
+ };
10
+ export type ContextConsolidationDecision = {
11
+ id: string;
12
+ runId: string;
13
+ understandingId?: string;
14
+ action: 'needs_review' | 'stale';
15
+ reasonCode: string;
16
+ evidenceCount: number;
17
+ createdAt: number;
18
+ };
19
+ export declare function startContextConsolidationRun(triggerKind: ContextConsolidationRun['triggerKind'], now?: number): ContextConsolidationRun;
20
+ export declare function finishContextConsolidationRun(input: {
21
+ runId: string;
22
+ ok: boolean;
23
+ reason: string;
24
+ metrics: Record<string, unknown>;
25
+ now?: number;
26
+ }): ContextConsolidationRun | undefined;
27
+ export declare function recordContextConsolidationDecision(input: {
28
+ runId: string;
29
+ understandingId: string;
30
+ action: ContextConsolidationDecision['action'];
31
+ reasonCode: string;
32
+ evidenceCount: number;
33
+ now?: number;
34
+ }): ContextConsolidationDecision;
35
+ export declare function getContextConsolidationRun(runId: string): ContextConsolidationRun | undefined;
36
+ export declare function listContextConsolidationRuns(limit?: number): ContextConsolidationRun[];
37
+ export declare function listContextConsolidationDecisions(runId: string): ContextConsolidationDecision[];
@@ -0,0 +1,64 @@
1
+ import { getSqliteDatabase } from "./transaction.js";
2
+ import { randomUUID } from "node:crypto";
3
+ //#region src/storage/sqlite/context-consolidation-repository.ts
4
+ function parseJson(value) {
5
+ try {
6
+ const parsed = JSON.parse(value);
7
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : {};
8
+ } catch {
9
+ return {};
10
+ }
11
+ }
12
+ function runFromRow(row) {
13
+ return {
14
+ runId: row.run_id,
15
+ triggerKind: row.trigger_kind,
16
+ status: row.status,
17
+ ...row.reason ? { reason: row.reason } : {},
18
+ metrics: parseJson(row.metrics_json),
19
+ startedAt: row.started_at,
20
+ ...row.completed_at == null ? {} : { completedAt: row.completed_at }
21
+ };
22
+ }
23
+ function startContextConsolidationRun(triggerKind, now = Date.now()) {
24
+ const runId = randomUUID();
25
+ getSqliteDatabase().prepare(`INSERT INTO context_consolidation_runs (
26
+ run_id, trigger_kind, status, started_at
27
+ ) VALUES (?, ?, 'running', ?)`).run(runId, triggerKind, now);
28
+ return getContextConsolidationRun(runId);
29
+ }
30
+ function finishContextConsolidationRun(input) {
31
+ getSqliteDatabase().prepare(`UPDATE context_consolidation_runs
32
+ SET status = ?, reason = ?, metrics_json = ?, completed_at = ? WHERE run_id = ?`).run(input.ok ? "completed" : "failed", input.reason, JSON.stringify(input.metrics), input.now ?? Date.now(), input.runId);
33
+ return getContextConsolidationRun(input.runId);
34
+ }
35
+ function recordContextConsolidationDecision(input) {
36
+ const id = randomUUID();
37
+ getSqliteDatabase().prepare(`INSERT INTO context_consolidation_decisions (
38
+ decision_id, run_id, understanding_id, action, reason_code, evidence_count, created_at
39
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`).run(id, input.runId, input.understandingId, input.action, input.reasonCode, input.evidenceCount, input.now ?? Date.now());
40
+ return listContextConsolidationDecisions(input.runId).find((item) => item.id === id);
41
+ }
42
+ function getContextConsolidationRun(runId) {
43
+ const row = getSqliteDatabase().prepare("SELECT * FROM context_consolidation_runs WHERE run_id = ?").get(runId);
44
+ return row ? runFromRow(row) : void 0;
45
+ }
46
+ function listContextConsolidationRuns(limit = 20) {
47
+ const safeLimit = Math.max(1, Math.min(200, limit));
48
+ return getSqliteDatabase().prepare(`SELECT * FROM context_consolidation_runs
49
+ ORDER BY started_at DESC LIMIT ?`).all(safeLimit).map(runFromRow);
50
+ }
51
+ function listContextConsolidationDecisions(runId) {
52
+ return getSqliteDatabase().prepare(`SELECT * FROM context_consolidation_decisions
53
+ WHERE run_id = ? ORDER BY created_at, decision_id`).all(runId).map((row) => ({
54
+ id: row.decision_id,
55
+ runId: row.run_id,
56
+ ...row.understanding_id ? { understandingId: row.understanding_id } : {},
57
+ action: row.action,
58
+ reasonCode: row.reason_code,
59
+ evidenceCount: row.evidence_count,
60
+ createdAt: row.created_at
61
+ }));
62
+ }
63
+ //#endregion
64
+ export { finishContextConsolidationRun, getContextConsolidationRun, listContextConsolidationDecisions, listContextConsolidationRuns, recordContextConsolidationDecision, startContextConsolidationRun };
@@ -6,3 +6,5 @@ export declare function buildFts5SearchQuery(raw: string): string;
6
6
  export declare function fts5RankToScore(rank: number, bestRank: number, worstRank: number): number;
7
7
  /** Bounded lexical fallback for reformulations unsupported by unicode61 tokenization. */
8
8
  export declare function memoryLexicalSimilarity(query: string, content: string): number;
9
+ /** Local deterministic embedding used to complement FTS without network or model coupling. */
10
+ export declare function memoryVectorSimilarity(query: string, content: string): number;
@@ -74,5 +74,33 @@ function memoryLexicalSimilarity(query, content) {
74
74
  for (const feature of queryFeatures) if (contentFeatures.has(feature)) shared += 1;
75
75
  return 2 * shared / (queryFeatures.size + contentFeatures.size);
76
76
  }
77
+ const VECTOR_SIZE = 128;
78
+ function featureVector(raw) {
79
+ const vector = new Float64Array(VECTOR_SIZE);
80
+ const normalized = raw.normalize("NFKC").toLocaleLowerCase();
81
+ const features = [...(normalized.match(/[\p{L}\p{N}_]+/gu) ?? []).map((term) => `w:${term}`), ...[...normalized].map((char, index, chars) => chars.slice(index, index + 3).join("")).filter((value) => value.trim().length >= 2).map((value) => `c:${value}`)];
82
+ for (const feature of features) {
83
+ let hash = 2166136261;
84
+ for (const char of feature) hash = Math.imul(hash ^ char.codePointAt(0), 16777619);
85
+ const index = (hash >>> 0) % VECTOR_SIZE;
86
+ vector[index] += (hash & 1) === 0 ? 1 : -1;
87
+ }
88
+ return vector;
89
+ }
90
+ /** Local deterministic embedding used to complement FTS without network or model coupling. */
91
+ function memoryVectorSimilarity(query, content) {
92
+ const left = featureVector(query);
93
+ const right = featureVector(content);
94
+ let dot = 0;
95
+ let leftNorm = 0;
96
+ let rightNorm = 0;
97
+ for (let index = 0; index < VECTOR_SIZE; index += 1) {
98
+ dot += left[index] * right[index];
99
+ leftNorm += left[index] ** 2;
100
+ rightNorm += right[index] ** 2;
101
+ }
102
+ if (leftNorm === 0 || rightNorm === 0) return 0;
103
+ return Math.max(0, dot / Math.sqrt(leftNorm * rightNorm));
104
+ }
77
105
  //#endregion
78
- export { buildFts5SearchQuery, escapeFts5Query, fts5RankToScore, memoryLexicalSimilarity };
106
+ export { buildFts5SearchQuery, escapeFts5Query, fts5RankToScore, memoryLexicalSimilarity, memoryVectorSimilarity };
@@ -5,11 +5,11 @@ export { DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, } from './m
5
5
  export { discoverSqlMigrations, listRegisteredMigrationTargets } from './migrations/discover.js';
6
6
  export { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest, type OpenXopcDatabaseOptions, type XopcDatabase, } from './connection.js';
7
7
  export { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';
8
- export { getMemoryReadiness } from './memory-readiness-repository.js';
9
- export { finishDreamingRun, getDreamingRun, listDreamingDecisions, listDreamingRuns, recordDreamingDecision, startDreamingRun, type DreamingActiveMode, type DreamingDecision, type DreamingMode, type DreamingPhase, type DreamingRun, } from './dreaming-repository.js';
8
+ export { finishContextConsolidationRun, getContextConsolidationRun, listContextConsolidationDecisions, listContextConsolidationRuns, recordContextConsolidationDecision, startContextConsolidationRun, type ContextConsolidationDecision, type ContextConsolidationRun, } from './context-consolidation-repository.js';
9
+ export { summarizeUserUnderstandingQuality, type UserUnderstandingQualityMetrics, } from './user-context-quality-repository.js';
10
+ export { createCollaborationRule, createContextEvidence, createUnderstanding, consumeContextConsent, deleteCollaborationRule, deleteUnderstanding, decideContextConsent, ensureContextConsent, getCollaborationRule, getTurnPersonalization, getUnderstanding, getUserProfile, hasContextConsent, isUnderstandingSuppressed, listCollaborationRules, listUnderstandingEvidence, listUnderstandings, linkUnderstandingEvidence, recordContextFeedback, recordContextRun, rejectUnderstanding, reviseCollaborationRule, reviseUnderstanding, setCollaborationRuleStatus, setUnderstandingStatus, updateUserProfile, type CreateUnderstandingInput, } from './user-context-repository.js';
10
11
  export { cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, finishSessionInputRun, getSessionInputState, insertSessionInput, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus, type SessionInput, type SessionInputDelivery, type SessionInputState, type SessionInputStatus, } from './session-input-repository.js';
11
12
  export { acknowledgeHomeAttention, isHomeAttentionAcknowledged, type HomeAttentionSubjectKind, } from './home-attention-repository.js';
12
- export { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, removeUserClaimEvidenceForSource, reinforceUserClaim, resolveUserEntity, setUserClaimDecision, type UserClaim, type UserClaimClass, type UserClaimState, type UserEntity, } from './user-claims-repository.js';
13
13
  export { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob, type ConnectorLearningJob, type ConnectorLearningMode, type ConnectorLearningPhase, type ConnectorLearningStatus, } from './connector-learning-repository.js';
14
14
  export { appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory, COMPOSER_INPUT_HISTORY_LIMIT, type ComposerInputHistoryItem, } from './composer-input-history-repository.js';
15
15
  export { bindEndpointPrincipal, createEndpointPrincipal, getEndpointPrincipal, listEndpointPrincipals, revokeEndpointPrincipal, touchEndpointPrincipal, type EndpointPrincipal, } from './endpoint-principal-repository.js';
@@ -23,7 +23,7 @@ export { deleteSessionRecord, ensureSessionRecord, getCurrentSessionId, getGloba
23
23
  export { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, } from './transcript-repository.js';
24
24
  export { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord, } from './notes-repository.js';
25
25
  export { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord, type NoteAgentContextRecord, } from './note-agent-context-repository.js';
26
- export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryTurnFeedback, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryRecordStatus, setMemoryProviderState, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, USER_UNDERSTANDING_REMEDIATION_POLICY, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemoryFeedbackRemediationResult, type MemorySignalRowPayload, type MemoryFeedback, type MemoryFeedbackRating, type MemoryTraceEventPayload, type UserUnderstandingQualityMetrics, type SearchMemoryRecordsOptions, type SetMemoryTurnFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
26
+ export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryTurnFeedback, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryRecordStatus, setMemoryProviderState, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemorySignalRowPayload, type MemoryFeedback, type MemoryFeedbackRating, type MemoryTraceEventPayload, type SearchMemoryRecordsOptions, type SetMemoryTurnFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
27
27
  export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
28
28
  export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
29
29
  export { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
@@ -31,5 +31,3 @@ export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeC
31
31
  export { getConnectorAccount, listConnectorAccounts, refreshConnectorAccountCurrent, reconcileConnectorAccount, } from './connector-account-repository.js';
32
32
  export { getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, listConnectorSyncPolicies, upsertConnectorSyncPolicy, type ConnectorSyncPolicy, } from './connector-sync-policy-repository.js';
33
33
  export { getUserTrustPolicy, setUserTrustPolicy, } from './user-trust-repository.js';
34
- export { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent, type MemoryReferenceConsent, type MemoryReferenceGrantScope, } from './memory-reference-consent-repository.js';
35
- export { getUserProfilePromptState, setUserProfilePromptState, } from './user-profile-setup-repository.js';
@@ -6,11 +6,11 @@ import { XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, applyPendingMi
6
6
  import { ensureXopcDatabaseSchema } from "./schema.js";
7
7
  import { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest } from "./connection.js";
8
8
  import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
9
- import { getMemoryReadiness } from "./memory-readiness-repository.js";
10
- import { finishDreamingRun, getDreamingRun, listDreamingDecisions, listDreamingRuns, recordDreamingDecision, startDreamingRun } from "./dreaming-repository.js";
9
+ import { finishContextConsolidationRun, getContextConsolidationRun, listContextConsolidationDecisions, listContextConsolidationRuns, recordContextConsolidationDecision, startContextConsolidationRun } from "./context-consolidation-repository.js";
10
+ import { summarizeUserUnderstandingQuality } from "./user-context-quality-repository.js";
11
+ import { consumeContextConsent, createCollaborationRule, createContextEvidence, createUnderstanding, decideContextConsent, deleteCollaborationRule, deleteUnderstanding, ensureContextConsent, getCollaborationRule, getTurnPersonalization, getUnderstanding, getUserProfile, hasContextConsent, isUnderstandingSuppressed, linkUnderstandingEvidence, listCollaborationRules, listUnderstandingEvidence, listUnderstandings, recordContextFeedback, recordContextRun, rejectUnderstanding, reviseCollaborationRule, reviseUnderstanding, setCollaborationRuleStatus, setUnderstandingStatus, updateUserProfile } from "./user-context-repository.js";
11
12
  import { cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, finishSessionInputRun, getSessionInputState, insertSessionInput, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus } from "./session-input-repository.js";
12
13
  import { acknowledgeHomeAttention, isHomeAttentionAcknowledged } from "./home-attention-repository.js";
13
- import { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, reinforceUserClaim, removeUserClaimEvidenceForSource, resolveUserEntity, setUserClaimDecision } from "./user-claims-repository.js";
14
14
  import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
15
15
  import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory } from "./composer-input-history-repository.js";
16
16
  import { bindEndpointPrincipal, createEndpointPrincipal, getEndpointPrincipal, listEndpointPrincipals, revokeEndpointPrincipal, touchEndpointPrincipal } from "./endpoint-principal-repository.js";
@@ -24,14 +24,12 @@ import { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAll
24
24
  import { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary } from "./transcript-repository.js";
25
25
  import { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord } from "./notes-repository.js";
26
26
  import { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord } from "./note-agent-context-repository.js";
27
- import { USER_UNDERSTANDING_REMEDIATION_POLICY, appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, upsertMemoryRecord } from "./memory-records-repository.js";
28
27
  import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
28
+ import { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, summarizeMemoryRecallFeedback, upsertMemoryRecord } from "./memory-records-repository.js";
29
29
  import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "./config-repository.js";
30
30
  import { createObjectLinkRecord, deleteObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
31
31
  import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
32
32
  import { getConnectorAccount, listConnectorAccounts, reconcileConnectorAccount, refreshConnectorAccountCurrent } from "./connector-account-repository.js";
33
33
  import { getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, listConnectorSyncPolicies, upsertConnectorSyncPolicy } from "./connector-sync-policy-repository.js";
34
34
  import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
35
- import { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent } from "./memory-reference-consent-repository.js";
36
- import { getUserProfilePromptState, setUserProfilePromptState } from "./user-profile-setup-repository.js";
37
- export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createEndpointPrincipal, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findSessionInput, findSessionKeyBySessionId, finishDreamingRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishSessionInputRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getCurrentSessionId, getDreamingRun, getEndpointPrincipal, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryReadiness, getMemoryRecord, getMemoryTurnFeedback, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionInputState, getSessionMetadata, getSessionPersistedLevels, getSessionTaskPlan, getSqliteDatabase, getUserClaim, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, insertSessionInput, inspectSchemaMigrationStatus, isHomeAttentionAcknowledged, isProactiveSupportAllowed, isXopcDatabaseOpen, linkUserClaimMemoryRecord, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listDreamingDecisions, listDreamingRuns, listEndpointPrincipals, listEndpointToolInvocationAudits, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recordDreamingDecision, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, reinforceUserClaim, releaseConnectorWebhookDelivery, removeUserClaimEvidenceForSource, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveUserEntity, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeEndpointPrincipal, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUserClaimDecision, setUserProfilePromptState, setUserTrustPolicy, startDreamingRun, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
35
+ export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, acknowledgeHomeAttention, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, bindEndpointPrincipal, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, cancelQueuedSessionInput, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, claimNextSessionInput, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, consumeConnectorApproval, consumeContextConsent, createCollaborationRule, createConnectorApproval, createContextEvidence, createEndpointPrincipal, createObjectLinkRecord, createUnderstanding, decideConnectorApproval, decideContextConsent, deleteCollaborationRule, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteObjectLinkRecord, deleteSessionConfig, deleteSessionRecord, deleteUnderstanding, discoverSqlMigrations, enqueueConnectorLearningJob, ensureContextConsent, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findSessionInput, findSessionKeyBySessionId, finishContextConsolidationRun, finishEndpointToolInvocationAudit, finishKnowledgeSyncRun, finishSessionInputRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCollaborationRule, getConnectorAccount, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getConnectorSyncPolicy, getConnectorSyncPolicyForConnection, getContextConsolidationRun, getCurrentSessionId, getEndpointPrincipal, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getMemoryTurnFeedback, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionInputState, getSessionMetadata, getSessionPersistedLevels, getSessionTaskPlan, getSqliteDatabase, getTurnPersonalization, getUnderstanding, getUserProfile, getUserTrustPolicy, getXopcDatabase, hasContextConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, insertSessionInput, inspectSchemaMigrationStatus, isHomeAttentionAcknowledged, isProactiveSupportAllowed, isUnderstandingSuppressed, isXopcDatabaseOpen, linkUnderstandingEvidence, listActivityRecords, listCachedConnectorCatalogEntries, listCollaborationRules, listCompactionBoundaries, listComposerInputHistory, listConnectorAccounts, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listConnectorSyncPolicies, listContextConsolidationDecisions, listContextConsolidationRuns, listEndpointPrincipals, listEndpointToolInvocationAudits, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listUnderstandingEvidence, listUnderstandings, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, mutateQueuedSessionInput, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, reconcileConnectorAccount, recordActivityEvent, recordContextConsolidationDecision, recordContextFeedback, recordContextRun, recoverSessionInputState, recoverStaleConnectorLearningJobs, refreshConnectorAccountCurrent, rejectUnderstanding, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, reviseCollaborationRule, reviseUnderstanding, revokeEndpointPrincipal, runSqliteWriteTransaction, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setCollaborationRuleStatus, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setMemoryProviderState, setMemoryRecordStatus, setMemoryTurnFeedback, setSessionConfig, setSessionInputStatus, setSessionTaskPlan, setUnderstandingStatus, setUserTrustPolicy, startContextConsolidationRun, startEndpointToolInvocationAudit, startKnowledgeSyncRun, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, touchEndpointPrincipal, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateUserProfile, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertConnectorSyncPolicy, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
@@ -1,3 +1,4 @@
1
+ import type { DatabaseSync } from 'node:sqlite';
1
2
  import type { KnowledgeSourceChange, KnowledgeSourceItem, KnowledgeSourceItemInput, KnowledgeSyncRun, KnowledgeSyncRunStatus, KnowledgeSynthesisPipeline, KnowledgeSynthesisStatus } from '../../knowledge/types.js';
2
3
  import type { MemoryEvidence, MemoryEvidenceRelation } from '../../agent/memory/types.js';
3
4
  export declare function startKnowledgeSyncRun(input: {
@@ -68,14 +69,20 @@ export declare function completeKnowledgeSourceItemSynthesis(input: {
68
69
  error?: string;
69
70
  nowMs?: number;
70
71
  }): boolean;
71
- export declare function attachMemoryEvidence(input: {
72
+ export interface AttachMemoryEvidenceInput {
72
73
  recordId: string;
73
74
  sourceItemId?: string;
74
75
  relation?: MemoryEvidenceRelation;
75
76
  excerpt?: string;
76
77
  confidence?: number;
77
78
  observedAt?: string;
79
+ sessionKey?: string;
80
+ turnId?: string;
81
+ toolCallId?: string;
78
82
  nowMs?: number;
79
- }): MemoryEvidence;
83
+ }
84
+ export declare function attachMemoryEvidence(input: AttachMemoryEvidenceInput): MemoryEvidence;
85
+ export declare function replaceMemoryEvidenceForRecord(db: DatabaseSync, recordId: string, evidence: MemoryEvidence[], nowMs?: number): void;
80
86
  export declare function deleteMemoryEvidenceForRecord(recordId: string, relation?: MemoryEvidenceRelation): number;
81
87
  export declare function listMemoryEvidence(recordId: string): MemoryEvidence[];
88
+ export declare function listMemoryEvidenceForRecords(recordIds: string[]): Map<string, MemoryEvidence[]>;
@@ -327,31 +327,53 @@ function completeKnowledgeSourceItemSynthesis(input) {
327
327
  return Number(result.changes) > 0;
328
328
  });
329
329
  }
330
- function attachMemoryEvidence(input) {
330
+ function upsertMemoryEvidenceRow(db, input) {
331
331
  let evidenceId = randomUUID();
332
332
  const now = input.nowMs ?? Date.now();
333
333
  const observedAt = parseTimestamp(input.observedAt);
334
- runSqliteWriteTransaction((db) => {
335
- db.prepare(`INSERT INTO memory_evidence (
334
+ db.prepare(`INSERT INTO memory_evidence (
336
335
  evidence_id, record_id, source_item_id, relation, excerpt,
337
- confidence, observed_at, created_at
338
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
336
+ confidence, observed_at, session_key, turn_id, tool_call_id, created_at
337
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
339
338
  ON CONFLICT DO UPDATE SET
340
339
  excerpt = COALESCE(excluded.excerpt, memory_evidence.excerpt),
341
340
  confidence = MAX(COALESCE(memory_evidence.confidence, 0), COALESCE(excluded.confidence, 0)),
342
- observed_at = MAX(COALESCE(memory_evidence.observed_at, 0), COALESCE(excluded.observed_at, 0))`).run(evidenceId, input.recordId, input.sourceItemId ?? null, input.relation ?? "supports", input.excerpt ?? null, input.confidence ?? null, observedAt, now);
343
- if (input.sourceItemId) evidenceId = db.prepare(`SELECT evidence_id FROM memory_evidence
344
- WHERE record_id = ? AND source_item_id = ? AND relation = ?`).get(input.recordId, input.sourceItemId, input.relation ?? "supports")?.evidence_id ?? evidenceId;
345
- });
341
+ observed_at = MAX(COALESCE(memory_evidence.observed_at, 0), COALESCE(excluded.observed_at, 0)),
342
+ session_key = COALESCE(memory_evidence.session_key, excluded.session_key),
343
+ turn_id = COALESCE(memory_evidence.turn_id, excluded.turn_id),
344
+ tool_call_id = COALESCE(memory_evidence.tool_call_id, excluded.tool_call_id)`).run(evidenceId, input.recordId, input.sourceItemId ?? null, input.relation ?? "supports", input.excerpt ?? null, input.confidence ?? null, observedAt, input.sessionKey ?? null, input.turnId ?? null, input.toolCallId ?? null, now);
345
+ if (input.sourceItemId) evidenceId = db.prepare(`SELECT evidence_id FROM memory_evidence
346
+ WHERE record_id = ? AND source_item_id = ? AND relation = ?`).get(input.recordId, input.sourceItemId, input.relation ?? "supports")?.evidence_id ?? evidenceId;
346
347
  return {
347
348
  evidenceId,
348
349
  ...input.sourceItemId ? { sourceItemId: input.sourceItemId } : {},
349
350
  relation: input.relation ?? "supports",
350
351
  ...input.excerpt ? { sourceText: input.excerpt } : {},
351
352
  ...input.confidence != null ? { confidence: input.confidence } : {},
353
+ ...input.sessionKey ? { sessionKey: input.sessionKey } : {},
354
+ ...input.turnId ? { turnId: input.turnId } : {},
355
+ ...input.toolCallId ? { toolCallId: input.toolCallId } : {},
352
356
  ...observedAt != null ? { observedAt: new Date(observedAt).toISOString() } : {}
353
357
  };
354
358
  }
359
+ function attachMemoryEvidence(input) {
360
+ return runSqliteWriteTransaction((db) => upsertMemoryEvidenceRow(db, input));
361
+ }
362
+ function replaceMemoryEvidenceForRecord(db, recordId, evidence, nowMs = Date.now()) {
363
+ db.prepare(`DELETE FROM memory_evidence WHERE record_id = ?`).run(recordId);
364
+ for (const item of evidence) upsertMemoryEvidenceRow(db, {
365
+ recordId,
366
+ sourceItemId: item.sourceItemId,
367
+ relation: item.relation,
368
+ excerpt: item.sourceText,
369
+ confidence: item.confidence,
370
+ observedAt: item.observedAt,
371
+ sessionKey: item.sessionKey,
372
+ turnId: item.turnId,
373
+ toolCallId: item.toolCallId,
374
+ nowMs
375
+ });
376
+ }
355
377
  function deleteMemoryEvidenceForRecord(recordId, relation) {
356
378
  return runSqliteWriteTransaction((db) => {
357
379
  const result = relation ? db.prepare(`DELETE FROM memory_evidence WHERE record_id = ? AND relation = ?`).run(recordId, relation) : db.prepare(`DELETE FROM memory_evidence WHERE record_id = ?`).run(recordId);
@@ -365,8 +387,34 @@ function listMemoryEvidence(recordId) {
365
387
  relation: row.relation,
366
388
  ...row.excerpt ? { sourceText: row.excerpt } : {},
367
389
  ...row.confidence != null ? { confidence: row.confidence } : {},
390
+ ...row.session_key ? { sessionKey: row.session_key } : {},
391
+ ...row.turn_id ? { turnId: row.turn_id } : {},
392
+ ...row.tool_call_id ? { toolCallId: row.tool_call_id } : {},
368
393
  ...timestampToIso(row.observed_at) ? { observedAt: timestampToIso(row.observed_at) } : {}
369
394
  }));
370
395
  }
396
+ function listMemoryEvidenceForRecords(recordIds) {
397
+ const uniqueIds = [...new Set(recordIds.filter(Boolean))];
398
+ const output = /* @__PURE__ */ new Map();
399
+ if (uniqueIds.length === 0) return output;
400
+ const placeholders = uniqueIds.map(() => "?").join(", ");
401
+ const rows = getSqliteDatabase().prepare(`SELECT * FROM memory_evidence WHERE record_id IN (${placeholders}) ORDER BY created_at ASC`).all(...uniqueIds);
402
+ for (const row of rows) {
403
+ const group = output.get(row.record_id) ?? [];
404
+ group.push({
405
+ evidenceId: row.evidence_id,
406
+ ...row.source_item_id ? { sourceItemId: row.source_item_id } : {},
407
+ relation: row.relation,
408
+ ...row.excerpt ? { sourceText: row.excerpt } : {},
409
+ ...row.confidence != null ? { confidence: row.confidence } : {},
410
+ ...row.session_key ? { sessionKey: row.session_key } : {},
411
+ ...row.turn_id ? { turnId: row.turn_id } : {},
412
+ ...row.tool_call_id ? { toolCallId: row.tool_call_id } : {},
413
+ ...timestampToIso(row.observed_at) ? { observedAt: timestampToIso(row.observed_at) } : {}
414
+ });
415
+ output.set(row.record_id, group);
416
+ }
417
+ return output;
418
+ }
371
419
  //#endregion
372
- export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
420
+ export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryEvidenceForRecords, pruneBoundedKnowledgeSourceItems, replaceMemoryEvidenceForRecord, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };