@xopcai/xopc 0.0.248 → 0.0.250

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 (512) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{activity-store-etpmyV7S.js → activity-store-DfBjTSo9.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BmKxSM1k.js → agent-avatar-dicebear-BN6FJXkJ.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C7rZH1A2.js +1 -0
  6. package/dist/gateway/static/root/assets/agents-CgGaoo4z.js +1 -0
  7. package/dist/gateway/static/root/assets/{api-B0-hLuZ1.js → api-zxpcJfgj.js} +1 -1
  8. package/dist/gateway/static/root/assets/app-management-settings-panel-D2gMshuS.js +1 -0
  9. package/dist/gateway/static/root/assets/appearance-settings-wMu0jSKx.js +1 -0
  10. package/dist/gateway/static/root/assets/apps-page-KF1Gnv36.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BnMSgZvR.js → archive-plugin-u6EE3JV8.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-CejsQMev.js → attachment-load-DbJurnv-.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-RC8EyoAf.js → automations-page-Ew_e5HDn.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-Ch-ldu35.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-DGjppLSG.js → binary-plugins-DtDFNfPM.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-CWdP4bUc.js → block-editor-CnAwmabq.js} +44 -44
  17. package/dist/gateway/static/root/assets/browser-settings-page-DtVhsHJW.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BQ1Ilw_o.js → browser-workflow-inputs-BX1-uM9L.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-CJh4NyxT.js → browser-workflows-page-CcbUOWDF.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel--sXeylhe.js +7 -0
  21. package/dist/gateway/static/root/assets/channels-settings-AXSBDujZ.js +1 -0
  22. package/dist/gateway/static/root/assets/{channels-status-swr-Ohhee4vm.js → channels-status-swr-CX-yWwLD.js} +1 -1
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-BOtoKTK3.js → chat-terminal-dock-CryTDNdD.js} +2 -2
  24. package/dist/gateway/static/root/assets/connectors-page-HBHUWohz.js +2 -0
  25. package/dist/gateway/static/root/assets/{cron-expression-DTj1V3Sw.js → cron-expression-ji5aWrjG.js} +1 -1
  26. package/dist/gateway/static/root/assets/{date-picker-Yr6OCvGL.js → date-picker-Dro_w3eX.js} +1 -1
  27. package/dist/gateway/static/root/assets/dependency-picker-Ce19KKnX.js +1 -0
  28. package/dist/gateway/static/root/assets/{desktop-pet-DbGzggPF.js → desktop-pet-DsSi-3uZ.js} +1 -1
  29. package/dist/gateway/static/root/assets/desktop-pet-settings-8WQ4woJy.js +1 -0
  30. package/dist/gateway/static/root/assets/{extension-debug-page-DgTtk4KC.js → extension-debug-page-CgvEBfLZ.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-DtQeiP6f.js → extension-page-DkznBbMj.js} +1 -1
  32. package/dist/gateway/static/root/assets/extension-settings-page-BOjhchK2.js +1 -0
  33. package/dist/gateway/static/root/assets/files-BArWTfr7.js +1 -0
  34. package/dist/gateway/static/root/assets/gateway-config-api-OEruhhX3.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-swr-DXuXtU1w.js → gateway-config-swr-CMNbl0FZ.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-BgH3A0LO.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-CzBzglzQ.js → gateway-startup-retry-CR7Xg8As.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-C97naDkO.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-BBKKme4G.js +1 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-TIgsn04n.js → image-generation-api-C5mn73ca.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-BcaF-dgQ.js +72 -0
  42. package/dist/gateway/static/root/assets/index-DAryGvZ7.css +2 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-wsWuoa8p.js → keyboard-shortcuts-settings-BYhfzsqe.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-DNncc2tn.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-CXrbrGo8.js → local-apps-page-vBlknU7C.js} +1 -1
  46. package/dist/gateway/static/root/assets/{locale-store-BJFLQY8O.js → locale-store-CF4erhjB.js} +1 -1
  47. package/dist/gateway/static/root/assets/logs-page-CizZInrT.js +2 -0
  48. package/dist/gateway/static/root/assets/{management-settings-BdJZFR7U.js → management-settings-Dnx6mSNe.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-split-NK3ACVG2.js → markdown-split-DtBtcHWi.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-view-DTF9v1gg.js → markdown-view-CQvzsE24.js} +1 -1
  51. package/dist/gateway/static/root/assets/{media-plugins-F0jcUxyl.js → media-plugins-DrMYeHe7.js} +1 -1
  52. package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +3 -0
  53. package/dist/gateway/static/root/assets/mobile-pairing-wizard-AKgGy3Kx.js +1 -0
  54. package/dist/gateway/static/root/assets/note-detail-panel-Bw3jD9Jf.js +5 -0
  55. package/dist/gateway/static/root/assets/notes-page-Dpqq7Z-J.js +8 -0
  56. package/dist/gateway/static/root/assets/page-tabs-CX9T71by.js +1 -0
  57. package/dist/gateway/static/root/assets/preview-open-alternatives-DvEHoimN.js +1 -0
  58. package/dist/gateway/static/root/assets/{product-open-page-CxGGlWA8.js → product-open-page-COcr_NUJ.js} +1 -1
  59. package/dist/gateway/static/root/assets/project-detail-page-BuT6MCTs.js +1 -0
  60. package/dist/gateway/static/root/assets/projects-page-DXWMxOjf.js +1 -0
  61. package/dist/gateway/static/root/assets/{registry-api-CIsNlSBi.js → registry-api-BsRBlji7.js} +1 -1
  62. package/dist/gateway/static/root/assets/remote-access-hub-7rBCUWzZ.js +1 -0
  63. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-YkjhiQfA.js → runtime-tools-settings-panel-CQ13P-mS.js} +2 -2
  64. package/dist/gateway/static/root/assets/{schema-form-oFGf3G3s.js → schema-form-BUVyTpZj.js} +1 -1
  65. package/dist/gateway/static/root/assets/sessions-page-gmEOYNb4.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-advanced-gate-DYYoJcl7.js +1 -0
  67. package/dist/gateway/static/root/assets/settings-form-section-DVY-8_B9.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-page-C7VWs0IT.js → settings-page-CdiVYyTl.js} +1 -1
  69. package/dist/gateway/static/root/assets/setup-status-panel-BhenBnUj.js +1 -0
  70. package/dist/gateway/static/root/assets/{share-preview-page-t5oz18rh.js → share-preview-page-C88YLKm4.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-Dq7xIj0_.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-MDI9Lz6z.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-DLir1nM0.js +2 -0
  74. package/dist/gateway/static/root/assets/{skills-page.utils-DEDTYs2W.js → skills-page.utils-BMZAfS3G.js} +1 -1
  75. package/dist/gateway/static/root/assets/system-settings-panel-BM8ivYan.js +1 -0
  76. package/dist/gateway/static/root/assets/task-detail-page-P0_RldWv.js +1 -0
  77. package/dist/gateway/static/root/assets/{theme-store-O597U8q_.js → theme-store-BOgkc_9D.js} +1 -1
  78. package/dist/gateway/static/root/assets/tunnel-api-DemxChjo.js +1 -0
  79. package/dist/gateway/static/root/assets/{use-autosave-B5eUJ6Zq.js → use-autosave-CV3Ui5hu.js} +1 -1
  80. package/dist/gateway/static/root/assets/user-model-page-CxfnoRVn.js +2 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-CMKSwz4C.js → voice-api-key-field-CUoCi4Sq.js} +1 -1
  82. package/dist/gateway/static/root/assets/{voice-config-api-q7B6fOFB.js → voice-config-api-C-ryeIxj.js} +1 -1
  83. package/dist/gateway/static/root/assets/work-discovery-overlay-BhDlkCMB.js +1 -0
  84. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DZmvLZjb.js → workflow-run-setup-panel-D8CcPc_C.js} +2 -2
  85. package/dist/gateway/static/root/assets/workflows-page-Bxn2Dc16.js +5 -0
  86. package/dist/gateway/static/root/index.html +11 -27
  87. package/dist/package.js +1 -1
  88. package/dist/packages/gateway-contract/src/user-message-display.js +18 -0
  89. package/dist/src/agent/agent-instance-gateway.d.ts +3 -3
  90. package/dist/src/agent/agent-manager.d.ts +13 -13
  91. package/dist/src/agent/agent-manager.js +76 -42
  92. package/dist/src/agent/background-review/coordinator.d.ts +2 -4
  93. package/dist/src/agent/background-review/coordinator.js +5 -30
  94. package/dist/src/agent/background-review/prompts.d.ts +4 -2
  95. package/dist/src/agent/background-review/prompts.js +33 -19
  96. package/dist/src/agent/background-review/run-background-review.d.ts +6 -7
  97. package/dist/src/agent/background-review/run-background-review.js +47 -41
  98. package/dist/src/agent/background-review/settings.d.ts +0 -1
  99. package/dist/src/agent/background-review/settings.js +6 -7
  100. package/dist/src/agent/context/audit.d.ts +38 -0
  101. package/dist/src/agent/context/audit.js +123 -0
  102. package/dist/src/agent/context/coordinator.d.ts +31 -0
  103. package/dist/src/agent/context/coordinator.js +73 -0
  104. package/dist/src/agent/context/execution-context.d.ts +13 -0
  105. package/dist/src/agent/context/execution-context.js +211 -0
  106. package/dist/src/agent/context/execution-context.types.d.ts +50 -0
  107. package/dist/src/agent/context/execution-scope.d.ts +5 -1
  108. package/dist/src/agent/context/execution-scope.js +6 -2
  109. package/dist/src/agent/context/prepend.d.ts +2 -0
  110. package/dist/src/agent/context/prepend.js +28 -0
  111. package/dist/src/agent/context/project-context.d.ts +6 -3
  112. package/dist/src/agent/context/project-context.js +28 -23
  113. package/dist/src/agent/embedded/index.js +1 -1
  114. package/dist/src/agent/embedded/run-for-session.js +1 -0
  115. package/dist/src/agent/embedded/run-turn.js +22 -2
  116. package/dist/src/agent/embedded/types.d.ts +1 -25
  117. package/dist/src/agent/external-tools/composio-provider.js +87 -92
  118. package/dist/src/agent/external-tools/gateway-tools.d.ts +4 -1
  119. package/dist/src/agent/external-tools/gateway-tools.js +153 -41
  120. package/dist/src/agent/external-tools/index.d.ts +1 -0
  121. package/dist/src/agent/external-tools/index.js +2 -1
  122. package/dist/src/agent/external-tools/memory-provider.d.ts +1 -0
  123. package/dist/src/agent/external-tools/memory-provider.js +1 -0
  124. package/dist/src/agent/external-tools/search-error.d.ts +12 -0
  125. package/dist/src/agent/external-tools/search-error.js +29 -0
  126. package/dist/src/agent/external-tools/service.d.ts +4 -0
  127. package/dist/src/agent/external-tools/service.js +22 -2
  128. package/dist/src/agent/inbound/attachment-pipeline.js +5 -1
  129. package/dist/src/agent/memory/compaction-policy.js +1 -1
  130. package/dist/src/agent/memory/compaction-promotion.d.ts +1 -0
  131. package/dist/src/agent/memory/compaction-promotion.js +52 -79
  132. package/dist/src/agent/memory/create-memory-manager.js +1 -3
  133. package/dist/src/agent/memory/index.d.ts +1 -6
  134. package/dist/src/agent/memory/index.js +3 -6
  135. package/dist/src/agent/memory/manager.d.ts +0 -16
  136. package/dist/src/agent/memory/manager.js +11 -40
  137. package/dist/src/agent/memory/memory-config.d.ts +0 -5
  138. package/dist/src/agent/memory/memory-config.js +2 -9
  139. package/dist/src/agent/memory/runtime.d.ts +2 -2
  140. package/dist/src/agent/memory/runtime.js +9 -19
  141. package/dist/src/agent/memory/types.d.ts +1 -1
  142. package/dist/src/agent/orchestration/agent-orchestrator.js +13 -21
  143. package/dist/src/agent/orchestration/context-overflow.js +1 -0
  144. package/dist/src/agent/prompt/sections/memory-skills.js +25 -36
  145. package/dist/src/agent/prompt/sections/tooling.js +10 -4
  146. package/dist/src/agent/prompt/service-prompt-builder.js +4 -3
  147. package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -2
  148. package/dist/src/agent/service/direct-turn-helpers.js +8 -25
  149. package/dist/src/agent/service/process-direct-streaming.js +8 -7
  150. package/dist/src/agent/service.js +4 -3
  151. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  152. package/dist/src/agent/tools/clarify-tool.d.ts +1 -0
  153. package/dist/src/agent/tools/delegate-tool.js +5 -2
  154. package/dist/src/agent/tools/factory.d.ts +1 -0
  155. package/dist/src/agent/tools/factory.js +68 -21
  156. package/dist/src/agent/tools/index.d.ts +3 -2
  157. package/dist/src/agent/tools/index.js +4 -3
  158. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +15 -0
  159. package/dist/src/agent/tools/knowledge-memory-tool.js +184 -0
  160. package/dist/src/agent/tools/{dreaming-tool.d.ts → memory-maintenance-tool.d.ts} +2 -2
  161. package/dist/src/agent/tools/memory-maintenance-tool.js +31 -0
  162. package/dist/src/agent/tools/session-search-tool.d.ts +1 -0
  163. package/dist/src/agent/tools/session-search-tool.js +7 -0
  164. package/dist/src/agent/tools/user-context-tool.d.ts +10 -0
  165. package/dist/src/agent/tools/user-context-tool.js +98 -0
  166. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  167. package/dist/src/automations/service/automation-service.d.ts +2 -1
  168. package/dist/src/automations/service/automation-service.js +6 -2
  169. package/dist/src/chat-commands/builtins/understanding.js +24 -6
  170. package/dist/src/cli/commands/connectors.js +1 -1
  171. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  172. package/dist/src/config/schema.d.ts +68 -75
  173. package/dist/src/config/schema.js +29 -18
  174. package/dist/src/config/web-patch.d.ts +1 -1
  175. package/dist/src/connectors/auth-provider-registry.js +1 -1
  176. package/dist/src/connectors/composio-managed-client.js +6 -2
  177. package/dist/src/connectors/connected-source-ingestion.js +1 -1
  178. package/dist/src/connectors/connected-source-understanding.d.ts +1 -3
  179. package/dist/src/connectors/connected-source-understanding.js +86 -99
  180. package/dist/src/connectors/connection-candidates.d.ts +11 -0
  181. package/dist/src/connectors/connection-candidates.js +58 -0
  182. package/dist/src/connectors/connection-capabilities.d.ts +4 -0
  183. package/dist/src/connectors/connection-capabilities.js +37 -0
  184. package/dist/src/connectors/connection-recovery-service.d.ts +43 -0
  185. package/dist/src/connectors/connection-recovery-service.js +420 -0
  186. package/dist/src/connectors/health.js +1 -1
  187. package/dist/src/connectors/learning-coordinator.d.ts +0 -2
  188. package/dist/src/connectors/learning-coordinator.js +6 -7
  189. package/dist/src/connectors/principal.d.ts +5 -0
  190. package/dist/src/connectors/principal.js +18 -0
  191. package/dist/src/files/file-service.js +4 -1
  192. package/dist/src/gateway/agent-builtin-tools.d.ts +28 -10
  193. package/dist/src/gateway/agent-builtin-tools.js +30 -9
  194. package/dist/src/gateway/chat-stream/mapper.js +1 -28
  195. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -24
  196. package/dist/src/gateway/clarify-bridge.d.ts +4 -0
  197. package/dist/src/gateway/clarify-bridge.js +9 -4
  198. package/dist/src/gateway/heartbeat/service.js +1 -1
  199. package/dist/src/gateway/hono/lib/config-payload.d.ts +52 -30
  200. package/dist/src/gateway/hono/lib/config-payload.js +4 -4
  201. package/dist/src/gateway/hono/middleware/auth.js +1 -2
  202. package/dist/src/gateway/hono/routes/capabilities.js +1 -1
  203. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  204. package/dist/src/gateway/hono/routes/config-patch/misc.js +72 -28
  205. package/dist/src/gateway/hono/routes/connection-waits.d.ts +3 -0
  206. package/dist/src/gateway/hono/routes/connection-waits.js +58 -0
  207. package/dist/src/gateway/hono/routes/connectors.js +24 -18
  208. package/dist/src/gateway/hono/routes/context-sources.d.ts +4 -0
  209. package/dist/src/gateway/hono/routes/context-sources.js +159 -0
  210. package/dist/src/gateway/hono/routes/files.js +23 -2
  211. package/dist/src/gateway/hono/routes/index.js +4 -2
  212. package/dist/src/gateway/hono/routes/lazy-bundles.js +9 -4
  213. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  214. package/dist/src/gateway/hono/routes/notes.js +22 -7
  215. package/dist/src/gateway/hono/routes/projects.js +36 -44
  216. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +15 -1
  217. package/dist/src/gateway/hono/routes/side-chats.js +13 -2
  218. package/dist/src/gateway/hono/routes/tasks.js +3 -3
  219. package/dist/src/gateway/hono/routes/user-model.d.ts +3 -0
  220. package/dist/src/gateway/hono/routes/user-model.js +480 -0
  221. package/dist/src/gateway/memory-maintenance-automation-reconciler.d.ts +11 -0
  222. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +72 -0
  223. package/dist/src/gateway/security/gateway-scopes.js +2 -0
  224. package/dist/src/gateway/service/agent-runner.d.ts +9 -1
  225. package/dist/src/gateway/service/agent-runner.js +25 -1
  226. package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
  227. package/dist/src/gateway/service/config-coordinator.js +4 -4
  228. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  229. package/dist/src/gateway/service/run-gateway-agent.js +18 -14
  230. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  231. package/dist/src/gateway/service/session-input-coordinator.js +12 -2
  232. package/dist/src/gateway/service.d.ts +3 -1
  233. package/dist/src/gateway/service.js +52 -17
  234. package/dist/src/gateway/side-chat/manager.d.ts +16 -3
  235. package/dist/src/gateway/side-chat/manager.js +117 -28
  236. package/dist/src/gateway/side-chat/run-service.d.ts +2 -0
  237. package/dist/src/gateway/side-chat/run-service.js +28 -5
  238. package/dist/src/gateway/side-chat/types.d.ts +9 -1
  239. package/dist/src/heartbeat/index.js +1 -1
  240. package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +0 -2
  241. package/dist/src/knowledge/connected-knowledge-pipeline.js +46 -217
  242. package/dist/src/knowledge-memory/domain.d.ts +36 -0
  243. package/dist/src/knowledge-memory/index.d.ts +2 -0
  244. package/dist/src/knowledge-memory/index.js +2 -0
  245. package/dist/src/knowledge-memory/repository.d.ts +48 -0
  246. package/dist/src/knowledge-memory/repository.js +168 -0
  247. package/dist/src/memory-maintenance/index.d.ts +2 -0
  248. package/dist/src/memory-maintenance/index.js +3 -0
  249. package/dist/src/memory-maintenance/schedule.d.ts +13 -0
  250. package/dist/src/memory-maintenance/schedule.js +51 -0
  251. package/dist/src/memory-maintenance/service.d.ts +28 -0
  252. package/dist/src/memory-maintenance/service.js +216 -0
  253. package/dist/src/notes/service.d.ts +1 -0
  254. package/dist/src/notes/service.js +7 -1
  255. package/dist/src/notes/types.d.ts +16 -0
  256. package/dist/src/notifications/planner.js +7 -3
  257. package/dist/src/proactive/actions/service.d.ts +0 -1
  258. package/dist/src/proactive/actions/service.js +1 -10
  259. package/dist/src/proactive/execution/context.d.ts +8 -10
  260. package/dist/src/proactive/execution/context.js +93 -42
  261. package/dist/src/proactive/execution/insight.d.ts +4 -1
  262. package/dist/src/proactive/execution/insight.js +5 -2
  263. package/dist/src/proactive/execution/repository.d.ts +1 -0
  264. package/dist/src/proactive/execution/repository.js +9 -1
  265. package/dist/src/proactive/execution/types.d.ts +0 -1
  266. package/dist/src/proactive/execution/worker.js +7 -5
  267. package/dist/src/proactive/inbox/repository.js +8 -2
  268. package/dist/src/proactive/inbox/service.js +2 -2
  269. package/dist/src/proactive/inbox/types.d.ts +1 -0
  270. package/dist/src/proactive/inbox/worker.d.ts +1 -0
  271. package/dist/src/proactive/inbox/worker.js +7 -0
  272. package/dist/src/proactive/index.d.ts +2 -1
  273. package/dist/src/proactive/index.js +3 -2
  274. package/dist/src/proactive/maintenance.d.ts +4 -0
  275. package/dist/src/proactive/maintenance.js +21 -0
  276. package/dist/src/proactive/scenarios/repository.d.ts +1 -1
  277. package/dist/src/proactive/scenarios/repository.js +10 -3
  278. package/dist/src/proactive/scenarios/types.d.ts +7 -0
  279. package/dist/src/proactive/service.d.ts +7 -0
  280. package/dist/src/proactive/service.js +17 -1
  281. package/dist/src/projects/index.d.ts +1 -1
  282. package/dist/src/projects/index.js +2 -2
  283. package/dist/src/projects/knowledge-bind.d.ts +1 -0
  284. package/dist/src/projects/knowledge-bind.js +15 -0
  285. package/dist/src/projects/project-loop.d.ts +3 -3
  286. package/dist/src/projects/project-loop.js +4 -4
  287. package/dist/src/projects/project-service.d.ts +2 -1
  288. package/dist/src/projects/project-service.js +3 -2
  289. package/dist/src/projects/project-store.js +2 -1
  290. package/dist/src/realtime/runtime.js +1 -0
  291. package/dist/src/runtime-tools/manager.js +1 -1
  292. package/dist/src/session/index.js +1 -1
  293. package/dist/src/session/store.js +5 -2
  294. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +19 -0
  295. package/dist/src/storage/sqlite/collaboration-rule-repository.js +54 -0
  296. package/dist/src/storage/sqlite/config-repository.js +1 -1
  297. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +30 -0
  298. package/dist/src/storage/sqlite/connection-wait-repository.js +338 -0
  299. package/dist/src/storage/sqlite/connector-account-repository.js +1 -1
  300. package/dist/src/storage/sqlite/context-evidence-repository.d.ts +24 -0
  301. package/dist/src/storage/sqlite/context-evidence-repository.js +52 -0
  302. package/dist/src/storage/sqlite/index.d.ts +3 -5
  303. package/dist/src/storage/sqlite/index.js +6 -8
  304. package/dist/src/storage/sqlite/knowledge-repository.d.ts +0 -19
  305. package/dist/src/storage/sqlite/knowledge-repository.js +1 -90
  306. package/dist/src/storage/sqlite/migrations/148_user_model_foundation.sql +554 -0
  307. package/dist/src/storage/sqlite/migrations/149_separate_source_index_from_memory.sql +18 -0
  308. package/dist/src/storage/sqlite/migrations/150_session_connection_waits.sql +47 -0
  309. package/dist/src/storage/sqlite/migrations/151_proactive_scope_cleanup.sql +6 -0
  310. package/dist/src/storage/sqlite/migrations/152_proactive_scenario_contract.sql +140 -0
  311. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  312. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  313. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  314. package/dist/src/storage/sqlite/notes-repository.d.ts +2 -1
  315. package/dist/src/storage/sqlite/notes-repository.js +37 -3
  316. package/dist/src/storage/sqlite/row-mappers.js +2 -2
  317. package/dist/src/storage/sqlite/schema.js +1 -1
  318. package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -2
  319. package/dist/src/storage/sqlite/session-input-repository.js +17 -14
  320. package/dist/src/storage/sqlite/session-instance-repository.d.ts +2 -0
  321. package/dist/src/storage/sqlite/session-instance-repository.js +6 -0
  322. package/dist/src/storage/sqlite/session-repository.d.ts +1 -1
  323. package/dist/src/storage/sqlite/session-repository.js +7 -6
  324. package/dist/src/storage/sqlite/transcript-repository.js +3 -2
  325. package/dist/src/tasks/home-query-service.js +35 -13
  326. package/dist/src/tasks/index.js +2 -2
  327. package/dist/src/tasks/project-monitoring-service.d.ts +2 -0
  328. package/dist/src/tasks/project-monitoring-service.js +4 -1
  329. package/dist/src/tasks/project-operating-view-service.js +1 -1
  330. package/dist/src/tasks/task-application-service.js +6 -1
  331. package/dist/src/tasks/task-context-assembler.js +1 -1
  332. package/dist/src/tasks/task-context-repository.d.ts +0 -1
  333. package/dist/src/tasks/task-context-repository.js +1 -1
  334. package/dist/src/tasks/task-deletion-service.js +1 -1
  335. package/dist/src/tasks/task-handoff-service.js +1 -1
  336. package/dist/src/tasks/task-read-model-projector.js +1 -1
  337. package/dist/src/tasks/task-run-coordinator.js +1 -1
  338. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  339. package/dist/src/tasks/task-run-repository.js +1 -0
  340. package/dist/src/tasks/task-signal-service.js +1 -1
  341. package/dist/src/tui/backends/embedded-backend.js +1 -1
  342. package/dist/src/tui/tool-summary.js +2 -1
  343. package/dist/src/tui/tui-startup-resources.js +1 -1
  344. package/dist/src/user-context/access-policy.d.ts +11 -0
  345. package/dist/src/user-context/access-policy.js +26 -0
  346. package/dist/src/user-context/changes.d.ts +1 -1
  347. package/dist/src/user-context/config.d.ts +135 -153
  348. package/dist/src/user-context/config.js +94 -99
  349. package/dist/src/user-context/relationship-continuity.d.ts +2 -2
  350. package/dist/src/user-context/relationship-continuity.js +34 -24
  351. package/dist/src/user-context/sources/activity-clustering.d.ts +9 -3
  352. package/dist/src/user-context/sources/index.js +2 -2
  353. package/dist/src/user-context/sources/repository.d.ts +1 -21
  354. package/dist/src/user-context/sources/repository.js +1 -183
  355. package/dist/src/user-context/sources/types.d.ts +0 -23
  356. package/dist/src/user-model/capture/executor.d.ts +50 -0
  357. package/dist/src/user-model/capture/executor.js +230 -0
  358. package/dist/src/user-model/capture/index.d.ts +2 -0
  359. package/dist/src/user-model/capture/index.js +3 -0
  360. package/dist/src/user-model/capture/semantic.d.ts +39 -0
  361. package/dist/src/user-model/capture/semantic.js +263 -0
  362. package/dist/src/user-model/domain.d.ts +93 -0
  363. package/dist/src/user-model/domain.js +33 -0
  364. package/dist/src/user-model/goals.d.ts +62 -0
  365. package/dist/src/user-model/goals.js +91 -0
  366. package/dist/src/user-model/importance.d.ts +11 -0
  367. package/dist/src/user-model/importance.js +17 -0
  368. package/dist/src/user-model/index.d.ts +5 -0
  369. package/dist/src/user-model/index.js +6 -0
  370. package/dist/src/user-model/repository.d.ts +23 -0
  371. package/dist/src/user-model/repository.js +268 -0
  372. package/dist/src/user-model/temporal.d.ts +10 -0
  373. package/dist/src/user-model/temporal.js +44 -0
  374. package/dist/src/voice/realtime/memory-context.d.ts +7 -2
  375. package/dist/src/voice/realtime/memory-context.js +39 -51
  376. package/dist/src/work-discovery/service.d.ts +3 -14
  377. package/dist/src/work-discovery/service.js +138 -99
  378. package/dist/src/work-discovery/types.d.ts +3 -3
  379. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  380. package/dist/src/workflows/service/workflow-session-bridge.js +12 -20
  381. package/package.json +3 -3
  382. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CUXApfcE.js +0 -1
  383. package/dist/gateway/static/root/assets/agents-DNq_GKuc.js +0 -1
  384. package/dist/gateway/static/root/assets/app-management-settings-panel-qfwAgyhQ.js +0 -1
  385. package/dist/gateway/static/root/assets/appearance-settings-DqQVUpCC.js +0 -1
  386. package/dist/gateway/static/root/assets/apps-page-dwIqYmXk.js +0 -1
  387. package/dist/gateway/static/root/assets/automations-workspace-SkdcSZ0i.js +0 -6
  388. package/dist/gateway/static/root/assets/browser-settings-page-CKCa6TvG.js +0 -8
  389. package/dist/gateway/static/root/assets/capabilities-settings-panel-DSp--zIZ.js +0 -7
  390. package/dist/gateway/static/root/assets/channels-settings-CMd2dDrI.js +0 -1
  391. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +0 -1
  392. package/dist/gateway/static/root/assets/connectors-page-udWs5Kdm.js +0 -2
  393. package/dist/gateway/static/root/assets/dependency-picker-DpN3XZg9.js +0 -1
  394. package/dist/gateway/static/root/assets/desktop-pet-settings-DinCToZh.js +0 -1
  395. package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +0 -1
  396. package/dist/gateway/static/root/assets/extension-settings-page-DcguCgsH.js +0 -1
  397. package/dist/gateway/static/root/assets/eye-CABVeTq0.js +0 -1
  398. package/dist/gateway/static/root/assets/eye-off-DEAzt3g1.js +0 -1
  399. package/dist/gateway/static/root/assets/files-D6vf3S30.js +0 -1
  400. package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +0 -1
  401. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +0 -1
  402. package/dist/gateway/static/root/assets/gateway-config-api-Br7lSf6H.js +0 -1
  403. package/dist/gateway/static/root/assets/gateway-settings-CdPoDMuj.js +0 -1
  404. package/dist/gateway/static/root/assets/heartbeat-settings-DHk1hawP.js +0 -1
  405. package/dist/gateway/static/root/assets/home-page-YGipe_W6.js +0 -1
  406. package/dist/gateway/static/root/assets/index-D5TQQpeb.js +0 -71
  407. package/dist/gateway/static/root/assets/index-DReBaaTX.css +0 -2
  408. package/dist/gateway/static/root/assets/interaction-BmQogeqz.js +0 -1
  409. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +0 -1
  410. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  411. package/dist/gateway/static/root/assets/local-app-workbench-page-CpyvYyrb.js +0 -2
  412. package/dist/gateway/static/root/assets/local-context-graph-BjUf7fQ9.js +0 -1
  413. package/dist/gateway/static/root/assets/logs-page-CXKy6E_l.js +0 -2
  414. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +0 -1
  415. package/dist/gateway/static/root/assets/messages-CHNYp8EQ.js +0 -3
  416. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +0 -1
  417. package/dist/gateway/static/root/assets/mobile-pairing-wizard-3NKCniSp.js +0 -1
  418. package/dist/gateway/static/root/assets/models-hub-cache-nCfkBN8M.js +0 -1
  419. package/dist/gateway/static/root/assets/notes-page-DuqLahi6.js +0 -1
  420. package/dist/gateway/static/root/assets/notes-workbench-C7j9EdQk.js +0 -5
  421. package/dist/gateway/static/root/assets/oauth-api-8lP_qJpq.js +0 -1
  422. package/dist/gateway/static/root/assets/oauth-authorization-window-Cdolr2wE.js +0 -1
  423. package/dist/gateway/static/root/assets/page-tabs-BaEQMYm_.js +0 -1
  424. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +0 -1
  425. package/dist/gateway/static/root/assets/preview-open-alternatives-CsNVTKC0.js +0 -1
  426. package/dist/gateway/static/root/assets/project-detail-page-CfebYVX0.js +0 -1
  427. package/dist/gateway/static/root/assets/projects-page-48GvzSVa.js +0 -1
  428. package/dist/gateway/static/root/assets/remote-access-hub-64xj_s2m.js +0 -1
  429. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +0 -1
  430. package/dist/gateway/static/root/assets/search-DA7gz22f.js +0 -1
  431. package/dist/gateway/static/root/assets/sessions-page-CcwcdRN8.js +0 -1
  432. package/dist/gateway/static/root/assets/settings-advanced-gate-BaN84CyW.js +0 -1
  433. package/dist/gateway/static/root/assets/settings-form-section-DjWzRk4z.js +0 -1
  434. package/dist/gateway/static/root/assets/setup-status-panel-DVVOCNbr.js +0 -1
  435. package/dist/gateway/static/root/assets/shares-settings-DUYbYLi7.js +0 -1
  436. package/dist/gateway/static/root/assets/skill-reload-api-BGyD0gB9.js +0 -1
  437. package/dist/gateway/static/root/assets/skills-page-CjF8DTsN.js +0 -2
  438. package/dist/gateway/static/root/assets/system-settings-panel-BSYuRgFI.js +0 -1
  439. package/dist/gateway/static/root/assets/task-detail-page-YZYSTJH7.js +0 -1
  440. package/dist/gateway/static/root/assets/tunnel-api-FKUi9wDL.js +0 -1
  441. package/dist/gateway/static/root/assets/user-context-page-BCyiduKd.js +0 -2
  442. package/dist/gateway/static/root/assets/work-discovery-overlay-jhT2EzeH.js +0 -1
  443. package/dist/gateway/static/root/assets/workflows-page-DQC0TpMa.js +0 -5
  444. package/dist/src/agent/memory/builtin-provider.d.ts +0 -37
  445. package/dist/src/agent/memory/builtin-provider.js +0 -225
  446. package/dist/src/agent/memory/context/types.d.ts +0 -40
  447. package/dist/src/agent/memory/understanding/quality.d.ts +0 -8
  448. package/dist/src/agent/memory/understanding/quality.js +0 -18
  449. package/dist/src/agent/memory/understanding/service.d.ts +0 -19
  450. package/dist/src/agent/memory/understanding/service.js +0 -209
  451. package/dist/src/agent/memory/understanding/types.d.ts +0 -34
  452. package/dist/src/agent/memory/user-context-coordinator.d.ts +0 -23
  453. package/dist/src/agent/memory/user-context-coordinator.js +0 -113
  454. package/dist/src/agent/tools/dreaming-tool.js +0 -37
  455. package/dist/src/agent/tools/memory-tool.d.ts +0 -9
  456. package/dist/src/agent/tools/memory-tool.js +0 -119
  457. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +0 -11
  458. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -63
  459. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +0 -21
  460. package/dist/src/gateway/hono/routes/understanding-sources.js +0 -387
  461. package/dist/src/gateway/hono/routes/you.d.ts +0 -3
  462. package/dist/src/gateway/hono/routes/you.js +0 -457
  463. package/dist/src/projects/memory-bind.d.ts +0 -1
  464. package/dist/src/projects/memory-bind.js +0 -14
  465. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +0 -37
  466. package/dist/src/storage/sqlite/context-consolidation-repository.js +0 -64
  467. package/dist/src/storage/sqlite/memory-records-repository.d.ts +0 -217
  468. package/dist/src/storage/sqlite/memory-records-repository.js +0 -715
  469. package/dist/src/storage/sqlite/remote-context-repository.d.ts +0 -3
  470. package/dist/src/storage/sqlite/remote-context-repository.js +0 -40
  471. package/dist/src/storage/sqlite/understanding-focus-exclusions.d.ts +0 -2
  472. package/dist/src/storage/sqlite/understanding-focus-exclusions.js +0 -24
  473. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +0 -49
  474. package/dist/src/storage/sqlite/user-context-quality-repository.js +0 -118
  475. package/dist/src/storage/sqlite/user-context-repository.d.ts +0 -85
  476. package/dist/src/storage/sqlite/user-context-repository.js +0 -535
  477. package/dist/src/user-context/automatic-context.d.ts +0 -17
  478. package/dist/src/user-context/automatic-context.js +0 -85
  479. package/dist/src/user-context/consolidation.d.ts +0 -27
  480. package/dist/src/user-context/consolidation.js +0 -187
  481. package/dist/src/user-context/context-objects.d.ts +0 -17
  482. package/dist/src/user-context/context-objects.js +0 -99
  483. package/dist/src/user-context/evaluation/harness.d.ts +0 -13
  484. package/dist/src/user-context/evaluation/harness.js +0 -31
  485. package/dist/src/user-context/extraction/executor.d.ts +0 -22
  486. package/dist/src/user-context/extraction/executor.js +0 -142
  487. package/dist/src/user-context/extraction/repair.d.ts +0 -19
  488. package/dist/src/user-context/extraction/repair.js +0 -71
  489. package/dist/src/user-context/extraction/semantic.d.ts +0 -18
  490. package/dist/src/user-context/extraction/semantic.js +0 -148
  491. package/dist/src/user-context/focus-lifecycle.d.ts +0 -2
  492. package/dist/src/user-context/focus-lifecycle.js +0 -26
  493. package/dist/src/user-context/manual-understanding.d.ts +0 -12
  494. package/dist/src/user-context/manual-understanding.js +0 -37
  495. package/dist/src/user-context/planner.d.ts +0 -17
  496. package/dist/src/user-context/planner.js +0 -465
  497. package/dist/src/user-context/relationships/indexer.d.ts +0 -13
  498. package/dist/src/user-context/relationships/indexer.js +0 -185
  499. package/dist/src/user-context/relationships/service.d.ts +0 -22
  500. package/dist/src/user-context/relationships/service.js +0 -50
  501. package/dist/src/user-context/retriever.d.ts +0 -15
  502. package/dist/src/user-context/retriever.js +0 -124
  503. package/dist/src/user-context/scope.d.ts +0 -7
  504. package/dist/src/user-context/scope.js +0 -9
  505. package/dist/src/user-context/selection-policy.d.ts +0 -20
  506. package/dist/src/user-context/selection-policy.js +0 -33
  507. package/dist/src/user-context/understanding.d.ts +0 -15
  508. package/dist/src/user-context/understanding.js +0 -24
  509. package/dist/src/user-context/understandingQuality.d.ts +0 -5
  510. package/dist/src/user-context/understandingQuality.js +0 -48
  511. /package/dist/src/agent/{memory/context/types.js → context/execution-context.types.js} +0 -0
  512. /package/dist/src/{agent/memory/understanding/types.js → knowledge-memory/domain.js} +0 -0
