@xopcai/xopc 0.0.189 → 0.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/README.md +0 -3
  2. package/README.zh-CN.md +0 -3
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store-DTFKTPs8.js → activity-store-DstnJCS5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DqO25Qe5.js → agent-avatar-dicebear-9vAbkroX.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-D1t4SfMQ.js +68 -0
  8. package/dist/gateway/static/root/assets/{api-DWeXfwVU.js → api-BTL9kayv.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BRpV8PXG.js → app-management-settings-panel-DkFeIdBf.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-3ntKM9nQ.js → appearance-settings-Bxs8Fpaj.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-Cgrgu5OW.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Df7Ycj_7.js → archive-plugin-Ch2RmLCC.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-UHgfZYtj.js → attachment-load-BhMQM_Ky.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-CtJxstKh.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-BJah99wE.js → binary-plugins-D6CqlymH.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-DNlY5KqF.js → block-editor-ClL6HEg9.js} +48 -48
  17. package/dist/gateway/static/root/assets/browser-settings-page-DW99iDmD.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-vyUfdzAd.js → browser-workflow-inputs-BYy48VhN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-C1cKZjx-.js → browser-workflows-page-zgLibuMH.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-CHUrT9EB.js +7 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Cycrv0YV.js +1 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-BGG2kpJB.js → channel-recipient-api-BThDGiO3.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-V96gPUAU.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-api-DS9ED-EL.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-BhlyQoQI.js +2 -0
  28. package/dist/gateway/static/root/assets/cron-expression-CkgsvhtW.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-BUuBEJuP.js → desktop-pet-Cv8rGhYW.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-BGfVIJM3.js → desktop-pet-settings-CIeJdwfV.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-DrQFfHH_.js → directory-picker-path-field-D8jXEiAY.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-CEnIFOX-.js → extension-debug-page-CCZ9u6TZ.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-CCqHbexs.js → extension-page-CV36ILRG.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-IyQrSILY.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CgUE2Ii1.js → gateway-config-api-D4_r5iJM.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-CYlntpBH.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-DxhKNiCF.js → gateway-startup-retry-EO9mKvzE.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-D4SyWob8.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-B2Kagoh8.js +3 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-DCFdc-HD.js → image-generation-api-Bu7PyVSh.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-CYT5DOzr.js +150 -0
  42. package/dist/gateway/static/root/assets/index-D6e3tPL-.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Bf2VLtXW.js → keyboard-shortcuts-settings-BMhCuVBZ.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-BHYbFjqy.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-Ca1RuI13.js → local-apps-page-ijIe7_y2.js} +1 -1
  46. package/dist/gateway/static/root/assets/locale-store-deR2zRaE.js +1 -0
  47. package/dist/gateway/static/root/assets/logs-page-IIn8Tess.js +2 -0
  48. package/dist/gateway/static/root/assets/{management-settings-B3Eop1zn.js → management-settings--V_fovKD.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-split-BGOYjgnM.js → markdown-split-Dt9-in6W.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-CT0txyM4.js → media-plugins-B3pj_iO0.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +3 -0
  52. package/dist/gateway/static/root/assets/{notes-page-DfKgAe78.js → notes-page-DZ366lIT.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-S2sBVOLw.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs-DNrbCgmC.js → page-tabs-C5ge434C.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-BTqViDOR.js → preview-open-alternatives-BFa9DgSV.js} +1 -1
  56. package/dist/gateway/static/root/assets/{product-open-page-C_2L4_Iu.js → product-open-page-Dc9CcWdu.js} +1 -1
  57. package/dist/gateway/static/root/assets/project-detail-page-BilzoCJ7.js +1 -0
  58. package/dist/gateway/static/root/assets/projects-page-BoQUyacP.js +1 -0
  59. package/dist/gateway/static/root/assets/remote-access-hub-DUyUaCRF.js +1 -0
  60. package/dist/gateway/static/root/assets/{schema-form-BFLfkDGG.js → schema-form-B84DckWe.js} +1 -1
  61. package/dist/gateway/static/root/assets/sessions-page-Dzxlq1F0.js +1 -0
  62. package/dist/gateway/static/root/assets/settings-advanced-gate-TzwlZxU6.js +1 -0
  63. package/dist/gateway/static/root/assets/settings-form-section-Dp9itvdy.js +1 -0
  64. package/dist/gateway/static/root/assets/{settings-loading-skeleton-C9a-EbTZ.js → settings-loading-skeleton-CCtlhoy7.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-page-DI9qDH5x.js → settings-page-DQmMKf8r.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-layout-D-LWQdI5.js → settings-page-layout-EQIOJa_L.js} +1 -1
  67. package/dist/gateway/static/root/assets/{setup-status-panel-CJwmPvgs.js → setup-status-panel-Cwi-SPja.js} +1 -1
  68. package/dist/gateway/static/root/assets/{share-preview-page-BKSMG9r5.js → share-preview-page-C4_B2jvf.js} +1 -1
  69. package/dist/gateway/static/root/assets/shares-settings-CkyuGlZK.js +1 -0
  70. package/dist/gateway/static/root/assets/skill-reload-api-BJCePQK5.js +1 -0
  71. package/dist/gateway/static/root/assets/skills-page-BYWLfmJi.js +2 -0
  72. package/dist/gateway/static/root/assets/{skills-page.utils-zsz2HIlZ.js → skills-page.utils-Jhm24i4h.js} +1 -1
  73. package/dist/gateway/static/root/assets/{system-settings-panel-IWNDBI1O.js → system-settings-panel-Dpx2ags2.js} +1 -1
  74. package/dist/gateway/static/root/assets/{task-detail-page-CgtK02kP.js → task-detail-page-DLAdxI6e.js} +1 -1
  75. package/dist/gateway/static/root/assets/{theme-store-BkJe7UDo.js → theme-store-DnBOcGXi.js} +1 -1
  76. package/dist/gateway/static/root/assets/{typed-models-lib-C07LGthO.js → typed-models-lib-DULmTHUB.js} +1 -1
  77. package/dist/gateway/static/root/assets/use-autosave-BrjVk5VH.js +1 -0
  78. package/dist/gateway/static/root/assets/user-context-page-9AAFpGAL.js +1 -0
  79. package/dist/gateway/static/root/assets/{voice-api-key-field-Boue1D46.js → voice-api-key-field-BISTPfq_.js} +1 -1
  80. package/dist/gateway/static/root/assets/{work-discovery-overlay-bbmvCmc8.js → work-discovery-overlay-Wr-uF7VA.js} +1 -1
  81. package/dist/gateway/static/root/assets/work-discovery-page-BWds95sL.js +1 -0
  82. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DlHv-GZC.js → workflow-run-setup-panel-DHqHP8_6.js} +2 -2
  83. package/dist/gateway/static/root/assets/workflows-page-0b4_DFHr.js +11 -0
  84. package/dist/gateway/static/root/index.html +7 -7
  85. package/dist/package.js +1 -1
  86. package/dist/packages/gateway-contract/src/tool-activity.js +0 -36
  87. package/dist/packages/realtime-client/src/index.js +105 -48
  88. package/dist/packages/realtime-protocol/src/index.js +6 -1
  89. package/dist/src/agent/agent-manager.d.ts +0 -1
  90. package/dist/src/agent/agent-manager.js +6 -13
  91. package/dist/src/agent/background-review/coordinator.js +1 -1
  92. package/dist/src/agent/background-review/run-background-review.js +5 -7
  93. package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +0 -1
  94. package/dist/src/agent/bootstrap/bootstrap-cache.js +3 -4
  95. package/dist/src/agent/bootstrap/bootstrap-files.d.ts +0 -4
  96. package/dist/src/agent/bootstrap/bootstrap-files.js +3 -4
  97. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -4
  98. package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +0 -1
  99. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -14
  100. package/dist/src/agent/bootstrap/types.d.ts +1 -1
  101. package/dist/src/agent/context/workspace-templates/SOUL.md +1 -1
  102. package/dist/src/agent/memory/builtin-provider.d.ts +2 -4
  103. package/dist/src/agent/memory/builtin-provider.js +35 -15
  104. package/dist/src/agent/memory/context/types.d.ts +3 -1
  105. package/dist/src/agent/memory/create-memory-manager.js +2 -0
  106. package/dist/src/agent/memory/index.d.ts +1 -1
  107. package/dist/src/agent/memory/index.js +1 -1
  108. package/dist/src/agent/memory/manager.d.ts +9 -1
  109. package/dist/src/agent/memory/manager.js +39 -9
  110. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  111. package/dist/src/agent/memory/memory-config.js +1 -1
  112. package/dist/src/agent/memory/source-origin.js +0 -2
  113. package/dist/src/agent/memory/types.d.ts +5 -1
  114. package/dist/src/agent/memory/understanding/service.d.ts +10 -10
  115. package/dist/src/agent/memory/understanding/service.js +108 -176
  116. package/dist/src/agent/memory/understanding/types.d.ts +7 -8
  117. package/dist/src/agent/memory/user-context-coordinator.d.ts +2 -1
  118. package/dist/src/agent/memory/user-context-coordinator.js +27 -41
  119. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -7
  120. package/dist/src/agent/prompt/sections/memory-skills.js +4 -4
  121. package/dist/src/agent/prompt/sections/tooling.js +0 -10
  122. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  123. package/dist/src/agent/prompt/service-prompt-builder.js +4 -33
  124. package/dist/src/agent/prompt/system-prompt.js +1 -2
  125. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  126. package/dist/src/agent/service.d.ts +1 -2
  127. package/dist/src/agent/service.js +4 -17
  128. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +1 -1
  129. package/dist/src/agent/tools/dreaming-tool.d.ts +0 -2
  130. package/dist/src/agent/tools/dreaming-tool.js +13 -38
  131. package/dist/src/agent/tools/factory.d.ts +0 -3
  132. package/dist/src/agent/tools/factory.js +1 -10
  133. package/dist/src/agent/tools/index.d.ts +0 -1
  134. package/dist/src/agent/tools/index.js +1 -2
  135. package/dist/src/agent/tools/memory-tool.js +1 -1
  136. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -5
  137. package/dist/src/agent/workspace-runtime/registry.js +2 -15
  138. package/dist/src/agent-manifest/schema.d.ts +17 -17
  139. package/dist/src/agent-runtime/index.js +1 -1
  140. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  141. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  142. package/dist/src/automations/domain/validation.d.ts +28 -28
  143. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  144. package/dist/src/chat-commands/builtins/understanding.js +2 -5
  145. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  146. package/dist/src/cli/commands/init.js +3 -22
  147. package/dist/src/cli/templates.js +1 -1
  148. package/dist/src/config/index.js +3 -3
  149. package/dist/src/config/paths.d.ts +0 -5
  150. package/dist/src/config/paths.js +2 -11
  151. package/dist/src/config/schema.d.ts +24 -117
  152. package/dist/src/config/schema.js +9 -39
  153. package/dist/src/connectors/learning-coordinator.js +75 -3
  154. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  155. package/dist/src/gateway/agent-builtin-tools.js +0 -5
  156. package/dist/src/gateway/agents-admin.d.ts +0 -7
  157. package/dist/src/gateway/agents-admin.js +3 -32
  158. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +3 -3
  159. package/dist/src/gateway/dreaming-automation-reconciler.js +48 -88
  160. package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
  161. package/dist/src/gateway/hono/lib/config-payload.js +3 -1
  162. package/dist/src/gateway/hono/oauth-async.d.ts +1 -0
  163. package/dist/src/gateway/hono/oauth-async.js +17 -2
  164. package/dist/src/gateway/hono/routes/agents.js +1 -33
  165. package/dist/src/gateway/hono/routes/config-patch/misc.js +17 -1
  166. package/dist/src/gateway/hono/routes/connectors.js +13 -12
  167. package/dist/src/gateway/hono/routes/index.js +2 -2
  168. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -5
  169. package/dist/src/gateway/hono/routes/status.js +0 -7
  170. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +3 -0
  171. package/dist/src/gateway/hono/routes/understanding-sources.js +203 -0
  172. package/dist/src/gateway/hono/routes/work-discovery.d.ts +2 -0
  173. package/dist/src/gateway/hono/routes/work-discovery.js +3 -134
  174. package/dist/src/gateway/hono/routes/you.d.ts +0 -22
  175. package/dist/src/gateway/hono/routes/you.js +234 -1118
  176. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  177. package/dist/src/gateway/service/run-gateway-agent.js +2 -4
  178. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  179. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +2 -4
  180. package/dist/src/knowledge/connected-understanding-pipeline.js +31 -81
  181. package/dist/src/knowledge/index.js +2 -2
  182. package/dist/src/knowledge/people-graph.d.ts +22 -25
  183. package/dist/src/knowledge/people-graph.js +76 -43
  184. package/dist/src/proactive/execution/context.js +8 -13
  185. package/dist/src/realtime/broker.d.ts +1 -0
  186. package/dist/src/realtime/broker.js +19 -2
  187. package/dist/src/realtime/runtime.js +6 -1
  188. package/dist/src/storage/sqlite/connector-account-repository.js +0 -1
  189. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +37 -0
  190. package/dist/src/storage/sqlite/context-consolidation-repository.js +64 -0
  191. package/dist/src/storage/sqlite/fts.d.ts +2 -0
  192. package/dist/src/storage/sqlite/fts.js +29 -1
  193. package/dist/src/storage/sqlite/index.d.ts +4 -6
  194. package/dist/src/storage/sqlite/index.js +5 -7
  195. package/dist/src/storage/sqlite/knowledge-repository.d.ts +9 -2
  196. package/dist/src/storage/sqlite/knowledge-repository.js +58 -10
  197. package/dist/src/storage/sqlite/memory-records-repository.d.ts +7 -56
  198. package/dist/src/storage/sqlite/memory-records-repository.js +68 -218
  199. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +54 -0
  200. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +193 -0
  201. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +6 -0
  202. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +38 -0
  203. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +110 -0
  204. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  205. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  206. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  207. package/dist/src/storage/sqlite/schema.js +1 -1
  208. package/dist/src/storage/sqlite/schema.sql +0 -20
  209. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +34 -0
  210. package/dist/src/storage/sqlite/user-context-quality-repository.js +74 -0
  211. package/dist/src/storage/sqlite/user-context-repository.d.ts +64 -0
  212. package/dist/src/storage/sqlite/user-context-repository.js +383 -0
  213. package/dist/src/tui/tool-summary.js +1 -7
  214. package/dist/src/tui/tui-startup-resources.js +1 -2
  215. package/dist/src/user-context/config.d.ts +17 -210
  216. package/dist/src/user-context/config.js +19 -85
  217. package/dist/src/user-context/consolidation.d.ts +26 -0
  218. package/dist/src/user-context/consolidation.js +115 -0
  219. package/dist/src/user-context/domain.d.ts +75 -0
  220. package/dist/src/user-context/domain.js +4 -0
  221. package/dist/src/user-context/manual-understanding.d.ts +7 -14
  222. package/dist/src/user-context/manual-understanding.js +19 -54
  223. package/dist/src/{agent/memory/context → user-context}/planner.d.ts +5 -6
  224. package/dist/src/user-context/planner.js +311 -0
  225. package/dist/src/user-context/relationship-continuity.d.ts +3 -6
  226. package/dist/src/user-context/relationship-continuity.js +39 -32
  227. package/dist/src/user-context/sources/catalog.d.ts +2 -0
  228. package/dist/src/user-context/sources/catalog.js +149 -0
  229. package/dist/src/user-context/sources/index.d.ts +3 -0
  230. package/dist/src/user-context/sources/index.js +3 -0
  231. package/dist/src/user-context/sources/repository.d.ts +40 -0
  232. package/dist/src/user-context/sources/repository.js +164 -0
  233. package/dist/src/user-context/sources/types.d.ts +83 -0
  234. package/dist/src/work-discovery/analyzer.d.ts +4 -3
  235. package/dist/src/work-discovery/analyzer.js +21 -16
  236. package/dist/src/work-discovery/incremental-repository.js +42 -40
  237. package/dist/src/work-discovery/index.js +3 -3
  238. package/dist/src/work-discovery/service.d.ts +7 -7
  239. package/dist/src/work-discovery/service.js +241 -190
  240. package/dist/src/work-discovery/source-repository.js +42 -53
  241. package/dist/src/work-discovery/types.d.ts +2 -14
  242. package/package.json +3 -8
  243. package/dist/gateway/static/root/assets/agents-BvdqdER9.js +0 -2
  244. package/dist/gateway/static/root/assets/apps-page-nKLsfy6C.js +0 -1
  245. package/dist/gateway/static/root/assets/automations-page-Dh5bdZiN.js +0 -6
  246. package/dist/gateway/static/root/assets/browser-settings-page-CRJ_nAuh.js +0 -8
  247. package/dist/gateway/static/root/assets/capabilities-settings-panel-DeQR5BZt.js +0 -7
  248. package/dist/gateway/static/root/assets/capability-presets-api-D7tkhDMv.js +0 -1
  249. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D7uK3q1p.js +0 -1
  250. package/dist/gateway/static/root/assets/channels-settings-Bw6Dniyq.js +0 -1
  251. package/dist/gateway/static/root/assets/channels-status-swr-BrUTz4uU.js +0 -1
  252. package/dist/gateway/static/root/assets/connector-logo-8YU53RUT.js +0 -1
  253. package/dist/gateway/static/root/assets/connectors-page-k9tMiOL5.js +0 -2
  254. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +0 -2
  255. package/dist/gateway/static/root/assets/extension-settings-page-DEZw_7zN.js +0 -1
  256. package/dist/gateway/static/root/assets/gateway-settings-Dg8qCiIp.js +0 -1
  257. package/dist/gateway/static/root/assets/heartbeat-settings-27tRzDEo.js +0 -1
  258. package/dist/gateway/static/root/assets/home-page-VA511kMr.js +0 -3
  259. package/dist/gateway/static/root/assets/index-BvR-i-m6.js +0 -216
  260. package/dist/gateway/static/root/assets/index-zybP34zk.css +0 -1
  261. package/dist/gateway/static/root/assets/local-app-workbench-page-CaJq4-wV.js +0 -2
  262. package/dist/gateway/static/root/assets/locale-store-DUW5YE3R.js +0 -1
  263. package/dist/gateway/static/root/assets/logs-page-BLTCg69e.js +0 -2
  264. package/dist/gateway/static/root/assets/messages-CMjnbdbn.js +0 -3
  265. package/dist/gateway/static/root/assets/notes-workbench-Bp1w9UM1.js +0 -4
  266. package/dist/gateway/static/root/assets/project-detail-page-CZmbPDQN.js +0 -1
  267. package/dist/gateway/static/root/assets/projects-page-D5pzqfm5.js +0 -1
  268. package/dist/gateway/static/root/assets/remote-access-hub-CC-XhVGI.js +0 -1
  269. package/dist/gateway/static/root/assets/segmented-styles-BL8oLBEp.js +0 -1
  270. package/dist/gateway/static/root/assets/sessions-page-B2eTLVDV.js +0 -1
  271. package/dist/gateway/static/root/assets/settings-advanced-gate-CRuZ_bl0.js +0 -1
  272. package/dist/gateway/static/root/assets/settings-form-section-C4GXGeA4.js +0 -1
  273. package/dist/gateway/static/root/assets/shares-settings-YzSDS4G_.js +0 -1
  274. package/dist/gateway/static/root/assets/skill-reload-api-CwOo8zZk.js +0 -1
  275. package/dist/gateway/static/root/assets/skills-page-xd1cgSGN.js +0 -2
  276. package/dist/gateway/static/root/assets/time-picker-CstQ___Y.js +0 -1
  277. package/dist/gateway/static/root/assets/use-save-bar-registration-CQYE0l6z.js +0 -1
  278. package/dist/gateway/static/root/assets/user-context-page-BnQAWS_B.js +0 -1
  279. package/dist/gateway/static/root/assets/work-discovery-page-CAszL1y8.js +0 -1
  280. package/dist/gateway/static/root/assets/workflows-page-DxGzo3-x.js +0 -11
  281. package/dist/src/agent/code-intelligence/binary.d.ts +0 -15
  282. package/dist/src/agent/code-intelligence/binary.js +0 -372
  283. package/dist/src/agent/code-intelligence/index.d.ts +0 -4
  284. package/dist/src/agent/code-intelligence/index.js +0 -4
  285. package/dist/src/agent/code-intelligence/runtime.d.ts +0 -34
  286. package/dist/src/agent/code-intelligence/runtime.js +0 -280
  287. package/dist/src/agent/code-intelligence/tool-gating.d.ts +0 -5
  288. package/dist/src/agent/code-intelligence/tool-gating.js +0 -6
  289. package/dist/src/agent/code-intelligence/tools.d.ts +0 -6
  290. package/dist/src/agent/code-intelligence/tools.js +0 -266
  291. package/dist/src/agent/code-intelligence/types.d.ts +0 -22
  292. package/dist/src/agent/memory/context/planner.js +0 -286
  293. package/dist/src/agent/memory/dreaming/config.d.ts +0 -48
  294. package/dist/src/agent/memory/dreaming/config.js +0 -98
  295. package/dist/src/agent/memory/dreaming/constants.d.ts +0 -12
  296. package/dist/src/agent/memory/dreaming/constants.js +0 -18
  297. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +0 -19
  298. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -152
  299. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -16
  300. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -115
  301. package/dist/src/agent/memory/dreaming/preview.d.ts +0 -23
  302. package/dist/src/agent/memory/dreaming/preview.js +0 -52
  303. package/dist/src/agent/memory/dreaming/promotion-lifecycle.d.ts +0 -16
  304. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -44
  305. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +0 -19
  306. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -150
  307. package/dist/src/agent/memory/dreaming/runner.d.ts +0 -10
  308. package/dist/src/agent/memory/dreaming/runner.js +0 -78
  309. package/dist/src/agent/memory/dreaming/schedule.d.ts +0 -23
  310. package/dist/src/agent/memory/dreaming/schedule.js +0 -38
  311. package/dist/src/agent/memory/dreaming/scope.d.ts +0 -11
  312. package/dist/src/agent/memory/dreaming/scope.js +0 -33
  313. package/dist/src/agent/memory/dreaming/utils.d.ts +0 -3
  314. package/dist/src/agent/memory/dreaming/utils.js +0 -31
  315. package/dist/src/gateway/hono/routes/memory.d.ts +0 -3
  316. package/dist/src/gateway/hono/routes/memory.js +0 -460
  317. package/dist/src/storage/sqlite/dreaming-repository.d.ts +0 -61
  318. package/dist/src/storage/sqlite/dreaming-repository.js +0 -88
  319. package/dist/src/storage/sqlite/memory-readiness-repository.d.ts +0 -7
  320. package/dist/src/storage/sqlite/memory-readiness-repository.js +0 -30
  321. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +0 -27
  322. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -107
  323. package/dist/src/storage/sqlite/user-claims-repository.d.ts +0 -101
  324. package/dist/src/storage/sqlite/user-claims-repository.js +0 -241
  325. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +0 -3
  326. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -32
  327. package/dist/src/user-context/actionableInsights.d.ts +0 -14
  328. package/dist/src/user-context/actionableInsights.js +0 -34
  329. package/dist/src/user-context/context-compiler.d.ts +0 -27
  330. package/dist/src/user-context/context-compiler.js +0 -48
  331. package/dist/src/user-context/import.d.ts +0 -12
  332. package/dist/src/user-context/import.js +0 -51
  333. package/dist/src/user-context/memory-episode-evaluator.d.ts +0 -32
  334. package/dist/src/user-context/memory-episode-evaluator.js +0 -35
  335. package/dist/src/user-context/memory-readiness.d.ts +0 -33
  336. package/dist/src/user-context/memory-readiness.js +0 -41
  337. package/dist/src/user-context/memory-use-audit.d.ts +0 -10
  338. package/dist/src/user-context/memory-use-audit.js +0 -26
  339. package/dist/src/user-context/personal-playbook.d.ts +0 -11
  340. package/dist/src/user-context/personal-playbook.js +0 -41
  341. package/dist/src/user-context/profile.d.ts +0 -37
  342. package/dist/src/user-context/profile.js +0 -163
  343. package/dist/src/user-context/projection.d.ts +0 -120
  344. package/dist/src/user-context/projection.js +0 -262
  345. package/dist/src/user-context/source-recommendations.d.ts +0 -13
  346. package/dist/src/user-context/source-recommendations.js +0 -85
  347. /package/dist/src/{agent/code-intelligence → user-context/sources}/types.js +0 -0
