@xopcai/xopc 0.0.248 → 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 (452) 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-B759R_qf.js} +1 -1
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BmKxSM1k.js → agent-avatar-dicebear-BUu7EnwM.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.js +1 -0
  6. package/dist/gateway/static/root/assets/agents-DK9HjHO0.js +1 -0
  7. package/dist/gateway/static/root/assets/{api-B0-hLuZ1.js → api-Cg0v7Lpn.js} +1 -1
  8. package/dist/gateway/static/root/assets/app-management-settings-panel-C9DkCW_d.js +1 -0
  9. package/dist/gateway/static/root/assets/appearance-settings-CFggS95Y.js +1 -0
  10. package/dist/gateway/static/root/assets/apps-page-jOvT-fzU.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-BnMSgZvR.js → archive-plugin-BQrilVVv.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-CejsQMev.js → attachment-load-BG0BliqV.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-RC8EyoAf.js → automations-page-Bo4RiTkh.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-BKjKTlW8.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-DGjppLSG.js → binary-plugins-BCnyNU0C.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-CWdP4bUc.js → block-editor-Db8DlVvg.js} +50 -50
  17. package/dist/gateway/static/root/assets/browser-settings-page-Dzq18pO1.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BQ1Ilw_o.js → browser-workflow-inputs-C71vfl0b.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-CJh4NyxT.js → browser-workflows-page-vvmSYKsO.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-DW4SBQf4.js +7 -0
  21. package/dist/gateway/static/root/assets/channels-settings-57OGuewD.js +1 -0
  22. package/dist/gateway/static/root/assets/{channels-status-swr-Ohhee4vm.js → channels-status-swr-CKyV3jY5.js} +1 -1
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-BOtoKTK3.js → chat-terminal-dock-B1Xd6OFB.js} +2 -2
  24. package/dist/gateway/static/root/assets/connectors-page-CT_I3kbR.js +2 -0
  25. package/dist/gateway/static/root/assets/{cron-expression-DTj1V3Sw.js → cron-expression-D-F9vjtE.js} +1 -1
  26. package/dist/gateway/static/root/assets/{date-picker-Yr6OCvGL.js → date-picker-B2OoYvic.js} +1 -1
  27. package/dist/gateway/static/root/assets/dependency-picker-BiGx9Sbj.js +1 -0
  28. package/dist/gateway/static/root/assets/{desktop-pet-DbGzggPF.js → desktop-pet-BNMRqipe.js} +1 -1
  29. package/dist/gateway/static/root/assets/desktop-pet-settings-DeYbIV7A.js +1 -0
  30. package/dist/gateway/static/root/assets/{extension-debug-page-DgTtk4KC.js → extension-debug-page-COyn05ub.js} +1 -1
  31. package/dist/gateway/static/root/assets/{extension-page-DtQeiP6f.js → extension-page-oH43chS2.js} +1 -1
  32. package/dist/gateway/static/root/assets/extension-settings-page-BMO59994.js +1 -0
  33. package/dist/gateway/static/root/assets/gateway-config-api-cimpViGk.js +1 -0
  34. package/dist/gateway/static/root/assets/{gateway-config-swr-DXuXtU1w.js → gateway-config-swr-BGdHwT4e.js} +1 -1
  35. package/dist/gateway/static/root/assets/gateway-settings-BHJtnSic.js +1 -0
  36. package/dist/gateway/static/root/assets/{gateway-startup-retry-CzBzglzQ.js → gateway-startup-retry-CuaM3b4c.js} +1 -1
  37. package/dist/gateway/static/root/assets/heartbeat-settings-DNhrZHqx.js +1 -0
  38. package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +1 -0
  39. package/dist/gateway/static/root/assets/{image-generation-api-TIgsn04n.js → image-generation-api-D7duj7Uj.js} +1 -1
  40. package/dist/gateway/static/root/assets/index-DGeGmj4k.css +2 -0
  41. package/dist/gateway/static/root/assets/index-aBs0EfQB.js +72 -0
  42. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-wsWuoa8p.js → keyboard-shortcuts-settings-D8Zw_lYd.js} +1 -1
  43. package/dist/gateway/static/root/assets/{local-app-workbench-page-CpyvYyrb.js → local-app-workbench-page-eBFVWmtH.js} +2 -2
  44. package/dist/gateway/static/root/assets/{local-apps-page-CXrbrGo8.js → local-apps-page-CvPDPRwb.js} +1 -1
  45. package/dist/gateway/static/root/assets/{locale-store-BJFLQY8O.js → locale-store-zEL8bkwx.js} +1 -1
  46. package/dist/gateway/static/root/assets/logs-page-ClvcWlL6.js +2 -0
  47. package/dist/gateway/static/root/assets/{management-settings-BdJZFR7U.js → management-settings-D8moh99U.js} +1 -1
  48. package/dist/gateway/static/root/assets/{markdown-split-NK3ACVG2.js → markdown-split-D7V3j0vE.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-view-DTF9v1gg.js → markdown-view-DGRN-8wP.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-F0jcUxyl.js → media-plugins-BLaE5b1Y.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-W5P19VTF.js +11 -0
  52. package/dist/gateway/static/root/assets/mobile-pairing-wizard-DiVDuCxl.js +1 -0
  53. package/dist/gateway/static/root/assets/note-detail-panel-CEEvR-fV.js +5 -0
  54. package/dist/gateway/static/root/assets/notes-page-BLqgXNCx.js +8 -0
  55. package/dist/gateway/static/root/assets/page-tabs-BFMGjA60.js +1 -0
  56. package/dist/gateway/static/root/assets/preview-open-alternatives-DNEWZN7H.js +1 -0
  57. package/dist/gateway/static/root/assets/{product-open-page-CxGGlWA8.js → product-open-page-Co5u7asH.js} +1 -1
  58. package/dist/gateway/static/root/assets/project-detail-page-CIiFJ5tk.js +1 -0
  59. package/dist/gateway/static/root/assets/projects-page-B3UF-Pfm.js +1 -0
  60. package/dist/gateway/static/root/assets/{registry-api-CIsNlSBi.js → registry-api-Cg92zSod.js} +1 -1
  61. package/dist/gateway/static/root/assets/remote-access-hub-BUtpkJPG.js +1 -0
  62. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-YkjhiQfA.js → runtime-tools-settings-panel-C0ByNmlV.js} +2 -2
  63. package/dist/gateway/static/root/assets/{schema-form-oFGf3G3s.js → schema-form-Dq_VQpuY.js} +1 -1
  64. package/dist/gateway/static/root/assets/sessions-page-UgJmG-V4.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-advanced-gate-DDCzpdkl.js +1 -0
  66. package/dist/gateway/static/root/assets/settings-form-section-CZu6FX4k.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-page-C7VWs0IT.js → settings-page-S8ekeUZd.js} +1 -1
  68. package/dist/gateway/static/root/assets/setup-status-panel-BdVmwXMv.js +1 -0
  69. package/dist/gateway/static/root/assets/{share-preview-page-t5oz18rh.js → share-preview-page-D2fEidbn.js} +1 -1
  70. package/dist/gateway/static/root/assets/shares-settings-BdsqnCYj.js +1 -0
  71. package/dist/gateway/static/root/assets/skill-reload-api-ghzAQKna.js +1 -0
  72. package/dist/gateway/static/root/assets/skills-page-AYiPlgZE.js +2 -0
  73. package/dist/gateway/static/root/assets/{skills-page.utils-DEDTYs2W.js → skills-page.utils-DGzl-ib-.js} +1 -1
  74. package/dist/gateway/static/root/assets/system-settings-panel-5Xd5mIiR.js +1 -0
  75. package/dist/gateway/static/root/assets/task-detail-page-BQAUaCDD.js +1 -0
  76. package/dist/gateway/static/root/assets/{theme-store-O597U8q_.js → theme-store-ZVClZKQ0.js} +1 -1
  77. package/dist/gateway/static/root/assets/tunnel-api-CdZN1Jin.js +1 -0
  78. package/dist/gateway/static/root/assets/{use-autosave-B5eUJ6Zq.js → use-autosave-czRI0NBc.js} +1 -1
  79. package/dist/gateway/static/root/assets/user-model-page-W3GTm6nA.js +2 -0
  80. package/dist/gateway/static/root/assets/{voice-api-key-field-CMKSwz4C.js → voice-api-key-field-8YEvA3cU.js} +1 -1
  81. package/dist/gateway/static/root/assets/{voice-config-api-q7B6fOFB.js → voice-config-api-CopF64lY.js} +1 -1
  82. package/dist/gateway/static/root/assets/work-discovery-overlay-keLtqYYJ.js +1 -0
  83. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DZmvLZjb.js → workflow-run-setup-panel-Dy5WgYMO.js} +2 -2
  84. package/dist/gateway/static/root/assets/workflows-page-BbAV3h7n.js +5 -0
  85. package/dist/gateway/static/root/index.html +10 -26
  86. package/dist/package.js +1 -1
  87. package/dist/src/agent/agent-instance-gateway.d.ts +2 -2
  88. package/dist/src/agent/agent-manager.d.ts +4 -4
  89. package/dist/src/agent/agent-manager.js +31 -15
  90. package/dist/src/agent/background-review/coordinator.d.ts +2 -4
  91. package/dist/src/agent/background-review/coordinator.js +5 -30
  92. package/dist/src/agent/background-review/prompts.d.ts +4 -2
  93. package/dist/src/agent/background-review/prompts.js +24 -19
  94. package/dist/src/agent/background-review/run-background-review.d.ts +6 -7
  95. package/dist/src/agent/background-review/run-background-review.js +47 -41
  96. package/dist/src/agent/background-review/settings.d.ts +0 -1
  97. package/dist/src/agent/background-review/settings.js +6 -7
  98. package/dist/src/agent/context/audit.d.ts +36 -0
  99. package/dist/src/agent/context/audit.js +97 -0
  100. package/dist/src/agent/context/coordinator.d.ts +26 -0
  101. package/dist/src/agent/context/coordinator.js +72 -0
  102. package/dist/src/agent/context/execution-context.d.ts +54 -0
  103. package/dist/src/agent/context/execution-context.js +147 -0
  104. package/dist/src/agent/context/execution-scope.js +1 -1
  105. package/dist/src/agent/context/prepend.d.ts +2 -0
  106. package/dist/src/agent/context/prepend.js +28 -0
  107. package/dist/src/agent/context/project-context.d.ts +3 -3
  108. package/dist/src/agent/context/project-context.js +26 -23
  109. package/dist/src/agent/embedded/index.js +1 -1
  110. package/dist/src/agent/embedded/run-for-session.js +1 -0
  111. package/dist/src/agent/embedded/run-turn.js +22 -2
  112. package/dist/src/agent/embedded/types.d.ts +1 -25
  113. package/dist/src/agent/external-tools/composio-provider.js +87 -92
  114. package/dist/src/agent/external-tools/gateway-tools.d.ts +4 -1
  115. package/dist/src/agent/external-tools/gateway-tools.js +153 -41
  116. package/dist/src/agent/external-tools/index.js +1 -1
  117. package/dist/src/agent/external-tools/search-error.d.ts +12 -0
  118. package/dist/src/agent/external-tools/search-error.js +29 -0
  119. package/dist/src/agent/external-tools/service.d.ts +4 -0
  120. package/dist/src/agent/external-tools/service.js +22 -2
  121. package/dist/src/agent/memory/compaction-policy.js +1 -1
  122. package/dist/src/agent/memory/compaction-promotion.js +45 -77
  123. package/dist/src/agent/memory/create-memory-manager.js +1 -3
  124. package/dist/src/agent/memory/index.d.ts +0 -5
  125. package/dist/src/agent/memory/index.js +2 -5
  126. package/dist/src/agent/memory/manager.d.ts +0 -16
  127. package/dist/src/agent/memory/manager.js +11 -40
  128. package/dist/src/agent/memory/memory-config.js +1 -1
  129. package/dist/src/agent/memory/runtime.d.ts +2 -2
  130. package/dist/src/agent/memory/runtime.js +9 -19
  131. package/dist/src/agent/memory/types.d.ts +1 -1
  132. package/dist/src/agent/orchestration/agent-orchestrator.js +13 -21
  133. package/dist/src/agent/prompt/sections/memory-skills.js +25 -36
  134. package/dist/src/agent/prompt/sections/tooling.js +10 -4
  135. package/dist/src/agent/prompt/service-prompt-builder.js +4 -3
  136. package/dist/src/agent/service/direct-turn-helpers.js +6 -23
  137. package/dist/src/agent/service/process-direct-streaming.js +5 -3
  138. package/dist/src/agent/service.js +4 -3
  139. package/dist/src/agent/tasks/task-judge-service.js +1 -1
  140. package/dist/src/agent/tools/clarify-tool.d.ts +1 -0
  141. package/dist/src/agent/tools/delegate-tool.js +5 -2
  142. package/dist/src/agent/tools/factory.js +36 -19
  143. package/dist/src/agent/tools/index.d.ts +3 -2
  144. package/dist/src/agent/tools/index.js +4 -3
  145. package/dist/src/agent/tools/knowledge-memory-tool.d.ts +9 -0
  146. package/dist/src/agent/tools/knowledge-memory-tool.js +129 -0
  147. package/dist/src/agent/tools/{dreaming-tool.d.ts → memory-maintenance-tool.d.ts} +2 -2
  148. package/dist/src/agent/tools/memory-maintenance-tool.js +31 -0
  149. package/dist/src/agent/tools/user-context-tool.d.ts +8 -0
  150. package/dist/src/agent/tools/user-context-tool.js +81 -0
  151. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  152. package/dist/src/chat-commands/builtins/understanding.js +24 -6
  153. package/dist/src/cli/commands/connectors.js +1 -1
  154. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  155. package/dist/src/config/schema.d.ts +68 -75
  156. package/dist/src/config/schema.js +29 -18
  157. package/dist/src/config/web-patch.d.ts +1 -1
  158. package/dist/src/connectors/auth-provider-registry.js +1 -1
  159. package/dist/src/connectors/composio-managed-client.js +6 -2
  160. package/dist/src/connectors/connected-source-ingestion.js +1 -1
  161. package/dist/src/connectors/connected-source-understanding.d.ts +1 -3
  162. package/dist/src/connectors/connected-source-understanding.js +86 -99
  163. package/dist/src/connectors/connection-candidates.d.ts +11 -0
  164. package/dist/src/connectors/connection-candidates.js +58 -0
  165. package/dist/src/connectors/connection-capabilities.d.ts +4 -0
  166. package/dist/src/connectors/connection-capabilities.js +37 -0
  167. package/dist/src/connectors/connection-recovery-service.d.ts +42 -0
  168. package/dist/src/connectors/connection-recovery-service.js +396 -0
  169. package/dist/src/connectors/health.js +1 -1
  170. package/dist/src/connectors/learning-coordinator.d.ts +0 -2
  171. package/dist/src/connectors/learning-coordinator.js +6 -7
  172. package/dist/src/connectors/principal.d.ts +5 -0
  173. package/dist/src/connectors/principal.js +18 -0
  174. package/dist/src/gateway/agent-builtin-tools.d.ts +28 -10
  175. package/dist/src/gateway/agent-builtin-tools.js +30 -9
  176. package/dist/src/gateway/chat-stream/mapper.js +1 -28
  177. package/dist/src/gateway/chat-stream/protocol.d.ts +2 -24
  178. package/dist/src/gateway/clarify-bridge.d.ts +4 -0
  179. package/dist/src/gateway/clarify-bridge.js +9 -4
  180. package/dist/src/gateway/heartbeat/service.js +1 -1
  181. package/dist/src/gateway/hono/lib/config-payload.d.ts +52 -30
  182. package/dist/src/gateway/hono/lib/config-payload.js +4 -4
  183. package/dist/src/gateway/hono/middleware/auth.js +1 -2
  184. package/dist/src/gateway/hono/routes/capabilities.js +1 -1
  185. package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
  186. package/dist/src/gateway/hono/routes/config-patch/misc.js +72 -28
  187. package/dist/src/gateway/hono/routes/connection-waits.d.ts +3 -0
  188. package/dist/src/gateway/hono/routes/connection-waits.js +58 -0
  189. package/dist/src/gateway/hono/routes/connectors.js +7 -15
  190. package/dist/src/gateway/hono/routes/context-sources.d.ts +4 -0
  191. package/dist/src/gateway/hono/routes/context-sources.js +159 -0
  192. package/dist/src/gateway/hono/routes/index.js +4 -2
  193. package/dist/src/gateway/hono/routes/lazy-bundles.js +9 -4
  194. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  195. package/dist/src/gateway/hono/routes/notes.js +22 -7
  196. package/dist/src/gateway/hono/routes/projects.js +36 -44
  197. package/dist/src/gateway/hono/routes/session-input-handler.d.ts +15 -1
  198. package/dist/src/gateway/hono/routes/side-chats.js +13 -2
  199. package/dist/src/gateway/hono/routes/tasks.js +2 -2
  200. package/dist/src/gateway/hono/routes/user-model.d.ts +3 -0
  201. package/dist/src/gateway/hono/routes/user-model.js +480 -0
  202. package/dist/src/gateway/memory-maintenance-automation-reconciler.d.ts +11 -0
  203. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +72 -0
  204. package/dist/src/gateway/service/agent-runner.d.ts +9 -1
  205. package/dist/src/gateway/service/agent-runner.js +25 -1
  206. package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
  207. package/dist/src/gateway/service/config-coordinator.js +4 -4
  208. package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
  209. package/dist/src/gateway/service/run-gateway-agent.js +18 -14
  210. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  211. package/dist/src/gateway/service/session-input-coordinator.js +12 -2
  212. package/dist/src/gateway/service.d.ts +3 -1
  213. package/dist/src/gateway/service.js +45 -14
  214. package/dist/src/gateway/side-chat/manager.d.ts +16 -3
  215. package/dist/src/gateway/side-chat/manager.js +117 -28
  216. package/dist/src/gateway/side-chat/run-service.d.ts +2 -0
  217. package/dist/src/gateway/side-chat/run-service.js +28 -5
  218. package/dist/src/gateway/side-chat/types.d.ts +9 -1
  219. package/dist/src/heartbeat/index.js +1 -1
  220. package/dist/src/knowledge/connected-knowledge-pipeline.d.ts +0 -2
  221. package/dist/src/knowledge/connected-knowledge-pipeline.js +46 -217
  222. package/dist/src/knowledge-memory/domain.d.ts +35 -0
  223. package/dist/src/knowledge-memory/index.d.ts +2 -0
  224. package/dist/src/knowledge-memory/index.js +2 -0
  225. package/dist/src/knowledge-memory/repository.d.ts +45 -0
  226. package/dist/src/knowledge-memory/repository.js +154 -0
  227. package/dist/src/memory-maintenance/index.d.ts +2 -0
  228. package/dist/src/memory-maintenance/index.js +3 -0
  229. package/dist/src/memory-maintenance/schedule.d.ts +13 -0
  230. package/dist/src/memory-maintenance/schedule.js +51 -0
  231. package/dist/src/memory-maintenance/service.d.ts +28 -0
  232. package/dist/src/memory-maintenance/service.js +216 -0
  233. package/dist/src/notes/service.d.ts +1 -0
  234. package/dist/src/notes/service.js +7 -1
  235. package/dist/src/notes/types.d.ts +16 -0
  236. package/dist/src/proactive/execution/context.d.ts +2 -2
  237. package/dist/src/proactive/execution/context.js +16 -11
  238. package/dist/src/proactive/index.d.ts +1 -1
  239. package/dist/src/proactive/index.js +2 -2
  240. package/dist/src/projects/index.d.ts +1 -1
  241. package/dist/src/projects/index.js +2 -2
  242. package/dist/src/projects/knowledge-bind.d.ts +1 -0
  243. package/dist/src/projects/knowledge-bind.js +15 -0
  244. package/dist/src/projects/project-loop.d.ts +3 -3
  245. package/dist/src/projects/project-loop.js +4 -4
  246. package/dist/src/projects/project-store.js +2 -1
  247. package/dist/src/realtime/runtime.js +1 -0
  248. package/dist/src/runtime-tools/manager.js +1 -1
  249. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +17 -0
  250. package/dist/src/storage/sqlite/collaboration-rule-repository.js +54 -0
  251. package/dist/src/storage/sqlite/connection-wait-repository.d.ts +30 -0
  252. package/dist/src/storage/sqlite/connection-wait-repository.js +338 -0
  253. package/dist/src/storage/sqlite/connector-account-repository.js +1 -1
  254. package/dist/src/storage/sqlite/context-evidence-repository.d.ts +24 -0
  255. package/dist/src/storage/sqlite/context-evidence-repository.js +52 -0
  256. package/dist/src/storage/sqlite/index.d.ts +3 -5
  257. package/dist/src/storage/sqlite/index.js +4 -6
  258. package/dist/src/storage/sqlite/knowledge-repository.d.ts +0 -19
  259. package/dist/src/storage/sqlite/knowledge-repository.js +1 -90
  260. package/dist/src/storage/sqlite/migrations/148_user_model_foundation.sql +554 -0
  261. package/dist/src/storage/sqlite/migrations/149_separate_source_index_from_memory.sql +18 -0
  262. package/dist/src/storage/sqlite/migrations/150_session_connection_waits.sql +47 -0
  263. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  264. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  265. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  266. package/dist/src/storage/sqlite/notes-repository.d.ts +2 -1
  267. package/dist/src/storage/sqlite/notes-repository.js +37 -3
  268. package/dist/src/storage/sqlite/schema.js +1 -1
  269. package/dist/src/storage/sqlite/session-input-repository.d.ts +14 -2
  270. package/dist/src/storage/sqlite/session-input-repository.js +16 -13
  271. package/dist/src/storage/sqlite/session-repository.js +4 -1
  272. package/dist/src/storage/sqlite/transcript-repository.js +1 -1
  273. package/dist/src/tasks/index.js +2 -2
  274. package/dist/src/tasks/project-operating-view-service.js +1 -1
  275. package/dist/src/tasks/task-application-service.js +6 -1
  276. package/dist/src/tasks/task-context-assembler.js +1 -1
  277. package/dist/src/tasks/task-context-repository.d.ts +0 -1
  278. package/dist/src/tasks/task-context-repository.js +1 -1
  279. package/dist/src/tasks/task-deletion-service.js +1 -1
  280. package/dist/src/tasks/task-handoff-service.js +1 -1
  281. package/dist/src/tasks/task-read-model-projector.js +1 -1
  282. package/dist/src/tasks/task-run-coordinator.js +1 -1
  283. package/dist/src/tasks/task-run-dispatcher.js +1 -1
  284. package/dist/src/tasks/task-run-repository.js +1 -0
  285. package/dist/src/tasks/task-signal-service.js +1 -1
  286. package/dist/src/tui/tool-summary.js +2 -1
  287. package/dist/src/tui/tui-startup-resources.js +1 -1
  288. package/dist/src/user-context/changes.d.ts +1 -1
  289. package/dist/src/user-context/config.d.ts +135 -153
  290. package/dist/src/user-context/config.js +94 -99
  291. package/dist/src/user-context/relationship-continuity.d.ts +2 -2
  292. package/dist/src/user-context/relationship-continuity.js +34 -24
  293. package/dist/src/user-context/sources/activity-clustering.d.ts +9 -3
  294. package/dist/src/user-context/sources/index.js +2 -2
  295. package/dist/src/user-context/sources/repository.d.ts +1 -21
  296. package/dist/src/user-context/sources/repository.js +1 -183
  297. package/dist/src/user-context/sources/types.d.ts +0 -23
  298. package/dist/src/user-model/capture/executor.d.ts +40 -0
  299. package/dist/src/user-model/capture/executor.js +134 -0
  300. package/dist/src/user-model/capture/index.d.ts +2 -0
  301. package/dist/src/user-model/capture/index.js +3 -0
  302. package/dist/src/user-model/capture/semantic.d.ts +21 -0
  303. package/dist/src/user-model/capture/semantic.js +197 -0
  304. package/dist/src/user-model/domain.d.ts +93 -0
  305. package/dist/src/user-model/domain.js +33 -0
  306. package/dist/src/user-model/goals.d.ts +58 -0
  307. package/dist/src/user-model/goals.js +89 -0
  308. package/dist/src/user-model/importance.d.ts +11 -0
  309. package/dist/src/user-model/importance.js +17 -0
  310. package/dist/src/user-model/index.d.ts +5 -0
  311. package/dist/src/user-model/index.js +6 -0
  312. package/dist/src/user-model/repository.d.ts +23 -0
  313. package/dist/src/user-model/repository.js +268 -0
  314. package/dist/src/user-model/temporal.d.ts +10 -0
  315. package/dist/src/user-model/temporal.js +44 -0
  316. package/dist/src/voice/realtime/memory-context.d.ts +7 -2
  317. package/dist/src/voice/realtime/memory-context.js +39 -51
  318. package/dist/src/work-discovery/service.d.ts +3 -14
  319. package/dist/src/work-discovery/service.js +138 -99
  320. package/dist/src/work-discovery/types.d.ts +3 -3
  321. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  322. package/dist/src/workflows/service/workflow-session-bridge.js +12 -20
  323. package/package.json +1 -1
  324. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CUXApfcE.js +0 -1
  325. package/dist/gateway/static/root/assets/agents-DNq_GKuc.js +0 -1
  326. package/dist/gateway/static/root/assets/app-management-settings-panel-qfwAgyhQ.js +0 -1
  327. package/dist/gateway/static/root/assets/appearance-settings-DqQVUpCC.js +0 -1
  328. package/dist/gateway/static/root/assets/apps-page-dwIqYmXk.js +0 -1
  329. package/dist/gateway/static/root/assets/automations-workspace-SkdcSZ0i.js +0 -6
  330. package/dist/gateway/static/root/assets/browser-settings-page-CKCa6TvG.js +0 -8
  331. package/dist/gateway/static/root/assets/capabilities-settings-panel-DSp--zIZ.js +0 -7
  332. package/dist/gateway/static/root/assets/channels-settings-CMd2dDrI.js +0 -1
  333. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +0 -1
  334. package/dist/gateway/static/root/assets/connectors-page-udWs5Kdm.js +0 -2
  335. package/dist/gateway/static/root/assets/dependency-picker-DpN3XZg9.js +0 -1
  336. package/dist/gateway/static/root/assets/desktop-pet-settings-DinCToZh.js +0 -1
  337. package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +0 -1
  338. package/dist/gateway/static/root/assets/extension-settings-page-DcguCgsH.js +0 -1
  339. package/dist/gateway/static/root/assets/eye-CABVeTq0.js +0 -1
  340. package/dist/gateway/static/root/assets/eye-off-DEAzt3g1.js +0 -1
  341. package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +0 -1
  342. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +0 -1
  343. package/dist/gateway/static/root/assets/gateway-config-api-Br7lSf6H.js +0 -1
  344. package/dist/gateway/static/root/assets/gateway-settings-CdPoDMuj.js +0 -1
  345. package/dist/gateway/static/root/assets/heartbeat-settings-DHk1hawP.js +0 -1
  346. package/dist/gateway/static/root/assets/home-page-YGipe_W6.js +0 -1
  347. package/dist/gateway/static/root/assets/index-D5TQQpeb.js +0 -71
  348. package/dist/gateway/static/root/assets/index-DReBaaTX.css +0 -2
  349. package/dist/gateway/static/root/assets/interaction-BmQogeqz.js +0 -1
  350. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +0 -1
  351. package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +0 -1
  352. package/dist/gateway/static/root/assets/local-context-graph-BjUf7fQ9.js +0 -1
  353. package/dist/gateway/static/root/assets/logs-page-CXKy6E_l.js +0 -2
  354. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +0 -1
  355. package/dist/gateway/static/root/assets/messages-CHNYp8EQ.js +0 -3
  356. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +0 -1
  357. package/dist/gateway/static/root/assets/mobile-pairing-wizard-3NKCniSp.js +0 -1
  358. package/dist/gateway/static/root/assets/models-hub-cache-nCfkBN8M.js +0 -1
  359. package/dist/gateway/static/root/assets/notes-page-DuqLahi6.js +0 -1
  360. package/dist/gateway/static/root/assets/notes-workbench-C7j9EdQk.js +0 -5
  361. package/dist/gateway/static/root/assets/oauth-api-8lP_qJpq.js +0 -1
  362. package/dist/gateway/static/root/assets/oauth-authorization-window-Cdolr2wE.js +0 -1
  363. package/dist/gateway/static/root/assets/page-tabs-BaEQMYm_.js +0 -1
  364. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +0 -1
  365. package/dist/gateway/static/root/assets/preview-open-alternatives-CsNVTKC0.js +0 -1
  366. package/dist/gateway/static/root/assets/project-detail-page-CfebYVX0.js +0 -1
  367. package/dist/gateway/static/root/assets/projects-page-48GvzSVa.js +0 -1
  368. package/dist/gateway/static/root/assets/remote-access-hub-64xj_s2m.js +0 -1
  369. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +0 -1
  370. package/dist/gateway/static/root/assets/search-DA7gz22f.js +0 -1
  371. package/dist/gateway/static/root/assets/sessions-page-CcwcdRN8.js +0 -1
  372. package/dist/gateway/static/root/assets/settings-advanced-gate-BaN84CyW.js +0 -1
  373. package/dist/gateway/static/root/assets/settings-form-section-DjWzRk4z.js +0 -1
  374. package/dist/gateway/static/root/assets/setup-status-panel-DVVOCNbr.js +0 -1
  375. package/dist/gateway/static/root/assets/shares-settings-DUYbYLi7.js +0 -1
  376. package/dist/gateway/static/root/assets/skill-reload-api-BGyD0gB9.js +0 -1
  377. package/dist/gateway/static/root/assets/skills-page-CjF8DTsN.js +0 -2
  378. package/dist/gateway/static/root/assets/system-settings-panel-BSYuRgFI.js +0 -1
  379. package/dist/gateway/static/root/assets/task-detail-page-YZYSTJH7.js +0 -1
  380. package/dist/gateway/static/root/assets/tunnel-api-FKUi9wDL.js +0 -1
  381. package/dist/gateway/static/root/assets/user-context-page-BCyiduKd.js +0 -2
  382. package/dist/gateway/static/root/assets/work-discovery-overlay-jhT2EzeH.js +0 -1
  383. package/dist/gateway/static/root/assets/workflows-page-DQC0TpMa.js +0 -5
  384. package/dist/src/agent/memory/builtin-provider.d.ts +0 -37
  385. package/dist/src/agent/memory/builtin-provider.js +0 -225
  386. package/dist/src/agent/memory/context/types.d.ts +0 -40
  387. package/dist/src/agent/memory/understanding/quality.d.ts +0 -8
  388. package/dist/src/agent/memory/understanding/quality.js +0 -18
  389. package/dist/src/agent/memory/understanding/service.d.ts +0 -19
  390. package/dist/src/agent/memory/understanding/service.js +0 -209
  391. package/dist/src/agent/memory/understanding/types.d.ts +0 -34
  392. package/dist/src/agent/memory/understanding/types.js +0 -1
  393. package/dist/src/agent/memory/user-context-coordinator.d.ts +0 -23
  394. package/dist/src/agent/memory/user-context-coordinator.js +0 -113
  395. package/dist/src/agent/tools/dreaming-tool.js +0 -37
  396. package/dist/src/agent/tools/memory-tool.d.ts +0 -9
  397. package/dist/src/agent/tools/memory-tool.js +0 -119
  398. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +0 -11
  399. package/dist/src/gateway/dreaming-automation-reconciler.js +0 -63
  400. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +0 -21
  401. package/dist/src/gateway/hono/routes/understanding-sources.js +0 -387
  402. package/dist/src/gateway/hono/routes/you.d.ts +0 -3
  403. package/dist/src/gateway/hono/routes/you.js +0 -457
  404. package/dist/src/projects/memory-bind.d.ts +0 -1
  405. package/dist/src/projects/memory-bind.js +0 -14
  406. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +0 -37
  407. package/dist/src/storage/sqlite/context-consolidation-repository.js +0 -64
  408. package/dist/src/storage/sqlite/memory-records-repository.d.ts +0 -217
  409. package/dist/src/storage/sqlite/memory-records-repository.js +0 -715
  410. package/dist/src/storage/sqlite/remote-context-repository.d.ts +0 -3
  411. package/dist/src/storage/sqlite/remote-context-repository.js +0 -40
  412. package/dist/src/storage/sqlite/understanding-focus-exclusions.d.ts +0 -2
  413. package/dist/src/storage/sqlite/understanding-focus-exclusions.js +0 -24
  414. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +0 -49
  415. package/dist/src/storage/sqlite/user-context-quality-repository.js +0 -118
  416. package/dist/src/storage/sqlite/user-context-repository.d.ts +0 -85
  417. package/dist/src/storage/sqlite/user-context-repository.js +0 -535
  418. package/dist/src/user-context/automatic-context.d.ts +0 -17
  419. package/dist/src/user-context/automatic-context.js +0 -85
  420. package/dist/src/user-context/consolidation.d.ts +0 -27
  421. package/dist/src/user-context/consolidation.js +0 -187
  422. package/dist/src/user-context/context-objects.d.ts +0 -17
  423. package/dist/src/user-context/context-objects.js +0 -99
  424. package/dist/src/user-context/evaluation/harness.d.ts +0 -13
  425. package/dist/src/user-context/evaluation/harness.js +0 -31
  426. package/dist/src/user-context/extraction/executor.d.ts +0 -22
  427. package/dist/src/user-context/extraction/executor.js +0 -142
  428. package/dist/src/user-context/extraction/repair.d.ts +0 -19
  429. package/dist/src/user-context/extraction/repair.js +0 -71
  430. package/dist/src/user-context/extraction/semantic.d.ts +0 -18
  431. package/dist/src/user-context/extraction/semantic.js +0 -148
  432. package/dist/src/user-context/focus-lifecycle.d.ts +0 -2
  433. package/dist/src/user-context/focus-lifecycle.js +0 -26
  434. package/dist/src/user-context/manual-understanding.d.ts +0 -12
  435. package/dist/src/user-context/manual-understanding.js +0 -37
  436. package/dist/src/user-context/planner.d.ts +0 -17
  437. package/dist/src/user-context/planner.js +0 -465
  438. package/dist/src/user-context/relationships/indexer.d.ts +0 -13
  439. package/dist/src/user-context/relationships/indexer.js +0 -185
  440. package/dist/src/user-context/relationships/service.d.ts +0 -22
  441. package/dist/src/user-context/relationships/service.js +0 -50
  442. package/dist/src/user-context/retriever.d.ts +0 -15
  443. package/dist/src/user-context/retriever.js +0 -124
  444. package/dist/src/user-context/scope.d.ts +0 -7
  445. package/dist/src/user-context/scope.js +0 -9
  446. package/dist/src/user-context/selection-policy.d.ts +0 -20
  447. package/dist/src/user-context/selection-policy.js +0 -33
  448. package/dist/src/user-context/understanding.d.ts +0 -15
  449. package/dist/src/user-context/understanding.js +0 -24
  450. package/dist/src/user-context/understandingQuality.d.ts +0 -5
  451. package/dist/src/user-context/understandingQuality.js +0 -48
  452. /package/dist/src/{agent/memory/context/types.js → knowledge-memory/domain.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
3
  import { finishContextExtractionRun } from "../../storage/sqlite/context-extraction-repository.js";
4
- import { getTurnPersonalization } from "../../storage/sqlite/user-context-repository.js";
4
+ import { getSessionMetadata } from "../../storage/sqlite/session-repository.js";
5
5
  import { loadCompactionSourceSnapshot } from "../../storage/sqlite/transcript-repository.js";
6
6
  import "../../storage/sqlite/index.js";
7
7
  import { extractProfileAgentId } from "../../config/agent-profile.js";
@@ -9,20 +9,22 @@ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/s
9
9
  import { getApiKeySync, init_providers, resolveModel } from "../../providers/index.js";
10
10
  import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
11
11
  import { extractTextContent } from "../context/workspace.js";
12
+ import { listUserAssertions } from "../../user-model/repository.js";
12
13
  import { readAgentMessageContent } from "../memory/agent-message-access.js";
13
14
  import { isAssistantTurnAborted, isAssistantTurnFailed } from "../orchestration/llm-turn-retry.js";
14
15
  import { resolveAgentTurnTimeoutMs, runAgentTurnWithTimeout } from "../orchestration/run-agent-turn-with-timeout.js";
15
- import { claimRegisteredExtraction } from "../../user-context/extraction/registry.js";
16
16
  import { resolveModelIntentRef } from "../../config/agent-model-intents.js";
17
- import { emptyUnderstandingReview, executeUnderstandingInterpretation } from "../../user-context/extraction/executor.js";
18
- import { parseSemanticUnderstanding } from "../../user-context/extraction/semantic.js";
19
- import { UNDERSTANDING_INTERPRETER_SYSTEM_PROMPT, buildUnderstandingInterpreterPrompt } from "./prompts.js";
17
+ import { claimRegisteredExtraction } from "../../user-context/extraction/registry.js";
18
+ import { emptyUserModelCaptureResult, executeUserModelInterpretation } from "../../user-model/capture/executor.js";
19
+ import { parseUserModelInterpretation } from "../../user-model/capture/semantic.js";
20
+ import "../../user-model/capture/index.js";
21
+ import { USER_MODEL_INTERPRETER_SYSTEM_PROMPT, buildUserModelInterpreterPrompt } from "./prompts.js";
20
22
  import { Agent } from "@earendil-works/pi-agent-core";
21
23
  //#region src/agent/background-review/run-background-review.ts
22
24
  init_sync_provider_auth();
23
25
  init_providers();
24
26
  init_logger();
25
- const log = createLogger("UnderstandingInterpreter");
27
+ const log = createLogger("UserModelInterpreter");
26
28
  function isReviewMessage(value) {
27
29
  if (!value || typeof value !== "object") return false;
28
30
  const role = value.role;
@@ -91,7 +93,7 @@ function isLocalModel(model) {
91
93
  }
92
94
  function resolveInterpreterRuntime(params) {
93
95
  const config = params.getConfig();
94
- const processingPolicy = config?.userContext.understanding.processingPolicy ?? "remote_allowed";
96
+ const processingPolicy = config?.userContext.userModel.processingPolicy ?? "remote_allowed";
95
97
  let model;
96
98
  if (config) {
97
99
  const agentId = extractProfileAgentId(params.sessionKey, config);
@@ -124,7 +126,7 @@ function resolveInterpreterRuntime(params) {
124
126
  async function interpret(params) {
125
127
  const reviewAgent = new Agent({
126
128
  initialState: {
127
- systemPrompt: UNDERSTANDING_INTERPRETER_SYSTEM_PROMPT,
129
+ systemPrompt: USER_MODEL_INTERPRETER_SYSTEM_PROMPT,
128
130
  model: params.model,
129
131
  thinkingLevel: "off",
130
132
  tools: [],
@@ -136,11 +138,14 @@ async function interpret(params) {
136
138
  reviewAgent.state.messages = params.evidence.map(tagMessage);
137
139
  try {
138
140
  await runAgentTurnWithTimeout(reviewAgent, async () => {
141
+ const timezone = params.getConfig()?.userContext.userModel.maintenance.timezone ?? Intl.DateTimeFormat().resolvedOptions().timeZone ?? "UTC";
139
142
  await reviewAgent.prompt({
140
143
  role: "user",
141
- content: buildUnderstandingInterpreterPrompt({
144
+ content: buildUserModelInterpreterPrompt({
142
145
  mode: params.mode,
143
- availableTargets: params.availableTargets
146
+ availableTargets: params.availableTargets,
147
+ evidenceTimestamp: new Date(params.evidence.at(-1)?.createdAt ?? Date.now()).toISOString(),
148
+ timezone
144
149
  }),
145
150
  timestamp: Date.now()
146
151
  });
@@ -156,11 +161,11 @@ async function interpret(params) {
156
161
  return null;
157
162
  }
158
163
  if (isAssistantTurnAborted(reviewAgent) || isAssistantTurnFailed(reviewAgent)) return null;
159
- return parseSemanticUnderstanding(lastAssistantText(reviewAgent), params.evidence, params.availableTargets.map((item) => item.id));
164
+ return parseUserModelInterpretation(lastAssistantText(reviewAgent), params.evidence, params.availableTargets.map((item) => item.id));
160
165
  }
161
166
  async function executeReview(params) {
162
167
  const runtime = resolveInterpreterRuntime(params);
163
- if (!runtime) return emptyUnderstandingReview();
168
+ if (!runtime) return emptyUserModelCaptureResult();
164
169
  const extraction = claimRegisteredExtraction({
165
170
  extractorId: params.extractorId,
166
171
  sourceRef: params.sourceRef,
@@ -168,7 +173,7 @@ async function executeReview(params) {
168
173
  processingPolicy: runtime.processingPolicy,
169
174
  destination: runtime.destination
170
175
  });
171
- if (!extraction.shouldExecute) return emptyUnderstandingReview();
176
+ if (!extraction.shouldExecute) return emptyUserModelCaptureResult();
172
177
  const interpretation = await interpret({
173
178
  ...params,
174
179
  model: runtime.model
@@ -179,32 +184,36 @@ async function executeReview(params) {
179
184
  status: "failed",
180
185
  errorCode: "model_or_schema_failed"
181
186
  });
182
- return emptyUnderstandingReview();
187
+ return emptyUserModelCaptureResult();
183
188
  }
184
189
  try {
185
- const result = await executeUnderstandingInterpretation({
190
+ const config = params.getConfig();
191
+ const agentId = config ? extractProfileAgentId(params.sessionKey, config) : "main";
192
+ const write = config?.userContext.userModel.writePolicy ?? "deny";
193
+ const result = executeUserModelInterpretation({
186
194
  interpretation,
187
195
  evidence: params.evidence,
188
196
  extractionRunId: extraction.run.id,
189
197
  extractorId: params.extractorId,
190
- sessionKey: params.sessionKey,
191
- ...params.turnId ? { turnId: params.turnId } : {},
192
- memoryManager: params.memoryManager,
193
- getConfig: params.getConfig,
194
- reviewSource: params.mode === "turn" ? "turn" : "background",
195
- processingPolicy: runtime.processingPolicy
198
+ scopeContext: {
199
+ sessionId: params.sessionKey,
200
+ agentId,
201
+ workspaceId: params.workspaceId,
202
+ ...getSessionMetadata(params.sessionKey)?.projectId ? { projectId: getSessionMetadata(params.sessionKey).projectId } : {}
203
+ },
204
+ policy: {
205
+ write,
206
+ sensitiveWrite: config?.userContext.userModel.sensitiveWritePolicy ?? "confirm",
207
+ processing: runtime.processingPolicy
208
+ },
209
+ ...params.turnId ? { turnId: params.turnId } : {}
196
210
  });
197
211
  finishContextExtractionRun({
198
212
  runId: extraction.run.id,
199
213
  status: "completed",
200
- outputs: result.writeOutputs?.map((output) => ({
214
+ outputs: result.outputs.map((output) => ({
201
215
  candidateKey: output.candidateKey,
202
- ...output.objectId ? {
203
- objectType: "understanding",
204
- objectId: output.objectId
205
- } : {},
206
- ...output.versionId ? { versionId: output.versionId } : {},
207
- outcome: output.outcome
216
+ outcome: output.outcome === "deduplicated" ? "deduplicated" : output.outcome === "rejected" ? "rejected" : "created"
208
217
  }))
209
218
  });
210
219
  return result;
@@ -217,20 +226,17 @@ async function executeReview(params) {
217
226
  throw err;
218
227
  }
219
228
  }
220
- async function runTurnUnderstandingReview(params) {
229
+ async function runTurnUserModelCapture(params) {
221
230
  const evidence = loadEvidenceMessages(params.sessionKey, params.maxHistoryMessages ?? 12);
222
- if (!evidence.length) return emptyUnderstandingReview();
223
- const availableTargets = getTurnPersonalization(params.turnId)?.items.flatMap((item) => {
224
- if (item.objectType !== "understanding" || item.decision !== "selected") return [];
225
- return [{
226
- id: item.objectId,
227
- statement: item.content
228
- }];
229
- }) ?? [];
231
+ if (!evidence.length) return emptyUserModelCaptureResult();
232
+ const availableTargets = listUserAssertions({ limit: 200 }).map((item) => ({
233
+ id: item.id,
234
+ statement: item.statement
235
+ }));
230
236
  return executeReview({
231
237
  sessionKey: params.sessionKey,
232
238
  mainAgent: params.mainAgent,
233
- memoryManager: params.memoryManager,
239
+ workspaceId: params.workspaceId,
234
240
  getConfig: params.getConfig,
235
241
  evidence,
236
242
  mode: "turn",
@@ -242,7 +248,7 @@ async function runTurnUnderstandingReview(params) {
242
248
  turnId: params.turnId
243
249
  });
244
250
  }
245
- async function runBackgroundReviewTurn(params) {
251
+ async function runBackgroundUserModelReview(params) {
246
252
  const evidence = loadEvidenceMessages(params.sessionKey, params.settings.maxHistoryMessages);
247
253
  if (!evidence.length) return;
248
254
  const first = evidence[0];
@@ -250,7 +256,7 @@ async function runBackgroundReviewTurn(params) {
250
256
  await executeReview({
251
257
  sessionKey: params.sessionKey,
252
258
  mainAgent: params.mainAgent,
253
- memoryManager: params.memoryManager,
259
+ workspaceId: params.workspaceId,
254
260
  getConfig: params.getConfig,
255
261
  evidence,
256
262
  mode: "transcript",
@@ -262,4 +268,4 @@ async function runBackgroundReviewTurn(params) {
262
268
  });
263
269
  }
264
270
  //#endregion
265
- export { runBackgroundReviewTurn, runTurnUnderstandingReview };
271
+ export { runBackgroundUserModelReview, runTurnUserModelCapture };
@@ -1,7 +1,6 @@
1
1
  import type { Config } from '../../config/schema.js';
2
2
  export interface BackgroundReviewSettings {
3
3
  enabled: boolean;
4
- adaptiveCadence: boolean;
5
4
  reviewIntervalTurns: number;
6
5
  maxHistoryMessages: number;
7
6
  maxDurationMs: number;
@@ -1,20 +1,19 @@
1
1
  //#region src/agent/background-review/settings.ts
2
2
  const DEFAULT_SETTINGS = {
3
3
  enabled: false,
4
- adaptiveCadence: true,
5
4
  reviewIntervalTurns: 10,
6
5
  maxHistoryMessages: 80,
7
6
  maxDurationMs: 12e4
8
7
  };
9
8
  function resolveBackgroundReviewSettings(config) {
10
9
  if (!config) return DEFAULT_SETTINGS;
11
- const { understanding } = config.userContext;
10
+ const userModel = config.userContext.userModel;
11
+ const extraction = userModel.extraction;
12
12
  return {
13
- enabled: config.userContext.enabled && understanding.enabled,
14
- adaptiveCadence: understanding.adaptiveCadence,
15
- reviewIntervalTurns: understanding.reviewIntervalTurns,
16
- maxHistoryMessages: understanding.maxHistoryMessages,
17
- maxDurationMs: understanding.maxDurationMs
13
+ enabled: config.userContext.enabled && userModel.enabled,
14
+ reviewIntervalTurns: extraction.reviewIntervalTurns,
15
+ maxHistoryMessages: extraction.maxHistoryMessages,
16
+ maxDurationMs: extraction.maxDurationMs
18
17
  };
19
18
  }
20
19
  //#endregion
@@ -0,0 +1,36 @@
1
+ import type { ExecutionContext } from './execution-context.js';
2
+ export interface ExecutionContextBudget {
3
+ maxAssertions: number;
4
+ maxKnowledge: number;
5
+ maxChars: number;
6
+ }
7
+ export interface ExecutionContextAudit {
8
+ runId: string;
9
+ principalId: string;
10
+ turnId: string;
11
+ sessionId: string;
12
+ queryHash: string;
13
+ asOf: number;
14
+ budget: ExecutionContextBudget;
15
+ metrics: Record<string, number>;
16
+ items: Array<{
17
+ objectType: 'rule' | 'assertion' | 'goal' | 'priority' | 'knowledge';
18
+ objectId: string;
19
+ score?: number;
20
+ reasons: string[];
21
+ included: boolean;
22
+ }>;
23
+ createdAt: number;
24
+ }
25
+ export declare function recordExecutionContext(context: ExecutionContext, input: {
26
+ turnId: string;
27
+ sessionId: string;
28
+ budget: ExecutionContextBudget;
29
+ renderedChars: number;
30
+ }): void;
31
+ export declare function getExecutionContextAudit(turnId: string): ExecutionContextAudit | undefined;
32
+ export declare function recordExecutionContextFeedback(input: {
33
+ turnId: string;
34
+ rating: 'helpful' | 'irrelevant';
35
+ reason?: string;
36
+ }): boolean;
@@ -0,0 +1,97 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "../../storage/sqlite/transaction.js";
2
+ import { createHash } from "node:crypto";
3
+ //#region src/agent/context/audit.ts
4
+ function recordExecutionContext(context, input) {
5
+ const createdAt = Date.now();
6
+ const items = [
7
+ ...context.rules.map((item) => ({
8
+ objectType: "rule",
9
+ objectId: item.id,
10
+ reasons: [`${item.enforcementLevel}_rule`],
11
+ included: true
12
+ })),
13
+ ...context.assertions.map((item) => ({
14
+ objectType: "assertion",
15
+ objectId: item.assertion.id,
16
+ score: item.score,
17
+ reasons: item.reasons,
18
+ included: true
19
+ })),
20
+ ...context.goals.map((item) => ({
21
+ objectType: "goal",
22
+ objectId: item.id,
23
+ reasons: ["active_goal"],
24
+ included: true
25
+ })),
26
+ ...context.priorities.map((item) => ({
27
+ objectType: "priority",
28
+ objectId: item.id,
29
+ score: item.urgency,
30
+ reasons: [`${item.rank}_priority`],
31
+ included: true
32
+ })),
33
+ ...context.knowledge.map((item) => ({
34
+ objectType: "knowledge",
35
+ objectId: item.id,
36
+ score: item.importance,
37
+ reasons: ["task_relevant_knowledge"],
38
+ included: true
39
+ }))
40
+ ];
41
+ const metrics = {
42
+ rules: context.rules.length,
43
+ assertions: context.assertions.length,
44
+ goals: context.goals.length,
45
+ priorities: context.priorities.length,
46
+ knowledge: context.knowledge.length,
47
+ renderedChars: input.renderedChars
48
+ };
49
+ runSqliteWriteTransaction((db) => {
50
+ if (db.prepare("SELECT 1 FROM execution_context_runs WHERE turn_id = ?").get(input.turnId)) return;
51
+ db.prepare(`INSERT INTO execution_context_runs (
52
+ run_id, principal_id, turn_id, session_id, query_hash, as_of,
53
+ budget_json, metrics_json, created_at
54
+ ) VALUES (?, 'local-owner', ?, ?, ?, ?, ?, ?, ?)`).run(context.traceId, input.turnId, input.sessionId, createHash("sha256").update(context.query).digest("hex"), context.asOf, JSON.stringify(input.budget), JSON.stringify(metrics), createdAt);
55
+ const insert = db.prepare(`INSERT INTO execution_context_items (
56
+ run_id, object_type, object_id, score, reasons_json, included, created_at
57
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`);
58
+ for (const item of items) insert.run(context.traceId, item.objectType, item.objectId, item.score ?? null, JSON.stringify(item.reasons), item.included ? 1 : 0, createdAt);
59
+ });
60
+ }
61
+ function getExecutionContextAudit(turnId) {
62
+ const db = getSqliteDatabase();
63
+ const run = db.prepare("SELECT * FROM execution_context_runs WHERE turn_id = ?").get(turnId);
64
+ if (!run) return void 0;
65
+ const rows = db.prepare(`SELECT object_type, object_id, score, reasons_json, included
66
+ FROM execution_context_items WHERE run_id = ? ORDER BY rowid`).all(run.run_id);
67
+ return {
68
+ runId: run.run_id,
69
+ principalId: run.principal_id,
70
+ turnId: run.turn_id,
71
+ sessionId: run.session_id,
72
+ queryHash: run.query_hash,
73
+ asOf: run.as_of,
74
+ budget: JSON.parse(run.budget_json),
75
+ metrics: JSON.parse(run.metrics_json),
76
+ items: rows.map((row) => ({
77
+ objectType: row.object_type,
78
+ objectId: row.object_id,
79
+ ...row.score === null ? {} : { score: row.score },
80
+ reasons: JSON.parse(row.reasons_json),
81
+ included: row.included === 1
82
+ })),
83
+ createdAt: run.created_at
84
+ };
85
+ }
86
+ function recordExecutionContextFeedback(input) {
87
+ const now = Date.now();
88
+ const result = getSqliteDatabase().prepare(`INSERT INTO execution_context_feedback (
89
+ turn_id, rating, reason, created_at, updated_at
90
+ ) SELECT ?, ?, ?, ?, ? WHERE EXISTS (
91
+ SELECT 1 FROM execution_context_runs WHERE turn_id = ?
92
+ ) ON CONFLICT(turn_id) DO UPDATE SET
93
+ rating = excluded.rating, reason = excluded.reason, updated_at = excluded.updated_at`).run(input.turnId, input.rating, input.reason ?? null, now, now, input.turnId);
94
+ return Number(result.changes) > 0;
95
+ }
96
+ //#endregion
97
+ export { getExecutionContextAudit, recordExecutionContext, recordExecutionContextFeedback };
@@ -0,0 +1,26 @@
1
+ import type { AgentMessage } from '@earendil-works/pi-agent-core';
2
+ import type { Config } from '../../config/schema.js';
3
+ import { type ExecutionContext } from './execution-context.js';
4
+ export interface ExecutionContextPlan {
5
+ traceId: string;
6
+ modelMessage: AgentMessage;
7
+ executionContext?: ExecutionContext;
8
+ estimatedTokens: number;
9
+ contextChars: number;
10
+ contextItemCount: number;
11
+ }
12
+ export interface ExecutionContextCoordinatorOptions {
13
+ getConfig: () => Config | undefined;
14
+ isEnabledForSession: (sessionKey: string) => boolean;
15
+ getWorkspaceIdForSession: (sessionKey: string) => string;
16
+ getProjectIdForSession: (sessionKey: string) => string | undefined;
17
+ }
18
+ export declare class ExecutionContextCoordinator {
19
+ private readonly options;
20
+ private readonly currentBySession;
21
+ constructor(options: ExecutionContextCoordinatorOptions);
22
+ forgetSession(sessionKey: string): void;
23
+ clear(): void;
24
+ getCurrent(sessionKey: string): ExecutionContext | undefined;
25
+ prepare(userMessage: AgentMessage, sessionKey: string, turnId: string): Promise<ExecutionContextPlan>;
26
+ }
@@ -0,0 +1,72 @@
1
+ import { init_session_key, parseSessionKey } from "../../routing/session-key.js";
2
+ import { extractProfileAgentId } from "../../config/agent-profile.js";
3
+ import { assembleTaskContext } from "../../tasks/task-context-assembler.js";
4
+ import { recordExecutionContext } from "./audit.js";
5
+ import { prependAgentContext } from "./prepend.js";
6
+ import { extractAgentUserPlainText } from "../memory/user-message-text.js";
7
+ import { buildExecutionContext, renderExecutionContext } from "./execution-context.js";
8
+ //#region src/agent/context/coordinator.ts
9
+ init_session_key();
10
+ function isPrivateSession(sessionKey) {
11
+ const parsed = parseSessionKey(sessionKey);
12
+ return !parsed || parsed.peerKind === "direct";
13
+ }
14
+ var ExecutionContextCoordinator = class {
15
+ currentBySession = /* @__PURE__ */ new Map();
16
+ constructor(options) {
17
+ this.options = options;
18
+ }
19
+ forgetSession(sessionKey) {
20
+ this.currentBySession.delete(sessionKey);
21
+ }
22
+ clear() {
23
+ this.currentBySession.clear();
24
+ }
25
+ getCurrent(sessionKey) {
26
+ return this.currentBySession.get(sessionKey);
27
+ }
28
+ async prepare(userMessage, sessionKey, turnId) {
29
+ const empty = () => ({
30
+ traceId: "",
31
+ modelMessage: userMessage,
32
+ estimatedTokens: 0,
33
+ contextChars: 0,
34
+ contextItemCount: 0
35
+ });
36
+ const config = this.options.getConfig();
37
+ if (!config || !config.userContext.contextPlanning.enabled || !this.options.isEnabledForSession(sessionKey) || !isPrivateSession(sessionKey)) return empty();
38
+ const task = assembleTaskContext(sessionKey, extractAgentUserPlainText(userMessage));
39
+ const context = buildExecutionContext({
40
+ query: task.retrievalQuery,
41
+ agentId: extractProfileAgentId(sessionKey, config),
42
+ workspaceId: this.options.getWorkspaceIdForSession(sessionKey),
43
+ projectId: this.options.getProjectIdForSession(sessionKey),
44
+ sessionId: sessionKey,
45
+ maxAssertions: Math.min(config.userContext.contextPlanning.maxAssertions, task.allocation.maxResults),
46
+ maxKnowledge: Math.min(config.userContext.contextPlanning.maxKnowledge, task.allocation.maxResults)
47
+ });
48
+ this.currentBySession.set(sessionKey, context);
49
+ const rendered = renderExecutionContext(context).slice(0, Math.min(config.userContext.contextPlanning.maxChars, task.allocation.maxChars));
50
+ const contextItemCount = context.rules.length + context.assertions.length + context.goals.length + context.priorities.length + context.knowledge.length;
51
+ recordExecutionContext(context, {
52
+ turnId,
53
+ sessionId: sessionKey,
54
+ budget: {
55
+ maxAssertions: Math.min(config.userContext.contextPlanning.maxAssertions, task.allocation.maxResults),
56
+ maxKnowledge: Math.min(config.userContext.contextPlanning.maxKnowledge, task.allocation.maxResults),
57
+ maxChars: Math.min(config.userContext.contextPlanning.maxChars, task.allocation.maxChars)
58
+ },
59
+ renderedChars: rendered.length
60
+ });
61
+ return {
62
+ traceId: context.traceId,
63
+ modelMessage: prependAgentContext(userMessage, rendered),
64
+ executionContext: context,
65
+ estimatedTokens: Math.ceil(rendered.length / 4),
66
+ contextChars: rendered.length,
67
+ contextItemCount
68
+ };
69
+ }
70
+ };
71
+ //#endregion
72
+ export { ExecutionContextCoordinator };
@@ -0,0 +1,54 @@
1
+ import { type KnowledgeItem, type KnowledgeVisibilityContext } from '../../knowledge-memory/index.js';
2
+ import type { UserAssertion } from '../../user-model/domain.js';
3
+ export type RuleEnforcementLevel = 'prompt' | 'planner' | 'tool_gate';
4
+ export interface ExecutionRule {
5
+ id: string;
6
+ statement: string;
7
+ priority: number;
8
+ enforcementLevel: RuleEnforcementLevel;
9
+ conditions: Record<string, unknown>;
10
+ }
11
+ export interface RankedExecutionAssertion {
12
+ assertion: UserAssertion;
13
+ score: number;
14
+ reasons: string[];
15
+ }
16
+ export interface ExecutionGoal {
17
+ id: string;
18
+ title: string;
19
+ desiredOutcome: string;
20
+ status: string;
21
+ declaredImportance?: number;
22
+ targetAt?: number;
23
+ }
24
+ export interface ExecutionPriority {
25
+ id: string;
26
+ targetType: string;
27
+ targetId: string;
28
+ rank: 'primary' | 'secondary' | 'background';
29
+ urgency: number;
30
+ validTo: number;
31
+ }
32
+ export interface ExecutionContext {
33
+ traceId: string;
34
+ asOf: number;
35
+ query: string;
36
+ rules: ExecutionRule[];
37
+ assertions: RankedExecutionAssertion[];
38
+ goals: ExecutionGoal[];
39
+ priorities: ExecutionPriority[];
40
+ knowledge: KnowledgeItem[];
41
+ }
42
+ export interface ExecutionContextRequest extends KnowledgeVisibilityContext {
43
+ query: string;
44
+ asOf?: number;
45
+ maxAssertions?: number;
46
+ maxKnowledge?: number;
47
+ }
48
+ export declare function buildExecutionContext(request: ExecutionContextRequest): ExecutionContext;
49
+ export declare function renderExecutionContext(context: ExecutionContext): string;
50
+ export declare function evaluateToolGate(context: ExecutionContext, operation: string): {
51
+ allowed: boolean;
52
+ rule?: ExecutionRule;
53
+ reason?: string;
54
+ };
@@ -0,0 +1,147 @@
1
+ import { getSqliteDatabase } from "../../storage/sqlite/transaction.js";
2
+ import { listCollaborationRules } from "../../storage/sqlite/collaboration-rule-repository.js";
3
+ import { searchKnowledgeItems } from "../../knowledge-memory/repository.js";
4
+ import "../../knowledge-memory/index.js";
5
+ import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
6
+ import { calculateExecutionValue } from "../../user-model/importance.js";
7
+ import { listUserAssertions } from "../../user-model/repository.js";
8
+ import { randomUUID } from "node:crypto";
9
+ //#region src/agent/context/execution-context.ts
10
+ function scopeVisible(scope, context) {
11
+ if (scope.type === "global") return true;
12
+ return scope.id === {
13
+ agent: context.agentId,
14
+ workspace: context.workspaceId,
15
+ project: context.projectId,
16
+ session: context.sessionId
17
+ }[scope.type];
18
+ }
19
+ function urgency(assertion, asOf) {
20
+ const deadline = assertion.validTo ?? assertion.reviewAt;
21
+ if (deadline === void 0) return 0;
22
+ const remaining = deadline - asOf;
23
+ if (remaining <= 0) return 1;
24
+ return Math.max(0, 1 - remaining / (720 * 60 * 60 * 1e3));
25
+ }
26
+ function rankAssertion(assertion, query, asOf) {
27
+ const taskRelevance = retrievalLexicalSimilarity(query, `${assertion.statement} ${assertion.normalizedValue}`);
28
+ return {
29
+ assertion,
30
+ score: calculateExecutionValue({
31
+ declaredImportance: assertion.declaredImportance,
32
+ inferredImportance: assertion.inferredImportance,
33
+ consequence: assertion.consequence,
34
+ actionability: assertion.actionability,
35
+ taskRelevance,
36
+ urgency: urgency(assertion, asOf)
37
+ }),
38
+ reasons: [
39
+ taskRelevance >= .35 ? "task_relevant" : "",
40
+ assertion.declaredImportance !== void 0 ? "user_declared_importance" : "",
41
+ assertion.consequence === "critical" || assertion.consequence === "high" ? "high_consequence" : "",
42
+ assertion.kind === "identity" || assertion.kind === "preference" ? "stable_personalization" : ""
43
+ ].filter(Boolean)
44
+ };
45
+ }
46
+ function ruleEnforcement(conditions) {
47
+ const value = conditions.enforcementLevel;
48
+ return value === "planner" || value === "tool_gate" ? value : "prompt";
49
+ }
50
+ function loadRules(context) {
51
+ return listCollaborationRules().filter((rule) => rule.status === "active" && scopeVisible(rule.scope, context)).map((rule) => ({
52
+ id: rule.id,
53
+ statement: rule.statement,
54
+ priority: rule.priority,
55
+ enforcementLevel: ruleEnforcement(rule.conditions),
56
+ conditions: rule.conditions
57
+ })).sort((left, right) => left.priority - right.priority);
58
+ }
59
+ function loadGoals(context, asOf) {
60
+ return getSqliteDatabase().prepare(`SELECT g.goal_id, g.status, g.declared_importance,
61
+ g.target_at, g.scope_type, g.scope_id, r.title, r.desired_outcome
62
+ FROM user_goals g JOIN user_goal_revisions r ON r.revision_id = g.current_revision_id
63
+ WHERE g.principal_id = 'local-owner' AND g.status IN ('active', 'proposed')
64
+ AND (g.valid_from IS NULL OR g.valid_from <= ?)
65
+ AND (g.valid_to IS NULL OR g.valid_to >= ?)
66
+ ORDER BY COALESCE(g.declared_importance, 0) DESC, g.updated_at DESC LIMIT 30`).all(asOf, asOf).filter((row) => scopeVisible({
67
+ type: row.scope_type,
68
+ ...row.scope_id ? { id: row.scope_id } : {}
69
+ }, context)).map((row) => ({
70
+ id: row.goal_id,
71
+ title: row.title,
72
+ desiredOutcome: row.desired_outcome,
73
+ status: row.status,
74
+ ...row.declared_importance === null ? {} : { declaredImportance: row.declared_importance },
75
+ ...row.target_at === null ? {} : { targetAt: row.target_at }
76
+ }));
77
+ }
78
+ function loadPriorities(context, asOf) {
79
+ return getSqliteDatabase().prepare(`SELECT priority_id, target_type, target_id, rank, urgency,
80
+ valid_to, scope_type, scope_id FROM user_priority_windows
81
+ WHERE principal_id = 'local-owner' AND status = 'active' AND valid_from <= ? AND valid_to >= ?
82
+ ORDER BY CASE rank WHEN 'primary' THEN 0 WHEN 'secondary' THEN 1 ELSE 2 END, urgency DESC LIMIT 30`).all(asOf, asOf).filter((row) => scopeVisible({
83
+ type: row.scope_type,
84
+ ...row.scope_id ? { id: row.scope_id } : {}
85
+ }, context)).map((row) => ({
86
+ id: row.priority_id,
87
+ targetType: row.target_type,
88
+ targetId: row.target_id,
89
+ rank: row.rank,
90
+ urgency: row.urgency,
91
+ validTo: row.valid_to
92
+ }));
93
+ }
94
+ function buildExecutionContext(request) {
95
+ const asOf = request.asOf ?? Date.now();
96
+ const assertions = listUserAssertions({
97
+ statuses: ["active"],
98
+ limit: 1e3
99
+ }).filter((item) => scopeVisible(getAssertionScope(item.slotId), request)).filter((item) => (item.validFrom === void 0 || item.validFrom <= asOf) && (item.validTo === void 0 || item.validTo >= asOf)).filter((item) => item.sensitivity !== "secret" && item.sensitivity !== "regulated" && item.disclosurePolicy !== "ask_before_reference").map((item) => rankAssertion(item, request.query, asOf)).filter((item) => item.score >= .12 || item.reasons.includes("high_consequence")).sort((left, right) => right.score - left.score).slice(0, Math.max(1, Math.min(100, request.maxAssertions ?? 20)));
100
+ return {
101
+ traceId: randomUUID(),
102
+ asOf,
103
+ query: request.query,
104
+ rules: loadRules(request),
105
+ assertions,
106
+ goals: loadGoals(request, asOf),
107
+ priorities: loadPriorities(request, asOf),
108
+ knowledge: searchKnowledgeItems({
109
+ query: request.query,
110
+ context: request,
111
+ asOf,
112
+ limit: request.maxKnowledge ?? 12
113
+ })
114
+ };
115
+ }
116
+ function getAssertionScope(slotId) {
117
+ const row = getSqliteDatabase().prepare(`SELECT scope_type, scope_id FROM user_assertion_slots
118
+ WHERE slot_id = ?`).get(slotId);
119
+ return {
120
+ type: row.scope_type,
121
+ ...row.scope_id ? { id: row.scope_id } : {}
122
+ };
123
+ }
124
+ function renderExecutionContext(context) {
125
+ const sections = [];
126
+ if (context.rules.length) sections.push(`Collaboration rules:\n${context.rules.map((rule) => `- ${rule.statement}`).join("\n")}`);
127
+ if (context.assertions.length) sections.push(`Relevant user facts:\n${context.assertions.map((item) => `- ${item.assertion.statement}`).join("\n")}`);
128
+ if (context.goals.length) sections.push(`Active goals:\n${context.goals.map((goal) => `- ${goal.title}: ${goal.desiredOutcome}`).join("\n")}`);
129
+ if (context.priorities.length) sections.push(`Current priorities:\n${context.priorities.map((item) => `- ${item.rank}: ${item.targetType}/${item.targetId}`).join("\n")}`);
130
+ if (context.knowledge.length) sections.push(`Relevant knowledge:\n${context.knowledge.map((item) => `- ${item.content}`).join("\n")}`);
131
+ return sections.join("\n\n");
132
+ }
133
+ function evaluateToolGate(context, operation) {
134
+ for (const rule of context.rules) {
135
+ if (rule.enforcementLevel !== "tool_gate") continue;
136
+ const operations = Array.isArray(rule.conditions.operationTypes) ? rule.conditions.operationTypes.filter((item) => typeof item === "string") : [];
137
+ if (operations.length && !operations.includes(operation)) continue;
138
+ if (rule.conditions.effect === "deny") return {
139
+ allowed: false,
140
+ rule,
141
+ reason: rule.statement
142
+ };
143
+ }
144
+ return { allowed: true };
145
+ }
146
+ //#endregion
147
+ export { buildExecutionContext, evaluateToolGate, renderExecutionContext };