@@ -9,6 +9,7 @@ export interface PromoteCompactionLedgerInput {
9
9
  handover: CompactionHandover;
10
10
  audit: CompactionAudit;
11
11
  sourceEntries: readonly TranscriptSourceEntry[];
12
+ writePolicy: 'deny' | 'confirm' | 'allow';
12
13
  }
13
14
  export interface PromoteCompactionLedgerResult {
14
15
  episodicRecordIds: string[];
@@ -1,4 +1,5 @@
1
- import { getMemoryRecord, setMemoryRecordStatus, upsertMemoryRecord } from "../../storage/sqlite/memory-records-repository.js";
1
+ import { listKnowledgeItems, setKnowledgeStatus, writeKnowledgeItem } from "../../knowledge-memory/repository.js";
2
+ import "../../knowledge-memory/index.js";
2
3
  import { resolveMemorySessionKind } from "./turn-provenance.js";
3
4
  import { createHash } from "node:crypto";
4
5
  //#region src/agent/memory/compaction-promotion.ts
@@ -10,17 +11,17 @@ const DURABLE_KINDS = new Set([
10
11
  "constraint",
11
12
  "next_action"
12
13
  ]);
13
- const RECALL_TOOL_RE = /^(?:memory_(?:search|get)|session_(?:search|recall))$/;
14
- const MEMORY_KIND_BY_HANDOVER_KIND = {
15
- objective: "long_term_goal",
16
- decision: "derived_insight",
14
+ const RECALL_TOOL_RE = /^(?:(?:user_context|knowledge)_(?:search|get)|session_(?:search|recall))$/;
15
+ const KNOWLEDGE_KIND_BY_HANDOVER_KIND = {
16
+ objective: "commitment",
17
+ decision: "decision",
17
18
  pending_user_ask: "open_question",
18
19
  todo: "commitment",
19
- constraint: "project_context",
20
+ constraint: "project_fact",
20
21
  file_change: "workspace_fact",
21
22
  tool_outcome: "task_lesson",
22
23
  failure: "task_lesson",
23
- current_state: "current_state",
24
+ current_state: "episode",
24
25
  next_action: "commitment"
25
26
  };
26
27
  function stableId(prefix, ...parts) {
@@ -83,6 +84,11 @@ function importanceFor(item) {
83
84
  return .5;
84
85
  }
85
86
  function promoteCompactionLedger(input) {
87
+ if (input.writePolicy === "deny") return {
88
+ episodicRecordIds: [],
89
+ durableRecordIds: [],
90
+ rejectedRecordIds: []
91
+ };
86
92
  const sourceById = new Map(input.sourceEntries.map((entry) => [entry.entryId, entry]));
87
93
  const entriesByTurn = /* @__PURE__ */ new Map();
88
94
  const entriesByRound = /* @__PURE__ */ new Map();
@@ -111,99 +117,66 @@ function promoteCompactionLedger(input) {
111
117
  };
112
118
  const sessionKind = resolveMemorySessionKind(input.sessionKey);
113
119
  for (const item of input.handover.items) {
114
- const episodeId = stableId("compaction-episode", input.sessionId, item.id);
115
120
  const classified = classifyItemProvenance(item, sourceById, entriesByTurn, entriesByRound);
116
121
  const originClass = sessionKind === "automation" || sessionKind === "workflow" || sessionKind === "background" ? "system" : sessionKind === "group" ? "untrusted" : classified.originClass;
117
122
  const active = item.status === "active";
118
- upsertMemoryRecord({
119
- id: episodeId,
120
- providerId: "compaction-ledger",
121
- kind: MEMORY_KIND_BY_HANDOVER_KIND[item.kind],
122
- sourceAgentId: input.sourceAgentId,
123
- workspaceId: input.workspaceId,
124
- sessionKey: input.sessionKey,
125
- projectId: input.projectId,
123
+ const episode = writeKnowledgeItem({
124
+ kind: KNOWLEDGE_KIND_BY_HANDOVER_KIND[item.kind],
125
+ scope: {
126
+ type: "session",
127
+ id: input.sessionKey
128
+ },
126
129
  content: item.text,
127
130
  canonicalKey: `compaction:${input.sessionId}:${item.id}`,
128
- source: {
129
- provider: "compaction-ledger",
130
- sessionEntryId: item.sources[0]?.entryId
131
- },
132
131
  confidence: input.audit.status === "passed" ? .82 : .65,
133
- tags: [
134
- "compaction",
135
- "episodic",
136
- item.kind,
137
- item.status
138
- ],
139
- status: active ? "candidate" : "archived",
140
- sensitivity: "normal",
141
- explicitness: "inferred",
142
- durability: "ephemeral",
132
+ status: active ? input.writePolicy === "allow" && originClass !== "untrusted" ? "active" : "candidate" : "archived",
143
133
  importance: importanceFor(item),
144
- disclosurePolicy: "referenceable",
145
- evidence: item.sources.map((source) => ({
146
- sessionKey: input.sessionKey,
147
- turnId: rowTurnId(sourceById.get(source.entryId)),
148
- relation: "derived_from",
149
- sourceText: `[transcript:${source.seq}] ${item.text}`,
150
- observedAt: classified.observedAt
151
- })),
152
134
  originClass,
153
- sessionKind,
154
- observedAt: classified.observedAt,
135
+ sourceAgentId: input.sourceAgentId,
155
136
  sourceSessionId: input.sessionKey,
156
- supersedesKey: item.id,
157
- derivedFromRecalledContext: classified.derivedFromRecalledContext
137
+ sourceTurnId: item.sources[0] ? rowTurnId(sourceById.get(item.sources[0].entryId)) : void 0,
138
+ derivedFromRecalledContext: classified.derivedFromRecalledContext,
139
+ source: {
140
+ provider: "compaction-ledger",
141
+ sessionEntryIds: item.sources.map((source) => source.entryId),
142
+ observedAt: classified.observedAt,
143
+ handoverKind: item.kind
144
+ }
158
145
  });
159
- result.episodicRecordIds.push(episodeId);
160
- const durableId = stableId("compaction-durable", input.workspaceId, input.projectId ?? "", item.kind, item.text);
146
+ result.episodicRecordIds.push(episode.item.id);
161
147
  if (!(active && input.audit.status === "passed" && sessionKind === "interactive" && originClass === "agent" && !classified.derivedFromRecalledContext && DURABLE_KINDS.has(item.kind))) {
162
- if ((!active ? getMemoryRecord(durableId) : null)?.provenance.sourceSessionId === input.sessionKey) setMemoryRecordStatus(durableId, "archived");
163
- result.rejectedRecordIds.push(episodeId);
148
+ const existingDurable = !active ? listKnowledgeItems({ limit: 2e3 }).find((entry) => entry.canonicalKey === `durable:${item.kind}:${stableId("fact", item.text)}`) : void 0;
149
+ if (existingDurable?.sourceSessionId === input.sessionKey) setKnowledgeStatus(existingDurable.id, "archived");
150
+ result.rejectedRecordIds.push(episode.item.id);
164
151
  continue;
165
152
  }
166
- upsertMemoryRecord({
167
- id: durableId,
168
- providerId: "compaction-ledger",
169
- kind: MEMORY_KIND_BY_HANDOVER_KIND[item.kind],
153
+ const durable = writeKnowledgeItem({
154
+ kind: KNOWLEDGE_KIND_BY_HANDOVER_KIND[item.kind],
155
+ scope: input.projectId ? {
156
+ type: "project",
157
+ id: input.projectId
158
+ } : {
159
+ type: "workspace",
160
+ id: input.workspaceId
161
+ },
170
162
  sourceAgentId: input.sourceAgentId,
171
- workspaceId: input.workspaceId,
172
- projectId: input.projectId,
173
163
  content: item.text,
174
164
  canonicalKey: `durable:${item.kind}:${stableId("fact", item.text)}`,
175
- source: {
176
- provider: "compaction-ledger",
177
- sessionEntryId: item.sources[0]?.entryId
178
- },
179
165
  confidence: .82,
180
- tags: [
181
- "compaction",
182
- "durable",
183
- item.kind
184
- ],
185
- status: "active",
186
- sensitivity: "normal",
187
- explicitness: "inferred",
188
- durability: "durable",
166
+ status: input.writePolicy === "allow" ? "active" : "candidate",
189
167
  importance: importanceFor(item),
190
- disclosurePolicy: "referenceable",
191
- evidence: [{
192
- sessionKey: input.sessionKey,
193
- turnId: item.sources[0] ? rowTurnId(sourceById.get(item.sources[0].entryId)) : void 0,
194
- relation: "derived_from",
195
- sourceText: item.text,
196
- observedAt: classified.observedAt
197
- }],
198
- supersedesRecordId: episodeId,
199
168
  originClass: "agent",
200
- sessionKind,
201
- observedAt: classified.observedAt,
202
169
  sourceSessionId: input.sessionKey,
203
- supersedesKey: item.id,
204
- derivedFromRecalledContext: false
170
+ sourceTurnId: item.sources[0] ? rowTurnId(sourceById.get(item.sources[0].entryId)) : void 0,
171
+ derivedFromRecalledContext: false,
172
+ source: {
173
+ provider: "compaction-ledger",
174
+ episodeKnowledgeId: episode.item.id,
175
+ sessionEntryIds: item.sources.map((source) => source.entryId),
176
+ observedAt: classified.observedAt
177
+ }
205
178
  });
206
- result.durableRecordIds.push(durableId);
179
+ result.durableRecordIds.push(durable.item.id);
207
180
  }
208
181
  return result;
209
182
  }
@@ -1,5 +1,4 @@
1
1
  import { isMemorySubsystemEnabled } from "./memory-config.js";
2
- import { BuiltinMemoryProvider } from "./builtin-provider.js";
3
2
  import { MemoryManager } from "./manager.js";
4
3
  import { loadMemoryPluginProviders } from "./plugin-discovery.js";
5
4
  import { buildMemoryRuntime } from "./runtime.js";
@@ -12,13 +11,12 @@ function createMemoryManagerFromConfig(config) {
12
11
  ...config ? { memoryRuntime: buildMemoryRuntime(config.userContext) } : {},
13
12
  ...enabled ? { loadProviders: () => loadMemoryPluginProviders({ config }) } : {}
14
13
  });
15
- mgr.addProvider(new BuiltinMemoryProvider());
16
14
  if (!enabled) return mgr;
17
15
  return mgr;
18
16
  }
19
17
  function resolveMemoryManagerOptions(config) {
20
18
  if (!config) return {};
21
- const providerRouting = config.userContext.providerRouting;
19
+ const providerRouting = config.userContext.knowledgeMemory;
22
20
  return {
23
21
  searchStrategy: providerRouting.searchStrategy,
24
22
  writeStrategy: providerRouting.writeStrategy,
@@ -1,12 +1,7 @@
1
- export { BuiltinMemoryProvider } from './builtin-provider.js';
2
1
  export { buildUserContextBlock, sanitizeUserContextFenceEscapes, } from './context-fence.js';
3
- export { UserContextPlanner } from '../../user-context/planner.js';
4
- export type { UserContextPlan } from './context/types.js';
5
2
  export { createMemoryManagerFromConfig } from './create-memory-manager.js';
6
- export { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn, } from './memory-config.js';
3
+ export { isMemorySubsystemEnabled } from './memory-config.js';
7
4
  export { MemoryManager } from './manager.js';
8
- export { UserUnderstandingService } from './understanding/service.js';
9
- export type { UnderstandingCandidate, UnderstandingReviewResult } from './understanding/types.js';
10
5
  export { discoverMemoryPlugins } from './plugin-discovery.js';
11
6
  export type { MemoryPluginMetadata } from './plugin-discovery.js';
12
7
  export type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';
@@ -1,11 +1,8 @@
1
- import { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn } from "./memory-config.js";
2
- import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
3
- import { UserContextPlanner } from "../../user-context/planner.js";
1
+ import { isMemorySubsystemEnabled } from "./memory-config.js";
4
2
  import { extractAgentUserPlainText } from "./user-message-text.js";
5
- import { BuiltinMemoryProvider } from "./builtin-provider.js";
6
- import { UserUnderstandingService } from "./understanding/service.js";
3
+ import { buildUserContextBlock, sanitizeUserContextFenceEscapes } from "./context-fence.js";
7
4
  import { MemoryManager } from "./manager.js";
8
5
  import { discoverMemoryPlugins } from "./plugin-discovery.js";
9
6
  import { createMemoryManagerFromConfig } from "./create-memory-manager.js";
10
7
  import { StubMemoryProvider } from "./stub-memory-provider.js";
11
- export { BuiltinMemoryProvider, MemoryManager, StubMemoryProvider, UserContextPlanner, UserUnderstandingService, buildUserContextBlock, createMemoryManagerFromConfig, discoverMemoryPlugins, extractAgentUserPlainText, isMemorySubsystemEnabled, sanitizeUserContextFenceEscapes, shouldPlanUserContextThisTurn };
8
+ export { MemoryManager, StubMemoryProvider, buildUserContextBlock, createMemoryManagerFromConfig, discoverMemoryPlugins, extractAgentUserPlainText, isMemorySubsystemEnabled, sanitizeUserContextFenceEscapes };
@@ -1,7 +1,6 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
2
  import type { MemoryRuntime } from './runtime.js';
3
3
  import type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';
4
- import type { UnderstandingCandidate } from './understanding/types.js';
5
4
  import type { MemoryDeleteRequest, MemoryListRequest, MemoryReadRequest, MemoryReadResult, MemorySearchRequest, MemorySearchResult, MemoryUpdateRequest, MemoryWriteRequest, MemoryWriteResult, MemoryRecord, MemorySignal, MemoryKind } from './types.js';
6
5
  import type { TurnMemoryProvenance } from './turn-provenance.js';
7
6
  export type MemorySearchStrategy = 'local-first' | 'external-first' | 'fanout' | 'local-only' | 'external-only';
@@ -28,7 +27,6 @@ export declare class MemoryManager {
28
27
  private readonly loadProviders?;
29
28
  private readonly writePolicy;
30
29
  private pluginProvidersLoaded;
31
- private readonly understanding;
32
30
  private readonly memoryRuntime?;
33
31
  private readonly sessionContexts;
34
32
  constructor(options?: MemoryManagerOptions);
@@ -44,20 +42,6 @@ export declare class MemoryManager {
44
42
  turnId?: string;
45
43
  provenance?: TurnMemoryProvenance;
46
44
  }): Promise<void>;
47
- applyUnderstandingCandidates(candidates: UnderstandingCandidate[], context?: {
48
- agentId?: string;
49
- sessionKey?: string;
50
- workspaceId?: string;
51
- projectId?: string;
52
- sourceItemId?: string;
53
- sourceItemIds?: string[];
54
- evidenceIds?: string[];
55
- sourceText?: string;
56
- source?: MemoryRecord['source'];
57
- reviewSource?: 'turn' | 'background';
58
- extractionRunId?: string;
59
- supersedesRecordIds?: string[];
60
- }): Promise<import('./understanding/types.js').UnderstandingReviewResult>;
61
45
  getExternalToolEntries(): Array<{
62
46
  providerId: string;
63
47
  tool: AgentTool;
@@ -1,10 +1,6 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { retrievalQueryAuditValue } from "../../retrieval/audit.js";
4
- import { setKnowledgeSourceItemSynthesisStatus } from "../../storage/sqlite/knowledge-repository.js";
5
- import { appendMemoryTraceEvent } from "../../storage/sqlite/memory-records-repository.js";
6
- import "../../storage/sqlite/index.js";
7
- import { UserUnderstandingService } from "./understanding/service.js";
8
4
  //#region src/agent/memory/manager.ts
9
5
  init_logger();
10
6
  const log = createLogger("MemoryManager");
@@ -15,7 +11,6 @@ var MemoryManager = class {
15
11
  loadProviders;
16
12
  writePolicy;
17
13
  pluginProvidersLoaded = false;
18
- understanding;
19
14
  memoryRuntime;
20
15
  sessionContexts = /* @__PURE__ */ new Map();
21
16
  constructor(options = {}) {
@@ -31,7 +26,6 @@ var MemoryManager = class {
31
26
  allowedProviderIds: options.writePolicy?.allowedProviderIds,
32
27
  autoWriteKinds: options.writePolicy?.autoWriteKinds
33
28
  };
34
- this.understanding = new UserUnderstandingService();
35
29
  }
36
30
  addProvider(provider) {
37
31
  this.providers.push(provider);
@@ -119,21 +113,6 @@ var MemoryManager = class {
119
113
  }
120
114
  }
121
115
  }
122
- async applyUnderstandingCandidates(candidates, context = {}) {
123
- const sessionContext = context.sessionKey ? this.sessionContexts.get(context.sessionKey) : void 0;
124
- const sourceItemId = context.sourceItemId;
125
- const result = await this.understanding.applyCandidates(candidates, {
126
- ...context,
127
- workspaceId: context.workspaceId ?? sessionContext?.workspace ?? sessionContext?.agentWorkspace,
128
- sourceItemId
129
- });
130
- const sourceItemIds = [...new Set([...sourceItemId ? [sourceItemId] : [], ...context.sourceItemIds ?? []])];
131
- if (sourceItemIds.length) setKnowledgeSourceItemSynthesisStatus(sourceItemIds, "completed");
132
- return {
133
- ...result,
134
- ...sourceItemId ? { sourceItemId } : {}
135
- };
136
- }
137
116
  getExternalToolEntries() {
138
117
  const out = [];
139
118
  const seen = /* @__PURE__ */ new Set();
@@ -438,30 +417,22 @@ var MemoryManager = class {
438
417
  return true;
439
418
  }
440
419
  trace(phase, providerId, request, meta = {}) {
441
- try {
442
- appendMemoryTraceEvent({
443
- phase,
444
- providerId,
445
- request: sanitizeTraceRequest(request),
446
- ...meta
447
- });
448
- } catch (err) {
449
- log.debug({
450
- err,
451
- providerId,
452
- phase
453
- }, "memory trace append failed");
454
- }
420
+ log.debug({
421
+ phase,
422
+ providerId,
423
+ request: sanitizeTraceRequest(request),
424
+ ...meta
425
+ }, "External memory provider operation");
455
426
  }
456
427
  };
457
428
  function memorySourceForRecord(record) {
458
- if (record.source.provider === "agent-profile") return "agentProfile";
429
+ if (record.source.provider !== "builtin") return "connector";
459
430
  if (record.scope.sessionKey) return "session";
460
- if (record.scope.workspaceId || record.kind === "workspace_fact" || record.kind === "project_context" || record.kind === "task_lesson") return "workspace";
461
- return "understanding";
431
+ if (record.scope.projectId) return "project";
432
+ return "workspace";
462
433
  }
463
- function writeTargetForRecord(request) {
464
- return request.scope?.workspaceId || request.kind === "workspace_fact" || request.kind === "project_context" || request.kind === "task_lesson" ? "workspace" : "understanding";
434
+ function writeTargetForRecord(_request) {
435
+ return "knowledge";
465
436
  }
466
437
  function sanitizeTraceRequest(request) {
467
438
  if (!request || typeof request !== "object") return request;
@@ -1,8 +1,3 @@
1
1
  import type { Config } from '../../config/schema.js';
2
2
  /** Whether generic workspace and provider-backed memory is available. */
3
3
  export declare function isMemorySubsystemEnabled(config: Config | undefined): boolean;
4
- /**
5
- * Whether to prefix the user message with prefetched external memory this turn.
6
- * `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …
7
- */
8
- export declare function shouldPlanUserContextThisTurn(_config: Config | undefined, turnNumber: number): boolean;
@@ -2,14 +2,7 @@
2
2
  /** Whether generic workspace and provider-backed memory is available. */
3
3
  function isMemorySubsystemEnabled(config) {
4
4
  if (!config) return true;
5
- return config.userContext.enabled && config.userContext.memory.mode !== "off";
6
- }
7
- /**
8
- * Whether to prefix the user message with prefetched external memory this turn.
9
- * `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …
10
- */
11
- function shouldPlanUserContextThisTurn(_config, turnNumber) {
12
- return turnNumber >= 1;
5
+ return config.userContext.enabled && config.userContext.knowledgeMemory.enabled;
13
6
  }
14
7
  //#endregion
15
- export { isMemorySubsystemEnabled, shouldPlanUserContextThisTurn };
8
+ export { isMemorySubsystemEnabled };
@@ -1,6 +1,6 @@
1
1
  import type { UserContextConfig } from '../../user-context/config.js';
2
- export type MemorySource = 'session' | 'agentProfile' | 'understanding' | 'workspace';
3
- export type MemoryWriteTarget = 'agentProfile' | 'understanding' | 'workspace';
2
+ export type MemorySource = 'session' | 'workspace' | 'project' | 'connector';
3
+ export type MemoryWriteTarget = 'knowledge';
4
4
  export type MemoryWriteDecision = 'allow' | 'confirm' | 'deny';
5
5
  export interface MemoryCandidate {
6
6
  target: MemoryWriteTarget;
@@ -4,20 +4,16 @@ function normalizeConfidence(value) {
4
4
  return Math.max(0, Math.min(1, value));
5
5
  }
6
6
  function buildMemoryRuntime(userContext) {
7
- const memory = userContext.memory;
8
- const readableSources = !userContext.enabled || memory.mode === "off" ? [] : [...memory.sources];
7
+ const memory = userContext.knowledgeMemory;
8
+ const readableSources = !userContext.enabled || !memory.enabled ? [] : [...memory.sources];
9
9
  const sourceSet = new Set(readableSources);
10
10
  return {
11
11
  readableSources,
12
12
  canRead: (source) => sourceSet.has(source),
13
13
  checkWrite: (candidate) => {
14
- if (!userContext.enabled || memory.mode === "off") return {
14
+ if (!userContext.enabled || !memory.enabled) return {
15
15
  decision: "deny",
16
- reason: "memory is disabled"
17
- };
18
- if (memory.mode === "readOnly") return {
19
- decision: "deny",
20
- reason: "memory is read-only"
16
+ reason: "knowledge memory is disabled"
21
17
  };
22
18
  if (!candidate.content.trim()) return {
23
19
  decision: "deny",
@@ -27,19 +23,13 @@ function buildMemoryRuntime(userContext) {
27
23
  decision: "deny",
28
24
  reason: "memory confidence is too low"
29
25
  };
30
- const sensitivePolicy = userContext.privacy.sensitiveWritePolicy;
31
- if (candidate.sensitive && sensitivePolicy !== "allow") return {
32
- decision: sensitivePolicy,
33
- reason: "memory candidate is sensitive"
34
- };
35
- const targetPolicy = memory.writePolicy?.[candidate.target] ?? "deny";
36
- if (memory.mode === "confirmWrite" && targetPolicy === "allow") return {
37
- decision: "confirm",
38
- reason: "agent memory mode requires confirmation"
26
+ if (candidate.sensitive && memory.writePolicy !== "allow") return {
27
+ decision: memory.writePolicy,
28
+ reason: "knowledge candidate is sensitive"
39
29
  };
40
30
  return {
41
- decision: targetPolicy,
42
- reason: `target policy is ${targetPolicy}`
31
+ decision: memory.writePolicy,
32
+ reason: `knowledge write policy is ${memory.writePolicy}`
43
33
  };
44
34
  }
45
35
  };
@@ -115,7 +115,7 @@ export interface MemoryWriteRequest {
115
115
  /** Agent that produced this record. This is request data, never provider state. */
116
116
  sourceAgentId?: string;
117
117
  provenance?: Partial<Omit<MemoryProvenance, 'sourceAgentId'>>;
118
- writeTarget?: 'agentProfile' | 'understanding' | 'workspace';
118
+ writeTarget?: 'knowledge';
119
119
  confirmed?: boolean;
120
120
  tags?: string[];
121
121
  source?: MemoryRecord['source'];
@@ -1,6 +1,8 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { runContextConsolidation } from "../../user-context/consolidation.js";
3
+ import { parseMaintenanceInstruction } from "../../memory-maintenance/schedule.js";
4
+ import { runMemoryMaintenance } from "../../memory-maintenance/service.js";
5
+ import "../../memory-maintenance/index.js";
4
6
  import { abortEmbeddedRun } from "../embedded/runs.js";
5
7
  import { persistInboundAttachments } from "../../channels/attachments/inbound-persist.js";
6
8
  import { buildTranscriptUserMessage, clearPendingTranscriptUserMessage, hydrateUserTurnForLlm, setPendingTranscriptUserMessage } from "../inbound/attachment-pipeline.js";
@@ -48,15 +50,19 @@ var AgentOrchestrator = class {
48
50
  log.debug({ sessionKey }, "Processing message through agent orchestrator");
49
51
  await this.sessionHydrator.workspace(sessionKey);
50
52
  if (typeof msg.content === "string" && (sessionKey.startsWith("cron:") || sessionKey.includes(":cron:") || sessionKey.includes(":automation:") || context.channel === "cron" || context.channel === "automation")) {
51
- if (msg.content.includes("__xopc_user_context_consolidation__")) {
53
+ const maintenanceJob = parseMaintenanceInstruction(msg.content);
54
+ if (maintenanceJob) {
52
55
  const cfg = this.getConfig?.();
53
56
  if (!cfg) {
54
- log.warn({ sessionKey }, "User context review skipped: config unavailable");
57
+ log.warn({ sessionKey }, "Memory maintenance skipped: config unavailable");
55
58
  return;
56
59
  }
57
- await runContextConsolidation({
58
- config: cfg,
59
- triggerKind: "schedule"
60
+ const maintenance = cfg.userContext.userModel.maintenance;
61
+ runMemoryMaintenance({
62
+ jobType: maintenanceJob,
63
+ limit: maintenance.limit,
64
+ staleRetentionDays: maintenance.staleRetentionDays,
65
+ evidenceThreshold: maintenance.evidenceThreshold
60
66
  });
61
67
  return;
62
68
  }
@@ -108,21 +114,7 @@ var AgentOrchestrator = class {
108
114
  clearPendingTranscriptUserMessage(sessionKey, userMessage);
109
115
  }
110
116
  })();
111
- const understandingReview = await this.agentManager.afterAgentTurn(sessionKey, userPlainForMemory, turnId);
112
- if (understandingReview?.createdRecords.length) {
113
- const captured = understandingReview.createdRecords.filter((record) => record.status === "active");
114
- const candidates = understandingReview.createdRecords.filter((record) => record.status === "candidate");
115
- if (captured.length) this.onEmbeddedStreamEvent?.(sessionKey, {
116
- type: "memory_captured",
117
- runId: turnId,
118
- records: captured
119
- });
120
- if (candidates.length) this.onEmbeddedStreamEvent?.(sessionKey, {
121
- type: "memory_candidate",
122
- runId: turnId,
123
- records: candidates
124
- });
125
- }
117
+ await this.agentManager.afterAgentTurn(sessionKey, userPlainForMemory, turnId);
126
118
  this.agentManager.scheduleBackgroundReviewAfterUserTurn(sessionKey);
127
119
  if (turnResult.ok) {
128
120
  this.onEmbeddedTurnComplete?.(sessionKey, turnResult.lastAssistantText);
@@ -1,6 +1,7 @@
1
1
  //#region src/agent/orchestration/context-overflow.ts
2
2
  const CONTEXT_OVERFLOW_PATTERNS = [
3
3
  /context(?:_|\s|-)*(?:length|window).*(?:exceed|limit|maximum|too (?:large|long))/i,
4
+ /\bexceed(?:s|ed)?\s+(?:the\s+)?context(?:_|\s|-)*(?:length|window)\b/i,
4
5
  /maximum context length/i,
5
6
  /max(?:imum)? tokens?.*(?:exceed|limit)/i,
6
7
  /too many tokens/i,
@@ -1,43 +1,32 @@
1
1
  //#region src/agent/prompt/sections/memory-skills.ts
2
2
  function buildMemorySection(params) {
3
3
  if (params.includeMemorySection === false) return "";
4
- if (!(params.availableTools.has("memory_search") || params.availableTools.has("memory_get") || params.availableTools.has("session_recall") || params.availableTools.has("session_search")) && !params.hasProfileMemory) return "";
5
- const citationsMode = params.citationsMode ?? "on";
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
- const toolLines = [];
8
- if (params.availableTools.has("memory_search")) toolLines.push("1. Run `memory_search` to search workspace and connected-source memory records");
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
- if (params.availableTools.has("session_recall")) toolLines.push(`${toolLines.length + 1}. When the current session summary lacks an exact fact, path, ID, date, decision, or tool result, use session_recall to search its authoritative raw transcript`);
11
- if (params.availableTools.has("memory_get")) toolLines.push(`${toolLines.length + 1}. Use \`memory_get\` only for record ids returned by \`memory_search\``);
12
- toolLines.push(`${toolLines.length + 1}. If low confidence after search, say you checked`);
13
- return [
14
- "## Memory Recall",
15
- "",
16
- citationInstruction,
17
- "",
18
- "Relevant user understanding is selected separately and injected above.",
19
- "",
20
- "Before answering anything about prior work, decisions, dates, people, preferences, or todos:",
21
- ...toolLines,
22
- "",
23
- "### Memory Sources",
24
- "",
25
- "- **Current session:** use `session_recall` for exact raw turns, including history older than compaction.",
26
- "- **Other sessions:** use `session_search` for cross-session history.",
27
- "- **Workspace memory:** cite only record ids returned by `memory_search` / `memory_get`.",
28
- "",
29
- "### Writing to Memory",
30
- "",
31
- "- **Declarative vs procedural:** user preferences belong to structured user understanding; reusable task procedures belong to skills.",
32
- "- Explicit \"remember this\" statements are captured as durable structured understanding after the turn.",
33
- "- Do not invent, cite, or promise memory record ids that were not returned by a memory tool.",
34
- "- **Text > Brain**"
35
- ].join("\n");
4
+ const names = params.availableTools;
5
+ if (![
6
+ "user_context_search",
7
+ "user_context_get",
8
+ "knowledge_search",
9
+ "knowledge_get",
10
+ "session_recall",
11
+ "session_search"
12
+ ].some((name) => names.has(name)) && !params.hasProfileMemory) return "";
13
+ const lines = [
14
+ "## Context and memory",
15
+ "",
16
+ "Relevant user facts, goals, priorities, collaboration rules, and task knowledge are selected for each turn.",
17
+ "When exact or additional context is needed:"
18
+ ];
19
+ if (names.has("user_context_search")) lines.push("- Use `user_context_search` for user identity, preferences, routines, and current state.");
20
+ if (names.has("knowledge_search")) lines.push("- Use `knowledge_search` for project facts, decisions, lessons, commitments, and open questions.");
21
+ if (names.has("session_recall")) lines.push("- Use `session_recall` for exact raw content from the current session.");
22
+ if (names.has("session_search")) lines.push("- Use `session_search` for other conversations.");
23
+ if (names.has("knowledge_write")) lines.push("- Use `knowledge_write` for reusable task knowledge; it is stored as a reviewable candidate with provenance.");
24
+ lines.push("", "User facts are declarative. Reusable procedures belong in skills.", "Do not infer importance from confidence: confidence measures truth likelihood; importance measures execution value.");
25
+ return lines.join("\n");
36
26
  }
37
27
  function buildExternalMemorySection(text) {
38
- const t = text?.trim();
39
- if (!t) return "";
40
- return `## External memory provider\n\n${t}`;
28
+ const value = text?.trim();
29
+ return value ? `## External knowledge provider\n\n${value}` : "";
41
30
  }
42
31
  function buildSkillsSection(hasSkillTools) {
43
32
  if (!hasSkillTools) return "";
@@ -50,7 +39,7 @@ function buildSkillsSection(hasSkillTools) {
50
39
  "Constraints: never load more than one skill up front; only load after selecting.",
51
40
  "- When a skill drives external API writes, assume rate limits: prefer fewer larger writes, avoid tight one-item loops, serialize bursts when possible, and respect 429/Retry-After.",
52
41
  "",
53
- "**Division of labor with memory:** Skills = **procedural** workflows; structured memory = **declarative** facts and preferences."
42
+ "**Division of labor:** Skills contain procedures; user context and knowledge contain declarative facts."
54
43
  ].join("\n");
55
44
  }
56
45
  //#endregion
@@ -15,8 +15,11 @@ const CORE_TOOL_ORDER = [
15
15
  "send_message",
16
16
  "send_media",
17
17
  "publish_artifacts",
18
- "memory_search",
19
- "memory_get",
18
+ "user_context_search",
19
+ "user_context_get",
20
+ "knowledge_search",
21
+ "knowledge_get",
22
+ "knowledge_write",
20
23
  "session_recall",
21
24
  "session_search",
22
25
  "session_status",
@@ -52,8 +55,11 @@ const CORE_TOOL_SUMMARIES = {
52
55
  send_message: "Send messages to the current conversation or an explicit configured channel",
53
56
  send_media: "Send media attachments to the current channel",
54
57
  publish_artifacts: "Publish final generated files as durable chat deliverables",
55
- memory_search: "Semantic search over indexed memory sources",
56
- memory_get: "Read specific lines from memory sources returned by search",
58
+ user_context_search: "Search typed user facts, preferences, routines, and current state",
59
+ user_context_get: "Read one typed user assertion with its scope and authority",
60
+ knowledge_search: "Search scoped project, workspace, and session knowledge",
61
+ knowledge_get: "Read one knowledge item returned by search",
62
+ knowledge_write: "Store a scoped knowledge candidate with provenance",
57
63
  session_recall: "Search exact raw turns in the current session, including compacted history",
58
64
  session_search: "Search other chat sessions or list recent sessions",
59
65
  session_status: "Show session usage/time/model state",