@xopcai/xopc 0.0.247 → 0.0.249

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 (509) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/src/update-offset-store.js +17 -54
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/extensions/weixin/src/auth/accounts.js +3 -5
  5. package/dist/extensions/weixin/src/monitor/monitor.js +3 -5
  6. package/dist/extensions/weixin/src/storage/sync-buf.d.ts +3 -6
  7. package/dist/extensions/weixin/src/storage/sync-buf.js +9 -22
  8. package/dist/gateway/static/root/assets/{activity-store-BlxqErph.js → activity-store-B759R_qf.js} +1 -1
  9. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DmaFeojS.js → agent-avatar-dicebear-BUu7EnwM.js} +1 -1
  10. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.js +1 -0
  11. package/dist/gateway/static/root/assets/agents-DK9HjHO0.js +1 -0
  12. package/dist/gateway/static/root/assets/{api-BbXzyQMj.js → api-Cg0v7Lpn.js} +1 -1
  13. package/dist/gateway/static/root/assets/app-management-settings-panel-C9DkCW_d.js +1 -0
  14. package/dist/gateway/static/root/assets/appearance-settings-CFggS95Y.js +1 -0
  15. package/dist/gateway/static/root/assets/apps-page-jOvT-fzU.js +1 -0
  16. package/dist/gateway/static/root/assets/{archive-plugin-DD2SweEH.js → archive-plugin-BQrilVVv.js} +1 -1
  17. package/dist/gateway/static/root/assets/{attachment-load-BG82bNBQ.js → attachment-load-BG0BliqV.js} +1 -1
  18. package/dist/gateway/static/root/assets/{automations-page-CqBZ89He.js → automations-page-Bo4RiTkh.js} +1 -1
  19. package/dist/gateway/static/root/assets/automations-workspace-BKjKTlW8.js +6 -0
  20. package/dist/gateway/static/root/assets/{binary-plugins-B6LKm5Zv.js → binary-plugins-BCnyNU0C.js} +1 -1
  21. package/dist/gateway/static/root/assets/{block-editor-BJKvGVXd.js → block-editor-Db8DlVvg.js} +50 -50
  22. package/dist/gateway/static/root/assets/browser-settings-page-Dzq18pO1.js +8 -0
  23. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BAAc151l.js → browser-workflow-inputs-C71vfl0b.js} +1 -1
  24. package/dist/gateway/static/root/assets/{browser-workflows-page-DoE4Uuns.js → browser-workflows-page-vvmSYKsO.js} +2 -2
  25. package/dist/gateway/static/root/assets/capabilities-settings-panel-DW4SBQf4.js +7 -0
  26. package/dist/gateway/static/root/assets/channels-settings-57OGuewD.js +1 -0
  27. package/dist/gateway/static/root/assets/{channels-status-swr-CCBCtLDg.js → channels-status-swr-CKyV3jY5.js} +1 -1
  28. package/dist/gateway/static/root/assets/{chat-terminal-dock-BsRWnz7M.js → chat-terminal-dock-B1Xd6OFB.js} +2 -2
  29. package/dist/gateway/static/root/assets/connectors-page-CT_I3kbR.js +2 -0
  30. package/dist/gateway/static/root/assets/{cron-expression-DdCgsH2c.js → cron-expression-D-F9vjtE.js} +1 -1
  31. package/dist/gateway/static/root/assets/{date-picker-dt37Lt8e.js → date-picker-B2OoYvic.js} +1 -1
  32. package/dist/gateway/static/root/assets/dependency-picker-BiGx9Sbj.js +1 -0
  33. package/dist/gateway/static/root/assets/{desktop-pet-Nw_Pgkk3.js → desktop-pet-BNMRqipe.js} +1 -1
  34. package/dist/gateway/static/root/assets/desktop-pet-settings-DeYbIV7A.js +1 -0
  35. package/dist/gateway/static/root/assets/{extension-debug-page-BHSst0WN.js → extension-debug-page-COyn05ub.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-page-DXbL4cQZ.js → extension-page-oH43chS2.js} +1 -1
  37. package/dist/gateway/static/root/assets/extension-settings-page-BMO59994.js +1 -0
  38. package/dist/gateway/static/root/assets/gateway-config-api-cimpViGk.js +1 -0
  39. package/dist/gateway/static/root/assets/{gateway-config-swr-826dipyU.js → gateway-config-swr-BGdHwT4e.js} +1 -1
  40. package/dist/gateway/static/root/assets/gateway-settings-BHJtnSic.js +1 -0
  41. package/dist/gateway/static/root/assets/{gateway-startup-retry-DyvcAIMm.js → gateway-startup-retry-CuaM3b4c.js} +1 -1
  42. package/dist/gateway/static/root/assets/heartbeat-settings-DNhrZHqx.js +1 -0
  43. package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +1 -0
  44. package/dist/gateway/static/root/assets/{image-generation-api-D7cyfks6.js → image-generation-api-D7duj7Uj.js} +1 -1
  45. package/dist/gateway/static/root/assets/index-DGeGmj4k.css +2 -0
  46. package/dist/gateway/static/root/assets/index-aBs0EfQB.js +72 -0
  47. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-EY4cu-6W.js → keyboard-shortcuts-settings-D8Zw_lYd.js} +1 -1
  48. package/dist/gateway/static/root/assets/local-app-workbench-page-eBFVWmtH.js +2 -0
  49. package/dist/gateway/static/root/assets/{local-apps-page-Dh7OxX0S.js → local-apps-page-CvPDPRwb.js} +1 -1
  50. package/dist/gateway/static/root/assets/{locale-store-CBoCuIMx.js → locale-store-zEL8bkwx.js} +1 -1
  51. package/dist/gateway/static/root/assets/logs-page-ClvcWlL6.js +2 -0
  52. package/dist/gateway/static/root/assets/{management-settings-ZjiL3A-S.js → management-settings-D8moh99U.js} +1 -1
  53. package/dist/gateway/static/root/assets/{markdown-split-B4BxkTpU.js → markdown-split-D7V3j0vE.js} +1 -1
  54. package/dist/gateway/static/root/assets/{markdown-view-BXsHghJd.js → markdown-view-DGRN-8wP.js} +1 -1
  55. package/dist/gateway/static/root/assets/{media-plugins-D15XBiEo.js → media-plugins-BLaE5b1Y.js} +1 -1
  56. package/dist/gateway/static/root/assets/messages-W5P19VTF.js +11 -0
  57. package/dist/gateway/static/root/assets/mobile-pairing-wizard-DiVDuCxl.js +1 -0
  58. package/dist/gateway/static/root/assets/note-detail-panel-CEEvR-fV.js +5 -0
  59. package/dist/gateway/static/root/assets/notes-page-BLqgXNCx.js +8 -0
  60. package/dist/gateway/static/root/assets/page-tabs-BFMGjA60.js +1 -0
  61. package/dist/gateway/static/root/assets/preview-open-alternatives-DNEWZN7H.js +1 -0
  62. package/dist/gateway/static/root/assets/{product-open-page-CAJeUXeU.js → product-open-page-Co5u7asH.js} +1 -1
  63. package/dist/gateway/static/root/assets/project-detail-page-CIiFJ5tk.js +1 -0
  64. package/dist/gateway/static/root/assets/projects-page-B3UF-Pfm.js +1 -0
  65. package/dist/gateway/static/root/assets/{registry-api-BhGKnvLP.js → registry-api-Cg92zSod.js} +1 -1
  66. package/dist/gateway/static/root/assets/remote-access-hub-BUtpkJPG.js +1 -0
  67. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BhKcyEId.js → runtime-tools-settings-panel-C0ByNmlV.js} +2 -2
  68. package/dist/gateway/static/root/assets/{schema-form-L0s7RWCi.js → schema-form-Dq_VQpuY.js} +1 -1
  69. package/dist/gateway/static/root/assets/sessions-page-UgJmG-V4.js +1 -0
  70. package/dist/gateway/static/root/assets/settings-advanced-gate-DDCzpdkl.js +1 -0
  71. package/dist/gateway/static/root/assets/settings-form-section-CZu6FX4k.js +1 -0
  72. package/dist/gateway/static/root/assets/{settings-page-CTKoztlF.js → settings-page-S8ekeUZd.js} +1 -1
  73. package/dist/gateway/static/root/assets/setup-status-panel-BdVmwXMv.js +1 -0
  74. package/dist/gateway/static/root/assets/{share-preview-page-CiiLLz5A.js → share-preview-page-D2fEidbn.js} +1 -1
  75. package/dist/gateway/static/root/assets/shares-settings-BdsqnCYj.js +1 -0
  76. package/dist/gateway/static/root/assets/skill-reload-api-ghzAQKna.js +1 -0
  77. package/dist/gateway/static/root/assets/skills-page-AYiPlgZE.js +2 -0
  78. package/dist/gateway/static/root/assets/{skills-page.utils-CwRekJSJ.js → skills-page.utils-DGzl-ib-.js} +1 -1
  79. package/dist/gateway/static/root/assets/system-settings-panel-5Xd5mIiR.js +1 -0
  80. package/dist/gateway/static/root/assets/task-detail-page-BQAUaCDD.js +1 -0
  81. package/dist/gateway/static/root/assets/{theme-store-hybK3oC9.js → theme-store-ZVClZKQ0.js} +1 -1
  82. package/dist/gateway/static/root/assets/tunnel-api-CdZN1Jin.js +1 -0
  83. package/dist/gateway/static/root/assets/{use-autosave-DX5YZ3Nn.js → use-autosave-czRI0NBc.js} +1 -1
  84. package/dist/gateway/static/root/assets/user-model-page-W3GTm6nA.js +2 -0
  85. package/dist/gateway/static/root/assets/{voice-api-key-field-ocnZbAyi.js → voice-api-key-field-8YEvA3cU.js} +1 -1
  86. package/dist/gateway/static/root/assets/{voice-config-api-CBbiF1T3.js → voice-config-api-CopF64lY.js} +1 -1
  87. package/dist/gateway/static/root/assets/work-discovery-overlay-keLtqYYJ.js +1 -0
  88. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DaErGvxO.js → workflow-run-setup-panel-Dy5WgYMO.js} +2 -2
  89. package/dist/gateway/static/root/assets/workflows-page-BbAV3h7n.js +5 -0
  90. package/dist/gateway/static/root/index.html +10 -26
  91. package/dist/package.js +1 -1
  92. package/dist/src/agent/agent-instance-gateway.d.ts +2 -2
  93. package/dist/src/agent/agent-manager.d.ts +4 -4
  94. package/dist/src/agent/agent-manager.js +31 -15
  95. package/dist/src/agent/background-review/coordinator.d.ts +2 -4
  96. package/dist/src/agent/background-review/coordinator.js +5 -30
  97. package/dist/src/agent/background-review/prompts.d.ts +4 -2
  98. package/dist/src/agent/background-review/prompts.js +24 -19
  99. package/dist/src/agent/background-review/run-background-review.d.ts +6 -7
  100. package/dist/src/agent/background-review/run-background-review.js +47 -41
  101. package/dist/src/agent/background-review/settings.d.ts +0 -1
  102. package/dist/src/agent/background-review/settings.js +6 -7
  103. package/dist/src/agent/commands/command-registry.d.ts +1 -0
  104. package/dist/src/agent/commands/command-registry.js +12 -22
  105. package/dist/src/agent/context/audit.d.ts +36 -0
  106. package/dist/src/agent/context/audit.js +97 -0
  107. package/dist/src/agent/context/coordinator.d.ts +26 -0
  108. package/dist/src/agent/context/coordinator.js +72 -0
  109. package/dist/src/agent/context/execution-context.d.ts +54 -0
  110. package/dist/src/agent/context/execution-context.js +147 -0
  111. package/dist/src/agent/context/execution-scope.js +1 -1
  112. package/dist/src/agent/context/prepend.d.ts +2 -0
  113. package/dist/src/agent/context/prepend.js +28 -0
  114. package/dist/src/agent/context/project-context.d.ts +3 -3
  115. package/dist/src/agent/context/project-context.js +26 -23
  116. package/dist/src/agent/embedded/index.js +1 -1
  117. package/dist/src/agent/embedded/run-for-session.js +1 -0
  118. package/dist/src/agent/embedded/run-turn.js +22 -2
  119. package/dist/src/agent/embedded/types.d.ts +1 -25
  120. package/dist/src/agent/external-tools/composio-provider.js +87 -92
  121. package/dist/src/agent/external-tools/gateway-tools.d.ts +4 -1
  122. package/dist/src/agent/external-tools/gateway-tools.js +153 -41
  123. package/dist/src/agent/external-tools/index.js +1 -1
  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/ipc/inbox.d.ts +8 -31
  129. package/dist/src/agent/ipc/inbox.js +64 -133
  130. package/dist/src/agent/memory/compaction-policy.js +1 -1
  131. package/dist/src/agent/memory/compaction-promotion.js +45 -77
  132. package/dist/src/agent/memory/create-memory-manager.js +1 -3
  133. package/dist/src/agent/memory/index.d.ts +0 -5
  134. package/dist/src/agent/memory/index.js +2 -5
  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.js +1 -1
  138. package/dist/src/agent/memory/runtime.d.ts +2 -2
  139. package/dist/src/agent/memory/runtime.js +9 -19
  140. package/dist/src/agent/memory/types.d.ts +1 -1
  141. package/dist/src/agent/orchestration/agent-orchestrator.js +13 -21
  142. package/dist/src/agent/prompt/sections/memory-skills.js +25 -36
  143. package/dist/src/agent/prompt/sections/tooling.js +10 -4
  144. package/dist/src/agent/prompt/service-prompt-builder.js +4 -3
  145. package/dist/src/agent/service/direct-turn-helpers.js +6 -23
  146. package/dist/src/agent/service/process-direct-one-shot.js +15 -10
  147. package/dist/src/agent/service/process-direct-streaming.js +5 -3
  148. package/dist/src/agent/service.js +4 -3
  149. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  150. package/dist/src/agent/tools/clarify-tool.d.ts +1 -0
  151. package/dist/src/agent/tools/delegate-tool.js +5 -2
  152. package/dist/src/agent/tools/factory.js +36 -19
  153. package/dist/src/agent/tools/index.d.ts +3 -2
  154. package/dist/src/agent/tools/index.js +4 -3
  155. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +9 -0
  156. package/dist/src/agent/tools/knowledge-memory-tool.js +129 -0
  157. package/dist/src/agent/tools/{dreaming-tool.d.ts → memory-maintenance-tool.d.ts} +2 -2
  158. package/dist/src/agent/tools/memory-maintenance-tool.js +31 -0
  159. package/dist/src/agent/tools/user-context-tool.d.ts +8 -0
  160. package/dist/src/agent/tools/user-context-tool.js +81 -0
  161. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  162. package/dist/src/agent/workflow/catalog.d.ts +1 -8
  163. package/dist/src/agent/workflow/catalog.js +44 -102
  164. package/dist/src/agent/workflow/index.d.ts +1 -1
  165. package/dist/src/agent/workflow/index.js +2 -2
  166. package/dist/src/automations/domain/types.d.ts +1 -0
  167. package/dist/src/automations/service/action-executor.js +2 -2
  168. package/dist/src/automations/service/automation-service.js +2 -2
  169. package/dist/src/channels/manager.d.ts +1 -1
  170. package/dist/src/channels/manager.js +2 -2
  171. package/dist/src/channels/outbound/persist-store.d.ts +2 -8
  172. package/dist/src/channels/outbound/persist-store.js +11 -38
  173. package/dist/src/channels/outbound-sender.d.ts +1 -1
  174. package/dist/src/channels/outbound-sender.js +2 -2
  175. package/dist/src/chat-commands/builtins/understanding.js +24 -6
  176. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  177. package/dist/src/config/schema.d.ts +68 -75
  178. package/dist/src/config/schema.js +31 -20
  179. package/dist/src/config/web-patch.d.ts +1 -1
  180. package/dist/src/connectors/composio-managed-client.js +6 -2
  181. package/dist/src/connectors/composio-triggers.d.ts +2 -2
  182. package/dist/src/connectors/composio-triggers.js +8 -15
  183. package/dist/src/connectors/connected-source-understanding.d.ts +1 -3
  184. package/dist/src/connectors/connected-source-understanding.js +86 -99
  185. package/dist/src/connectors/connection-candidates.d.ts +11 -0
  186. package/dist/src/connectors/connection-candidates.js +58 -0
  187. package/dist/src/connectors/connection-capabilities.d.ts +4 -0
  188. package/dist/src/connectors/connection-capabilities.js +37 -0
  189. package/dist/src/connectors/connection-recovery-service.d.ts +42 -0
  190. package/dist/src/connectors/connection-recovery-service.js +396 -0
  191. package/dist/src/connectors/learning-coordinator.d.ts +0 -2
  192. package/dist/src/connectors/learning-coordinator.js +6 -7
  193. package/dist/src/connectors/principal.d.ts +5 -0
  194. package/dist/src/connectors/principal.js +18 -0
  195. package/dist/src/gateway/agent-builtin-tools.d.ts +28 -10
  196. package/dist/src/gateway/agent-builtin-tools.js +30 -9
  197. package/dist/src/gateway/automation-agent-session.js +3 -0
  198. package/dist/src/gateway/chat-stream/mapper.js +1 -28
  199. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -24
  200. package/dist/src/gateway/clarify-bridge.d.ts +4 -0
  201. package/dist/src/gateway/clarify-bridge.js +9 -4
  202. package/dist/src/gateway/heartbeat/service.js +1 -1
  203. package/dist/src/gateway/hono/lib/config-payload.d.ts +52 -30
  204. package/dist/src/gateway/hono/lib/config-payload.js +4 -4
  205. package/dist/src/gateway/hono/lib/extension-store.js +8 -25
  206. package/dist/src/gateway/hono/middleware/auth.js +1 -2
  207. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  208. package/dist/src/gateway/hono/routes/config-patch/misc.js +72 -28
  209. package/dist/src/gateway/hono/routes/connection-waits.d.ts +3 -0
  210. package/dist/src/gateway/hono/routes/connection-waits.js +58 -0
  211. package/dist/src/gateway/hono/routes/connectors.js +4 -12
  212. package/dist/src/gateway/hono/routes/context-sources.d.ts +4 -0
  213. package/dist/src/gateway/hono/routes/context-sources.js +159 -0
  214. package/dist/src/gateway/hono/routes/index.js +4 -2
  215. package/dist/src/gateway/hono/routes/lazy-bundles.js +9 -4
  216. package/dist/src/gateway/hono/routes/notes.js +22 -7
  217. package/dist/src/gateway/hono/routes/projects.js +37 -45
  218. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +15 -1
  219. package/dist/src/gateway/hono/routes/side-chats.js +13 -2
  220. package/dist/src/gateway/hono/routes/tasks.js +2 -2
  221. package/dist/src/gateway/hono/routes/user-model.d.ts +3 -0
  222. package/dist/src/gateway/hono/routes/user-model.js +480 -0
  223. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  224. package/dist/src/gateway/memory-maintenance-automation-reconciler.d.ts +11 -0
  225. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +72 -0
  226. package/dist/src/gateway/service/agent-runner.d.ts +9 -1
  227. package/dist/src/gateway/service/agent-runner.js +25 -1
  228. package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
  229. package/dist/src/gateway/service/config-coordinator.js +4 -4
  230. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  231. package/dist/src/gateway/service/run-gateway-agent.js +18 -14
  232. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  233. package/dist/src/gateway/service/session-input-coordinator.js +12 -2
  234. package/dist/src/gateway/service.d.ts +3 -1
  235. package/dist/src/gateway/service.js +49 -19
  236. package/dist/src/gateway/side-chat/manager.d.ts +16 -3
  237. package/dist/src/gateway/side-chat/manager.js +117 -28
  238. package/dist/src/gateway/side-chat/run-service.d.ts +2 -0
  239. package/dist/src/gateway/side-chat/run-service.js +28 -5
  240. package/dist/src/gateway/side-chat/types.d.ts +9 -1
  241. package/dist/src/heartbeat/index.js +1 -1
  242. package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +0 -2
  243. package/dist/src/knowledge/connected-knowledge-pipeline.js +46 -217
  244. package/dist/src/knowledge-memory/domain.d.ts +35 -0
  245. package/dist/src/knowledge-memory/index.d.ts +2 -0
  246. package/dist/src/knowledge-memory/index.js +2 -0
  247. package/dist/src/knowledge-memory/repository.d.ts +45 -0
  248. package/dist/src/knowledge-memory/repository.js +154 -0
  249. package/dist/src/memory-maintenance/index.d.ts +2 -0
  250. package/dist/src/memory-maintenance/index.js +3 -0
  251. package/dist/src/memory-maintenance/schedule.d.ts +13 -0
  252. package/dist/src/memory-maintenance/schedule.js +51 -0
  253. package/dist/src/memory-maintenance/service.d.ts +28 -0
  254. package/dist/src/memory-maintenance/service.js +216 -0
  255. package/dist/src/notes/index.d.ts +1 -1
  256. package/dist/src/notes/index.js +2 -2
  257. package/dist/src/notes/paths.d.ts +0 -3
  258. package/dist/src/notes/paths.js +1 -10
  259. package/dist/src/notes/service.d.ts +1 -1
  260. package/dist/src/notes/service.js +7 -4
  261. package/dist/src/notes/store.d.ts +0 -2
  262. package/dist/src/notes/store.js +33 -80
  263. package/dist/src/notes/types.d.ts +16 -0
  264. package/dist/src/proactive/execution/context.d.ts +2 -2
  265. package/dist/src/proactive/execution/context.js +16 -11
  266. package/dist/src/proactive/index.d.ts +1 -1
  267. package/dist/src/proactive/index.js +2 -2
  268. package/dist/src/projects/index.d.ts +1 -1
  269. package/dist/src/projects/index.js +2 -2
  270. package/dist/src/projects/knowledge-bind.d.ts +1 -0
  271. package/dist/src/projects/knowledge-bind.js +15 -0
  272. package/dist/src/projects/project-loop.d.ts +3 -3
  273. package/dist/src/projects/project-loop.js +4 -4
  274. package/dist/src/projects/project-store.js +2 -1
  275. package/dist/src/realtime/runtime.js +1 -0
  276. package/dist/src/runtime-tools/manager.js +1 -1
  277. package/dist/src/share/hosted-session-share.d.ts +1 -4
  278. package/dist/src/share/hosted-session-share.js +14 -47
  279. package/dist/src/share/share-auto.d.ts +1 -1
  280. package/dist/src/share/share-auto.js +2 -2
  281. package/dist/src/share/share-store.d.ts +2 -7
  282. package/dist/src/share/share-store.js +153 -195
  283. package/dist/src/share/share-types.d.ts +0 -4
  284. package/dist/src/share/site-share-store.d.ts +3 -8
  285. package/dist/src/share/site-share-store.js +94 -153
  286. package/dist/src/share/site-share-types.d.ts +0 -4
  287. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +17 -0
  288. package/dist/src/storage/sqlite/collaboration-rule-repository.js +54 -0
  289. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +30 -0
  290. package/dist/src/storage/sqlite/connection-wait-repository.js +338 -0
  291. package/dist/src/storage/sqlite/connection.d.ts +1 -2
  292. package/dist/src/storage/sqlite/connection.js +50 -47
  293. package/dist/src/storage/sqlite/connector-account-repository.js +1 -1
  294. package/dist/src/storage/sqlite/context-evidence-repository.d.ts +24 -0
  295. package/dist/src/storage/sqlite/context-evidence-repository.js +52 -0
  296. package/dist/src/storage/sqlite/durable-queue.d.ts +16 -0
  297. package/dist/src/storage/sqlite/durable-queue.js +52 -0
  298. package/dist/src/storage/sqlite/durable-state.d.ts +16 -0
  299. package/dist/src/storage/sqlite/durable-state.js +43 -0
  300. package/dist/src/storage/sqlite/index.d.ts +3 -5
  301. package/dist/src/storage/sqlite/index.js +4 -6
  302. package/dist/src/storage/sqlite/knowledge-repository.d.ts +0 -19
  303. package/dist/src/storage/sqlite/knowledge-repository.js +1 -90
  304. package/dist/src/storage/sqlite/migrations/146_understanding_focus_exclusions.sql +9 -0
  305. package/dist/src/storage/sqlite/migrations/147_durable_application_state.sql +39 -0
  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/runner.d.ts +1 -1
  310. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  311. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  312. package/dist/src/storage/sqlite/notes-repository.d.ts +2 -1
  313. package/dist/src/storage/sqlite/notes-repository.js +37 -3
  314. package/dist/src/storage/sqlite/schema.js +1 -1
  315. package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -2
  316. package/dist/src/storage/sqlite/session-input-repository.js +16 -13
  317. package/dist/src/storage/sqlite/session-repository.js +4 -1
  318. package/dist/src/storage/sqlite/transcript-repository.js +1 -1
  319. package/dist/src/tasks/index.js +2 -2
  320. package/dist/src/tasks/project-operating-view-service.js +1 -1
  321. package/dist/src/tasks/task-application-service.js +6 -1
  322. package/dist/src/tasks/task-context-assembler.js +1 -1
  323. package/dist/src/tasks/task-context-repository.d.ts +0 -1
  324. package/dist/src/tasks/task-context-repository.js +1 -1
  325. package/dist/src/tasks/task-deletion-service.js +1 -1
  326. package/dist/src/tasks/task-handoff-service.js +1 -1
  327. package/dist/src/tasks/task-read-model-projector.js +1 -1
  328. package/dist/src/tasks/task-run-coordinator.js +1 -1
  329. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  330. package/dist/src/tasks/task-run-repository.js +1 -0
  331. package/dist/src/tasks/task-signal-service.js +1 -1
  332. package/dist/src/tui/tool-summary.js +2 -1
  333. package/dist/src/tui/tui-scoped-models.js +9 -6
  334. package/dist/src/user-context/changes.d.ts +1 -1
  335. package/dist/src/user-context/config.d.ts +135 -153
  336. package/dist/src/user-context/config.js +94 -99
  337. package/dist/src/user-context/relationship-continuity.d.ts +2 -2
  338. package/dist/src/user-context/relationship-continuity.js +34 -24
  339. package/dist/src/user-context/sources/activity-clustering.d.ts +9 -3
  340. package/dist/src/user-context/sources/index.js +2 -2
  341. package/dist/src/user-context/sources/repository.d.ts +1 -21
  342. package/dist/src/user-context/sources/repository.js +1 -183
  343. package/dist/src/user-context/sources/types.d.ts +0 -23
  344. package/dist/src/user-model/capture/executor.d.ts +40 -0
  345. package/dist/src/user-model/capture/executor.js +134 -0
  346. package/dist/src/user-model/capture/index.d.ts +2 -0
  347. package/dist/src/user-model/capture/index.js +3 -0
  348. package/dist/src/user-model/capture/semantic.d.ts +21 -0
  349. package/dist/src/user-model/capture/semantic.js +197 -0
  350. package/dist/src/user-model/domain.d.ts +93 -0
  351. package/dist/src/user-model/domain.js +33 -0
  352. package/dist/src/user-model/goals.d.ts +58 -0
  353. package/dist/src/user-model/goals.js +89 -0
  354. package/dist/src/user-model/importance.d.ts +11 -0
  355. package/dist/src/user-model/importance.js +17 -0
  356. package/dist/src/user-model/index.d.ts +5 -0
  357. package/dist/src/user-model/index.js +6 -0
  358. package/dist/src/user-model/repository.d.ts +23 -0
  359. package/dist/src/user-model/repository.js +268 -0
  360. package/dist/src/user-model/temporal.d.ts +10 -0
  361. package/dist/src/user-model/temporal.js +44 -0
  362. package/dist/src/voice/realtime/agentEngine.js +63 -18
  363. package/dist/src/voice/realtime/conversationTurn.d.ts +20 -0
  364. package/dist/src/voice/realtime/conversationTurn.js +83 -0
  365. package/dist/src/voice/realtime/memory-context.d.ts +7 -2
  366. package/dist/src/voice/realtime/memory-context.js +39 -51
  367. package/dist/src/voice/realtime/omniEngine.js +72 -18
  368. package/dist/src/work-discovery/service.d.ts +3 -14
  369. package/dist/src/work-discovery/service.js +138 -99
  370. package/dist/src/work-discovery/types.d.ts +3 -3
  371. package/dist/src/workflows/authoring/workflow-draft-store.d.ts +1 -5
  372. package/dist/src/workflows/authoring/workflow-draft-store.js +23 -43
  373. package/dist/src/workflows/index.js +2 -2
  374. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  375. package/dist/src/workflows/service/workflow-session-bridge.js +12 -20
  376. package/dist/src/workflows/store/event-store.d.ts +1 -2
  377. package/dist/src/workflows/store/event-store.js +19 -64
  378. package/dist/src/workflows/store/paths.d.ts +0 -2
  379. package/dist/src/workflows/store/paths.js +1 -7
  380. package/dist/src/workflows/store/run-store.d.ts +0 -1
  381. package/dist/src/workflows/store/run-store.js +1 -24
  382. package/package.json +3 -3
  383. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-eG49pM-z.js +0 -1
  384. package/dist/gateway/static/root/assets/agents-CZwf1mgZ.js +0 -1
  385. package/dist/gateway/static/root/assets/app-management-settings-panel-BODskFTb.js +0 -1
  386. package/dist/gateway/static/root/assets/appearance-settings-DeaVvaYZ.js +0 -1
  387. package/dist/gateway/static/root/assets/apps-page-BZG3BK7f.js +0 -1
  388. package/dist/gateway/static/root/assets/automations-workspace-CB7Yl2_B.js +0 -6
  389. package/dist/gateway/static/root/assets/browser-settings-page-Bu42Ljfw.js +0 -8
  390. package/dist/gateway/static/root/assets/capabilities-settings-panel-Cg7zCxEH.js +0 -7
  391. package/dist/gateway/static/root/assets/channels-settings-EDTZ8P3y.js +0 -1
  392. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +0 -1
  393. package/dist/gateway/static/root/assets/connectors-page-kh7PEkSS.js +0 -2
  394. package/dist/gateway/static/root/assets/dependency-picker-oi7cdv2C.js +0 -1
  395. package/dist/gateway/static/root/assets/desktop-pet-settings-D9OO-exo.js +0 -1
  396. package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +0 -1
  397. package/dist/gateway/static/root/assets/extension-settings-page-FTD7nE8v.js +0 -1
  398. package/dist/gateway/static/root/assets/eye-CABVeTq0.js +0 -1
  399. package/dist/gateway/static/root/assets/eye-off-DEAzt3g1.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-c-8ENciH.js +0 -1
  403. package/dist/gateway/static/root/assets/gateway-settings-BxvyTRl0.js +0 -1
  404. package/dist/gateway/static/root/assets/heartbeat-settings-C1S2Ccui.js +0 -1
  405. package/dist/gateway/static/root/assets/home-page-Bqx-SMWV.js +0 -1
  406. package/dist/gateway/static/root/assets/index-Cif1_3Jx.js +0 -71
  407. package/dist/gateway/static/root/assets/index-Dbh5SXyV.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-sDdw7Y3Q.js +0 -2
  412. package/dist/gateway/static/root/assets/logs-page-DUsxXdDp.js +0 -2
  413. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +0 -1
  414. package/dist/gateway/static/root/assets/messages-BbdwoxVo.js +0 -3
  415. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +0 -1
  416. package/dist/gateway/static/root/assets/mobile-pairing-wizard-Dv87XewB.js +0 -1
  417. package/dist/gateway/static/root/assets/models-hub-cache-88f4fzYS.js +0 -1
  418. package/dist/gateway/static/root/assets/notes-page-DOe0lOcQ.js +0 -1
  419. package/dist/gateway/static/root/assets/notes-workbench-Cy0oYbWP.js +0 -4
  420. package/dist/gateway/static/root/assets/oauth-api-BjSUDIgq.js +0 -1
  421. package/dist/gateway/static/root/assets/oauth-authorization-window-Cdolr2wE.js +0 -1
  422. package/dist/gateway/static/root/assets/page-tabs-BaEQMYm_.js +0 -1
  423. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +0 -1
  424. package/dist/gateway/static/root/assets/preview-open-alternatives-CsNVTKC0.js +0 -1
  425. package/dist/gateway/static/root/assets/project-detail-page-fgD1xc4O.js +0 -1
  426. package/dist/gateway/static/root/assets/projects-page-CiTiEcOc.js +0 -1
  427. package/dist/gateway/static/root/assets/remote-access-hub-Dc0GrNSp.js +0 -1
  428. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +0 -1
  429. package/dist/gateway/static/root/assets/search-DA7gz22f.js +0 -1
  430. package/dist/gateway/static/root/assets/sessions-page-BPOW3yaM.js +0 -1
  431. package/dist/gateway/static/root/assets/settings-advanced-gate-Bz4s9BBY.js +0 -1
  432. package/dist/gateway/static/root/assets/settings-form-section-DjWzRk4z.js +0 -1
  433. package/dist/gateway/static/root/assets/setup-status-panel-rllj-j7k.js +0 -1
  434. package/dist/gateway/static/root/assets/shares-settings-DMj7onCX.js +0 -1
  435. package/dist/gateway/static/root/assets/skill-reload-api-DRB366nS.js +0 -1
  436. package/dist/gateway/static/root/assets/skills-page-cBT9jCof.js +0 -2
  437. package/dist/gateway/static/root/assets/system-settings-panel-Byrk4DQy.js +0 -1
  438. package/dist/gateway/static/root/assets/task-detail-page-CheX3zmK.js +0 -1
  439. package/dist/gateway/static/root/assets/tunnel-api-jKzujxFU.js +0 -1
  440. package/dist/gateway/static/root/assets/user-context-page-CWy3Pqtk.js +0 -1
  441. package/dist/gateway/static/root/assets/work-discovery-overlay-DE4_YpDn.js +0 -1
  442. package/dist/gateway/static/root/assets/workflows-page-y4O9-BTf.js +0 -5
  443. package/dist/src/agent/memory/builtin-provider.d.ts +0 -37
  444. package/dist/src/agent/memory/builtin-provider.js +0 -225
  445. package/dist/src/agent/memory/context/types.d.ts +0 -40
  446. package/dist/src/agent/memory/understanding/quality.d.ts +0 -8
  447. package/dist/src/agent/memory/understanding/quality.js +0 -18
  448. package/dist/src/agent/memory/understanding/service.d.ts +0 -19
  449. package/dist/src/agent/memory/understanding/service.js +0 -209
  450. package/dist/src/agent/memory/understanding/types.d.ts +0 -34
  451. package/dist/src/agent/memory/understanding/types.js +0 -1
  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 -443
  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/user-context-quality-repository.d.ts +0 -49
  472. package/dist/src/storage/sqlite/user-context-quality-repository.js +0 -118
  473. package/dist/src/storage/sqlite/user-context-repository.d.ts +0 -85
  474. package/dist/src/storage/sqlite/user-context-repository.js +0 -535
  475. package/dist/src/user-context/automatic-context.d.ts +0 -17
  476. package/dist/src/user-context/automatic-context.js +0 -85
  477. package/dist/src/user-context/consolidation.d.ts +0 -27
  478. package/dist/src/user-context/consolidation.js +0 -187
  479. package/dist/src/user-context/context-objects.d.ts +0 -17
  480. package/dist/src/user-context/context-objects.js +0 -99
  481. package/dist/src/user-context/evaluation/harness.d.ts +0 -13
  482. package/dist/src/user-context/evaluation/harness.js +0 -31
  483. package/dist/src/user-context/extraction/executor.d.ts +0 -22
  484. package/dist/src/user-context/extraction/executor.js +0 -142
  485. package/dist/src/user-context/extraction/repair.d.ts +0 -19
  486. package/dist/src/user-context/extraction/repair.js +0 -71
  487. package/dist/src/user-context/extraction/semantic.d.ts +0 -18
  488. package/dist/src/user-context/extraction/semantic.js +0 -148
  489. package/dist/src/user-context/focus-lifecycle.d.ts +0 -2
  490. package/dist/src/user-context/focus-lifecycle.js +0 -26
  491. package/dist/src/user-context/manual-understanding.d.ts +0 -12
  492. package/dist/src/user-context/manual-understanding.js +0 -37
  493. package/dist/src/user-context/planner.d.ts +0 -17
  494. package/dist/src/user-context/planner.js +0 -465
  495. package/dist/src/user-context/relationships/indexer.d.ts +0 -13
  496. package/dist/src/user-context/relationships/indexer.js +0 -185
  497. package/dist/src/user-context/relationships/service.d.ts +0 -22
  498. package/dist/src/user-context/relationships/service.js +0 -50
  499. package/dist/src/user-context/retriever.d.ts +0 -15
  500. package/dist/src/user-context/retriever.js +0 -124
  501. package/dist/src/user-context/scope.d.ts +0 -7
  502. package/dist/src/user-context/scope.js +0 -9
  503. package/dist/src/user-context/selection-policy.d.ts +0 -20
  504. package/dist/src/user-context/selection-policy.js +0 -33
  505. package/dist/src/user-context/understanding.d.ts +0 -15
  506. package/dist/src/user-context/understanding.js +0 -24
  507. package/dist/src/user-context/understandingQuality.d.ts +0 -5
  508. package/dist/src/user-context/understandingQuality.js +0 -48
  509. /package/dist/src/{agent/memory/context/types.js → knowledge-memory/domain.js} +0 -0
