@xopcai/xopc 0.0.170 → 0.0.172

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 (242) 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-CkUp1qvf.js → activity-store-C3Y-bESI.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DDuem4HM.js → agent-avatar-dicebear-CPyev9P7.js} +1 -1
  5. package/dist/gateway/static/root/assets/agents-Bf_kK2Ay.js +2 -0
  6. package/dist/gateway/static/root/assets/{api-BnuPQhJW.js → api-B7qEr_Rw.js} +1 -1
  7. package/dist/gateway/static/root/assets/{app-management-settings-panel-DdZw8Hi1.js → app-management-settings-panel-Br_9-7fs.js} +1 -1
  8. package/dist/gateway/static/root/assets/{appearance-settings-BN8Vk2bX.js → appearance-settings-uyLcRPai.js} +1 -1
  9. package/dist/gateway/static/root/assets/apps-page-DXFCP5-1.js +1 -0
  10. package/dist/gateway/static/root/assets/{archive-plugin-C82MaDQj.js → archive-plugin-B19REnR5.js} +1 -1
  11. package/dist/gateway/static/root/assets/{attachment-load-uilrwSdW.js → attachment-load-DLWCC4Yi.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automation-suggestion-card-CkDZjAmy.js → automation-suggestion-card-ky5S5lly.js} +1 -1
  13. package/dist/gateway/static/root/assets/automations-page-D8pT1o2O.js +6 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-B7NTL0_T.js → binary-plugins-CtPEzLlo.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-D_LDNlB-.js → block-editor-CQVR4Xij.js} +32 -32
  16. package/dist/gateway/static/root/assets/browser-settings-page-Bav_skKN.js +8 -0
  17. package/dist/gateway/static/root/assets/{browser-workflow-inputs-UFVUzn4v.js → browser-workflow-inputs-CimCGbhq.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-workflows-page-CGgC0N92.js → browser-workflows-page-DewuCw3p.js} +2 -2
  19. package/dist/gateway/static/root/assets/capabilities-settings-panel-BHaYYo9E.js +7 -0
  20. package/dist/gateway/static/root/assets/{capability-presets-api-DUIorGUd.js → capability-presets-api-B5RTs-Az.js} +1 -1
  21. package/dist/gateway/static/root/assets/{capability-presets-settings-panel-PTz00nR4.js → capability-presets-settings-panel-BgchTh81.js} +1 -1
  22. package/dist/gateway/static/root/assets/{channel-recipient-api-BYwSB8c6.js → channel-recipient-api-Czu0YzIZ.js} +1 -1
  23. package/dist/gateway/static/root/assets/channels-settings-BP0e62wt.js +1 -0
  24. package/dist/gateway/static/root/assets/channels-status-swr-DBWKfeGe.js +1 -0
  25. package/dist/gateway/static/root/assets/connector-logo-Di3gnR_D.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-page-CC5kh0de.js +2 -0
  27. package/dist/gateway/static/root/assets/{desktop-pet-CkT98fPT.js → desktop-pet-D-ZUNHhn.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-settings-DkbIzdA3.js → desktop-pet-settings-C3L6AI8_.js} +1 -1
  29. package/dist/gateway/static/root/assets/{directory-picker-path-field-dBQvj1sG.js → directory-picker-path-field-Dvq4iG6P.js} +1 -1
  30. package/dist/gateway/static/root/assets/dreaming-settings-D9i54kWO.js +3 -0
  31. package/dist/gateway/static/root/assets/{extension-debug-page-BfxoIiNo.js → extension-debug-page-BecQjU0J.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-page-EIJ3wIb7.js → extension-page-BeVkPSm-.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-settings-page-DBBec51N.js → extension-settings-page-DMoo2mKx.js} +1 -1
  34. package/dist/gateway/static/root/assets/{gateway-config-api-4_u53Ufq.js → gateway-config-api-Bthb3_6v.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-settings-v9kJM59H.js → gateway-settings-Bh8nPvJQ.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-startup-retry-CXITih5d.js → gateway-startup-retry-D3USVm9D.js} +1 -1
  37. package/dist/gateway/static/root/assets/goal-create-dialog-Dp0AyDHI.js +1 -0
  38. package/dist/gateway/static/root/assets/goal-detail-page-CNt7nrdS.js +4 -0
  39. package/dist/gateway/static/root/assets/{goals-config-api-D54YQPon.js → goals-config-api-C_2QWBtb.js} +1 -1
  40. package/dist/gateway/static/root/assets/goals-page-Bm_NZFiZ.js +2 -0
  41. package/dist/gateway/static/root/assets/{goals-settings-DDezXaVi.js → goals-settings-DhL643tc.js} +1 -1
  42. package/dist/gateway/static/root/assets/{heartbeat-settings-CRsIUeZN.js → heartbeat-settings-COVFwp7C.js} +1 -1
  43. package/dist/gateway/static/root/assets/{image-generation-api-CY6cQUHL.js → image-generation-api-BNQlnwpU.js} +1 -1
  44. package/dist/gateway/static/root/assets/index-C_XSKOH6.css +1 -0
  45. package/dist/gateway/static/root/assets/{index-Dfq2laZe.js → index-DUasAutC.js} +67 -67
  46. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D9k7EDdY.js → keyboard-shortcuts-settings-DfdJRJVy.js} +1 -1
  47. package/dist/gateway/static/root/assets/local-app-workbench-page-DZwkD1co.js +2 -0
  48. package/dist/gateway/static/root/assets/{local-apps-page-DbaiBolh.js → local-apps-page-BvCPOgoi.js} +1 -1
  49. package/dist/gateway/static/root/assets/{locale-store-Dqp9H2Uf.js → locale-store-BP0vD37A.js} +1 -1
  50. package/dist/gateway/static/root/assets/{logs-page-DoCY0Mm9.js → logs-page-dNL0Y1dA.js} +3 -3
  51. package/dist/gateway/static/root/assets/{markdown-split-BGlQR-Be.js → markdown-split-YO1rDk9m.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-BpaeV6f_.js → media-plugins-CU_RRf-q.js} +1 -1
  53. package/dist/gateway/static/root/assets/messages-BWtP5TFz.js +3 -0
  54. package/dist/gateway/static/root/assets/{notes-page-Cd2HpciM.js → notes-page-CeFiOK3S.js} +1 -1
  55. package/dist/gateway/static/root/assets/notes-workbench-B8MKxpZb.js +4 -0
  56. package/dist/gateway/static/root/assets/{page-tabs-DyimBUp_.js → page-tabs-tiHmRJUA.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-BKZulEYr.js → preview-open-alternatives-CU6XgaCz.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-Bjz9BxBY.js → product-open-page-Dn4_qor4.js} +1 -1
  59. package/dist/gateway/static/root/assets/project-detail-page-CWBuuX-S.js +1 -0
  60. package/dist/gateway/static/root/assets/projects-page-BJSsLsXH.js +1 -0
  61. package/dist/gateway/static/root/assets/remote-access-hub-DXJDb8vB.js +1 -0
  62. package/dist/gateway/static/root/assets/{save-bar-controls-BPTqb2_r.js → save-bar-controls-edDUIbXo.js} +1 -1
  63. package/dist/gateway/static/root/assets/{schedule-field-YN0D81Dk.js → schedule-field-DqJO_5Yb.js} +1 -1
  64. package/dist/gateway/static/root/assets/{schema-form-BmY5PSS2.js → schema-form-CMh0jzy5.js} +1 -1
  65. package/dist/gateway/static/root/assets/sessions-page-DeHpWgxM.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-advanced-gate-Cf-TEYUd.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-form-section-B-RhgD_p.js → settings-form-section-Bb0Bc3nJ.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DkPupX2B.js → settings-loading-skeleton-DQhADvz1.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-page-2QBMvaxj.js → settings-page-b0M5HukN.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-layout-CtrW-LD6.js → settings-page-layout-hvjtIjvh.js} +1 -1
  71. package/dist/gateway/static/root/assets/setup-status-panel-BFyfed_g.js +1 -0
  72. package/dist/gateway/static/root/assets/{share-preview-page-BezIW1n9.js → share-preview-page-rbeaOpTg.js} +1 -1
  73. package/dist/gateway/static/root/assets/shares-settings-CYnH9sTt.js +1 -0
  74. package/dist/gateway/static/root/assets/skill-reload-api-Cr8_m-jS.js +1 -0
  75. package/dist/gateway/static/root/assets/skills-page-Chtc1xDO.js +2 -0
  76. package/dist/gateway/static/root/assets/{system-settings-panel-WAFhKyAu.js → system-settings-panel-BHo_hgnL.js} +1 -1
  77. package/dist/gateway/static/root/assets/{theme-store-BiC0gIBa.js → theme-store-C3KnnjcU.js} +1 -1
  78. package/dist/gateway/static/root/assets/time-picker-D-G-uwVJ.js +1 -0
  79. package/dist/gateway/static/root/assets/{typed-models-lib-WAQO3F_8.js → typed-models-lib-DtRnG-YI.js} +1 -1
  80. package/dist/gateway/static/root/assets/{use-channel-catalog-CKlfsSeU.js → use-channel-catalog-CWWItX2g.js} +1 -1
  81. package/dist/gateway/static/root/assets/user-context-page-D7qMR26X.js +1 -0
  82. package/dist/gateway/static/root/assets/{voice-api-key-field-BAFHF0_v.js → voice-api-key-field-BTnltQHZ.js} +1 -1
  83. package/dist/gateway/static/root/assets/work-discovery-page-CpqFZze9.js +1 -0
  84. package/dist/gateway/static/root/assets/work-item-detail-page-t4dXpGC0.js +1 -0
  85. package/dist/gateway/static/root/assets/work-page-BXwDKiMZ.js +1 -0
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-1OP4HyvS.js → workflow-run-setup-panel-D7vKChFZ.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-Bos9HyqT.js +11 -0
  88. package/dist/gateway/static/root/index.html +7 -7
  89. package/dist/package.js +1 -1
  90. package/dist/src/agent/embedded/run-for-session.js +71 -24
  91. package/dist/src/agent/embedded/run-turn.js +68 -4
  92. package/dist/src/agent/inbound/inbound-loop.d.ts +0 -2
  93. package/dist/src/agent/inbound/inbound-loop.js +0 -2
  94. package/dist/src/agent/memory/builtin-provider.js +4 -4
  95. package/dist/src/agent/memory/compaction-planner.d.ts +16 -0
  96. package/dist/src/agent/memory/compaction-planner.js +152 -0
  97. package/dist/src/agent/memory/compaction-policy.d.ts +10 -0
  98. package/dist/src/agent/memory/compaction-policy.js +24 -0
  99. package/dist/src/agent/memory/compaction.d.ts +21 -22
  100. package/dist/src/agent/memory/compaction.js +220 -194
  101. package/dist/src/agent/memory/context-budget.d.ts +40 -0
  102. package/dist/src/agent/memory/context-budget.js +106 -0
  103. package/dist/src/agent/memory/manager.d.ts +4 -1
  104. package/dist/src/agent/memory/manager.js +8 -3
  105. package/dist/src/agent/memory/understanding/service.d.ts +2 -0
  106. package/dist/src/agent/memory/understanding/service.js +11 -9
  107. package/dist/src/agent/orchestration/context-overflow.d.ts +1 -0
  108. package/dist/src/agent/orchestration/context-overflow.js +19 -0
  109. package/dist/src/agent/orchestration/loop-guard.js +13 -9
  110. package/dist/src/agent/reply/post-compaction-context.d.ts +4 -0
  111. package/dist/src/agent/reply/post-compaction-context.js +5 -3
  112. package/dist/src/agent/service/process-direct-one-shot.js +1 -2
  113. package/dist/src/agent/service/process-direct-streaming.js +1 -2
  114. package/dist/src/agent/service.d.ts +1 -2
  115. package/dist/src/agent/service.js +16 -44
  116. package/dist/src/agent/session/session-inspector.js +10 -2
  117. package/dist/src/automations/domain/validation.d.ts +8 -8
  118. package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -1
  119. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  120. package/dist/src/config/schema.d.ts +17 -1
  121. package/dist/src/connectors/composio-sessions.d.ts +1 -0
  122. package/dist/src/connectors/composio-sessions.js +14 -5
  123. package/dist/src/connectors/composio-triggers.d.ts +1 -1
  124. package/dist/src/connectors/composio-triggers.js +4 -3
  125. package/dist/src/connectors/composio.js +1 -0
  126. package/dist/src/connectors/{connector-memory-sync.d.ts → connected-source-ingestion.d.ts} +11 -4
  127. package/dist/src/connectors/{connector-memory-sync.js → connected-source-ingestion.js} +49 -101
  128. package/dist/src/connectors/connected-source-normalizers.d.ts +15 -0
  129. package/dist/src/connectors/connected-source-normalizers.js +186 -0
  130. package/dist/src/connectors/connector-identity.d.ts +2 -0
  131. package/dist/src/connectors/connector-identity.js +29 -0
  132. package/dist/src/connectors/learning-coordinator.d.ts +25 -0
  133. package/dist/src/connectors/learning-coordinator.js +214 -0
  134. package/dist/src/connectors/learning-recipes.d.ts +22 -0
  135. package/dist/src/connectors/learning-recipes.js +121 -0
  136. package/dist/src/connectors/runtime-status.d.ts +1 -8
  137. package/dist/src/connectors/runtime-status.js +4 -29
  138. package/dist/src/gateway/hono/lib/config-payload.d.ts +23 -0
  139. package/dist/src/gateway/hono/lib/config-payload.js +3 -0
  140. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  141. package/dist/src/gateway/hono/routes/config-patch/misc.js +28 -0
  142. package/dist/src/gateway/hono/routes/connectors.js +76 -118
  143. package/dist/src/gateway/hono/routes/models.js +24 -0
  144. package/dist/src/gateway/hono/routes/public-gateway.js +3 -2
  145. package/dist/src/gateway/hono/routes/sessions.js +17 -42
  146. package/dist/src/gateway/hono/routes/you.js +86 -5
  147. package/dist/src/gateway/service/sessions-api.d.ts +2 -3
  148. package/dist/src/gateway/service/sessions-api.js +4 -7
  149. package/dist/src/gateway/service.d.ts +5 -2
  150. package/dist/src/gateway/service.js +16 -11
  151. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +19 -0
  152. package/dist/src/knowledge/connected-understanding-pipeline.js +268 -0
  153. package/dist/src/knowledge/index.d.ts +1 -0
  154. package/dist/src/knowledge/index.js +2 -1
  155. package/dist/src/knowledge/ingestion-service.d.ts +6 -4
  156. package/dist/src/knowledge/ingestion-service.js +13 -10
  157. package/dist/src/knowledge/local-folder-adapter.js +1 -0
  158. package/dist/src/knowledge/people-graph.js +43 -110
  159. package/dist/src/knowledge/types.d.ts +3 -0
  160. package/dist/src/providers/xopc-cloud-account-service.d.ts +40 -0
  161. package/dist/src/providers/xopc-cloud-account-service.js +65 -0
  162. package/dist/src/session/index.d.ts +1 -2
  163. package/dist/src/session/index.js +1 -2
  164. package/dist/src/session/init-session-turn.d.ts +0 -1
  165. package/dist/src/session/init-session-turn.js +1 -2
  166. package/dist/src/session/manager.d.ts +11 -17
  167. package/dist/src/session/manager.js +11 -14
  168. package/dist/src/session/session-context-for-llm.d.ts +19 -1
  169. package/dist/src/session/session-context-for-llm.js +87 -129
  170. package/dist/src/session/store.d.ts +28 -23
  171. package/dist/src/session/store.js +94 -83
  172. package/dist/src/session/transcript-format.d.ts +2 -8
  173. package/dist/src/session/types.d.ts +8 -6
  174. package/dist/src/session/user-round-delete.d.ts +3 -6
  175. package/dist/src/session/user-round-delete.js +12 -16
  176. package/dist/src/storage/sqlite/connector-learning-repository.d.ts +47 -0
  177. package/dist/src/storage/sqlite/connector-learning-repository.js +110 -0
  178. package/dist/src/storage/sqlite/index.d.ts +4 -2
  179. package/dist/src/storage/sqlite/index.js +5 -3
  180. package/dist/src/storage/sqlite/knowledge-repository.d.ts +4 -2
  181. package/dist/src/storage/sqlite/knowledge-repository.js +24 -13
  182. package/dist/src/storage/sqlite/migrations/060_remove_runtime_transcript_messages.sql +45 -0
  183. package/dist/src/storage/sqlite/migrations/061_drop_compaction_checkpoints.sql +2 -0
  184. package/dist/src/storage/sqlite/migrations/062_connector_learning_jobs.sql +27 -0
  185. package/dist/src/storage/sqlite/migrations/063_knowledge_collection_scopes.sql +14 -0
  186. package/dist/src/storage/sqlite/migrations/064_user_claims.sql +60 -0
  187. package/dist/src/storage/sqlite/migrations/065_knowledge_item_scope_identity.sql +116 -0
  188. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  189. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  190. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  191. package/dist/src/storage/sqlite/schema.js +1 -1
  192. package/dist/src/storage/sqlite/schema.sql +0 -19
  193. package/dist/src/storage/sqlite/transcript-repository.d.ts +6 -11
  194. package/dist/src/storage/sqlite/transcript-repository.js +90 -84
  195. package/dist/src/storage/sqlite/user-claims-repository.d.ts +101 -0
  196. package/dist/src/storage/sqlite/user-claims-repository.js +241 -0
  197. package/dist/src/user-context/config.d.ts +67 -2
  198. package/dist/src/user-context/config.js +36 -3
  199. package/dist/src/user-context/projection.d.ts +36 -1
  200. package/dist/src/user-context/projection.js +84 -6
  201. package/dist/src/work-discovery/service.js +1 -0
  202. package/package.json +1 -1
  203. package/dist/gateway/static/root/assets/agents-BiaQhiQp.js +0 -2
  204. package/dist/gateway/static/root/assets/apps-page-CuL8Q4yF.js +0 -1
  205. package/dist/gateway/static/root/assets/automations-page-TZOluRNp.js +0 -6
  206. package/dist/gateway/static/root/assets/browser-settings-page-C-l6O68Z.js +0 -8
  207. package/dist/gateway/static/root/assets/capabilities-settings-panel-BW8c0xPp.js +0 -7
  208. package/dist/gateway/static/root/assets/channels-settings-h9CsE0GT.js +0 -1
  209. package/dist/gateway/static/root/assets/channels-status-swr-C058Mcfr.js +0 -1
  210. package/dist/gateway/static/root/assets/connector-logo-CsbegNqi.js +0 -1
  211. package/dist/gateway/static/root/assets/connectors-page-BWALafGW.js +0 -2
  212. package/dist/gateway/static/root/assets/dreaming-settings-DkdnKMZx.js +0 -3
  213. package/dist/gateway/static/root/assets/goal-create-dialog-y2Y3p7_k.js +0 -1
  214. package/dist/gateway/static/root/assets/goal-detail-page-DuzL-alv.js +0 -4
  215. package/dist/gateway/static/root/assets/goals-page-OeLtfKI2.js +0 -2
  216. package/dist/gateway/static/root/assets/index-o4uaOGKT.css +0 -1
  217. package/dist/gateway/static/root/assets/local-app-workbench-page-3ssYIEK6.js +0 -2
  218. package/dist/gateway/static/root/assets/messages-KEk-hTFt.js +0 -3
  219. package/dist/gateway/static/root/assets/notes-workbench-CatZNAPc.js +0 -4
  220. package/dist/gateway/static/root/assets/project-detail-page-DJUOgqm4.js +0 -1
  221. package/dist/gateway/static/root/assets/projects-page-BQQAD_nu.js +0 -1
  222. package/dist/gateway/static/root/assets/remote-access-hub-fIGXTTnA.js +0 -1
  223. package/dist/gateway/static/root/assets/sessions-page-BuU-8FCe.js +0 -1
  224. package/dist/gateway/static/root/assets/settings-advanced-gate-DlKoeZm3.js +0 -1
  225. package/dist/gateway/static/root/assets/setup-status-panel-BSUcDFnb.js +0 -1
  226. package/dist/gateway/static/root/assets/shares-settings-Bk2-SwGJ.js +0 -1
  227. package/dist/gateway/static/root/assets/skill-reload-api-e_Fx1kVC.js +0 -1
  228. package/dist/gateway/static/root/assets/skills-page-D_cCADfj.js +0 -2
  229. package/dist/gateway/static/root/assets/time-picker-fqRXpNJV.js +0 -1
  230. package/dist/gateway/static/root/assets/user-context-page-9Ov4htPW.js +0 -1
  231. package/dist/gateway/static/root/assets/work-discovery-page-DGN2FxWv.js +0 -1
  232. package/dist/gateway/static/root/assets/work-item-detail-page-HmyWSgUo.js +0 -1
  233. package/dist/gateway/static/root/assets/work-page-D3iKVjFq.js +0 -1
  234. package/dist/gateway/static/root/assets/workflows-page-B5L4SFw4.js +0 -11
  235. package/dist/src/agent/lifecycle/handlers/compaction.d.ts +0 -13
  236. package/dist/src/agent/lifecycle/handlers/compaction.js +0 -18
  237. package/dist/src/connectors/memory-sync-coordinator.d.ts +0 -28
  238. package/dist/src/connectors/memory-sync-coordinator.js +0 -162
  239. package/dist/src/connectors/memory-sync-profile.d.ts +0 -13
  240. package/dist/src/connectors/memory-sync-profile.js +0 -73
  241. package/dist/src/session/compaction-checkpoints.d.ts +0 -8
  242. package/dist/src/session/compaction-checkpoints.js +0 -19