@@ -1,15 +1,9 @@
1
- import { createLogger } from "../../../utils/logger/index.js";
2
- import { init_logger } from "../../../utils/logger.js";
3
- import { appendMemoryTraceEvent, markMemoryRecordsConflicted } from "../../../storage/sqlite/memory-records-repository.js";
4
- import { attachMemoryEvidence, upsertKnowledgeSourceItems } from "../../../storage/sqlite/knowledge-repository.js";
1
+ import { createContextEvidence, createUnderstanding, isUnderstandingSuppressed, linkUnderstandingEvidence, listUnderstandings, setUnderstandingStatus } from "../../../storage/sqlite/user-context-repository.js";
5
2
  import "../../../storage/sqlite/index.js";
6
- import { nextMemoryReviewAt } from "../lifecycle.js";
7
3
  import { extractExplicitUnderstandingCorrectionContent } from "./correction.js";
8
4
  import { inferMemorySensitivity, redactSensitiveMemoryText } from "../sensitivity.js";
9
- import { createHash, randomUUID } from "node:crypto";
5
+ import { createHash } from "node:crypto";
10
6
  //#region src/agent/memory/understanding/service.ts
11
- init_logger();
12
- const log = createLogger("UserUnderstanding");
13
7
  const MAX_CANDIDATE_CHARS = 600;