@@ -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,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",
@@ -1,13 +1,14 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { isXopcDatabaseOpen } from "../../storage/sqlite/connection.js";
4
- import { getUserProfile } from "../../storage/sqlite/user-context-repository.js";
5
4
  import { buildInteractionStatePrompt } from "../../user-context/interaction-state.js";
6
5
  import { getInteractionState } from "../../storage/sqlite/interaction-state-repository.js";
7
6
  import { DEFAULT_USER_TRUST_LEVEL } from "../../user-context/trust-policy.js";
8
7
  import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
9
8
  import "../../storage/sqlite/index.js";
10
9
  import { appendStablePromptSection } from "./cache-boundary.js";
10
+ import { getUserTimezone } from "../../user-model/repository.js";
11
+ import "../../user-model/index.js";
11
12
  import { resolveSystemPromptBuildParams } from "./system-prompt-params.js";
12
13
  import { buildSystemPrompt } from "./system-prompt.js";
13
14
  import { resolveResponseLanguageForSession } from "./response-language.js";
@@ -31,7 +32,7 @@ var SystemPromptBuilder = class {
31
32
  const interactionState = isXopcDatabaseOpen() && options.sessionKey ? getInteractionState(options.sessionKey) : void 0;
32
33
  const interactionPrompt = interactionState ? buildInteractionStatePrompt(interactionState) : "";
33
34
  const heartbeatEnabled = this.config.gateway?.heartbeat?.includeSystemPromptSection ?? false;
34
- const userTimezone = isXopcDatabaseOpen() ? getUserProfile().timezone || void 0 : void 0;
35
+ const userTimezone = isXopcDatabaseOpen() ? getUserTimezone() : void 0;
35
36
  const ttsMerged = mergeTtsConfigFromAppConfig(this.config.messages?.tts);
36
37
  const reg = options.registeredToolNames ?? [];
37
38
  const ttsSystemHint = buildTtsSystemPromptHint({
@@ -110,7 +111,7 @@ var SystemPromptBuilder = class {
110
111
  workspaceDir: ws,
111
112
  sessionKey: options?.sessionKey,
112
113
  toolNames: options?.registeredToolNames,
113
- userTimezone: isXopcDatabaseOpen() ? getUserProfile().timezone || void 0 : void 0,
114
+ userTimezone: isXopcDatabaseOpen() ? getUserTimezone() : void 0,
114
115
  externalMemoryInstructions: options?.externalMemoryInstructions,
115
116
  heartbeatEnabled: this.config.gateway?.heartbeat?.includeSystemPromptSection ?? false
116
117
  });
@@ -1,7 +1,8 @@
1
+ import { getConnectionResumeInput } from "../../storage/sqlite/connection-wait-repository.js";
1
2
  import { resolveImageHandlingStrategy } from "../image/vision-detection.js";
2
3
  import { hydrateUserTurnForLlm } from "../inbound/attachment-pipeline.js";
3
4
  import { buildTaskExecutionDirective } from "../../tasks/task-context-assembler.js";
4
- import { prependAgentContext } from "../../user-context/planner.js";
5
+ import { prependAgentContext } from "../context/prepend.js";
5
6
  import { extractAgentUserPlainText } from "../memory/user-message-text.js";
6
7
  import { shouldSkipResetOverlapCommand } from "../../session/reset-triggers.js";
7
8
  import { parseSlashCommand } from "../../chat-commands/command-parse.js";
@@ -85,15 +86,11 @@ async function tryRunSlashCommand(deps, ctx, content, options) {
85
86
  */
86
87
  async function runDirectAgentTurn(deps, input) {
87
88
  const turnId = input.runId ?? crypto.randomUUID();
89
+ const isConnectionResume = Boolean(getConnectionResumeInput(input.sessionKey, turnId));
88
90
  const userPlain = extractAgentUserPlainText(input.userMessage);
89
91
  const userContext = await deps.agentManager.prepareUserTurnContext(input.userMessage, input.sessionKey, turnId);
90
92
  const sourceContexts = input.sourceContexts ?? [];
91
93
  const userMessageForModel = prependAgentContext(injectSourceContextsIntoUserMessage(userContext.modelMessage, sourceContexts), buildTaskExecutionDirective(input.sessionKey));
92
- if (userContext.consentRequests.length > 0) input.onEvent?.({
93
- type: "memory_consent_required",
94
- runId: turnId,
95
- requests: userContext.consentRequests
96
- });
97
94
  const modelRef = deps.modelManager.getModelForSession(input.sessionKey);
98
95
  const llmTurn = await hydrateUserTurnForLlm({
99
96
  message: input.userMessage,
@@ -114,25 +111,11 @@ async function runDirectAgentTurn(deps, input) {
114
111
  getConfig: () => deps.config,
115
112
  abortSignal: input.abortSignal,
116
113
  deadlineAtMs: input.deadlineAtMs,
117
- beforeTurn: () => deps.agentManager.beginBackgroundReviewUserTurn(input.sessionKey),
114
+ beforeTurn: isConnectionResume ? void 0 : () => deps.agentManager.beginBackgroundReviewUserTurn(input.sessionKey),
118
115
  onEvent: input.onEvent
119
116
  });
120
- const understandingReview = await deps.agentManager.afterAgentTurn(input.sessionKey, userPlain, turnId);
121
- if (understandingReview?.createdRecords.length) {
122
- const captured = understandingReview.createdRecords.filter((record) => record.status === "active");
123
- const candidates = understandingReview.createdRecords.filter((record) => record.status === "candidate");
124
- if (captured.length) input.onEvent?.({
125
- type: "memory_captured",
126
- runId: turnId,
127
- records: captured
128
- });
129
- if (candidates.length) input.onEvent?.({
130
- type: "memory_candidate",
131
- runId: turnId,
132
- records: candidates
133
- });
134
- }
135
- deps.agentManager.scheduleBackgroundReviewAfterUserTurn(input.sessionKey);
117
+ if (!isConnectionResume) await deps.agentManager.afterAgentTurn(input.sessionKey, userPlain, turnId);
118
+ if (!isConnectionResume && result.stopReason !== "connection_required") deps.agentManager.scheduleBackgroundReviewAfterUserTurn(input.sessionKey);
136
119
  return result;
137
120
  }
138
121
  //#endregion
@@ -31,15 +31,19 @@ async function runProcessDirect(deps, input) {
31
31
  }, turnBody, { skipResetCommands: resetTriggeredAtInit });
32
32
  if (slash.matched) {
33
33
  const trimmed = slash.aggregatedText.trim();
34
- if (trimmed) await deps.sessionStore.appendTranscriptMessage(input.sessionKey, {
35
- role: "assistant",
36
- content: isReviewOutput(slash.metadata?.review) ? [slash.metadata.review] : [{
37
- type: "text",
38
- text: trimmed
39
- }],
40
- timestamp: Date.now(),
41
- ...slash.metadata && Object.keys(slash.metadata).length > 0 ? { metadata: slash.metadata } : {}
42
- });
34
+ if (trimmed) {
35
+ await deps.sessionStore.appendTranscriptMessage(input.sessionKey, {
36
+ role: "assistant",
37
+ content: isReviewOutput(slash.metadata?.review) ? [slash.metadata.review] : [{
38
+ type: "text",
39
+ text: trimmed
40
+ }],
41
+ timestamp: Date.now(),
42
+ ...slash.metadata && Object.keys(slash.metadata).length > 0 ? { metadata: slash.metadata } : {}
43
+ });
44
+ if (input.origin.type === "system" && input.origin.source === "automation") await deps.sessionStore.updateMetadata(input.sessionKey, { hiddenFromSessionList: false });
45
+ deps.onTurnComplete?.(input.sessionKey, trimmed);
46
+ }
43
47
  return slash.aggregatedText ?? "";
44
48
  }
45
49
  const skillTurn = deps.agentManager.prepareSkillTurn(input.sessionKey, turnBody);
@@ -70,7 +74,8 @@ async function runProcessDirect(deps, input) {
70
74
  clearPendingTranscriptUserMessage(input.sessionKey, pendingUserMessage);
71
75
  }
72
76
  })();
73
- if (result.lastAssistantText) deps.onTurnComplete?.(input.sessionKey, result.lastAssistantText);
77
+ deps.onTurnComplete?.(input.sessionKey, result.lastAssistantText);
78
+ if (!result.ok) throw new Error(result.errorMessage ?? "Agent turn failed");
74
79
  return result.lastAssistantText ?? "";
75
80
  } finally {
76
81
  deps.endDirectRequestContext();
@@ -1,3 +1,4 @@
1
+ import { getConnectionResumeInput } from "../../storage/sqlite/connection-wait-repository.js";
1
2
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
2
3
  import { abortEmbeddedRun } from "../embedded/runs.js";
3
4
  import { clearPendingTranscriptUserMessage, setPendingTranscriptUserMessage } from "../inbound/attachment-pipeline.js";
@@ -124,6 +125,7 @@ function pushAssistantReceipt(queue, text, runId, metadata) {
124
125
  }
125
126
  async function* runProcessDirectStreaming(deps, input) {
126
127
  const sessionKey = input.sessionKey ?? "agent:main:main";
128
+ const isConnectionResume = Boolean(input.runId && getConnectionResumeInput(sessionKey, input.runId));
127
129
  const { channel, chatId } = await deps.resolveSessionEndpoint(sessionKey);
128
130
  const context = deps.initDirectStreamingSession(sessionKey, channel, chatId, input.origin);
129
131
  const queue = new AsyncQueue({
@@ -275,7 +277,7 @@ async function* runProcessDirectStreaming(deps, input) {
275
277
  if (sourceContext && !sourceContexts.some((context) => context.kind === sourceContext.kind && context.sourceId === sourceContext.sourceId)) sourceContexts.push(sourceContext);
276
278
  }
277
279
  }
278
- if (channel === "webchat") {
280
+ if (channel === "webchat" && !isConnectionResume) {
279
281
  pushVisible({
280
282
  type: "user_message",
281
283
  timestamp: userMessage.timestamp ?? Date.now(),
@@ -286,7 +288,7 @@ async function* runProcessDirectStreaming(deps, input) {
286
288
  if (textForAgent.trim()) deps.enqueueProvisionalSessionTitle?.(sessionKey, textForAgent);
287
289
  }
288
290
  const pendingUserMessage = turnSourceContexts.length > 0 ? injectSourceContextsIntoUserMessage(userMessage, turnSourceContexts) : userMessage;
289
- setPendingTranscriptUserMessage(sessionKey, pendingUserMessage);
291
+ if (!isConnectionResume) setPendingTranscriptUserMessage(sessionKey, pendingUserMessage);
290
292
  try {
291
293
  const result = await deps.agentManager.withSkillCapabilities(sessionKey, skillTurn.activatedCapabilityNames, () => runDirectAgentTurn({
292
294
  sessionStore: deps.sessionStore,
@@ -313,7 +315,7 @@ async function* runProcessDirectStreaming(deps, input) {
313
315
  content: formatStreamError(result.errorMessage)
314
316
  });
315
317
  } finally {
316
- clearPendingTranscriptUserMessage(sessionKey, pendingUserMessage);
318
+ if (!isConnectionResume) clearPendingTranscriptUserMessage(sessionKey, pendingUserMessage);
317
319
  }
318
320
  } catch (err) {
319
321
  if (err instanceof AsyncQueueOverflowError) {
@@ -1,6 +1,5 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { getUserProfile } from "../storage/sqlite/user-context-repository.js";
4
3
  import { parseNoteAttachmentTarget } from "../notes/attachment-ref.js";
5
4
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
6
5
  import { applyConfigOverrides } from "../config/runtime-overrides.js";
@@ -10,10 +9,13 @@ import { init_providers, resolveModel } from "../providers/index.js";
10
9
  import { extractTextContent } from "./context/workspace.js";
11
10
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
12
11
  import { getProjectForSession } from "../projects/workspace.js";
12
+ import { runWithEmbeddedExecutionSession } from "./embedded/execution-context.js";
13
13
  import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./skills/workspace-skills-dir.js";
14
14
  import { removeSkillsLockEntry } from "./skills/hub-lock.js";
15
15
  import { installSkillFromZip } from "./skills/managed-store.js";
16
16
  import { pullSkillFromSource } from "./skills/hub-pull.js";
17
+ import { getUserTimezone } from "../user-model/repository.js";
18
+ import "../user-model/index.js";
17
19
  import { resolveAgentTurnTimeoutMs } from "./orchestration/run-agent-turn-with-timeout.js";
18
20
  import { onSessionTranscriptUpdate } from "../session/transcript-events.js";
19
21
  import { persistInboundAttachments } from "../channels/attachments/inbound-persist.js";
@@ -43,7 +45,6 @@ import { ContextMiddleware } from "./middleware/context.js";
43
45
  import "./middleware/index.js";
44
46
  import { LifecycleManager } from "./lifecycle/manager.js";
45
47
  import "./lifecycle/index.js";
46
- import { runWithEmbeddedExecutionSession } from "./embedded/execution-context.js";
47
48
  import { MessageRouter } from "./messaging/message-router.js";
48
49
  import { CommandHandler } from "./messaging/command-handler.js";
49
50
  import { StreamManager } from "./messaging/stream-manager.js";
@@ -801,7 +802,7 @@ var AgentService = class {
801
802
  resolveUserTimezoneForSession(sessionKey) {
802
803
  try {
803
804
  if (!this.effectiveAppConfig()) return void 0;
804
- return getUserProfile().timezone || void 0;
805
+ return getUserTimezone();
805
806
  } catch {
806
807
  return;
807
808
  }
@@ -1,11 +1,11 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
+ import { TaskRunRepository } from "../../tasks/task-run-repository.js";
3
4
  import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
4
5
  import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
5
6
  import { getApiKey, init_providers, resolveModel } from "../../providers/index.js";
6
7
  import { TaskRepository } from "../../tasks/task-repository.js";
7
8
  import { TaskConversationRepository } from "../../tasks/task-conversation-repository.js";
8
- import { TaskRunRepository } from "../../tasks/task-run-repository.js";
9
9
  import { readWorkspaceRevision } from "../coding/workspace-revision.js";
10
10
  import { completeWithResolvedCredentials } from "../../providers/model-call.js";
11
11
  import { TaskApplicationService } from "../../tasks/task-application-service.js";
@@ -1,5 +1,6 @@
1
1
  import type { AgentTool } from '@earendil-works/pi-agent-core';
2
2
  export type ClarifyRequestPayload = {
3
+ kind?: 'approval';
3
4
  question: string;
4
5
  choices?: string[];
5
6
  default?: string;
@@ -26,8 +26,11 @@ const DELEGATE_BLOCKED_TOOLS = new Set([
26
26
  "send_media",
27
27
  "todo",
28
28
  "session_search",
29
- "memory_search",
30
- "memory_get",
29
+ "user_context_search",
30
+ "user_context_get",
31
+ "knowledge_search",
32
+ "knowledge_get",
33
+ "knowledge_write",
31
34
  "automation",
32
35
  "skills_list",
33
36
  "skill_view",
@@ -6,6 +6,7 @@ import { getSessionTaskPlan, setSessionTaskPlan } from "../../storage/sqlite/ses
6
6
  import "../../storage/sqlite/index.js";
7
7
  import { init_agent_scope, resolveDefaultAgentId } from "../agent-scope.js";
8
8
  import { resolveEffectiveAgentConfigForSession } from "../../config/agent-profile.js";
9
+ import { getEmbeddedExecutionSession } from "../embedded/execution-context.js";
9
10
  import { wrapToolsWithProtection } from "./executor.js";
10
11
  import { EXTERNAL_TOOL_NAMES } from "../external-tools/gateway-tools.js";
11
12
  import { buildRuntimeEnvironment } from "../../runtime-tools/environment.js";
@@ -17,7 +18,8 @@ import { createListDirTool } from "./list-dir.js";
17
18
  import { createPublishArtifactsTool } from "./publish-artifacts.js";
18
19
  import { createExecCommandTool } from "./exec-command.js";
19
20
  import { createApplyPatchTool } from "./apply-patch.js";
20
- import { createMemoryGetTool, createMemorySearchTool } from "./memory-tool.js";
21
+ import { createUserContextGetTool, createUserContextSearchTool } from "./user-context-tool.js";
22
+ import { createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
21
23
  import { createSessionSearchTool } from "./session-search-tool.js";
22
24
  import { createSessionRecallTool } from "./session-recall-tool.js";
23
25
  import { createGrepTool } from "./grep.js";
@@ -31,7 +33,7 @@ import { createCreateShareTool, isShareToolAvailable } from "./create-share-tool
31
33
  import { createTodoTool } from "./todo-tool.js";
32
34
  import { createUpdatePlanTool } from "./update-plan-tool.js";
33
35
  import { createSessionStatusTool } from "./session-status-tool.js";
34
- import { createDreamingTool } from "./dreaming-tool.js";
36
+ import { createMemoryMaintenanceTool } from "./memory-maintenance-tool.js";
35
37
  import { createClarifyTool } from "./clarify-tool.js";
36
38
  import { BrowserManager } from "../../browser/manager.js";
37
39
  import { resolveBrowserBackendFromConfig } from "../../browser/backend-from-config.js";
@@ -196,6 +198,7 @@ var AgentToolsFactory = class AgentToolsFactory {
196
198
  agentId: options?.agentId ?? (cfg ? resolveDefaultAgentId(cfg) : "main")
197
199
  });
198
200
  const agentId = options?.agentId;
201
+ const resolvedAgentId = agentId ?? (cfg ? resolveDefaultAgentId(cfg) : "main");
199
202
  const getCommandIsolation = () => {
200
203
  const config = this.deps.getConfig?.();
201
204
  return config ? resolveEffectiveAgentConfigForSession(config, this.deps.getCurrentContext()?.sessionKey ?? `agent:${agentId ?? "main"}:internal`).config.runtime.commandIsolation : void 0;
@@ -221,11 +224,13 @@ var AgentToolsFactory = class AgentToolsFactory {
221
224
  const find = createFindTool(workspace);
222
225
  return filterToolsByDisabledSet([
223
226
  createSessionStatusTool(),
224
- createDreamingTool({ getConfig: () => this.deps.getConfig?.() }),
227
+ createMemoryMaintenanceTool({ getConfig: () => this.deps.getConfig?.() }),
225
228
  createToolManualTool(),
226
229
  createClarifyTool({ resolveAskUser: () => {
227
230
  const req = this.deps.gatewayClarify?.requestClarification;
228
231
  if (!req) return null;
232
+ const executionSession = getEmbeddedExecutionSession();
233
+ if (executionSession) return (r) => req(executionSession, r);
229
234
  const ctx = this.deps.getCurrentContext();
230
235
  if (!ctx?.sessionKey) return null;
231
236
  if (!CLARIFY_SUPPORTED_CHANNELS.has(ctx.channel)) return null;
@@ -306,21 +311,31 @@ var AgentToolsFactory = class AgentToolsFactory {
306
311
  workspace,
307
312
  getConfig: () => this.deps.getConfig?.()
308
313
  })] : [],
309
- ...getMemMgr ? [createMemorySearchTool({
310
- getMemoryManager: () => getMemMgr(),
311
- getScope: () => ({
312
- ...options?.agentId ? { agentId: options.agentId } : {},
313
- workspaceId: workspace,
314
- ...this.deps.getCurrentContext?.()?.sessionKey ? { sessionKey: this.deps.getCurrentContext().sessionKey } : {}
315
- })
316
- }), createMemoryGetTool({
317
- getMemoryManager: () => getMemMgr(),
318
- getScope: () => ({
319
- ...options?.agentId ? { agentId: options.agentId } : {},
320
- workspaceId: workspace,
321
- ...this.deps.getCurrentContext?.()?.sessionKey ? { sessionKey: this.deps.getCurrentContext().sessionKey } : {}
322
- })
323
- })] : [],
314
+ createUserContextSearchTool({
315
+ agentId: resolvedAgentId,
316
+ workspaceId: workspace,
317
+ getSessionId: () => this.deps.getCurrentContext?.()?.sessionKey
318
+ }),
319
+ createUserContextGetTool({
320
+ agentId: resolvedAgentId,
321
+ workspaceId: workspace,
322
+ getSessionId: () => this.deps.getCurrentContext?.()?.sessionKey
323
+ }),
324
+ createKnowledgeSearchTool({
325
+ agentId: resolvedAgentId,
326
+ workspaceId: workspace,
327
+ getSessionId: () => this.deps.getCurrentContext?.()?.sessionKey
328
+ }),
329
+ createKnowledgeGetTool({
330
+ agentId: resolvedAgentId,
331
+ workspaceId: workspace,
332
+ getSessionId: () => this.deps.getCurrentContext?.()?.sessionKey
333
+ }),
334
+ createKnowledgeWriteTool({
335
+ agentId: resolvedAgentId,
336
+ workspaceId: workspace,
337
+ getSessionId: () => this.deps.getCurrentContext?.()?.sessionKey
338
+ }),
324
339
  ...this.deps.getSessionStore ? [createSessionRecallTool({
325
340
  getSessionStore: this.deps.getSessionStore,
326
341
  getCurrentSessionKey: () => this.deps.getCurrentContext()?.sessionKey
@@ -386,7 +401,9 @@ var AgentToolsFactory = class AgentToolsFactory {
386
401
  disabledTools: new Set([
387
402
  EXTERNAL_TOOL_NAMES.search,
388
403
  EXTERNAL_TOOL_NAMES.describe,
389
- EXTERNAL_TOOL_NAMES.execute
404
+ EXTERNAL_TOOL_NAMES.execute,
405
+ EXTERNAL_TOOL_NAMES.requireConnection,
406
+ EXTERNAL_TOOL_NAMES.updateConnectionObjective
390
407
  ])
391
408
  });
392
409
  }
@@ -5,7 +5,8 @@ export { createWriteFileTool, writeFileTool } from './write.js';
5
5
  export { createListDirTool, listDirTool } from './list-dir.js';
6
6
  export { createExecCommandTool, type ExecCommandDetails, type ExecCommandUpdateDetails, } from './exec-command.js';
7
7
  export { createApplyPatchTool, type AppliedPatchChange, type ApplyPatchDetails, } from './apply-patch.js';
8
- export { createMemorySearchTool, createMemoryGetTool, type MemoryToolOptions, } from './memory-tool.js';
8
+ export { createUserContextSearchTool, createUserContextGetTool, type UserContextToolOptions, } from './user-context-tool.js';
9
+ export { createKnowledgeSearchTool, createKnowledgeGetTool, createKnowledgeWriteTool, type KnowledgeToolOptions, } from './knowledge-memory-tool.js';
9
10
  export { createSessionSearchTool } from './session-search-tool.js';
10
11
  export { createSessionRecallTool, type SessionRecallToolDeps } from './session-recall-tool.js';
11
12
  export { grepTool, createGrepTool, type GrepToolInput, type GrepToolDetails, } from './grep.js';
@@ -20,7 +21,7 @@ export { createCreateShareTool, isShareToolAvailable, type CreateShareToolDeps,
20
21
  export { createTodoTool, TodoStore, type TodoItem, type TodoStatus } from './todo-tool.js';
21
22
  export { createUpdatePlanTool, type TurnPlanDetails, type TurnPlanStatus, type TurnPlanStep, } from './update-plan-tool.js';
22
23
  export { createSessionStatusTool } from './session-status-tool.js';
23
- export { createDreamingTool, type DreamingToolDeps } from './dreaming-tool.js';
24
+ export { createMemoryMaintenanceTool, type MemoryMaintenanceToolDeps } from './memory-maintenance-tool.js';
24
25
  export { createClarifyTool, type ClarifyRequestPayload, type GatewayClarifyRequestFn, } from './clarify-tool.js';
25
26
  export { BrowserManager, assertBrowserUrlAllowed } from '../../browser/index.js';
26
27
  export { createDelegateTool, DEFAULT_DELEGATE_TOOLS, DELEGATE_BLOCKED_TOOLS, } from './delegate-tool.js';
@@ -8,7 +8,8 @@ import { createPublishArtifactsTool } from "./publish-artifacts.js";
8
8
  import { createExecCommandTool } from "./exec-command.js";
9
9
  import { fuzzyFindText, generateDiffString, normalizeForFuzzyMatch, normalizeToLF, restoreLineEndings, stripBom } from "./edit-diff.js";
10
10
  import { createApplyPatchTool } from "./apply-patch.js";
11
- import { createMemoryGetTool, createMemorySearchTool } from "./memory-tool.js";
11
+ import { createUserContextGetTool, createUserContextSearchTool } from "./user-context-tool.js";
12
+ import { createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool } from "./knowledge-memory-tool.js";
12
13
  import { createSessionSearchTool } from "./session-search-tool.js";
13
14
  import { createSessionRecallTool } from "./session-recall-tool.js";
14
15
  import { createGrepTool, grepTool } from "./grep.js";
@@ -22,7 +23,7 @@ import { createCreateShareTool, isShareToolAvailable } from "./create-share-tool
22
23
  import { TodoStore, createTodoTool } from "./todo-tool.js";
23
24
  import { createUpdatePlanTool } from "./update-plan-tool.js";
24
25
  import { createSessionStatusTool } from "./session-status-tool.js";
25
- import { createDreamingTool } from "./dreaming-tool.js";
26
+ import { createMemoryMaintenanceTool } from "./memory-maintenance-tool.js";
26
27
  import { createClarifyTool } from "./clarify-tool.js";
27
28
  import { BrowserManager } from "../../browser/manager.js";
28
29
  import { assertBrowserUrlAllowed } from "../../browser/url-policy.js";
@@ -42,4 +43,4 @@ import { createDesktopPetTool } from "./desktop-pet-tool.js";
42
43
  import { createManagedJobTool } from "./managed-job-tool.js";
43
44
  import { createImageTool } from "./image-tool.js";
44
45
  import { createImageGenerateTool, resolveImageGenerationModelConfigForTool } from "./image-generate-tool.js";
45
- export { BrowserManager, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserRecipeTool, createClarifyTool, createCreateShareTool, createDelegateTool, createDesktopPetTool, createDreamingTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createListDirTool, createManagedJobTool, createMemoryGetTool, createMemorySearchTool, createMessageTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
46
+ export { BrowserManager, DEFAULT_DELEGATE_TOOLS, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, DEFAULT_TOOL_METADATA, DEFAULT_WEB_EXTRACT_MAX_LENGTH, DELEGATE_BLOCKED_TOOLS, GREP_MAX_LINE_LENGTH, MAX_RAW_HTML_CHARS_FOR_WEB_EXTRACT, TodoStore, ToolConcurrencyController, assertBrowserUrlAllowed, createApplyPatchTool, createAutomationTool, createBrowserRecipeTool, createClarifyTool, createCreateShareTool, createDelegateTool, createDesktopPetTool, createExecCommandTool, createFindTool, createGrepTool, createImageGenerateTool, createImageTool, createKnowledgeGetTool, createKnowledgeSearchTool, createKnowledgeWriteTool, createListDirTool, createManagedJobTool, createMemoryMaintenanceTool, createMessageTool, createPublishArtifactsTool, createReadFileTool, createReadMediaTool, createSendMediaTool, createSessionRecallTool, createSessionSearchTool, createSessionStatusTool, createSkillInstallTool, createSkillManageTool, createSkillViewTool, createSkillsListTool, createSkillsMarketplaceSearchTool, createTodoTool, createToolManualTool, createUpdatePlanTool, createUserContextGetTool, createUserContextSearchTool, createWebExtractTool, createWebFetchTool, createWebSearchTool, createWorkflowTool, createWriteFileTool, createXopcUseTool, findTool, formatSize, fuzzyFindText, generateDiffString, getToolMetadata, grepTool, isShareToolAvailable, listDirTool, normalizeForFuzzyMatch, normalizeToLF, resolveImageGenerationModelConfigForTool, resolveImageModelConfigForTool, resolveToolLockMode, restoreLineEndings, stripBom, stripHtmlBoilerplate, truncateHead, truncateLine, truncateTail, writeFileTool };
@@ -0,0 +1,9 @@
1
+ import type { AgentTool } from '@earendil-works/pi-agent-core';
2
+ export interface KnowledgeToolOptions {
3
+ agentId: string;
4
+ workspaceId: string;
5
+ getSessionId: () => string | undefined;
6
+ }
7
+ export declare function createKnowledgeSearchTool(options: KnowledgeToolOptions): AgentTool;
8
+ export declare function createKnowledgeGetTool(options: KnowledgeToolOptions): AgentTool;
9
+ export declare function createKnowledgeWriteTool(options: KnowledgeToolOptions): AgentTool;