@@ -5,6 +5,8 @@ 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 { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, removeUserClaimEvidenceForSource, reinforceUserClaim, resolveUserEntity, setUserClaimDecision, type UserClaim, type UserClaimClass, type UserClaimState, type UserEntity, } from './user-claims-repository.js';
9
+ export { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob, type ConnectorLearningJob, type ConnectorLearningMode, type ConnectorLearningPhase, type ConnectorLearningStatus, } from './connector-learning-repository.js';
8
10
  export { appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory, COMPOSER_INPUT_HISTORY_LIMIT, type ComposerInputHistoryItem, } from './composer-input-history-repository.js';
9
11
  export { getInteractionState, setInteractionState, updateInteractionStateFromMessage, type InteractionState, } from './interaction-state-repository.js';
10
12
  export { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings, type RelationshipSettings, type SupportMode, } from './relationship-settings-repository.js';
@@ -12,12 +14,12 @@ export { completeTaskOutcome, findTaskOutcomeForAssistant, getTaskOutcome, listT
12
14
  export { buildDefaultSessionMetadata, type SessionMetadataSeed, } from './session-metadata.js';
13
15
  export { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow, type SessionConfigRow, type SessionRow, type TranscriptEntryRow, } from './row-mappers.js';
14
16
  export { deleteSessionRecord, ensureSessionRecord, getCurrentSessionId, getGlobalSessionStats, findSessionKeyBySessionId, getSessionPersistedLevels, getSessionMetadata, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats, } from './session-repository.js';
15
- export { appendTranscriptEntry, captureCompactionCheckpoint, getCompactionCheckpointDetail, listCompactionCheckpoints, loadCheckpointRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreCompactionCheckpoint, } from './transcript-repository.js';
17
+ export { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, } from './transcript-repository.js';
16
18
  export { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord, } from './notes-repository.js';
17
19
  export { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord, type NoteAgentContextRecord, } from './note-agent-context-repository.js';
18
20
  export { searchMemoryIndex, syncMemoryIndex, type MemorySearchHit, } from './memory-index-repository.js';
19
21
  export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLatestMemoryInjectTrace, getMemoryProviderState, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryTraceFeedback, setLatestMemoryInjectFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, USER_UNDERSTANDING_REMEDIATION_POLICY, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type FindLatestMemoryInjectTraceInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemoryFeedbackRemediationResult, type MemorySignalRowPayload, type MemoryTraceFeedback, type MemoryTraceEventPayload, type UserUnderstandingQualityMetrics, type SearchMemoryRecordsOptions, type SetMemoryTraceFeedbackInput, type SetLatestMemoryInjectFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
20
- export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
22
+ export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
21
23
  export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
22
24
  export { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
23
25
  export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
@@ -6,6 +6,8 @@ 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 { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, reinforceUserClaim, removeUserClaimEvidenceForSource, resolveUserEntity, setUserClaimDecision } from "./user-claims-repository.js";
10
+ import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
9
11
  import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory } from "./composer-input-history-repository.js";
10
12
  import { getInteractionState, setInteractionState, updateInteractionStateFromMessage } from "./interaction-state-repository.js";
11
13
  import { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings } from "./relationship-settings-repository.js";
@@ -13,16 +15,16 @@ import { completeTaskOutcome, findTaskOutcomeForAssistant, getTaskOutcome, listT
13
15
  import { buildDefaultSessionMetadata } from "./session-metadata.js";
14
16
  import { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow } from "./row-mappers.js";
15
17
  import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getCurrentSessionId, getGlobalSessionStats, getSessionMetadata, getSessionPersistedLevels, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
16
- import { appendTranscriptEntry, captureCompactionCheckpoint, getCompactionCheckpointDetail, listCompactionCheckpoints, loadCheckpointRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreCompactionCheckpoint } from "./transcript-repository.js";
18
+ import { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary } from "./transcript-repository.js";
17
19
  import { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord } from "./notes-repository.js";
18
20
  import { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord } from "./note-agent-context-repository.js";
19
21
  import { searchMemoryIndex, syncMemoryIndex } from "./memory-index-repository.js";
20
22
  import { USER_UNDERSTANDING_REMEDIATION_POLICY, appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLatestMemoryInjectTrace, getMemoryProviderState, getMemoryRecord, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, upsertMemoryRecord } from "./memory-records-repository.js";
21
- import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
23
+ import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
22
24
  import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "./config-repository.js";
23
25
  import { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
24
26
  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";
25
27
  import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
26
28
  import { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent } from "./memory-reference-consent-repository.js";
27
29
  import { getUserProfilePromptState, setUserProfilePromptState } from "./user-profile-setup-repository.js";
28
- 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, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, captureCompactionCheckpoint, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, completeTaskOutcome, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, findTaskOutcomeForAssistant, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getCompactionCheckpointDetail, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getTaskOutcome, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isProactiveSupportAllowed, isXopcDatabaseOpen, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionCheckpoints, listComposerInputHistory, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskOutcomes, loadCheckpointRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveXopcDatabasePath, restoreCompactionCheckpoint, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setTaskOutcomeFeedback, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, startTaskOutcome, summarizeMemoryRecallFeedback, summarizeTaskOutcomes, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateTaskOutcome, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
30
+ 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, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, completeTaskOutcome, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, findTaskOutcomeForAssistant, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getTaskOutcome, getUserClaim, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isProactiveSupportAllowed, isXopcDatabaseOpen, linkUserClaimMemoryRecord, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionBoundaries, listComposerInputHistory, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskOutcomes, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, recoverStaleConnectorLearningJobs, reinforceUserClaim, releaseConnectorWebhookDelivery, removeUserClaimEvidenceForSource, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveUserEntity, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setTaskOutcomeFeedback, setUserClaimDecision, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, startTaskOutcome, summarizeMemoryRecallFeedback, summarizeTaskOutcomes, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateTaskOutcome, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
@@ -21,8 +21,8 @@ export declare function listKnowledgeSyncRuns(options?: {
21
21
  status?: KnowledgeSyncRunStatus;
22
22
  limit?: number;
23
23
  }): KnowledgeSyncRun[];
24
- export declare function getKnowledgeSourceCursor(sourceInstanceId: string): string | undefined;
25
- export declare function setKnowledgeSourceCursor(sourceInstanceId: string, cursor: string | undefined): void;
24
+ export declare function getKnowledgeSourceCursor(sourceInstanceId: string, collectionScope: string): string | undefined;
25
+ export declare function setKnowledgeSourceCursor(sourceInstanceId: string, collectionScope: string, cursor: string | undefined): void;
26
26
  export declare function upsertKnowledgeSourceItems(inputs: KnowledgeSourceItemInput[], nowMs?: number): {
27
27
  items: KnowledgeSourceItem[];
28
28
  created: number;
@@ -39,12 +39,14 @@ export declare function getKnowledgeConsumerWatermark(consumerId: string, source
39
39
  export declare function setKnowledgeConsumerWatermark(consumerId: string, sourceInstanceId: string, sequence: number, nowMs?: number): void;
40
40
  export declare function listKnowledgeSourceItems(options?: {
41
41
  sourceInstanceId?: string;
42
+ collectionScope?: string;
42
43
  itemType?: string;
43
44
  synthesisStatus?: KnowledgeSynthesisStatus;
44
45
  includeDeleted?: boolean;
45
46
  limit?: number;
46
47
  offset?: number;
47
48
  }): KnowledgeSourceItem[];
49
+ export declare function pruneBoundedKnowledgeSourceItems(sourceInstanceId: string, olderThanMs: number): number;
48
50
  export declare function setKnowledgeSourceItemSynthesisStatus(itemIds: string[], status: KnowledgeSynthesisStatus, nowMs?: number): number;
49
51
  export declare function claimKnowledgeSourceItems(options: {
50
52
  workerId: string;
@@ -29,6 +29,7 @@ function sourceItemFromRow(row) {
29
29
  return {
30
30
  id: row.item_id,
31
31
  sourceInstanceId: row.source_instance_id,
32
+ collectionScope: row.collection_scope,
32
33
  externalId: row.external_id,
33
34
  itemType: row.item_type,
34
35
  ...row.author_role ? { authorRole: row.author_role } : {},
@@ -127,16 +128,16 @@ function listKnowledgeSyncRuns(options = {}) {
127
128
  ${where.length > 0 ? `WHERE ${where.join(" AND ")}` : ""}
128
129
  ORDER BY started_at DESC LIMIT ?`).all(...params, limit).map(syncRunFromRow);
129
130
  }
130
- function getKnowledgeSourceCursor(sourceInstanceId) {
131
- return getSqliteDatabase().prepare(`SELECT cursor FROM knowledge_source_state WHERE source_instance_id = ?`).get(sourceInstanceId)?.cursor ?? void 0;
131
+ function getKnowledgeSourceCursor(sourceInstanceId, collectionScope) {
132
+ return getSqliteDatabase().prepare(`SELECT cursor FROM knowledge_collection_state WHERE source_instance_id = ? AND collection_scope = ?`).get(sourceInstanceId, collectionScope)?.cursor ?? void 0;
132
133
  }
133
- function setKnowledgeSourceCursor(sourceInstanceId, cursor) {
134
+ function setKnowledgeSourceCursor(sourceInstanceId, collectionScope, cursor) {
134
135
  runSqliteWriteTransaction((db) => {
135
- db.prepare(`INSERT INTO knowledge_source_state (source_instance_id, cursor, updated_at)
136
- VALUES (?, ?, ?)
137
- ON CONFLICT(source_instance_id) DO UPDATE SET
136
+ db.prepare(`INSERT INTO knowledge_collection_state (source_instance_id, collection_scope, cursor, updated_at)
137
+ VALUES (?, ?, ?, ?)
138
+ ON CONFLICT(source_instance_id, collection_scope) DO UPDATE SET
138
139
  cursor = excluded.cursor,
139
- updated_at = excluded.updated_at`).run(sourceInstanceId, cursor ?? null, Date.now());
140
+ updated_at = excluded.updated_at`).run(sourceInstanceId, collectionScope, cursor ?? null, Date.now());
140
141
  });
141
142
  }
142
143
  function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
@@ -147,7 +148,7 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
147
148
  let unchanged = 0;
148
149
  for (const input of inputs) {
149
150
  const existing = db.prepare(`SELECT * FROM knowledge_source_items
150
- WHERE source_instance_id = ? AND external_id = ?`).get(input.sourceInstanceId, input.externalId);
151
+ WHERE source_instance_id = ? AND collection_scope = ? AND external_id = ?`).get(input.sourceInstanceId, input.collectionScope, input.externalId);
151
152
  const id = existing?.item_id ?? input.id ?? randomUUID();
152
153
  if (existing?.content_hash === input.contentHash && existing.deleted_at === parseTimestamp(input.deletedAt)) {
153
154
  unchanged += 1;
@@ -155,13 +156,14 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
155
156
  continue;
156
157
  }
157
158
  db.prepare(`INSERT INTO knowledge_source_items (
158
- item_id, source_instance_id, external_id, item_type, author_role,
159
+ item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
159
160
  occurred_at, source_updated_at, content_hash, normalized_text,
160
161
  payload_ref, metadata_json, sensitivity, retention_class,
161
162
  synthesis_pipeline, synthesis_status, deleted_at, created_at, updated_at
162
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
163
- ON CONFLICT(source_instance_id, external_id) DO UPDATE SET
163
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
164
+ ON CONFLICT(source_instance_id, collection_scope, external_id) DO UPDATE SET
164
165
  item_type = excluded.item_type,
166
+ collection_scope = excluded.collection_scope,
165
167
  author_role = excluded.author_role,
166
168
  occurred_at = excluded.occurred_at,
167
169
  source_updated_at = excluded.source_updated_at,
@@ -178,7 +180,7 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
178
180
  synthesis_claimed_by = NULL,
179
181
  synthesis_error = NULL,
180
182
  deleted_at = excluded.deleted_at,
181
- updated_at = excluded.updated_at`).run(id, input.sourceInstanceId, input.externalId, input.itemType, input.authorRole ?? null, parseTimestamp(input.occurredAt), parseTimestamp(input.sourceUpdatedAt), input.contentHash, input.normalizedText ?? null, input.payloadRef ?? null, JSON.stringify(input.metadata ?? {}), input.sensitivity ?? "normal", input.retentionClass ?? "bounded", input.synthesisPipeline ?? "user_understanding", input.synthesisStatus ?? "pending", parseTimestamp(input.deletedAt), existing?.created_at ?? nowMs, nowMs);
183
+ updated_at = excluded.updated_at`).run(id, input.sourceInstanceId, input.collectionScope, input.externalId, input.itemType, input.authorRole ?? null, parseTimestamp(input.occurredAt), parseTimestamp(input.sourceUpdatedAt), input.contentHash, input.normalizedText ?? null, input.payloadRef ?? null, JSON.stringify(input.metadata ?? {}), input.sensitivity ?? "normal", input.retentionClass ?? "bounded", input.synthesisPipeline ?? "user_understanding", input.synthesisStatus ?? "pending", parseTimestamp(input.deletedAt), existing?.created_at ?? nowMs, nowMs);
182
184
  const row = db.prepare(`SELECT * FROM knowledge_source_items WHERE item_id = ?`).get(id);
183
185
  items.push(sourceItemFromRow(row));
184
186
  const changeKind = input.deletedAt ? "deleted" : existing ? "modified" : "added";
@@ -238,6 +240,10 @@ function listKnowledgeSourceItems(options = {}) {
238
240
  where.push("source_instance_id = ?");
239
241
  params.push(options.sourceInstanceId);
240
242
  }
243
+ if (options.collectionScope) {
244
+ where.push("collection_scope = ?");
245
+ params.push(options.collectionScope);
246
+ }
241
247
  if (options.itemType) {
242
248
  where.push("item_type = ?");
243
249
  params.push(options.itemType);
@@ -254,6 +260,11 @@ function listKnowledgeSourceItems(options = {}) {
254
260
  ORDER BY COALESCE(source_updated_at, occurred_at, updated_at) DESC
255
261
  LIMIT ? OFFSET ?`).all(...params, limit, offset).map(sourceItemFromRow);
256
262
  }
263
+ function pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs) {
264
+ return runSqliteWriteTransaction((db) => Number(db.prepare(`DELETE FROM knowledge_source_items
265
+ WHERE source_instance_id = ? AND retention_class = 'bounded'
266
+ AND COALESCE(source_updated_at, occurred_at, updated_at) < ?`).run(sourceInstanceId, olderThanMs).changes));
267
+ }
257
268
  function setKnowledgeSourceItemSynthesisStatus(itemIds, status, nowMs = Date.now()) {
258
269
  if (itemIds.length === 0) return 0;
259
270
  return runSqliteWriteTransaction((db) => {
@@ -350,4 +361,4 @@ function listMemoryEvidence(recordId) {
350
361
  }));
351
362
  }
352
363
  //#endregion
353
- export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
364
+ export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
@@ -0,0 +1,45 @@
1
+ CREATE TEMP TABLE xopc_runtime_transcript_cleanup_sessions (
2
+ session_id TEXT PRIMARY KEY
3
+ );
4
+
5
+ INSERT INTO xopc_runtime_transcript_cleanup_sessions (session_id)
6
+ SELECT DISTINCT session_id
7
+ FROM transcript_entries
8
+ WHERE entry_kind = 'message'
9
+ AND json_extract(payload_json, '$.droppable') = 1;
10
+
11
+ DELETE FROM transcript_fts
12
+ WHERE entry_id IN (
13
+ SELECT entry_id
14
+ FROM transcript_entries
15
+ WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions)
16
+ AND (
17
+ json_extract(payload_json, '$.droppable') = 1
18
+ OR json_extract(payload_json, '$.type') = 'compaction'
19
+ )
20
+ );
21
+
22
+ DELETE FROM transcript_entries
23
+ WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions)
24
+ AND (
25
+ json_extract(payload_json, '$.droppable') = 1
26
+ OR json_extract(payload_json, '$.type') = 'compaction'
27
+ );
28
+
29
+ UPDATE sessions
30
+ SET
31
+ message_count = (
32
+ SELECT COUNT(*)
33
+ FROM transcript_entries e
34
+ WHERE e.session_id = sessions.session_id
35
+ AND e.entry_kind = 'message'
36
+ ),
37
+ estimated_tokens = (
38
+ SELECT COALESCE(SUM((length(COALESCE(json_extract(e.payload_json, '$.content'), '')) + 3) / 4), 0)
39
+ FROM transcript_entries e
40
+ WHERE e.session_id = sessions.session_id
41
+ AND e.entry_kind = 'message'
42
+ )
43
+ WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions);
44
+
45
+ DROP TABLE xopc_runtime_transcript_cleanup_sessions;
@@ -0,0 +1,2 @@
1
+ DROP TABLE IF EXISTS checkpoint_entries;
2
+ DROP TABLE IF EXISTS compaction_checkpoints;
@@ -0,0 +1,27 @@
1
+ CREATE TABLE connector_learning_jobs (
2
+ job_id TEXT PRIMARY KEY,
3
+ idempotency_key TEXT NOT NULL UNIQUE,
4
+ connector_id TEXT NOT NULL,
5
+ connection_id TEXT NOT NULL,
6
+ source_instance_id TEXT NOT NULL,
7
+ agent_id TEXT NOT NULL,
8
+ mode TEXT NOT NULL CHECK(mode IN ('bootstrap', 'incremental')),
9
+ status TEXT NOT NULL CHECK(status IN ('queued', 'running', 'completed', 'failed', 'paused')),
10
+ phase TEXT NOT NULL CHECK(phase IN ('queued', 'fetching', 'indexing', 'deriving', 'completed')),
11
+ items_discovered INTEGER NOT NULL DEFAULT 0,
12
+ items_indexed INTEGER NOT NULL DEFAULT 0,
13
+ candidates_created INTEGER NOT NULL DEFAULT 0,
14
+ attempt_count INTEGER NOT NULL DEFAULT 0,
15
+ error TEXT,
16
+ next_run_at INTEGER,
17
+ started_at INTEGER,
18
+ finished_at INTEGER,
19
+ created_at INTEGER NOT NULL,
20
+ updated_at INTEGER NOT NULL,
21
+ FOREIGN KEY(connection_id) REFERENCES connector_connections(id) ON DELETE CASCADE
22
+ );
23
+
24
+ CREATE INDEX idx_connector_learning_jobs_due
25
+ ON connector_learning_jobs(status, next_run_at, created_at);
26
+ CREATE INDEX idx_connector_learning_jobs_source
27
+ ON connector_learning_jobs(source_instance_id, created_at DESC);
@@ -0,0 +1,14 @@
1
+ ALTER TABLE knowledge_source_items ADD COLUMN collection_scope TEXT NOT NULL DEFAULT 'primary';
2
+
3
+ DROP TABLE knowledge_source_state;
4
+
5
+ CREATE TABLE knowledge_collection_state (
6
+ source_instance_id TEXT NOT NULL,
7
+ collection_scope TEXT NOT NULL,
8
+ cursor TEXT,
9
+ updated_at INTEGER NOT NULL,
10
+ PRIMARY KEY(source_instance_id, collection_scope)
11
+ );
12
+
13
+ CREATE INDEX idx_knowledge_source_items_collection
14
+ ON knowledge_source_items(source_instance_id, collection_scope, updated_at DESC);
@@ -0,0 +1,60 @@
1
+ CREATE TABLE user_entities (
2
+ entity_id TEXT PRIMARY KEY,
3
+ entity_type TEXT NOT NULL CHECK(entity_type IN ('person', 'project', 'organization')),
4
+ canonical_label TEXT NOT NULL,
5
+ created_at INTEGER NOT NULL,
6
+ updated_at INTEGER NOT NULL
7
+ );
8
+
9
+ CREATE TABLE user_entity_handles (
10
+ entity_id TEXT NOT NULL,
11
+ handle_type TEXT NOT NULL CHECK(handle_type IN ('email', 'provider_user', 'display_name')),
12
+ normalized_value TEXT NOT NULL,
13
+ source_scope TEXT NOT NULL,
14
+ verified INTEGER NOT NULL CHECK(verified IN (0, 1)),
15
+ created_at INTEGER NOT NULL,
16
+ PRIMARY KEY(handle_type, normalized_value, source_scope),
17
+ FOREIGN KEY(entity_id) REFERENCES user_entities(entity_id) ON DELETE CASCADE
18
+ );
19
+
20
+ CREATE INDEX idx_user_entity_handles_entity ON user_entity_handles(entity_id);
21
+
22
+ CREATE TABLE user_claims (
23
+ claim_id TEXT PRIMARY KEY,
24
+ agent_id TEXT NOT NULL,
25
+ claim_class TEXT NOT NULL CHECK(claim_class IN ('relationship', 'project', 'routine')),
26
+ claim_key TEXT NOT NULL,
27
+ subject_entity_id TEXT,
28
+ value_json TEXT NOT NULL,
29
+ state TEXT NOT NULL CHECK(state IN ('provisional', 'active', 'rejected', 'stale')),
30
+ user_state TEXT NOT NULL CHECK(user_state IN ('auto', 'confirmed', 'rejected')),
31
+ confidence REAL NOT NULL,
32
+ independent_evidence_count INTEGER NOT NULL,
33
+ active_day_count INTEGER NOT NULL,
34
+ first_observed_at INTEGER NOT NULL,
35
+ last_reinforced_at INTEGER NOT NULL,
36
+ memory_record_id TEXT,
37
+ created_at INTEGER NOT NULL,
38
+ updated_at INTEGER NOT NULL,
39
+ UNIQUE(agent_id, claim_class, claim_key),
40
+ FOREIGN KEY(subject_entity_id) REFERENCES user_entities(entity_id) ON DELETE SET NULL,
41
+ FOREIGN KEY(memory_record_id) REFERENCES memory_records(record_id) ON DELETE SET NULL
42
+ );
43
+
44
+ CREATE INDEX idx_user_claims_agent_state
45
+ ON user_claims(agent_id, state, confidence DESC, last_reinforced_at DESC);
46
+
47
+ CREATE TABLE user_claim_evidence (
48
+ claim_id TEXT NOT NULL,
49
+ logical_event_key TEXT NOT NULL,
50
+ source_item_id TEXT NOT NULL,
51
+ source_instance_id TEXT NOT NULL,
52
+ relation TEXT NOT NULL CHECK(relation IN ('supports', 'contradicts')),
53
+ observed_at INTEGER NOT NULL,
54
+ created_at INTEGER NOT NULL,
55
+ PRIMARY KEY(claim_id, logical_event_key),
56
+ FOREIGN KEY(claim_id) REFERENCES user_claims(claim_id) ON DELETE CASCADE,
57
+ FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
58
+ );
59
+
60
+ CREATE INDEX idx_user_claim_evidence_source ON user_claim_evidence(source_item_id);
@@ -0,0 +1,116 @@
1
+ CREATE TABLE memory_evidence_backup AS SELECT * FROM memory_evidence;
2
+ CREATE TABLE knowledge_source_changes_backup AS SELECT * FROM knowledge_source_changes;
3
+ CREATE TABLE user_claim_evidence_backup AS SELECT * FROM user_claim_evidence;
4
+
5
+ DROP TABLE memory_evidence;
6
+ DROP TABLE knowledge_source_changes;
7
+ DROP TABLE user_claim_evidence;
8
+
9
+ CREATE TABLE knowledge_source_items_v65 (
10
+ item_id TEXT PRIMARY KEY,
11
+ source_instance_id TEXT NOT NULL,
12
+ collection_scope TEXT NOT NULL,
13
+ external_id TEXT NOT NULL,
14
+ item_type TEXT NOT NULL,
15
+ author_role TEXT,
16
+ occurred_at INTEGER,
17
+ source_updated_at INTEGER,
18
+ content_hash TEXT NOT NULL,
19
+ normalized_text TEXT,
20
+ payload_ref TEXT,
21
+ metadata_json TEXT NOT NULL DEFAULT '{}',
22
+ sensitivity TEXT NOT NULL DEFAULT 'normal',
23
+ retention_class TEXT NOT NULL DEFAULT 'bounded',
24
+ synthesis_status TEXT NOT NULL DEFAULT 'pending',
25
+ synthesis_pipeline TEXT NOT NULL DEFAULT 'user_understanding'
26
+ CHECK(synthesis_pipeline IN ('user_understanding', 'connected_knowledge')),
27
+ synthesis_attempts INTEGER NOT NULL DEFAULT 0,
28
+ synthesis_claimed_at INTEGER,
29
+ synthesis_claimed_by TEXT,
30
+ synthesis_error TEXT,
31
+ deleted_at INTEGER,
32
+ created_at INTEGER NOT NULL,
33
+ updated_at INTEGER NOT NULL,
34
+ UNIQUE(source_instance_id, collection_scope, external_id)
35
+ );
36
+
37
+ INSERT INTO knowledge_source_items_v65 (
38
+ item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
39
+ occurred_at, source_updated_at, content_hash, normalized_text, payload_ref, metadata_json,
40
+ sensitivity, retention_class, synthesis_status, synthesis_pipeline, synthesis_attempts,
41
+ synthesis_claimed_at, synthesis_claimed_by, synthesis_error, deleted_at, created_at, updated_at
42
+ )
43
+ SELECT
44
+ item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
45
+ occurred_at, source_updated_at, content_hash, normalized_text, payload_ref, metadata_json,
46
+ sensitivity, retention_class, synthesis_status, synthesis_pipeline, synthesis_attempts,
47
+ synthesis_claimed_at, synthesis_claimed_by, synthesis_error, deleted_at, created_at, updated_at
48
+ FROM knowledge_source_items;
49
+
50
+ DROP TABLE knowledge_source_items;
51
+ ALTER TABLE knowledge_source_items_v65 RENAME TO knowledge_source_items;
52
+
53
+ CREATE INDEX idx_knowledge_source_items_source_updated
54
+ ON knowledge_source_items(source_instance_id, updated_at DESC);
55
+ CREATE INDEX idx_knowledge_source_items_synthesis
56
+ ON knowledge_source_items(synthesis_status, updated_at);
57
+ CREATE INDEX idx_knowledge_source_items_hash
58
+ ON knowledge_source_items(content_hash);
59
+ CREATE INDEX idx_knowledge_source_items_synthesis_lease
60
+ ON knowledge_source_items(synthesis_pipeline, synthesis_status, synthesis_claimed_at, updated_at);
61
+ CREATE INDEX idx_knowledge_source_items_collection
62
+ ON knowledge_source_items(source_instance_id, collection_scope, updated_at DESC);
63
+
64
+ CREATE TABLE memory_evidence (
65
+ evidence_id TEXT PRIMARY KEY,
66
+ record_id TEXT NOT NULL,
67
+ source_item_id TEXT,
68
+ relation TEXT NOT NULL,
69
+ excerpt TEXT,
70
+ confidence REAL,
71
+ observed_at INTEGER,
72
+ created_at INTEGER NOT NULL,
73
+ FOREIGN KEY(record_id) REFERENCES memory_records(record_id) ON DELETE CASCADE,
74
+ FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE SET NULL
75
+ );
76
+ INSERT INTO memory_evidence SELECT * FROM memory_evidence_backup;
77
+ DROP TABLE memory_evidence_backup;
78
+ CREATE INDEX idx_memory_evidence_record ON memory_evidence(record_id, created_at DESC);
79
+ CREATE INDEX idx_memory_evidence_source_item ON memory_evidence(source_item_id);
80
+ CREATE UNIQUE INDEX idx_memory_evidence_record_source_relation
81
+ ON memory_evidence(record_id, source_item_id, relation)
82
+ WHERE source_item_id IS NOT NULL;
83
+
84
+ CREATE TABLE knowledge_source_changes (
85
+ sequence INTEGER PRIMARY KEY AUTOINCREMENT,
86
+ change_id TEXT NOT NULL UNIQUE,
87
+ source_instance_id TEXT NOT NULL,
88
+ source_item_id TEXT NOT NULL,
89
+ change_kind TEXT NOT NULL CHECK(change_kind IN ('added', 'modified', 'deleted')),
90
+ old_hash TEXT,
91
+ new_hash TEXT,
92
+ changed_at INTEGER NOT NULL,
93
+ FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
94
+ );
95
+ INSERT INTO knowledge_source_changes SELECT * FROM knowledge_source_changes_backup;
96
+ DROP TABLE knowledge_source_changes_backup;
97
+ CREATE INDEX idx_knowledge_source_changes_source_sequence
98
+ ON knowledge_source_changes(source_instance_id, sequence);
99
+ CREATE INDEX idx_knowledge_source_changes_changed_at
100
+ ON knowledge_source_changes(changed_at DESC);
101
+
102
+ CREATE TABLE user_claim_evidence (
103
+ claim_id TEXT NOT NULL,
104
+ logical_event_key TEXT NOT NULL,
105
+ source_item_id TEXT NOT NULL,
106
+ source_instance_id TEXT NOT NULL,
107
+ relation TEXT NOT NULL CHECK(relation IN ('supports', 'contradicts')),
108
+ observed_at INTEGER NOT NULL,
109
+ created_at INTEGER NOT NULL,
110
+ PRIMARY KEY(claim_id, logical_event_key),
111
+ FOREIGN KEY(claim_id) REFERENCES user_claims(claim_id) ON DELETE CASCADE,
112
+ FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
113
+ );
114
+ INSERT INTO user_claim_evidence SELECT * FROM user_claim_evidence_backup;
115
+ DROP TABLE user_claim_evidence_backup;
116
+ CREATE INDEX idx_user_claim_evidence_source ON user_claim_evidence(source_item_id);
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 59;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 65;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 59;
15
+ const XOPC_DB_SCHEMA_VERSION = 65;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function resolveMigrationsDir(override) {
18
18
  if (override) return override;
@@ -46,7 +46,7 @@ function applySingleMigration(db, migration) {
46
46
  * Each step runs in its own transaction and updates schema_meta on success.
47
47
  */
48
48
  function applyPendingMigrations(db, options = {}) {
49
- const targetVersion = options.targetVersion ?? 59;
49
+ const targetVersion = options.targetVersion ?? 65;
50
50
  let currentVersion = readSchemaVersion(db);
51
51
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
52
52
  if (currentVersion >= targetVersion) return currentVersion;
@@ -62,7 +62,7 @@ function applyPendingMigrations(db, options = {}) {
62
62
  }
63
63
  /** Inspect schema version without mutating the database. */
64
64
  function inspectSchemaMigrationStatus(db, options = {}) {
65
- const appVersion = options.targetVersion ?? 59;
65
+ const appVersion = options.targetVersion ?? 65;
66
66
  const dbVersion = readSchemaVersion(db);
67
67
  if (dbVersion > appVersion) return {
68
68
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 59;
22
+ export const XOPC_DB_SCHEMA_VERSION = 65;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -31,7 +31,7 @@ function ensureXopcDatabaseSchema(db) {
31
31
  bootstrapFreshDatabase(db);
32
32
  currentVersion = 11;
33
33
  }
34
- applyPendingMigrations(db, { targetVersion: 59 });
34
+ applyPendingMigrations(db, { targetVersion: 65 });
35
35
  }
36
36
  //#endregion
37
37
  export { SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, ensureSchemaMetaTable, ensureXopcDatabaseSchema, readSchemaVersion, readSchemaVersionForTest, setSchemaVersion };
@@ -91,25 +91,6 @@ CREATE INDEX IF NOT EXISTS idx_entries_session_seq
91
91
  CREATE INDEX IF NOT EXISTS idx_entries_kind
92
92
  ON transcript_entries(session_id, entry_kind);
93
93
 
94
- CREATE TABLE IF NOT EXISTS compaction_checkpoints (
95
- checkpoint_id TEXT PRIMARY KEY,
96
- session_id TEXT NOT NULL,
97
- session_key TEXT NOT NULL,
98
- created_at INTEGER NOT NULL,
99
- message_count INTEGER NOT NULL,
100
- size_bytes INTEGER NOT NULL
101
- );
102
-
103
- CREATE TABLE IF NOT EXISTS checkpoint_entries (
104
- checkpoint_id TEXT NOT NULL,
105
- seq INTEGER NOT NULL,
106
- entry_kind TEXT NOT NULL,
107
- role TEXT,
108
- payload_json TEXT NOT NULL,
109
- PRIMARY KEY (checkpoint_id, seq),
110
- FOREIGN KEY (checkpoint_id) REFERENCES compaction_checkpoints(checkpoint_id) ON DELETE CASCADE
111
- );
112
-
113
94
  CREATE VIRTUAL TABLE IF NOT EXISTS transcript_fts USING fts5(
114
95
  content,
115
96
  session_key UNINDEXED,
@@ -1,20 +1,17 @@
1
1
  import type { AgentMessage } from '@earendil-works/pi-agent-core';
2
- import type { CompactionCheckpointDetail, CompactionCheckpointSummary } from '../../session/types.js';
3
- import type { TranscriptCompactionRecord } from '../../session/transcript-format.js';
4
- import { type TranscriptStoredRow } from '../../session/session-context-for-llm.js';
2
+ import type { CompactionBoundarySummary } from '../../session/types.js';
3
+ import { type TranscriptStoredRow, type XopcTranscriptCompactionEntry } from '../../session/session-context-for-llm.js';
5
4
  import { type TranscriptEntryRow } from './row-mappers.js';
6
5
  export declare function appendTranscriptEntry(sessionKey: string, row: TranscriptStoredRow, opts?: {
7
6
  sessionId?: string;
8
7
  tokenDelta?: number;
9
8
  }): TranscriptEntryRow;
9
+ export declare function appendCompactionBoundary(sessionKey: string, row: Omit<XopcTranscriptCompactionEntry, 'baseSeq'>): TranscriptEntryRow;
10
10
  export declare function loadTranscriptRowsForSession(sessionKey: string): TranscriptStoredRow[];
11
11
  export declare function loadTranscriptHistoryRowsForSession(sessionKey: string): TranscriptStoredRow[];
12
12
  export declare function loadTranscriptRows(sessionId: string): TranscriptStoredRow[];
13
13
  export declare function loadLlmMessagesForSession(sessionKey: string): AgentMessage[];
14
- export declare function replaceTranscriptRows(sessionKey: string, rows: TranscriptStoredRow[], opts?: {
15
- appendCompaction?: TranscriptCompactionRecord;
16
- }): void;
17
- export declare function loadCheckpointRows(sessionKey: string, checkpointId: string): TranscriptStoredRow[];
14
+ export declare function replaceTranscriptRows(sessionKey: string, rows: TranscriptStoredRow[]): void;
18
15
  export declare function paginateTranscriptMessages(sessionKey: string, options?: {
19
16
  offset?: number;
20
17
  limit?: number;
@@ -29,7 +26,5 @@ export declare function paginateTranscriptMessages(sessionKey: string, options?:
29
26
  startSeq: number;
30
27
  endSeq: number;
31
28
  };
32
- export declare function captureCompactionCheckpoint(sessionKey: string): string | null;
33
- export declare function listCompactionCheckpoints(sessionKey: string): CompactionCheckpointSummary[];
34
- export declare function getCompactionCheckpointDetail(sessionKey: string, checkpointId: string): CompactionCheckpointDetail | null;
35
- export declare function restoreCompactionCheckpoint(sessionKey: string, checkpointId: string): void;
29
+ export declare function listCompactionBoundaries(sessionKey: string): CompactionBoundarySummary[];
30
+ export declare function restoreBeforeCompactionBoundary(sessionKey: string, compactionId: string): void;