@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,39 @@ export declare const UserMemoryModeSchema: z.ZodEnum<{
5
5
  readOnly: "readOnly";
6
6
  confirmWrite: "confirmWrite";
7
7
  }>;
8
+ export declare const DEFAULT_CONTEXT_COMPACTION_POLICY: {
9
+ enabled: boolean;
10
+ triggerThreshold: number;
11
+ reserveTokens: number;
12
+ minMessagesBeforeCompact: number;
13
+ keepRecentTokens: number;
14
+ recentTurnsPreserve: number;
15
+ summaryMaxTokens: number;
16
+ summaryChunkTokens: number;
17
+ summaryTimeoutMs: number;
18
+ summaryRetries: number;
19
+ qualityGuard: boolean;
20
+ minToolResultKeepChars: number;
21
+ maxActiveTranscriptBytes: number;
22
+ postCompactionSections: string[];
23
+ };
24
+ export declare const ContextCompactionPolicySchema: z.ZodDefault<z.ZodObject<{
25
+ enabled: z.ZodDefault<z.ZodBoolean>;
26
+ triggerThreshold: z.ZodDefault<z.ZodNumber>;
27
+ reserveTokens: z.ZodDefault<z.ZodNumber>;
28
+ minMessagesBeforeCompact: z.ZodDefault<z.ZodNumber>;
29
+ keepRecentTokens: z.ZodDefault<z.ZodNumber>;
30
+ recentTurnsPreserve: z.ZodDefault<z.ZodNumber>;
31
+ summaryMaxTokens: z.ZodDefault<z.ZodNumber>;
32
+ summaryChunkTokens: z.ZodDefault<z.ZodNumber>;
33
+ summaryTimeoutMs: z.ZodDefault<z.ZodNumber>;
34
+ summaryRetries: z.ZodDefault<z.ZodNumber>;
35
+ qualityGuard: z.ZodDefault<z.ZodBoolean>;
36
+ model: z.ZodOptional<z.ZodString>;
37
+ minToolResultKeepChars: z.ZodDefault<z.ZodNumber>;
38
+ maxActiveTranscriptBytes: z.ZodDefault<z.ZodNumber>;
39
+ postCompactionSections: z.ZodDefault<z.ZodArray<z.ZodString>>;
40
+ }, z.core.$strict>>;
8
41
  export declare const UserMemoryConfigSchema: z.ZodDefault<z.ZodObject<{
9
42
  mode: z.ZodDefault<z.ZodEnum<{
10
43
  off: "off";
@@ -43,7 +76,23 @@ export declare const UserMemoryConfigSchema: z.ZodDefault<z.ZodObject<{
43
76
  }>>;
44
77
  }, z.core.$strict>>;
45
78
  retention: z.ZodOptional<z.ZodObject<{
46
- compaction: z.ZodDefault<z.ZodBoolean>;
79
+ compaction: z.ZodDefault<z.ZodObject<{
80
+ enabled: z.ZodDefault<z.ZodBoolean>;
81
+ triggerThreshold: z.ZodDefault<z.ZodNumber>;
82
+ reserveTokens: z.ZodDefault<z.ZodNumber>;
83
+ minMessagesBeforeCompact: z.ZodDefault<z.ZodNumber>;
84
+ keepRecentTokens: z.ZodDefault<z.ZodNumber>;
85
+ recentTurnsPreserve: z.ZodDefault<z.ZodNumber>;
86
+ summaryMaxTokens: z.ZodDefault<z.ZodNumber>;
87
+ summaryChunkTokens: z.ZodDefault<z.ZodNumber>;
88
+ summaryTimeoutMs: z.ZodDefault<z.ZodNumber>;
89
+ summaryRetries: z.ZodDefault<z.ZodNumber>;
90
+ qualityGuard: z.ZodDefault<z.ZodBoolean>;
91
+ model: z.ZodOptional<z.ZodString>;
92
+ minToolResultKeepChars: z.ZodDefault<z.ZodNumber>;
93
+ maxActiveTranscriptBytes: z.ZodDefault<z.ZodNumber>;
94
+ postCompactionSections: z.ZodDefault<z.ZodArray<z.ZodString>>;
95
+ }, z.core.$strict>>;
47
96
  maxAgeDays: z.ZodOptional<z.ZodNumber>;
48
97
  maxItems: z.ZodOptional<z.ZodNumber>;
49
98
  maxChars: z.ZodOptional<z.ZodNumber>;
@@ -153,7 +202,23 @@ export declare const UserContextConfigSchema: z.ZodDefault<z.ZodObject<{
153
202
  }>>;
154
203
  }, z.core.$strict>>;
155
204
  retention: z.ZodOptional<z.ZodObject<{
156
- compaction: z.ZodDefault<z.ZodBoolean>;
205
+ compaction: z.ZodDefault<z.ZodObject<{
206
+ enabled: z.ZodDefault<z.ZodBoolean>;
207
+ triggerThreshold: z.ZodDefault<z.ZodNumber>;
208
+ reserveTokens: z.ZodDefault<z.ZodNumber>;
209
+ minMessagesBeforeCompact: z.ZodDefault<z.ZodNumber>;
210
+ keepRecentTokens: z.ZodDefault<z.ZodNumber>;
211
+ recentTurnsPreserve: z.ZodDefault<z.ZodNumber>;
212
+ summaryMaxTokens: z.ZodDefault<z.ZodNumber>;
213
+ summaryChunkTokens: z.ZodDefault<z.ZodNumber>;
214
+ summaryTimeoutMs: z.ZodDefault<z.ZodNumber>;
215
+ summaryRetries: z.ZodDefault<z.ZodNumber>;
216
+ qualityGuard: z.ZodDefault<z.ZodBoolean>;
217
+ model: z.ZodOptional<z.ZodString>;
218
+ minToolResultKeepChars: z.ZodDefault<z.ZodNumber>;
219
+ maxActiveTranscriptBytes: z.ZodDefault<z.ZodNumber>;
220
+ postCompactionSections: z.ZodDefault<z.ZodArray<z.ZodString>>;
221
+ }, z.core.$strict>>;
157
222
  maxAgeDays: z.ZodOptional<z.ZodNumber>;
158
223
  maxItems: z.ZodOptional<z.ZodNumber>;
159
224
  maxChars: z.ZodOptional<z.ZodNumber>;
@@ -1,7 +1,7 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
2
  import { z } from "zod";
3
3
  //#region src/user-context/config.ts
4
- var UserMemoryModeSchema, UserMemoryConfigSchema, UserUnderstandingConfigSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, DreamingPhaseSchema, UserContextDreamingSchema, UserContextConfigSchema;
4
+ var UserMemoryModeSchema, DEFAULT_CONTEXT_COMPACTION_POLICY, ContextCompactionPolicySchema, UserMemoryConfigSchema, UserUnderstandingConfigSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, DreamingPhaseSchema, UserContextDreamingSchema, UserContextConfigSchema;
5
5
  var init_config = __esmMin((() => {
6
6
  UserMemoryModeSchema = z.enum([
7
7
  "off",
@@ -9,6 +9,39 @@ var init_config = __esmMin((() => {
9
9
  "confirmWrite",
10
10
  "auto"
11
11
  ]);
12
+ DEFAULT_CONTEXT_COMPACTION_POLICY = {
13
+ enabled: true,
14
+ triggerThreshold: .8,
15
+ reserveTokens: 8192,
16
+ minMessagesBeforeCompact: 10,
17
+ keepRecentTokens: 2e4,
18
+ recentTurnsPreserve: 3,
19
+ summaryMaxTokens: 2e3,
20
+ summaryChunkTokens: 24e3,
21
+ summaryTimeoutMs: 18e4,
22
+ summaryRetries: 2,
23
+ qualityGuard: true,
24
+ minToolResultKeepChars: 1e3,
25
+ maxActiveTranscriptBytes: 2e6,
26
+ postCompactionSections: ["Session Startup", "Red Lines"]
27
+ };
28
+ ContextCompactionPolicySchema = z.object({
29
+ enabled: z.boolean().default(true),
30
+ triggerThreshold: z.number().min(.1).max(.98).default(.8),
31
+ reserveTokens: z.number().int().min(1024).default(8192),
32
+ minMessagesBeforeCompact: z.number().int().min(2).default(10),
33
+ keepRecentTokens: z.number().int().min(1e3).default(2e4),
34
+ recentTurnsPreserve: z.number().int().min(1).max(12).default(3),
35
+ summaryMaxTokens: z.number().int().min(256).default(2e3),
36
+ summaryChunkTokens: z.number().int().min(1e3).default(24e3),
37
+ summaryTimeoutMs: z.number().int().min(1e3).max(6e5).default(18e4),
38
+ summaryRetries: z.number().int().min(0).max(5).default(2),
39
+ qualityGuard: z.boolean().default(true),
40
+ model: z.string().min(1).optional(),
41
+ minToolResultKeepChars: z.number().int().min(200).default(1e3),
42
+ maxActiveTranscriptBytes: z.number().int().min(64e3).default(2e6),
43
+ postCompactionSections: z.array(z.string().min(1)).max(12).default(["Session Startup", "Red Lines"])
44
+ }).strict().default(DEFAULT_CONTEXT_COMPACTION_POLICY);
12
45
  UserMemoryConfigSchema = z.object({
13
46
  mode: UserMemoryModeSchema.default("off"),
14
47
  sources: z.array(z.enum([
@@ -42,7 +75,7 @@ var init_config = __esmMin((() => {
42
75
  ]).optional()
43
76
  }).strict().optional(),
44
77
  retention: z.object({
45
- compaction: z.boolean().default(true),
78
+ compaction: ContextCompactionPolicySchema,
46
79
  maxAgeDays: z.number().int().positive().optional(),
47
80
  maxItems: z.number().int().positive().optional(),
48
81
  maxChars: z.number().int().positive().optional()
@@ -153,4 +186,4 @@ var init_config = __esmMin((() => {
153
186
  }));
154
187
  //#endregion
155
188
  init_config();
156
- export { UserContextConfigSchema, UserContextDreamingSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, UserMemoryConfigSchema, UserMemoryModeSchema, UserUnderstandingConfigSchema, init_config };
189
+ export { ContextCompactionPolicySchema, DEFAULT_CONTEXT_COMPACTION_POLICY, UserContextConfigSchema, UserContextDreamingSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, UserMemoryConfigSchema, UserMemoryModeSchema, UserUnderstandingConfigSchema, init_config };
@@ -1,6 +1,7 @@
1
1
  import type { MemoryKind, MemoryRecord } from '../agent/memory/types.js';
2
2
  import type { ConnectorConnection, ConnectorDefinition, ConnectorInstance } from '../connectors/types.js';
3
3
  import type { KnowledgeSourceItem, KnowledgeSyncRun } from '../knowledge/types.js';
4
+ import type { ConnectorLearningJob } from '../storage/sqlite/index.js';
4
5
  export type UserContextFacet = 'basics' | 'collaboration' | 'boundaries' | 'priorities' | 'people' | 'current';
5
6
  export type UserContextOrigin = 'told_by_you' | 'observed' | 'inferred' | 'connected_source';
6
7
  export declare function isUserContextRecord(record: MemoryRecord): boolean;
@@ -26,6 +27,11 @@ export declare function projectUserContextRecord(record: MemoryRecord): {
26
27
  reviewAt: string;
27
28
  reviewDue: boolean;
28
29
  evidenceCount: number;
30
+ evidenceBasis: {
31
+ eventCount: number;
32
+ activeDays: number;
33
+ windowDays: number;
34
+ };
29
35
  sourcePath: string;
30
36
  latestEvidenceAt: string;
31
37
  validFrom: string;
@@ -34,10 +40,18 @@ export declare function projectUserContextRecord(record: MemoryRecord): {
34
40
  };
35
41
  export declare function isPersonalContextConnector(definition: ConnectorDefinition): boolean;
36
42
  export declare function recordsDerivedFromPersonalContextSource(records: MemoryRecord[], sourceInstanceId: string): MemoryRecord[];
37
- export declare function projectPersonalContextSources(definitions: ConnectorDefinition[], instances: ConnectorInstance[], records?: MemoryRecord[], knowledge?: {
43
+ export declare function projectPersonalContextSources(definitions: ConnectorDefinition[], instances: ConnectorInstance[], knowledge?: {
38
44
  sourceItems?: KnowledgeSourceItem[];
39
45
  syncRuns?: KnowledgeSyncRun[];
40
46
  connections?: ConnectorConnection[];
47
+ learningJobs?: ConnectorLearningJob[];
48
+ claimStatsBySource?: Record<string, {
49
+ evidenceCount: number;
50
+ provisionalClaims: number;
51
+ activeClaims: number;
52
+ resolvedEntities: number;
53
+ lastEvidenceAt?: string;
54
+ }>;
41
55
  }): {
42
56
  category: import("../connectors/types.js").ConnectorCategory;
43
57
  capabilities: ("context" | "tools" | "events" | "memory_source")[];
@@ -57,10 +71,31 @@ export declare function projectPersonalContextSources(definitions: ConnectorDefi
57
71
  lastHealthStatus: any;
58
72
  lastActivityAt: string;
59
73
  derivedUnderstandingCount: number;
74
+ learningFunnel: {
75
+ indexedItems: number;
76
+ attributedItems: number;
77
+ resolvedEntities: number;
78
+ provisionalClaims: number;
79
+ activeClaims: number;
80
+ evidenceCount: number;
81
+ lastEvidenceAt: string;
82
+ };
60
83
  knowledgeItemCount: number;
61
84
  lastSyncAt: string;
62
85
  lastSyncStatus: import("../knowledge/types.js").KnowledgeSyncRunStatus;
63
86
  lastSyncError: string;
87
+ learning: {
88
+ status: import("../storage/sqlite/connector-learning-repository.js").ConnectorLearningStatus;
89
+ phase: import("../storage/sqlite/connector-learning-repository.js").ConnectorLearningPhase;
90
+ itemsDiscovered: number;
91
+ itemsIndexed: number;
92
+ candidatesCreated: number;
93
+ mode: import("../storage/sqlite/connector-learning-repository.js").ConnectorLearningMode;
94
+ attemptCount: number;
95
+ nextRunAt: string;
96
+ error: string;
97
+ updatedAt: string;
98
+ };
64
99
  branding?: import("../connectors/types.js").ConnectorBranding;
65
100
  id: string;
66
101
  accountLabel: any;
@@ -39,9 +39,31 @@ function originForMemoryRecord(record) {
39
39
  const origin = classifyMemoryContextOrigin(record);
40
40
  return origin === "told_by_user" ? "told_by_you" : origin;
41
41
  }
42
+ function connectedEvidenceBasis(sourceText) {
43
+ if (!sourceText) return void 0;
44
+ try {
45
+ const value = JSON.parse(sourceText);
46
+ const eventCount = Number(value.eventCount);
47
+ const activeDays = Number(value.activeDays);
48
+ const windowDays = Number(value.windowDays);
49
+ if (![
50
+ eventCount,
51
+ activeDays,
52
+ windowDays
53
+ ].every((item) => Number.isInteger(item) && item > 0)) return void 0;
54
+ return {
55
+ eventCount,
56
+ activeDays,
57
+ windowDays
58
+ };
59
+ } catch {
60
+ return;
61
+ }
62
+ }
42
63
  function projectUserContextRecord(record) {
43
64
  const lifecycle = resolveMemoryStability(record);
44
65
  const latestEvidenceAt = record.evidence?.map((evidence) => evidence.observedAt).filter((value) => Boolean(value)).sort().at(-1);
66
+ const evidenceBasis = record.evidence?.map((evidence) => connectedEvidenceBasis(evidence.sourceText)).filter((value) => Boolean(value)).at(-1);
45
67
  return {
46
68
  id: record.id,
47
69
  statement: record.content,
@@ -61,6 +83,7 @@ function projectUserContextRecord(record) {
61
83
  reviewAt: lifecycle.reviewAt,
62
84
  reviewDue: lifecycle.reviewDue,
63
85
  evidenceCount: record.evidence?.length ?? 0,
86
+ evidenceBasis,
64
87
  sourcePath: record.source.path,
65
88
  latestEvidenceAt,
66
89
  validFrom: record.validFrom,
@@ -74,7 +97,29 @@ function isPersonalContextConnector(definition) {
74
97
  function recordsDerivedFromPersonalContextSource(records, sourceInstanceId) {
75
98
  return records.filter((record) => record.source.sourceInstanceId === sourceInstanceId && isUserContextRecord(record));
76
99
  }
77
- function projectPersonalContextSources(definitions, instances, records = [], knowledge = {}) {
100
+ function connectionIdentityKey(connection) {
101
+ const email = typeof connection.identity.email === "string" ? connection.identity.email.trim().toLocaleLowerCase() : "";
102
+ if (email) return `email:${email}`;
103
+ const username = typeof connection.identity.username === "string" ? connection.identity.username.trim().toLocaleLowerCase() : "";
104
+ if (username) return `username:${username}`;
105
+ return `connection:${connection.id}`;
106
+ }
107
+ function selectAccountConnections(connections) {
108
+ const byIdentity = /* @__PURE__ */ new Map();
109
+ for (const connection of connections) {
110
+ const key = connectionIdentityKey(connection);
111
+ const current = byIdentity.get(key);
112
+ if (!current) {
113
+ byIdentity.set(key, connection);
114
+ continue;
115
+ }
116
+ const currentRank = current.status === "active" ? 1 : 0;
117
+ const candidateRank = connection.status === "active" ? 1 : 0;
118
+ if (candidateRank > currentRank || candidateRank === currentRank && connection.updatedAt.localeCompare(current.updatedAt) > 0) byIdentity.set(key, connection);
119
+ }
120
+ return [...byIdentity.values()];
121
+ }
122
+ function projectPersonalContextSources(definitions, instances, knowledge = {}) {
78
123
  const instanceByConnector = /* @__PURE__ */ new Map();
79
124
  for (const instance of instances) {
80
125
  const current = instanceByConnector.get(instance.connectorId) ?? [];
@@ -83,7 +128,13 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
83
128
  }
84
129
  return definitions.filter(isPersonalContextConnector).flatMap((definition) => {
85
130
  const connected = instanceByConnector.get(definition.id) ?? [];
86
- const accounts = (knowledge.connections ?? []).filter((connection) => connection.provider === "composio" && connection.connectorId === definition.id && connection.status !== "revoked").sort((left, right) => {
131
+ const candidateAccounts = (knowledge.connections ?? []).filter((connection) => connection.provider === "composio" && connection.connectorId === definition.id && connection.status !== "revoked");
132
+ const hasActiveAccount = candidateAccounts.some((connection) => connection.status === "active");
133
+ const accounts = selectAccountConnections(candidateAccounts.filter((connection) => !hasActiveAccount || ![
134
+ "pending",
135
+ "unknown",
136
+ "disabled"
137
+ ].includes(connection.status))).sort((left, right) => {
87
138
  return (left.connectedAt ?? left.createdAt).localeCompare(right.connectedAt ?? right.createdAt) || left.id.localeCompare(right.id);
88
139
  });
89
140
  return (accounts.length > 0 ? accounts.map((connection, index) => ({
@@ -117,9 +168,13 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
117
168
  lastConnectedAt: void 0,
118
169
  instances: []
119
170
  }]).map((row) => {
120
- const relatedRecords = row.sourceInstanceId ? records.filter((record) => record.source.sourceInstanceId === row.sourceInstanceId) : [];
121
171
  const sourceItems = row.sourceInstanceId ? (knowledge.sourceItems ?? []).filter((item) => item.sourceInstanceId === row.sourceInstanceId) : [];
172
+ const claimStats = row.sourceInstanceId ? knowledge.claimStatsBySource?.[row.sourceInstanceId] : void 0;
122
173
  const latestSync = (knowledge.syncRuns ?? []).filter((run) => run.sourceInstanceId === row.sourceInstanceId).sort((left, right) => Date.parse(right.startedAt) - Date.parse(left.startedAt))[0];
174
+ const learningJobs = (knowledge.learningJobs ?? []).filter((job) => job.sourceInstanceId === row.sourceInstanceId).sort((left, right) => Date.parse(right.createdAt) - Date.parse(left.createdAt));
175
+ const now = Date.now();
176
+ const nextScheduledLearning = learningJobs.filter((job) => job.status === "queued" && job.nextRunAt && Date.parse(job.nextRunAt) > now).sort((left, right) => Date.parse(left.nextRunAt) - Date.parse(right.nextRunAt))[0];
177
+ const latestLearning = learningJobs.find((job) => job.status !== "queued" || !job.nextRunAt || Date.parse(job.nextRunAt) <= now) ?? learningJobs[0];
123
178
  const latestHealth = row.instances.filter((instance) => instance.usage.lastHealthCheckAt && instance.usage.lastHealthStatus).sort((left, right) => Date.parse(right.usage.lastHealthCheckAt) - Date.parse(left.usage.lastHealthCheckAt))[0]?.usage;
124
179
  const permissionDetails = definition.permissions?.data ?? [];
125
180
  const canWrite = permissionDetails.some((permission) => /(?:^|[.:/_-])(write|create|update|delete|manage|send|admin)(?:$|[.:/_-])/i.test(permission));
@@ -154,13 +209,36 @@ function projectPersonalContextSources(definitions, instances, records = [], kno
154
209
  ...instance.audit.map((entry) => entry.at)
155
210
  ]),
156
211
  latestSync?.finishedAt,
157
- latestSync?.startedAt
212
+ latestSync?.startedAt,
213
+ latestLearning?.finishedAt,
214
+ latestLearning?.startedAt
158
215
  ].filter((value) => Boolean(value)).sort().at(-1),
159
- derivedUnderstandingCount: relatedRecords.length,
216
+ derivedUnderstandingCount: claimStats?.activeClaims ?? 0,
217
+ learningFunnel: {
218
+ indexedItems: sourceItems.filter((item) => !item.deletedAt).length,
219
+ attributedItems: sourceItems.filter((item) => !item.deletedAt && item.metadata.actorAttributed === true).length,
220
+ resolvedEntities: claimStats?.resolvedEntities ?? 0,
221
+ provisionalClaims: claimStats?.provisionalClaims ?? 0,
222
+ activeClaims: claimStats?.activeClaims ?? 0,
223
+ evidenceCount: claimStats?.evidenceCount ?? 0,
224
+ lastEvidenceAt: claimStats?.lastEvidenceAt
225
+ },
160
226
  knowledgeItemCount: sourceItems.filter((item) => !item.deletedAt).length,
161
227
  lastSyncAt: latestSync?.finishedAt ?? latestSync?.startedAt,
162
228
  lastSyncStatus: latestSync?.status,
163
- lastSyncError: latestSync?.error
229
+ lastSyncError: latestSync?.error,
230
+ learning: latestLearning ? {
231
+ status: latestLearning.status,
232
+ phase: latestLearning.phase,
233
+ itemsDiscovered: latestLearning.itemsDiscovered,
234
+ itemsIndexed: latestLearning.itemsIndexed,
235
+ candidatesCreated: latestLearning.candidatesCreated,
236
+ mode: latestLearning.mode,
237
+ attemptCount: latestLearning.attemptCount,
238
+ nextRunAt: nextScheduledLearning?.nextRunAt ?? latestLearning.nextRunAt,
239
+ error: latestLearning.error,
240
+ updatedAt: latestLearning.updatedAt
241
+ } : void 0
164
242
  };
165
243
  });
166
244
  }).sort((left, right) => {
@@ -267,6 +267,7 @@ var WorkDiscoveryService = class {
267
267
  });
268
268
  return {
269
269
  sourceInstanceId: "desktop:calendar",
270
+ collectionScope: "events",
270
271
  externalId: item.id,
271
272
  itemType: "calendar_event",
272
273
  authorRole: "unknown",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xopcai/xopc",
3
- "version": "0.0.170",
3
+ "version": "0.0.172",
4
4
  "description": "Local-first AI system that remembers context, coordinates AI, and sustains long-term progress.",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",