14
8
  const EXPLICIT_PATTERNS = [
15
9
  /\b(?:please\s+)?remember(?:\s+that)?\s+(.+)/i,
@@ -18,27 +12,27 @@ const EXPLICIT_PATTERNS = [
18
12
  /以后(?:都)?(?:请)?[::\s]*(.+)/,
19
13
  /下次(?:请)?[::\s]*(.+)/
20
14
  ];
15
+ const SENSITIVITY_RANK = {
16
+ normal: 0,
17
+ personal: 1,
18
+ secret: 2,
19
+ regulated: 3
20
+ };
21
+ function effectiveSensitivity(declared, content) {
22
+ const inferred = inferMemorySensitivity(content);
23
+ return SENSITIVITY_RANK[inferred] > SENSITIVITY_RANK[declared] ? inferred : declared;
24
+ }
21
25
  function normalizeContent(raw) {
22
26
  return raw.replace(/^["'“”‘’\s]+|["'“”‘’\s]+$/g, "").replace(/\s+/g, " ").trim().slice(0, MAX_CANDIDATE_CHARS);
23
27
  }
24
28
  function inferKind(content) {
25
29
  if (/\b(don't|do not|never|avoid)\b/i.test(content) || /不要|别再|禁止|底线/.test(content)) return "boundary";
26
30
  if (/\b(prefer|preference|like)\b/i.test(content) || /喜欢|偏好|习惯/.test(content)) return "preference";
27
- if (/\b(tool|command|pnpm|npm|git|ripgrep|rg)\b/i.test(content) || /工具|命令/.test(content)) return "tool_preference";
28
31
  if (/\b(project|repo|codebase|workspace)\b/i.test(content) || /项目|仓库|代码库/.test(content)) return "project_context";
29
- if (/\b(goal|plan|commit|deadline)\b/i.test(content) || /目标|计划|承诺|截止/.test(content)) return "commitment";
30
- if (/\b(next time|lesson|failed|error)\b/i.test(content) || /下次|教训|失败|错误/.test(content)) return "task_lesson";
31
- return "user_note";
32
- }
33
- const SENSITIVITY_RANK = {
34
- normal: 0,
35
- personal: 1,
36
- regulated: 2,
37
- secret: 3
38
- };
39
- function stricterSensitivity(content, declared) {
40
- const inferred = inferMemorySensitivity(content);
41
- return SENSITIVITY_RANK[inferred] > SENSITIVITY_RANK[declared] ? inferred : declared;
32
+ if (/\b(goal|plan|deadline)\b/i.test(content) || /目标|计划|截止/.test(content)) return "long_term_goal";
33
+ if (/\b(next time|lesson|failed|error)\b/i.test(content) || /教训|失败|错误/.test(content)) return "task_lesson";
34
+ if (/习惯|每周|每天|usually|routine/i.test(content)) return "routine";
35
+ return "current_state";
42
36
  }
43
37
  function canonicalKey(kind, content) {
44
38
  const normalized = content.toLocaleLowerCase().replace(/[^\p{L}\p{N}]+/gu, " ").trim();
@@ -46,192 +40,130 @@ function canonicalKey(kind, content) {
46
40
  }
47
41
  function extractExplicitUnderstandingCandidates(userContent) {
48
42
  const correction = extractExplicitUnderstandingCorrectionContent(userContent);
49
- if (correction) {
50
- const kind = inferKind(correction);
51
- return [{
52
- kind,
53
- content: correction,
54
- canonicalKey: canonicalKey(kind, correction),
55
- confidence: .95,
56
- importance: kind === "boundary" ? .9 : .8,
57
- explicitness: "explicit",
58
- durability: "durable",
59
- sensitivity: inferMemorySensitivity(correction),
60
- disclosurePolicy: kind === "boundary" ? "silent" : "referenceable",
61
- tags: ["user-understanding", "explicit-user-correction"]
62
- }];
63
- }
64
- const lines = userContent.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
65
- for (const line of lines.length > 0 ? lines : [userContent.trim()]) for (const pattern of EXPLICIT_PATTERNS) {
66
- const content = normalizeContent(pattern.exec(line)?.[1] ?? "");
67
- if (content.length < 8) continue;
68
- const kind = inferKind(content);
69
- return [{
70
- kind,
71
- content,
72
- canonicalKey: canonicalKey(kind, content),
73
- confidence: .92,
74
- importance: kind === "boundary" ? .9 : .75,
75
- explicitness: "explicit",
76
- durability: "durable",
77
- sensitivity: inferMemorySensitivity(content),
78
- disclosurePolicy: kind === "boundary" ? "silent" : "referenceable",
79
- tags: ["user-understanding", "explicit-user-request"]
80
- }];
81
- }
82
- return [];
43
+ const matched = correction ?? userContent.split(/\r?\n/).map((line) => line.trim()).filter(Boolean).flatMap((line) => EXPLICIT_PATTERNS.map((pattern) => pattern.exec(line)?.[1] ?? "")).map(normalizeContent).find((content) => content.length >= 8);
44
+ if (!matched) return [];
45
+ const content = normalizeContent(matched);
46
+ const kind = inferKind(content);
47
+ return [{
48
+ kind,
49
+ content,
50
+ canonicalKey: canonicalKey(kind, content),
51
+ confidence: correction ? .98 : .95,
52
+ importance: kind === "boundary" ? .9 : .8,
53
+ explicitness: "explicit",
54
+ durability: "durable",
55
+ sensitivity: inferMemorySensitivity(content),
56
+ disclosurePolicy: kind === "boundary" ? "silent" : "referenceable"
57
+ }];
58
+ }
59
+ function scopeForCandidate(candidate, context) {
60
+ if (candidate.durability === "ephemeral" && context.sessionKey) return {
61
+ type: "session",
62
+ id: context.sessionKey
63
+ };
64
+ if (candidate.kind === "project_context" && context.projectId) return {
65
+ type: "project",
66
+ id: context.projectId
67
+ };
68
+ if ((candidate.kind === "project_context" || candidate.kind === "task_lesson") && context.workspaceId) return {
69
+ type: "workspace",
70
+ id: context.workspaceId
71
+ };
72
+ return { type: "global" };
73
+ }
74
+ function sameScope(left, right) {
75
+ return left.type === right.type && left.id === right.id;
83
76
  }
84
77
  var UserUnderstandingService = class {
85
- constructor(options) {
86
- this.options = options;
87
- }
88
78
  async reviewTurn(params) {
79
+ params.assistantContent;
89
80
  const candidates = extractExplicitUnderstandingCandidates(params.userContent);
90
- const sourceText = `User:\n${params.userContent.trim()}\n\nAssistant:\n${params.assistantContent.trim()}`;
91
- const normalizedText = redactSensitiveMemoryText(sourceText);
92
- const contentHash = createHash("sha256").update(sourceText).digest("hex");
93
- const sourceItemId = upsertKnowledgeSourceItems([{
94
- sourceInstanceId: params.sessionKey ? `session:${params.sessionKey}` : "session:unknown",
95
- collectionScope: "conversation",
96
- externalId: contentHash,
97
- itemType: "conversation_turn",
98
- authorRole: "user",
99
- occurredAt: (/* @__PURE__ */ new Date()).toISOString(),
100
- contentHash,
101
- normalizedText,
102
- metadata: params.sessionKey ? { sessionKey: params.sessionKey } : {},
103
- sensitivity: "personal",
104
- retentionClass: "bounded",
105
- synthesisStatus: "pending"
106
- }]).items[0]?.id;
81
+ if (candidates.length === 0) return {
82
+ proposed: 0,
83
+ created: 0,
84
+ deduplicated: 0,
85
+ rejected: 0,
86
+ createdRecords: []
87
+ };
88
+ const evidence = createContextEvidence({
89
+ sourceType: "conversation",
90
+ sourceRef: params.sessionKey ? `session:${params.sessionKey}:turn:${params.turnId ?? "unknown"}` : `turn:${params.turnId ?? "unknown"}`,
91
+ redactedExcerpt: redactSensitiveMemoryText(params.userContent).slice(0, MAX_CANDIDATE_CHARS),
92
+ trustLevel: "owner",
93
+ observedAt: Date.now()
94
+ });
107
95
  return {
108
96
  ...await this.applyCandidates(candidates, {
109
- agentId: params.agentId,
110
97
  sessionKey: params.sessionKey,
111
- sourceItemId,
112
- sourceText: params.userContent,
98
+ workspaceId: params.workspaceId,
99
+ projectId: params.projectId,
100
+ evidenceIds: [evidence.id],
113
101
  reviewSource: "turn",
114
102
  supersedesRecordIds: params.correctionTargetRecordIds
115
103
  }),
116
- sourceItemId
104
+ sourceItemId: evidence.id
117
105
  };
118
106
  }
119
107
  async applyCandidates(candidates, context) {
120
- const startedAt = Date.now();
121
108
  let created = 0;
122
109
  let deduplicated = 0;
123
110
  let rejected = 0;
124
- const recordIds = [];
125
111
  const createdRecords = [];
126
- const correctionTargets = [...new Set(context.supersedesRecordIds ?? [])];
127
- const conflictGroupId = correctionTargets.length > 1 ? randomUUID() : void 0;
128
- if (conflictGroupId) markMemoryRecordsConflicted(correctionTargets, conflictGroupId);
112
+ const correctionTarget = context.supersedesRecordIds?.length === 1 ? context.supersedesRecordIds[0] : void 0;
113
+ const evidenceIds = [...new Set(context.evidenceIds ?? [])];
114
+ const sourceItemIds = [context.sourceItemId, ...context.sourceItemIds ?? []].filter((value) => Boolean(value));
115
+ for (const sourceItemId of [...new Set(sourceItemIds)]) {
116
+ const evidence = createContextEvidence({
117
+ sourceType: context.source?.provider ? "connector" : "runtime",
118
+ ...context.source?.sourceInstanceId ? { sourceInstanceId: context.source.sourceInstanceId } : {},
119
+ sourceRef: sourceItemId,
120
+ ...context.sourceText ? { redactedExcerpt: redactSensitiveMemoryText(context.sourceText).slice(0, MAX_CANDIDATE_CHARS) } : {},
121
+ trustLevel: context.source?.provider ? "untrusted" : "trusted",
122
+ observedAt: Date.now()
123
+ });
124
+ evidenceIds.push(evidence.id);
125
+ }
129
126
  for (const candidate of candidates.slice(0, 10)) {
130
127
  const content = normalizeContent(candidate.content);
131
- const sensitivity = stricterSensitivity(content, candidate.sensitivity);
132
- if (content.length < 4 || candidate.confidence < .55 || sensitivity === "secret" || sensitivity === "regulated") {
128
+ const sensitivity = effectiveSensitivity(candidate.sensitivity, content);
129
+ const scope = scopeForCandidate(candidate, context);
130
+ const key = candidate.canonicalKey ?? canonicalKey(candidate.kind, content);
131
+ if (content.length < 4 || candidate.confidence < .55 || sensitivity === "secret" || sensitivity === "regulated" || isUnderstandingSuppressed(key, scope)) {
133
132
  rejected += 1;
134
133
  continue;
135
134
  }
136
- const evidenceText = context.sourceText ? redactSensitiveMemoryText(context.sourceText).slice(0, MAX_CANDIDATE_CHARS) : void 0;
137
- const key = candidate.canonicalKey ?? canonicalKey(candidate.kind, content);
138
- const supersedesRecordId = correctionTargets.length === 1 ? correctionTargets[0] : void 0;
139
- const existing = await this.options.list(key);
140
- const sourceItemIds = [...new Set([...context.sourceItemId ? [context.sourceItemId] : [], ...context.sourceItemIds ?? []])];
141
- const evidence = (sourceItemIds.length ? sourceItemIds : [void 0]).map((sourceItemId) => ({
142
- ...sourceItemId ? { sourceItemId } : {},
143
- relation: "supports",
144
- ...context.sessionKey ? { sessionKey: context.sessionKey } : {},
145
- ...evidenceText ? { sourceText: evidenceText } : {},
146
- observedAt: (/* @__PURE__ */ new Date()).toISOString(),
147
- confidence: candidate.confidence
148
- }));
149
- if (existing[0]) {
135
+ const duplicate = listUnderstandings().find((item) => item.canonicalKey === key && item.status !== "rejected" && item.status !== "archived" && sameScope(item.scope, scope));
136
+ if (duplicate) {
137
+ for (const evidenceId of evidenceIds) linkUnderstandingEvidence(duplicate.versionId, evidenceId, "supports", candidate.confidence);
150
138
  deduplicated += 1;
151
- recordIds.push(existing[0].id);
152
- for (const sourceItemId of sourceItemIds) attachMemoryEvidence({
153
- recordId: existing[0].id,
154
- sourceItemId,
155
- relation: "supports",
156
- excerpt: evidenceText,
157
- confidence: candidate.confidence
158
- });
159
139
  continue;
160
140
  }
161
- const write = await this.options.write({
141
+ const isExplicit = candidate.explicitness === "explicit";
142
+ const record = createUnderstanding({
162
143
  kind: candidate.kind,
163
- content,
164
144
  canonicalKey: key,
165
- scope: context.agentId || context.sessionKey ? {
166
- userId: "local-owner",
167
- sessionKey: context.sessionKey
168
- } : void 0,
169
- tags: [...new Set(["user-understanding", ...candidate.tags ?? []])],
170
- source: context.source ?? { provider: "user-understanding" },
171
- confidence: candidate.confidence,
172
- status: "candidate",
173
- sensitivity,
145
+ status: isExplicit ? "active" : "candidate",
146
+ scope,
174
147
  explicitness: candidate.explicitness,
175
148
  durability: candidate.durability,
176
- importance: candidate.importance,
149
+ sensitivity,
177
150
  disclosurePolicy: candidate.disclosurePolicy,
178
- evidence,
179
- validFrom: candidate.validFrom,
180
- validTo: candidate.validTo,
181
- reviewAfter: nextMemoryReviewAt({
182
- durability: candidate.durability,
183
- explicitness: candidate.explicitness
184
- }),
185
- supersedesRecordId,
186
- conflictGroupId
151
+ confidence: candidate.confidence,
152
+ statement: content,
153
+ createdBy: context.reviewSource === "background" ? "consolidation" : "runtime",
154
+ changeReason: context.reviewSource === "background" ? "background synthesis" : "explicit user statement",
155
+ ...candidate.validFrom ? { validFrom: Date.parse(candidate.validFrom) } : {},
156
+ ...candidate.validTo ? { validTo: Date.parse(candidate.validTo) } : {},
157
+ ...correctionTarget ? { supersedesId: correctionTarget } : {}
187
158
  });
188
- if (write.success) {
189
- created += 1;
190
- if (write.record) {
191
- recordIds.push(write.record.id);
192
- createdRecords.push({
193
- id: write.record.id,
194
- content: write.record.content,
195
- kind: write.record.kind
196
- });
197
- }
198
- for (const sourceItemId of write.record ? sourceItemIds : []) attachMemoryEvidence({
199
- recordId: write.record.id,
200
- sourceItemId,
201
- relation: "supports",
202
- excerpt: evidenceText,
203
- confidence: candidate.confidence
204
- });
205
- } else {
206
- rejected += 1;
207
- log.debug({
208
- errorMessage: write.error,
209
- canonicalKey: key
210
- }, "Understanding candidate was not stored");
211
- }
212
- }
213
- try {
214
- appendMemoryTraceEvent({
215
- sessionKey: context.sessionKey,
216
- phase: "understanding",
217
- providerId: "user-understanding",
218
- request: {
219
- ...context.agentId ? { agentId: context.agentId } : {},
220
- source: context.reviewSource ?? "turn",
221
- proposed: candidates.length,
222
- created,
223
- deduplicated,
224
- rejected
225
- },
226
- resultCount: created,
227
- selectedRecordIds: recordIds,
228
- durationMs: Date.now() - startedAt
159
+ for (const evidenceId of evidenceIds) linkUnderstandingEvidence(record.versionId, evidenceId, "supports", candidate.confidence);
160
+ if (correctionTarget && isExplicit) setUnderstandingStatus(correctionTarget, "archived");
161
+ created += 1;
162
+ createdRecords.push({
163
+ id: record.id,
164
+ content: record.statement,
165
+ kind: record.kind
229
166
  });
230
- } catch (err) {
231
- log.debug({
232
- err,
233
- sessionKey: context.sessionKey
234
- }, "Understanding quality trace append failed");
235
167
  }
236
168
  return {
237
169
  proposed: candidates.length,
@@ -1,15 +1,14 @@
1
- import type { MemoryDisclosurePolicy, MemoryDurability, MemoryExplicitness, MemoryKind, MemorySensitivity } from '../types.js';
1
+ import type { UnderstandingKind, UserUnderstanding } from '../../../user-context/domain.js';
2
2
  export interface UnderstandingCandidate {
3
- kind: MemoryKind;
3
+ kind: UnderstandingKind;
4
4
  content: string;
5
5
  canonicalKey?: string;
6
6
  confidence: number;
7
7
  importance: number;
8
- explicitness: MemoryExplicitness;
9
- durability: MemoryDurability;
10
- sensitivity: MemorySensitivity;
11
- disclosurePolicy: MemoryDisclosurePolicy;
12
- tags?: string[];
8
+ explicitness: UserUnderstanding['explicitness'];
9
+ durability: UserUnderstanding['durability'];
10
+ sensitivity: UserUnderstanding['sensitivity'];
11
+ disclosurePolicy: UserUnderstanding['disclosurePolicy'];
13
12
  validFrom?: string;
14
13
  validTo?: string;
15
14
  }
@@ -22,6 +21,6 @@ export interface UnderstandingReviewResult {
22
21
  createdRecords: Array<{
23
22
  id: string;
24
23
  content: string;
25
- kind: MemoryKind;
24
+ kind: UnderstandingKind;
26
25
  }>;
27
26
  }
@@ -6,6 +6,8 @@ export interface UserContextCoordinatorOptions {
6
6
  getConfig: () => Config | undefined;
7
7
  isEnabledForSession: (sessionKey: string) => boolean;
8
8
  getAgentIdForSession: (sessionKey: string) => string;
9
+ getWorkspaceIdForSession?: (sessionKey: string) => string;
10
+ getProjectIdForSession?: (sessionKey: string) => string | undefined;
9
11
  getMemoryManagerForSession: (sessionKey: string) => MemoryManager;
10
12
  getLastAssistantContent: (sessionKey: string) => string | null;
11
13
  }
@@ -15,7 +17,6 @@ export declare class UserContextCoordinator {
15
17
  private readonly lastTurnId;
16
18
  private readonly correctionTargets;
17
19
  private readonly planner;
18
- private readonly contextCompiler;
19
20
  constructor(options: UserContextCoordinatorOptions);
20
21
  forgetSession(sessionKey: string): void;
21
22
  clear(): void;
@@ -1,14 +1,15 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { setMemoryTurnFeedback } from "../../storage/sqlite/memory-records-repository.js";
3
+ import { getTurnPersonalization, recordContextFeedback, setUnderstandingStatus } from "../../storage/sqlite/user-context-repository.js";
4
4
  import "../../storage/sqlite/index.js";
5
+ import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
5
6
  import { assembleTaskContext } from "../../tasks/task-context-assembler.js";
6
7
  import { shouldPlanUserContextThisTurn } from "./memory-config.js";
7
- import { ContextCompiler } from "../../user-context/context-compiler.js";
8
- import { UserContextPlanner } from "./context/planner.js";
8
+ import { UserContextPlanner } from "../../user-context/planner.js";
9
9
  import { isExplicitUnderstandingCorrection } from "./understanding/correction.js";
10
10
  import { extractAgentUserPlainText } from "./user-message-text.js";
11
11
  //#region src/agent/memory/user-context-coordinator.ts
12
+ init_session_key();
12
13
  init_logger();
13
14
  const log = createLogger("UserContextCoordinator");
14
15
  var UserContextCoordinator = class {
@@ -16,7 +17,6 @@ var UserContextCoordinator = class {
16
17
  lastTurnId = /* @__PURE__ */ new Map();
17
18
  correctionTargets = /* @__PURE__ */ new Map();
18
19
  planner = new UserContextPlanner();
19
- contextCompiler = new ContextCompiler();
20
20
  constructor(options) {
21
21
  this.options = options;
22
22
  }
@@ -49,26 +49,22 @@ var UserContextCoordinator = class {
49
49
  this.correctionTargets.delete(sessionKey);
50
50
  let excludedRecordIds;
51
51
  if (previousTurnId && isExplicitUnderstandingCorrection(userQuery)) try {
52
- const trace = setMemoryTurnFeedback({
53
- turnId: previousTurnId,
54
- rating: "incorrect",
55
- source: "system",
56
- reasonCode: "detected_explicit_user_correction"
57
- });
58
- if (trace?.selectedRecordIds.length) {
59
- this.correctionTargets.set(sessionKey, trace.selectedRecordIds);
60
- excludedRecordIds = trace.selectedRecordIds;
61
- if (trace.selectedRecordIds.length === 1) setMemoryTurnFeedback({
62
- turnId: previousTurnId,
63
- rating: "incorrect",
64
- source: "system",
65
- reasonCode: "detected_explicit_user_correction",
66
- records: [{
67
- recordId: trace.selectedRecordIds[0],
68
- rating: "incorrect",
69
- reasonCode: "detected_explicit_user_correction"
70
- }]
71
- });
52
+ const personalization = getTurnPersonalization(previousTurnId);
53
+ const selectedIds = personalization?.items.filter((item) => item.objectType === "understanding" && item.decision === "selected").map((item) => item.objectId) ?? [];
54
+ if (personalization && selectedIds.length) {
55
+ for (const recordId of selectedIds) {
56
+ recordContextFeedback({
57
+ turnId: previousTurnId,
58
+ runId: personalization.runId,
59
+ objectType: "understanding",
60
+ objectId: recordId,
61
+ rating: "wrong",
62
+ reason: "detected_explicit_user_correction"
63
+ });
64
+ setUnderstandingStatus(recordId, "needs_review");
65
+ }
66
+ this.correctionTargets.set(sessionKey, selectedIds);
67
+ excludedRecordIds = selectedIds;
72
68
  }
73
69
  } catch (err) {
74
70
  log.debug({
@@ -79,30 +75,17 @@ var UserContextCoordinator = class {
79
75
  const turn = (this.userTurn.get(sessionKey) ?? 0) + 1;
80
76
  this.userTurn.set(sessionKey, turn);
81
77
  if (!shouldPlanUserContextThisTurn(config, turn)) return empty();
82
- const plan = await this.planner.plan({
83
- memoryManager: this.options.getMemoryManagerForSession(sessionKey),
84
- agentId: this.options.getAgentIdForSession(sessionKey),
78
+ return this.planner.plan({
85
79
  sessionKey,
80
+ channel: parseSessionKey(sessionKey)?.source,
81
+ workspaceId: this.options.getWorkspaceIdForSession?.(sessionKey) ?? "",
82
+ projectId: this.options.getProjectIdForSession?.(sessionKey),
86
83
  turnId,
87
84
  query,
88
85
  userMessage,
89
86
  excludedRecordIds,
90
87
  allocation: taskContext.allocation
91
88
  });
92
- if (plan.traceId) try {
93
- this.contextCompiler.capture({
94
- sessionKey,
95
- query,
96
- plan
97
- });
98
- } catch (err) {
99
- log.debug({
100
- err,
101
- sessionKey,
102
- traceId: plan.traceId
103
- }, "Context snapshot was not persisted");
104
- }
105
- return plan;
106
89
  }
107
90
  async afterTurn(sessionKey, userPlainText) {
108
91
  if (!this.options.isEnabledForSession(sessionKey)) return void 0;
@@ -114,6 +97,9 @@ var UserContextCoordinator = class {
114
97
  const review = await memoryManager.captureTurnUnderstanding(userPlainText, assistantContent, {
115
98
  agentId: this.options.getAgentIdForSession(sessionKey),
116
99
  sessionId: sessionKey,
100
+ turnId: this.lastTurnId.get(sessionKey),
101
+ workspaceId: this.options.getWorkspaceIdForSession?.(sessionKey),
102
+ projectId: this.options.getProjectIdForSession?.(sessionKey),
117
103
  correctionTargetRecordIds
118
104
  });
119
105
  memoryManager.syncProvidersForTurn(userPlainText, assistantContent, { sessionId: sessionKey });
@@ -1,13 +1,12 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import "../memory/dreaming/constants.js";
3
+ import { runContextConsolidation } from "../../user-context/consolidation.js";
4
4
  import { persistInboundAttachments } from "../../channels/attachments/inbound-persist.js";
5
5
  import { buildTranscriptUserMessage, clearPendingTranscriptUserMessage, hydrateUserTurnForLlm, setPendingTranscriptUserMessage } from "../inbound/attachment-pipeline.js";
6
6
  import { extractAgentUserPlainText } from "../memory/user-message-text.js";
7
7
  import { resolveEffectiveThinkingLevel } from "../../session/thinking-resolve.js";
8
8
  import { abortEmbeddedRun } from "../embedded/runs.js";
9
9
  import { runEmbeddedTurnForSession } from "../embedded/run-for-session.js";
10
- import { runDreamingPhase } from "../memory/dreaming/runner.js";
11
10
  import { randomUUID } from "node:crypto";
12
11
  //#region src/agent/orchestration/agent-orchestrator.ts
13
12
  /**
@@ -51,16 +50,14 @@ var AgentOrchestrator = class {
51
50
  log.debug({ sessionKey }, "Processing message through agent orchestrator");
52
51
  await this.sessionHydrator.workspace(sessionKey);
53
52
  if (typeof msg.content === "string" && (sessionKey.startsWith("cron:") || sessionKey.includes(":cron:") || sessionKey.includes(":automation:") || context.channel === "cron" || context.channel === "automation")) {
54
- const content = msg.content;
55
- if (content.includes("__xopc_memory_dreaming_sweep__") || content.includes("__xopc_memory_dreaming_light_sweep__") || content.includes("__xopc_memory_dreaming_rem_sweep__")) {
53
+ if (msg.content.includes("__xopc_user_context_consolidation__")) {
56
54
  const cfg = this.getConfig?.();
57
55
  if (!cfg) {
58
- log.warn({ sessionKey }, "Dreaming sweep skipped: config unavailable");
56
+ log.warn({ sessionKey }, "User context review skipped: config unavailable");
59
57
  return;
60
58
  }
61
- await runDreamingPhase({
59
+ await runContextConsolidation({
62
60
  config: cfg,
63
- phase: content.includes("__xopc_memory_dreaming_light_sweep__") ? "light" : content.includes("__xopc_memory_dreaming_rem_sweep__") ? "rem" : "deep",
64
61
  triggerKind: "schedule"
65
62
  });
66
63
  return;
@@ -5,7 +5,7 @@ function buildMemorySection(params) {
5
5
  const citationsMode = params.citationsMode ?? "on";
6
6
  const citationInstruction = citationsMode === "off" ? "Citations are disabled: do not mention file paths or line numbers in replies." : citationsMode === "source-only" ? "Citations: mention the memory record id when it helps." : "Citations: include the memory record id when it helps the user verify recalled context.";
7
7
  const toolLines = [];
8
- if (params.availableTools.has("memory_search")) toolLines.push("1. Run `memory_search` to search structured user-understanding records");
8
+ if (params.availableTools.has("memory_search")) toolLines.push("1. Run `memory_search` to search workspace and connected-source memory records");
9
9
  if (params.availableTools.has("session_search")) toolLines.push(`${toolLines.length + 1}. For **other chat sessions** / cross-session history, use \`session_search\` with keywords (or omit \`query\` to list recent sessions)`);
10
10
  if (params.availableTools.has("memory_get")) toolLines.push(`${toolLines.length + 1}. Use \`memory_get\` only for record ids returned by \`memory_search\``);
11
11
  toolLines.push(`${toolLines.length + 1}. If low confidence after search, say you checked`);
@@ -14,7 +14,7 @@ function buildMemorySection(params) {
14
14
  "",
15
15
  citationInstruction,
16
16
  "",
17
- "User understanding is compiled from structured records and injected above when relevant.",
17
+ "Relevant user understanding is selected separately and injected above.",
18
18
  "",
19
19
  "Before answering anything about prior work, decisions, dates, people, preferences, or todos:",
20
20
  ...toolLines,
@@ -22,11 +22,11 @@ function buildMemorySection(params) {
22
22
  "### Memory Sources",
23
23
  "",
24
24
  "- **Session history:** use `session_search` when available for other chats and prior turns.",
25
- "- **Structured memory:** cite only record ids returned by `memory_search` / `memory_get`.",
25
+ "- **Workspace memory:** cite only record ids returned by `memory_search` / `memory_get`.",
26
26
  "",
27
27
  "### Writing to Memory",
28
28
  "",
29
- "- **Declarative vs procedural:** facts and preferences belong to structured memory; reusable task playbooks belong to skills.",
29
+ "- **Declarative vs procedural:** user preferences belong to structured user understanding; reusable task procedures belong to skills.",
30
30
  "- Explicit \"remember this\" statements are captured as durable structured understanding after the turn.",
31
31
  "- Do not invent, cite, or promise memory record ids that were not returned by a memory tool.",
32
32
  "- **Text > Brain**"
@@ -1,10 +1,5 @@
1
1
  //#region src/agent/prompt/sections/tooling.ts
2
2
  const CORE_TOOL_ORDER = [
3
- "code_search",
4
- "code_read_symbol",
5
- "code_trace",
6
- "code_impact",
7
- "code_architecture",
8
3
  "read_file",
9
4
  "write_file",
10
5
  "apply_patch",
@@ -41,11 +36,6 @@ const CORE_TOOL_ORDER = [
41
36
  "execute_code"
42
37
  ];
43
38
  const CORE_TOOL_SUMMARIES = {
44
- code_search: "Find definitions, implementations, routes, types, and structurally important symbols",
45
- code_read_symbol: "Read exact source for a graph symbol before editing",
46
- code_trace: "Trace callers, callees, data flow, and cross-service paths",
47
- code_impact: "Map git changes to affected symbols and blast radius",
48
- code_architecture: "Map packages, boundaries, layers, entry points, hotspots, and clusters",
49
39
  read_file: "Read targeted file contents before editing",
50
40
  write_file: "Create new files or intentional complete rewrites; prefer apply_patch for code changes",
51
41
  apply_patch: "Apply source edits with patches that begin exactly with *** Begin Patch and end exactly with *** End Patch",
@@ -39,7 +39,6 @@ export declare class SystemPromptBuilder {
39
39
  constructor(config: SystemPromptBuilderConfig);
40
40
  build(contextFiles: EmbeddedContextFile[], options: SystemPromptBuildOptions): string;
41
41
  rebuild(contextFiles: EmbeddedContextFile[], options: SystemPromptBuildOptions): string;
42
- private extractTimezone;
43
42
  getSkillPrompt(): string;
44
43
  getBasePrompt(contextFiles: EmbeddedContextFile[], options?: {
45
44
  externalMemoryInstructions?: string;