@xopcai/xopc 0.0.188 → 0.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/README.md +1 -4
  2. package/README.zh-CN.md +0 -3
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store--QoUGhiS.js → activity-store-DstnJCS5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B0yweLNQ.js → agent-avatar-dicebear-9vAbkroX.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-D1t4SfMQ.js +68 -0
  8. package/dist/gateway/static/root/assets/{api-5laWqfiE.js → api-BTL9kayv.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BXJ8Jiv_.js → app-management-settings-panel-DkFeIdBf.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-DG9n9D1M.js → appearance-settings-Bxs8Fpaj.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-Cgrgu5OW.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Ceh5qrZf.js → archive-plugin-Ch2RmLCC.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-jFW7uYf7.js → attachment-load-BhMQM_Ky.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-CtJxstKh.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-XDlkI1r4.js → binary-plugins-D6CqlymH.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-kyKc2IhE.js → block-editor-ClL6HEg9.js} +56 -56
  17. package/dist/gateway/static/root/assets/browser-settings-page-DW99iDmD.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-BJa5Iz_v.js → browser-workflow-inputs-BYy48VhN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-CTQQOsn5.js → browser-workflows-page-zgLibuMH.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-CHUrT9EB.js +7 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Cycrv0YV.js +1 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-BgIkWq01.js → channel-recipient-api-BThDGiO3.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-V96gPUAU.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-api-DS9ED-EL.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-BhlyQoQI.js +2 -0
  28. package/dist/gateway/static/root/assets/cron-expression-CkgsvhtW.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-CSwd00CV.js → desktop-pet-Cv8rGhYW.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-CuNQvHGu.js → desktop-pet-settings-CIeJdwfV.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-ct0n5Rje.js → directory-picker-path-field-D8jXEiAY.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-BeRBuMUU.js → extension-debug-page-CCZ9u6TZ.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-DbK-Cwao.js → extension-page-CV36ILRG.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-IyQrSILY.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CC7EvEFp.js → gateway-config-api-D4_r5iJM.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-CYlntpBH.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-B2DmdlwO.js → gateway-startup-retry-EO9mKvzE.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-D4SyWob8.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-B2Kagoh8.js +3 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-GMTaS6eI.js → image-generation-api-Bu7PyVSh.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-CYT5DOzr.js +150 -0
  42. package/dist/gateway/static/root/assets/index-D6e3tPL-.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DhGYddbI.js → keyboard-shortcuts-settings-BMhCuVBZ.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-BHYbFjqy.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-CmnrBmWi.js → local-apps-page-ijIe7_y2.js} +1 -1
  46. package/dist/gateway/static/root/assets/locale-store-deR2zRaE.js +1 -0
  47. package/dist/gateway/static/root/assets/logs-page-IIn8Tess.js +2 -0
  48. package/dist/gateway/static/root/assets/management-settings--V_fovKD.js +1 -0
  49. package/dist/gateway/static/root/assets/{markdown-split-CZaBPOVn.js → markdown-split-Dt9-in6W.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-CiKvSgCv.js → media-plugins-B3pj_iO0.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +3 -0
  52. package/dist/gateway/static/root/assets/{notes-page-Bisbzqlz.js → notes-page-DZ366lIT.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-S2sBVOLw.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs-BxlwhAbH.js → page-tabs-C5ge434C.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-RM8wXxfT.js → preview-open-alternatives-BFa9DgSV.js} +1 -1
  56. package/dist/gateway/static/root/assets/product-delivery-tRr-7IxY.js +1 -0
  57. package/dist/gateway/static/root/assets/{product-open-page-DdBlibek.js → product-open-page-Dc9CcWdu.js} +1 -1
  58. package/dist/gateway/static/root/assets/project-detail-page-BilzoCJ7.js +1 -0
  59. package/dist/gateway/static/root/assets/projects-page-BoQUyacP.js +1 -0
  60. package/dist/gateway/static/root/assets/remote-access-hub-DUyUaCRF.js +1 -0
  61. package/dist/gateway/static/root/assets/{schema-form-BDKbpmXv.js → schema-form-B84DckWe.js} +1 -1
  62. package/dist/gateway/static/root/assets/{schemas-C6onAggk.js → schemas-zIBW3wiV.js} +1 -1
  63. package/dist/gateway/static/root/assets/sessions-page-Dzxlq1F0.js +1 -0
  64. package/dist/gateway/static/root/assets/settings-advanced-gate-TzwlZxU6.js +1 -0
  65. package/dist/gateway/static/root/assets/settings-form-section-Dp9itvdy.js +1 -0
  66. package/dist/gateway/static/root/assets/{settings-loading-skeleton-DgIp8_S6.js → settings-loading-skeleton-CCtlhoy7.js} +1 -1
  67. package/dist/gateway/static/root/assets/settings-page-DQmMKf8r.js +1 -0
  68. package/dist/gateway/static/root/assets/{settings-page-layout-97LmwrzC.js → settings-page-layout-EQIOJa_L.js} +1 -1
  69. package/dist/gateway/static/root/assets/setup-status-panel-Cwi-SPja.js +1 -0
  70. package/dist/gateway/static/root/assets/{share-preview-page-BH7i3g1S.js → share-preview-page-C4_B2jvf.js} +1 -1
  71. package/dist/gateway/static/root/assets/shares-settings-CkyuGlZK.js +1 -0
  72. package/dist/gateway/static/root/assets/skill-reload-api-BJCePQK5.js +1 -0
  73. package/dist/gateway/static/root/assets/skills-page-BYWLfmJi.js +2 -0
  74. package/dist/gateway/static/root/assets/{skills-page.utils-s-a5WV9j.js → skills-page.utils-Jhm24i4h.js} +1 -1
  75. package/dist/gateway/static/root/assets/{system-settings-panel-BxjeMT5k.js → system-settings-panel-Dpx2ags2.js} +1 -1
  76. package/dist/gateway/static/root/assets/{task-detail-page-BahycnfW.js → task-detail-page-DLAdxI6e.js} +1 -1
  77. package/dist/gateway/static/root/assets/{theme-store-BRxdsmic.js → theme-store-DnBOcGXi.js} +1 -1
  78. package/dist/gateway/static/root/assets/{typed-models-lib-39MjwPSq.js → typed-models-lib-DULmTHUB.js} +1 -1
  79. package/dist/gateway/static/root/assets/use-autosave-BrjVk5VH.js +1 -0
  80. package/dist/gateway/static/root/assets/user-context-page-9AAFpGAL.js +1 -0
  81. package/dist/gateway/static/root/assets/{voice-api-key-field-XU-7sBSg.js → voice-api-key-field-BISTPfq_.js} +1 -1
  82. package/dist/gateway/static/root/assets/{work-discovery-overlay-CJqu8UHq.js → work-discovery-overlay-Wr-uF7VA.js} +1 -1
  83. package/dist/gateway/static/root/assets/work-discovery-page-BWds95sL.js +1 -0
  84. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DXtg8Qxl.js → workflow-run-setup-panel-DHqHP8_6.js} +2 -2
  85. package/dist/gateway/static/root/assets/workflows-page-0b4_DFHr.js +11 -0
  86. package/dist/gateway/static/root/index.html +9 -9
  87. package/dist/package.js +1 -1
  88. package/dist/packages/endpoint-tools-protocol/src/index.js +184 -0
  89. package/dist/packages/gateway-contract/src/tool-activity.js +0 -36
  90. package/dist/packages/realtime-client/src/index.js +256 -0
  91. package/dist/packages/realtime-protocol/src/index.js +88 -0
  92. package/dist/src/agent/agent-manager.d.ts +1 -1
  93. package/dist/src/agent/agent-manager.js +7 -13
  94. package/dist/src/agent/background-review/coordinator.js +1 -1
  95. package/dist/src/agent/background-review/prompts.d.ts +1 -1
  96. package/dist/src/agent/background-review/prompts.js +3 -1
  97. package/dist/src/agent/background-review/run-background-review.d.ts +2 -0
  98. package/dist/src/agent/background-review/run-background-review.js +10 -9
  99. package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +0 -1
  100. package/dist/src/agent/bootstrap/bootstrap-cache.js +3 -4
  101. package/dist/src/agent/bootstrap/bootstrap-files.d.ts +0 -4
  102. package/dist/src/agent/bootstrap/bootstrap-files.js +3 -4
  103. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -4
  104. package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +0 -1
  105. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -14
  106. package/dist/src/agent/bootstrap/types.d.ts +1 -1
  107. package/dist/src/agent/client-error-format.d.ts +1 -1
  108. package/dist/src/agent/client-error-format.js +1 -1
  109. package/dist/src/agent/context/workspace-templates/SOUL.md +1 -1
  110. package/dist/src/agent/external-tools/endpoint-provider.d.ts +17 -0
  111. package/dist/src/agent/external-tools/endpoint-provider.js +93 -0
  112. package/dist/src/agent/external-tools/gateway-tools.js +1 -1
  113. package/dist/src/agent/external-tools/index.d.ts +4 -5
  114. package/dist/src/agent/external-tools/index.js +8 -2
  115. package/dist/src/agent/external-tools/types.d.ts +8 -1
  116. package/dist/src/agent/external-tools/types.js +2 -1
  117. package/dist/src/agent/inbound/inbound-loop.js +4 -0
  118. package/dist/src/agent/inbound/turn-dispatcher.d.ts +9 -8
  119. package/dist/src/agent/inbound/turn-dispatcher.js +13 -11
  120. package/dist/src/agent/memory/builtin-provider.d.ts +2 -4
  121. package/dist/src/agent/memory/builtin-provider.js +35 -15
  122. package/dist/src/agent/memory/context/types.d.ts +3 -1
  123. package/dist/src/agent/memory/create-memory-manager.js +2 -0
  124. package/dist/src/agent/memory/index.d.ts +1 -1
  125. package/dist/src/agent/memory/index.js +1 -1
  126. package/dist/src/agent/memory/manager.d.ts +9 -1
  127. package/dist/src/agent/memory/manager.js +39 -9
  128. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  129. package/dist/src/agent/memory/memory-config.js +1 -1
  130. package/dist/src/agent/memory/source-origin.js +0 -2
  131. package/dist/src/agent/memory/types.d.ts +5 -1
  132. package/dist/src/agent/memory/understanding/service.d.ts +10 -10
  133. package/dist/src/agent/memory/understanding/service.js +108 -176
  134. package/dist/src/agent/memory/understanding/types.d.ts +7 -8
  135. package/dist/src/agent/memory/user-context-coordinator.d.ts +2 -1
  136. package/dist/src/agent/memory/user-context-coordinator.js +27 -41
  137. package/dist/src/agent/messaging/command-handler.d.ts +2 -2
  138. package/dist/src/agent/messaging/command-handler.js +3 -3
  139. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -7
  140. package/dist/src/agent/prompt/sections/memory-skills.js +4 -4
  141. package/dist/src/agent/prompt/sections/tooling.js +0 -10
  142. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  143. package/dist/src/agent/prompt/service-prompt-builder.js +4 -33
  144. package/dist/src/agent/prompt/system-prompt.js +1 -2
  145. package/dist/src/agent/service/async-queue.d.ts +1 -1
  146. package/dist/src/agent/service/async-queue.js +1 -1
  147. package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -1
  148. package/dist/src/agent/service/direct-turn-helpers.js +2 -2
  149. package/dist/src/agent/service/process-direct-one-shot.d.ts +3 -1
  150. package/dist/src/agent/service/process-direct-one-shot.js +1 -1
  151. package/dist/src/agent/service/process-direct-streaming.d.ts +7 -5
  152. package/dist/src/agent/service/process-direct-streaming.js +5 -5
  153. package/dist/src/agent/service.d.ts +2 -3
  154. package/dist/src/agent/service.js +10 -21
  155. package/dist/src/agent/service.types.d.ts +2 -0
  156. package/dist/src/agent/session/index.d.ts +1 -1
  157. package/dist/src/agent/session/session-context.d.ts +2 -0
  158. package/dist/src/agent/session/session-context.js +4 -0
  159. package/dist/src/agent/session/session-state-bag.d.ts +4 -4
  160. package/dist/src/agent/session/session-state-bag.js +1 -1
  161. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +1 -1
  162. package/dist/src/agent/streaming/reasoning-visibility.d.ts +6 -0
  163. package/dist/src/agent/streaming/{reasoning-visibility-sse.js → reasoning-visibility.js} +3 -6
  164. package/dist/src/agent/tools/dreaming-tool.d.ts +0 -2
  165. package/dist/src/agent/tools/dreaming-tool.js +13 -38
  166. package/dist/src/agent/tools/factory.d.ts +4 -3
  167. package/dist/src/agent/tools/factory.js +2 -10
  168. package/dist/src/agent/tools/index.d.ts +0 -1
  169. package/dist/src/agent/tools/index.js +1 -2
  170. package/dist/src/agent/tools/memory-tool.js +1 -1
  171. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -5
  172. package/dist/src/agent/workspace-runtime/registry.js +2 -15
  173. package/dist/src/agent-manifest/schema.d.ts +17 -17
  174. package/dist/src/agent-runtime/index.js +1 -1
  175. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  176. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  177. package/dist/src/automations/domain/types.d.ts +2 -1
  178. package/dist/src/automations/domain/validation.d.ts +29 -29
  179. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  180. package/dist/src/automations/service/action-executor.js +4 -1
  181. package/dist/src/channels/pairing/pairing-challenge.d.ts +1 -1
  182. package/dist/src/channels/pairing/pairing-challenge.js +1 -1
  183. package/dist/src/chat-commands/builtins/understanding.js +2 -5
  184. package/dist/src/cli/commands/agent/stream-renderer.js +4 -1
  185. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  186. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  187. package/dist/src/cli/commands/init.js +3 -22
  188. package/dist/src/cli/templates.js +1 -1
  189. package/dist/src/config/index.js +3 -3
  190. package/dist/src/config/paths.d.ts +0 -5
  191. package/dist/src/config/paths.js +2 -11
  192. package/dist/src/config/rules.js +0 -5
  193. package/dist/src/config/schema.d.ts +27 -122
  194. package/dist/src/config/schema.js +9 -42
  195. package/dist/src/config/web-patch.js +0 -1
  196. package/dist/src/connectors/learning-coordinator.js +75 -3
  197. package/dist/src/endpoint-tools/auth.d.ts +20 -0
  198. package/dist/src/endpoint-tools/auth.js +51 -0
  199. package/dist/src/endpoint-tools/index.d.ts +5 -0
  200. package/dist/src/endpoint-tools/index.js +6 -0
  201. package/dist/src/endpoint-tools/invocation-service.d.ts +68 -0
  202. package/dist/src/endpoint-tools/invocation-service.js +190 -0
  203. package/dist/src/endpoint-tools/policy.d.ts +10 -0
  204. package/dist/src/endpoint-tools/policy.js +18 -0
  205. package/dist/src/endpoint-tools/registry.d.ts +45 -0
  206. package/dist/src/endpoint-tools/registry.js +121 -0
  207. package/dist/src/endpoint-tools/runtime.d.ts +23 -0
  208. package/dist/src/endpoint-tools/runtime.js +86 -0
  209. package/dist/src/endpoint-tools/upload-service.d.ts +41 -0
  210. package/dist/src/endpoint-tools/upload-service.js +103 -0
  211. package/dist/src/extensions/types/hooks.d.ts +1 -1
  212. package/dist/src/extensions/update.js +1 -1
  213. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  214. package/dist/src/gateway/agent-builtin-tools.js +0 -5
  215. package/dist/src/gateway/agents-admin.d.ts +0 -7
  216. package/dist/src/gateway/agents-admin.js +3 -32
  217. package/dist/src/gateway/chat-stream/protocol.d.ts +0 -1
  218. package/dist/src/gateway/clarify-bridge.d.ts +5 -4
  219. package/dist/src/gateway/clarify-bridge.js +3 -4
  220. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +3 -3
  221. package/dist/src/gateway/dreaming-automation-reconciler.js +48 -88
  222. package/dist/src/gateway/heartbeat/service.js +4 -1
  223. package/dist/src/gateway/hono/app.js +1 -5
  224. package/dist/src/gateway/hono/index.d.ts +0 -1
  225. package/dist/src/gateway/hono/index.js +1 -2
  226. package/dist/src/gateway/hono/lib/config-payload.d.ts +20 -9
  227. package/dist/src/gateway/hono/lib/config-payload.js +3 -2
  228. package/dist/src/gateway/hono/middleware/auth.js +3 -5
  229. package/dist/src/gateway/hono/oauth-async.d.ts +1 -0
  230. package/dist/src/gateway/hono/oauth-async.js +17 -2
  231. package/dist/src/gateway/hono/routes/agent-stream.js +49 -6
  232. package/dist/src/gateway/hono/routes/agents.js +1 -33
  233. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  234. package/dist/src/gateway/hono/routes/config-patch/gateway.d.ts +2 -2
  235. package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -19
  236. package/dist/src/gateway/hono/routes/config-patch/misc.js +17 -1
  237. package/dist/src/gateway/hono/routes/connectors.js +13 -12
  238. package/dist/src/gateway/hono/routes/deps.d.ts +0 -2
  239. package/dist/src/gateway/hono/routes/endpoint-tools.d.ts +3 -0
  240. package/dist/src/gateway/hono/routes/endpoint-tools.js +196 -0
  241. package/dist/src/gateway/hono/routes/index.js +6 -2
  242. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -5
  243. package/dist/src/gateway/hono/routes/logs.js +0 -4
  244. package/dist/src/gateway/hono/routes/public-gateway.js +2 -2
  245. package/dist/src/gateway/hono/routes/realtime.d.ts +3 -0
  246. package/dist/src/gateway/hono/routes/realtime.js +35 -0
  247. package/dist/src/gateway/hono/routes/status.js +0 -7
  248. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +3 -0
  249. package/dist/src/gateway/hono/routes/understanding-sources.js +203 -0
  250. package/dist/src/gateway/hono/routes/work-discovery.d.ts +2 -0
  251. package/dist/src/gateway/hono/routes/work-discovery.js +3 -134
  252. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  253. package/dist/src/gateway/hono/routes/you.d.ts +0 -31
  254. package/dist/src/gateway/hono/routes/you.js +230 -1161
  255. package/dist/src/gateway/index.d.ts +1 -1
  256. package/dist/src/gateway/index.js +1 -2
  257. package/dist/src/gateway/protocol.d.ts +1 -7
  258. package/dist/src/gateway/security/index.js +1 -1
  259. package/dist/src/gateway/security/operator-scopes.js +1 -1
  260. package/dist/src/gateway/server.js +4 -4
  261. package/dist/src/gateway/service/agent-runner.d.ts +11 -9
  262. package/dist/src/gateway/service/agent-runner.js +18 -18
  263. package/dist/src/gateway/service/config-coordinator.d.ts +3 -3
  264. package/dist/src/gateway/service/run-gateway-agent.d.ts +4 -3
  265. package/dist/src/gateway/service/run-gateway-agent.js +15 -17
  266. package/dist/src/gateway/service/session-input-coordinator.d.ts +3 -0
  267. package/dist/src/gateway/service/session-input-coordinator.js +4 -2
  268. package/dist/src/gateway/service/types.d.ts +0 -5
  269. package/dist/src/gateway/service.d.ts +7 -6
  270. package/dist/src/gateway/service.js +43 -26
  271. package/dist/src/infra/update-runner.js +1 -1
  272. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  273. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +2 -4
  274. package/dist/src/knowledge/connected-understanding-pipeline.js +31 -81
  275. package/dist/src/knowledge/index.js +2 -2
  276. package/dist/src/knowledge/people-graph.d.ts +22 -25
  277. package/dist/src/knowledge/people-graph.js +76 -43
  278. package/dist/src/mcp/channel-bridge.d.ts +6 -9
  279. package/dist/src/mcp/channel-bridge.js +48 -76
  280. package/dist/src/mcp/channel-server.js +2 -6
  281. package/dist/src/proactive/execution/context.js +8 -13
  282. package/dist/src/realtime/broker.d.ts +31 -0
  283. package/dist/src/realtime/broker.js +114 -0
  284. package/dist/src/realtime/runtime.d.ts +20 -0
  285. package/dist/src/realtime/runtime.js +263 -0
  286. package/dist/src/realtime/tickets.d.ts +15 -0
  287. package/dist/src/realtime/tickets.js +38 -0
  288. package/dist/src/realtime/writer.d.ts +15 -0
  289. package/dist/src/realtime/writer.js +78 -0
  290. package/dist/src/share/share-config.js +0 -1
  291. package/dist/src/share/site-share-config.js +0 -1
  292. package/dist/src/storage/sqlite/connector-account-repository.js +0 -1
  293. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +37 -0
  294. package/dist/src/storage/sqlite/context-consolidation-repository.js +64 -0
  295. package/dist/src/storage/sqlite/endpoint-principal-repository.d.ts +17 -0
  296. package/dist/src/storage/sqlite/endpoint-principal-repository.js +54 -0
  297. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.d.ts +25 -0
  298. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +42 -0
  299. package/dist/src/storage/sqlite/fts.d.ts +2 -0
  300. package/dist/src/storage/sqlite/fts.js +29 -1
  301. package/dist/src/storage/sqlite/index.d.ts +6 -6
  302. package/dist/src/storage/sqlite/index.js +7 -7
  303. package/dist/src/storage/sqlite/knowledge-repository.d.ts +9 -2
  304. package/dist/src/storage/sqlite/knowledge-repository.js +58 -10
  305. package/dist/src/storage/sqlite/memory-records-repository.d.ts +7 -56
  306. package/dist/src/storage/sqlite/memory-records-repository.js +68 -218
  307. package/dist/src/storage/sqlite/migrations/109_endpoint_principals.sql +14 -0
  308. package/dist/src/storage/sqlite/migrations/110_session_input_origin.sql +43 -0
  309. package/dist/src/storage/sqlite/migrations/111_endpoint_tool_invocations.sql +18 -0
  310. package/dist/src/storage/sqlite/migrations/112_endpoint_instance_bindings.sql +8 -0
  311. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +54 -0
  312. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +193 -0
  313. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +6 -0
  314. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +38 -0
  315. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +110 -0
  316. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  317. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  318. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  319. package/dist/src/storage/sqlite/schema.js +1 -1
  320. package/dist/src/storage/sqlite/schema.sql +0 -20
  321. package/dist/src/storage/sqlite/session-input-repository.d.ts +3 -0
  322. package/dist/src/storage/sqlite/session-input-repository.js +5 -3
  323. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +34 -0
  324. package/dist/src/storage/sqlite/user-context-quality-repository.js +74 -0
  325. package/dist/src/storage/sqlite/user-context-repository.d.ts +64 -0
  326. package/dist/src/storage/sqlite/user-context-repository.js +383 -0
  327. package/dist/src/tasks/home-query-service.d.ts +1 -1
  328. package/dist/src/tui/backends/embedded-backend.js +5 -2
  329. package/dist/src/tui/backends/{gateway-sse-backend.d.ts → gateway-realtime-backend.d.ts} +13 -10
  330. package/dist/src/tui/backends/{gateway-sse-backend.js → gateway-realtime-backend.js} +114 -151
  331. package/dist/src/tui/tool-summary.js +1 -7
  332. package/dist/src/tui/tui-agent-events.d.ts +0 -1
  333. package/dist/src/tui/tui-agent-events.js +2 -15
  334. package/dist/src/tui/tui-backend.d.ts +4 -4
  335. package/dist/src/tui/tui-run-state.js +0 -4
  336. package/dist/src/tui/tui-startup-resources.js +1 -2
  337. package/dist/src/tui/tui-types.d.ts +2 -9
  338. package/dist/src/tui/tui-types.js +0 -1
  339. package/dist/src/tui/tui.js +5 -5
  340. package/dist/src/tunnel/gateway-lifecycle.d.ts +1 -1
  341. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  342. package/dist/src/user-context/config.d.ts +17 -210
  343. package/dist/src/user-context/config.js +19 -85
  344. package/dist/src/user-context/consolidation.d.ts +26 -0
  345. package/dist/src/user-context/consolidation.js +115 -0
  346. package/dist/src/user-context/domain.d.ts +75 -0
  347. package/dist/src/user-context/domain.js +4 -0
  348. package/dist/src/user-context/manual-understanding.d.ts +7 -14
  349. package/dist/src/user-context/manual-understanding.js +19 -49
  350. package/dist/src/{agent/memory/context → user-context}/planner.d.ts +5 -6
  351. package/dist/src/user-context/planner.js +311 -0
  352. package/dist/src/user-context/relationship-continuity.d.ts +3 -6
  353. package/dist/src/user-context/relationship-continuity.js +39 -32
  354. package/dist/src/user-context/sources/catalog.d.ts +2 -0
  355. package/dist/src/user-context/sources/catalog.js +149 -0
  356. package/dist/src/user-context/sources/index.d.ts +3 -0
  357. package/dist/src/user-context/sources/index.js +3 -0
  358. package/dist/src/user-context/sources/repository.d.ts +40 -0
  359. package/dist/src/user-context/sources/repository.js +164 -0
  360. package/dist/src/user-context/sources/types.d.ts +83 -0
  361. package/dist/src/user-context/understandingQuality.d.ts +5 -0
  362. package/dist/src/user-context/understandingQuality.js +44 -0
  363. package/dist/src/utils/logger/log-stream.d.ts +3 -10
  364. package/dist/src/utils/logger/log-stream.js +2 -73
  365. package/dist/src/utils/logger/pino-record.d.ts +1 -1
  366. package/dist/src/utils/logger/streams.js +1 -1
  367. package/dist/src/work-discovery/analyzer.d.ts +4 -3
  368. package/dist/src/work-discovery/analyzer.js +21 -16
  369. package/dist/src/work-discovery/incremental-repository.js +42 -40
  370. package/dist/src/work-discovery/index.js +3 -3
  371. package/dist/src/work-discovery/service.d.ts +7 -7
  372. package/dist/src/work-discovery/service.js +241 -190
  373. package/dist/src/work-discovery/source-repository.js +42 -53
  374. package/dist/src/work-discovery/types.d.ts +2 -14
  375. package/package.json +5 -7
  376. package/dist/gateway/static/root/assets/agents-C6OV-gMm.js +0 -2
  377. package/dist/gateway/static/root/assets/apps-page-Ci14lDeO.js +0 -1
  378. package/dist/gateway/static/root/assets/automations-page-Q1xmb4Rh.js +0 -6
  379. package/dist/gateway/static/root/assets/browser-settings-page-DbowrHXD.js +0 -8
  380. package/dist/gateway/static/root/assets/capabilities-settings-panel-DoZPFdKF.js +0 -7
  381. package/dist/gateway/static/root/assets/capability-presets-api-Dn-7MMEo.js +0 -1
  382. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Bt8Hnx0h.js +0 -1
  383. package/dist/gateway/static/root/assets/channels-settings-Bpsebsru.js +0 -1
  384. package/dist/gateway/static/root/assets/channels-status-swr-DFmdYRE5.js +0 -1
  385. package/dist/gateway/static/root/assets/connector-logo-TRr9ybf6.js +0 -1
  386. package/dist/gateway/static/root/assets/connectors-page-Tg5kl22i.js +0 -2
  387. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +0 -2
  388. package/dist/gateway/static/root/assets/extension-settings-page-C9ag5tb5.js +0 -1
  389. package/dist/gateway/static/root/assets/gateway-settings-9g8uIry9.js +0 -1
  390. package/dist/gateway/static/root/assets/heartbeat-settings-fl1oC_-5.js +0 -1
  391. package/dist/gateway/static/root/assets/home-page-Bao9jq_z.js +0 -3
  392. package/dist/gateway/static/root/assets/index-Cl5n1f_U.css +0 -1
  393. package/dist/gateway/static/root/assets/index-OJgiMh07.js +0 -223
  394. package/dist/gateway/static/root/assets/local-app-workbench-page-B69NvtvH.js +0 -2
  395. package/dist/gateway/static/root/assets/locale-store-D6hs74o5.js +0 -1
  396. package/dist/gateway/static/root/assets/logs-page-Cq3cABqg.js +0 -7
  397. package/dist/gateway/static/root/assets/messages-D02NNLCZ.js +0 -3
  398. package/dist/gateway/static/root/assets/notes-workbench-BOZfJFhE.js +0 -4
  399. package/dist/gateway/static/root/assets/product-delivery-C8JbSj5Y.js +0 -1
  400. package/dist/gateway/static/root/assets/project-detail-page-TSKFb2tN.js +0 -1
  401. package/dist/gateway/static/root/assets/projects-page-BokeBrTT.js +0 -1
  402. package/dist/gateway/static/root/assets/remote-access-hub-C56anxCX.js +0 -1
  403. package/dist/gateway/static/root/assets/segmented-styles-BL8oLBEp.js +0 -1
  404. package/dist/gateway/static/root/assets/sessions-page-C7TQADrD.js +0 -1
  405. package/dist/gateway/static/root/assets/settings-advanced-gate-BDOPKeAX.js +0 -1
  406. package/dist/gateway/static/root/assets/settings-form-section-zxo5ZGOu.js +0 -1
  407. package/dist/gateway/static/root/assets/settings-page-BUPSIa9P.js +0 -1
  408. package/dist/gateway/static/root/assets/setup-status-panel-BRg766eW.js +0 -1
  409. package/dist/gateway/static/root/assets/shares-settings-DhEAviQ_.js +0 -1
  410. package/dist/gateway/static/root/assets/skill-reload-api-Ct7AV8ls.js +0 -1
  411. package/dist/gateway/static/root/assets/skills-page-DoVuprZm.js +0 -2
  412. package/dist/gateway/static/root/assets/time-picker-BGk_Tbsj.js +0 -1
  413. package/dist/gateway/static/root/assets/use-save-bar-registration-5aVSjTjO.js +0 -1
  414. package/dist/gateway/static/root/assets/user-context-page-B9K41qmy.js +0 -1
  415. package/dist/gateway/static/root/assets/work-discovery-page-BBVnRHju.js +0 -1
  416. package/dist/gateway/static/root/assets/workflows-page-Bs_tYfst.js +0 -11
  417. package/dist/src/agent/code-intelligence/binary.d.ts +0 -15
  418. package/dist/src/agent/code-intelligence/binary.js +0 -372
  419. package/dist/src/agent/code-intelligence/index.d.ts +0 -4
  420. package/dist/src/agent/code-intelligence/index.js +0 -4
  421. package/dist/src/agent/code-intelligence/runtime.d.ts +0 -34
  422. package/dist/src/agent/code-intelligence/runtime.js +0 -280
  423. package/dist/src/agent/code-intelligence/tool-gating.d.ts +0 -5
  424. package/dist/src/agent/code-intelligence/tool-gating.js +0 -6
  425. package/dist/src/agent/code-intelligence/tools.d.ts +0 -6
  426. package/dist/src/agent/code-intelligence/tools.js +0 -266
  427. package/dist/src/agent/code-intelligence/types.d.ts +0 -22
  428. package/dist/src/agent/memory/context/planner.js +0 -286
  429. package/dist/src/agent/memory/dreaming/config.d.ts +0 -48
  430. package/dist/src/agent/memory/dreaming/config.js +0 -98
  431. package/dist/src/agent/memory/dreaming/constants.d.ts +0 -12
  432. package/dist/src/agent/memory/dreaming/constants.js +0 -18
  433. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +0 -19
  434. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -152
  435. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -16
  436. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -115
  437. package/dist/src/agent/memory/dreaming/preview.d.ts +0 -23
  438. package/dist/src/agent/memory/dreaming/preview.js +0 -52
  439. package/dist/src/agent/memory/dreaming/promotion-lifecycle.d.ts +0 -16
  440. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -44
  441. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +0 -19
  442. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -150
  443. package/dist/src/agent/memory/dreaming/runner.d.ts +0 -10
  444. package/dist/src/agent/memory/dreaming/runner.js +0 -78
  445. package/dist/src/agent/memory/dreaming/schedule.d.ts +0 -23
  446. package/dist/src/agent/memory/dreaming/schedule.js +0 -38
  447. package/dist/src/agent/memory/dreaming/scope.d.ts +0 -11
  448. package/dist/src/agent/memory/dreaming/scope.js +0 -33
  449. package/dist/src/agent/memory/dreaming/utils.d.ts +0 -3
  450. package/dist/src/agent/memory/dreaming/utils.js +0 -31
  451. package/dist/src/agent/streaming/reasoning-visibility-sse.d.ts +0 -15
  452. package/dist/src/gateway/agent-run-relay.d.ts +0 -19
  453. package/dist/src/gateway/agent-run-relay.js +0 -169
  454. package/dist/src/gateway/hono/routes/memory.d.ts +0 -3
  455. package/dist/src/gateway/hono/routes/memory.js +0 -460
  456. package/dist/src/gateway/hono/sse.d.ts +0 -53
  457. package/dist/src/gateway/hono/sse.js +0 -207
  458. package/dist/src/gateway/service/sse-hub.d.ts +0 -10
  459. package/dist/src/gateway/service/sse-hub.js +0 -53
  460. package/dist/src/storage/sqlite/dreaming-repository.d.ts +0 -61
  461. package/dist/src/storage/sqlite/dreaming-repository.js +0 -88
  462. package/dist/src/storage/sqlite/memory-readiness-repository.d.ts +0 -7
  463. package/dist/src/storage/sqlite/memory-readiness-repository.js +0 -30
  464. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +0 -27
  465. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -107
  466. package/dist/src/storage/sqlite/user-claims-repository.d.ts +0 -101
  467. package/dist/src/storage/sqlite/user-claims-repository.js +0 -241
  468. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +0 -3
  469. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -32
  470. package/dist/src/tui/sse-consumer.d.ts +0 -15
  471. package/dist/src/tui/sse-consumer.js +0 -73
  472. package/dist/src/user-context/context-compiler.d.ts +0 -27
  473. package/dist/src/user-context/context-compiler.js +0 -48
  474. package/dist/src/user-context/import.d.ts +0 -12
  475. package/dist/src/user-context/import.js +0 -51
  476. package/dist/src/user-context/memory-episode-evaluator.d.ts +0 -32
  477. package/dist/src/user-context/memory-episode-evaluator.js +0 -35
  478. package/dist/src/user-context/memory-readiness.d.ts +0 -33
  479. package/dist/src/user-context/memory-readiness.js +0 -41
  480. package/dist/src/user-context/memory-use-audit.d.ts +0 -10
  481. package/dist/src/user-context/memory-use-audit.js +0 -26
  482. package/dist/src/user-context/personal-playbook.d.ts +0 -11
  483. package/dist/src/user-context/personal-playbook.js +0 -41
  484. package/dist/src/user-context/profile.d.ts +0 -37
  485. package/dist/src/user-context/profile.js +0 -163
  486. package/dist/src/user-context/projection.d.ts +0 -120
  487. package/dist/src/user-context/projection.js +0 -262
  488. package/dist/src/user-context/source-recommendations.d.ts +0 -13
  489. package/dist/src/user-context/source-recommendations.js +0 -85
  490. /package/dist/src/{agent/code-intelligence → user-context/sources}/types.js +0 -0
@@ -0,0 +1,193 @@
1
+ CREATE TABLE user_profiles (
2
+ principal_id TEXT PRIMARY KEY,
3
+ call_name TEXT NOT NULL DEFAULT '',
4
+ pronouns TEXT NOT NULL DEFAULT '',
5
+ timezone TEXT NOT NULL DEFAULT '',
6
+ locale TEXT NOT NULL DEFAULT '',
7
+ accessibility_json TEXT NOT NULL DEFAULT '{}',
8
+ created_at INTEGER NOT NULL,
9
+ updated_at INTEGER NOT NULL
10
+ );
11
+
12
+ CREATE TABLE user_understandings (
13
+ understanding_id TEXT PRIMARY KEY,
14
+ principal_id TEXT NOT NULL,
15
+ kind TEXT NOT NULL CHECK (kind IN (
16
+ 'preference', 'boundary', 'relationship', 'routine', 'current_state',
17
+ 'long_term_goal', 'project_context', 'task_lesson', 'derived_insight'
18
+ )),
19
+ canonical_key TEXT NOT NULL,
20
+ status TEXT NOT NULL CHECK (status IN (
21
+ 'candidate', 'active', 'needs_review', 'stale', 'archived', 'rejected'
22
+ )),
23
+ scope_type TEXT NOT NULL CHECK (scope_type IN ('global', 'workspace', 'project', 'session')),
24
+ scope_id TEXT,
25
+ explicitness TEXT NOT NULL CHECK (explicitness IN ('explicit', 'observed', 'inferred')),
26
+ durability TEXT NOT NULL CHECK (durability IN ('ephemeral', 'durable', 'recurring')),
27
+ sensitivity TEXT NOT NULL CHECK (sensitivity IN ('normal', 'personal', 'secret', 'regulated')),
28
+ disclosure_policy TEXT NOT NULL CHECK (disclosure_policy IN ('silent', 'referenceable', 'ask_before_reference')),
29
+ confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
30
+ valid_from INTEGER,
31
+ valid_to INTEGER,
32
+ expires_at INTEGER,
33
+ review_at INTEGER,
34
+ current_version_id TEXT NOT NULL REFERENCES user_understanding_versions(version_id)
35
+ DEFERRABLE INITIALLY DEFERRED,
36
+ conflict_group_id TEXT,
37
+ supersedes_id TEXT REFERENCES user_understandings(understanding_id) ON DELETE SET NULL,
38
+ created_at INTEGER NOT NULL,
39
+ updated_at INTEGER NOT NULL
40
+ );
41
+
42
+ CREATE TABLE user_understanding_versions (
43
+ version_id TEXT PRIMARY KEY,
44
+ understanding_id TEXT NOT NULL REFERENCES user_understandings(understanding_id) ON DELETE CASCADE,
45
+ statement TEXT NOT NULL,
46
+ payload_json TEXT NOT NULL DEFAULT '{}',
47
+ created_by TEXT NOT NULL CHECK (created_by IN ('user', 'runtime', 'connector', 'consolidation')),
48
+ change_reason TEXT NOT NULL,
49
+ created_at INTEGER NOT NULL
50
+ );
51
+
52
+ CREATE INDEX idx_user_understandings_principal_status
53
+ ON user_understandings(principal_id, status, updated_at DESC);
54
+ CREATE UNIQUE INDEX idx_user_understandings_active_canonical
55
+ ON user_understandings(principal_id, canonical_key, scope_type, COALESCE(scope_id, ''))
56
+ WHERE status IN ('candidate', 'active', 'needs_review', 'stale');
57
+ CREATE INDEX idx_user_understandings_scope
58
+ ON user_understandings(principal_id, scope_type, scope_id, status);
59
+ CREATE INDEX idx_user_understanding_versions_item
60
+ ON user_understanding_versions(understanding_id, created_at DESC);
61
+
62
+ CREATE VIRTUAL TABLE user_understanding_fts USING fts5(
63
+ statement,
64
+ understanding_id UNINDEXED,
65
+ version_id UNINDEXED,
66
+ tokenize='unicode61'
67
+ );
68
+
69
+ CREATE TABLE collaboration_rules (
70
+ rule_id TEXT PRIMARY KEY,
71
+ principal_id TEXT NOT NULL,
72
+ category TEXT NOT NULL CHECK (category IN ('communication', 'execution', 'boundary', 'routine', 'proactive')),
73
+ status TEXT NOT NULL CHECK (status IN ('active', 'disabled', 'archived')),
74
+ priority INTEGER NOT NULL DEFAULT 100,
75
+ scope_type TEXT NOT NULL CHECK (scope_type IN ('global', 'workspace', 'project', 'session')),
76
+ scope_id TEXT,
77
+ conditions_json TEXT NOT NULL DEFAULT '{}',
78
+ current_revision_id TEXT NOT NULL REFERENCES collaboration_rule_revisions(revision_id)
79
+ DEFERRABLE INITIALLY DEFERRED,
80
+ created_at INTEGER NOT NULL,
81
+ updated_at INTEGER NOT NULL
82
+ );
83
+
84
+ CREATE TABLE collaboration_rule_revisions (
85
+ revision_id TEXT PRIMARY KEY,
86
+ rule_id TEXT NOT NULL REFERENCES collaboration_rules(rule_id) ON DELETE CASCADE,
87
+ statement TEXT NOT NULL,
88
+ created_by TEXT NOT NULL CHECK (created_by = 'user'),
89
+ created_at INTEGER NOT NULL
90
+ );
91
+
92
+ CREATE INDEX idx_collaboration_rules_principal_status
93
+ ON collaboration_rules(principal_id, status, priority, updated_at DESC);
94
+
95
+ CREATE TABLE context_evidence (
96
+ evidence_id TEXT PRIMARY KEY,
97
+ principal_id TEXT NOT NULL,
98
+ source_type TEXT NOT NULL CHECK (source_type IN ('conversation', 'connector', 'user', 'runtime')),
99
+ source_instance_id TEXT,
100
+ source_ref TEXT NOT NULL,
101
+ redacted_excerpt TEXT,
102
+ trust_level TEXT NOT NULL CHECK (trust_level IN ('owner', 'trusted', 'untrusted')),
103
+ observed_at INTEGER NOT NULL,
104
+ created_at INTEGER NOT NULL
105
+ );
106
+
107
+ CREATE UNIQUE INDEX idx_context_evidence_source
108
+ ON context_evidence(principal_id, source_type, COALESCE(source_instance_id, ''), source_ref);
109
+
110
+ CREATE TABLE understanding_evidence_links (
111
+ version_id TEXT NOT NULL REFERENCES user_understanding_versions(version_id) ON DELETE CASCADE,
112
+ evidence_id TEXT NOT NULL REFERENCES context_evidence(evidence_id) ON DELETE CASCADE,
113
+ relation TEXT NOT NULL CHECK (relation IN ('supports', 'contradicts', 'supersedes')),
114
+ confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
115
+ PRIMARY KEY (version_id, evidence_id, relation)
116
+ );
117
+
118
+ CREATE TABLE context_runs (
119
+ context_run_id TEXT PRIMARY KEY,
120
+ principal_id TEXT NOT NULL,
121
+ turn_id TEXT NOT NULL,
122
+ session_key TEXT NOT NULL,
123
+ query TEXT NOT NULL,
124
+ budget INTEGER NOT NULL,
125
+ duration_ms INTEGER NOT NULL DEFAULT 0,
126
+ created_at INTEGER NOT NULL,
127
+ UNIQUE (turn_id)
128
+ );
129
+
130
+ CREATE TABLE context_run_items (
131
+ context_run_id TEXT NOT NULL REFERENCES context_runs(context_run_id) ON DELETE CASCADE,
132
+ object_type TEXT NOT NULL CHECK (object_type IN ('profile', 'rule', 'understanding')),
133
+ object_id TEXT NOT NULL,
134
+ version_id TEXT,
135
+ decision TEXT NOT NULL CHECK (decision IN (
136
+ 'selected', 'irrelevant', 'expired', 'scope_mismatch', 'sensitive',
137
+ 'needs_consent', 'budget_exceeded', 'conflicted', 'disabled'
138
+ )),
139
+ reason TEXT NOT NULL,
140
+ content_snapshot TEXT NOT NULL,
141
+ source_label TEXT NOT NULL,
142
+ rank INTEGER,
143
+ score REAL,
144
+ injected_chars INTEGER NOT NULL DEFAULT 0,
145
+ PRIMARY KEY (context_run_id, object_type, object_id)
146
+ );
147
+
148
+ CREATE TABLE context_feedback (
149
+ feedback_id TEXT PRIMARY KEY,
150
+ turn_id TEXT NOT NULL,
151
+ context_run_id TEXT NOT NULL REFERENCES context_runs(context_run_id) ON DELETE CASCADE,
152
+ object_type TEXT,
153
+ object_id TEXT,
154
+ rating TEXT NOT NULL CHECK (rating IN ('helpful', 'irrelevant', 'wrong', 'stale', 'sensitive')),
155
+ reason TEXT,
156
+ created_at INTEGER NOT NULL,
157
+ UNIQUE (turn_id, object_type, object_id)
158
+ );
159
+
160
+ CREATE UNIQUE INDEX idx_context_feedback_response
161
+ ON context_feedback(turn_id)
162
+ WHERE object_type IS NULL AND object_id IS NULL;
163
+
164
+ CREATE TABLE context_suppressions (
165
+ suppression_id TEXT PRIMARY KEY,
166
+ principal_id TEXT NOT NULL,
167
+ canonical_key TEXT NOT NULL,
168
+ scope_type TEXT NOT NULL CHECK (scope_type IN ('global', 'workspace', 'project', 'session')),
169
+ scope_id TEXT,
170
+ reason TEXT NOT NULL,
171
+ expires_at INTEGER,
172
+ created_at INTEGER NOT NULL
173
+ );
174
+
175
+ CREATE UNIQUE INDEX idx_context_suppressions_identity
176
+ ON context_suppressions(principal_id, canonical_key, scope_type, COALESCE(scope_id, ''));
177
+
178
+ CREATE TABLE context_consents (
179
+ consent_id TEXT PRIMARY KEY,
180
+ principal_id TEXT NOT NULL,
181
+ understanding_id TEXT NOT NULL REFERENCES user_understandings(understanding_id) ON DELETE CASCADE,
182
+ session_key TEXT NOT NULL,
183
+ purpose TEXT NOT NULL,
184
+ status TEXT NOT NULL CHECK (status IN ('pending', 'granted', 'denied', 'consumed')),
185
+ grant_scope TEXT CHECK (grant_scope IN ('once', 'session', 'always')),
186
+ expires_at INTEGER,
187
+ created_at INTEGER NOT NULL,
188
+ updated_at INTEGER NOT NULL
189
+ );
190
+
191
+ CREATE UNIQUE INDEX idx_context_consents_pending
192
+ ON context_consents(understanding_id, session_key)
193
+ WHERE status = 'pending';
@@ -0,0 +1,6 @@
1
+ DROP TABLE IF EXISTS memory_reference_consents;
2
+ DROP TABLE IF EXISTS user_profile_prompt_state;
3
+ DROP TABLE IF EXISTS user_claim_evidence;
4
+ DROP TABLE IF EXISTS user_claims;
5
+ DROP TABLE IF EXISTS user_entity_handles;
6
+ DROP TABLE IF EXISTS user_entities;
@@ -0,0 +1,38 @@
1
+ DELETE FROM automations
2
+ WHERE automation_id LIKE 'system-user-context-dreaming:%'
3
+ OR automation_id IN ('system-dreaming-light', 'system-dreaming-deep', 'system-dreaming-rem');
4
+
5
+ DELETE FROM memory_records
6
+ WHERE tags_json LIKE '%"user-understanding"%';
7
+
8
+ DELETE FROM memory_trace_events
9
+ WHERE provider_id = 'user-understanding' OR phase = 'understanding';
10
+
11
+ DROP TABLE IF EXISTS dreaming_decisions;
12
+ DROP TABLE IF EXISTS dreaming_runs;
13
+
14
+ CREATE TABLE context_consolidation_runs (
15
+ run_id TEXT PRIMARY KEY,
16
+ trigger_kind TEXT NOT NULL CHECK (trigger_kind IN ('schedule', 'manual')),
17
+ status TEXT NOT NULL CHECK (status IN ('running', 'completed', 'failed')),
18
+ reason TEXT,
19
+ metrics_json TEXT NOT NULL DEFAULT '{}',
20
+ started_at INTEGER NOT NULL,
21
+ completed_at INTEGER
22
+ );
23
+
24
+ CREATE INDEX idx_context_consolidation_runs_started
25
+ ON context_consolidation_runs(started_at DESC);
26
+
27
+ CREATE TABLE context_consolidation_decisions (
28
+ decision_id TEXT PRIMARY KEY,
29
+ run_id TEXT NOT NULL REFERENCES context_consolidation_runs(run_id) ON DELETE CASCADE,
30
+ understanding_id TEXT REFERENCES user_understandings(understanding_id) ON DELETE SET NULL,
31
+ action TEXT NOT NULL CHECK (action IN ('needs_review', 'stale')),
32
+ reason_code TEXT NOT NULL,
33
+ evidence_count INTEGER NOT NULL DEFAULT 0,
34
+ created_at INTEGER NOT NULL
35
+ );
36
+
37
+ CREATE INDEX idx_context_consolidation_decisions_run
38
+ ON context_consolidation_decisions(run_id, created_at);
@@ -0,0 +1,110 @@
1
+ ALTER TABLE user_profiles ADD COLUMN role TEXT NOT NULL DEFAULT '';
2
+ ALTER TABLE user_profiles ADD COLUMN primary_goal TEXT NOT NULL DEFAULT '';
3
+
4
+ CREATE TABLE understanding_source_grants (
5
+ grant_id TEXT PRIMARY KEY,
6
+ source_key TEXT NOT NULL UNIQUE,
7
+ adapter_id TEXT NOT NULL,
8
+ category TEXT NOT NULL CHECK (category IN (
9
+ 'files', 'recent_documents', 'calendar', 'tasks', 'notes',
10
+ 'mail', 'messages', 'code_activity'
11
+ )),
12
+ platform TEXT NOT NULL CHECK (platform IN ('darwin', 'win32', 'linux', 'all')),
13
+ display_name TEXT NOT NULL,
14
+ status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'revoked')),
15
+ access_mode TEXT NOT NULL CHECK (access_mode IN ('once', 'continuous')),
16
+ retention_policy TEXT NOT NULL CHECK (retention_policy IN ('metadata_only', 'derived_only', 'bounded_raw')),
17
+ processing_policy TEXT NOT NULL CHECK (processing_policy IN ('local_only', 'remote_allowed')),
18
+ config_json TEXT NOT NULL DEFAULT '{}',
19
+ checkpoint_json TEXT NOT NULL DEFAULT '{}',
20
+ last_collected_at INTEGER,
21
+ created_at INTEGER NOT NULL,
22
+ updated_at INTEGER NOT NULL
23
+ );
24
+
25
+ CREATE INDEX idx_understanding_source_grants_status
26
+ ON understanding_source_grants(status, category, updated_at DESC);
27
+
28
+ CREATE TABLE understanding_source_runs (
29
+ run_id TEXT PRIMARY KEY,
30
+ grant_id TEXT NOT NULL,
31
+ kind TEXT NOT NULL CHECK (kind IN ('preview', 'bootstrap', 'incremental', 'fingerprint')),
32
+ status TEXT NOT NULL CHECK (status IN ('queued', 'running', 'completed', 'partial', 'failed', 'canceled')),
33
+ cursor_before TEXT,
34
+ cursor_after TEXT,
35
+ items_seen INTEGER NOT NULL DEFAULT 0,
36
+ metadata_json TEXT NOT NULL DEFAULT '{}',
37
+ error_message TEXT,
38
+ started_at INTEGER NOT NULL,
39
+ completed_at INTEGER,
40
+ FOREIGN KEY (grant_id) REFERENCES understanding_source_grants(grant_id) ON DELETE CASCADE
41
+ );
42
+
43
+ CREATE INDEX idx_understanding_source_runs_grant
44
+ ON understanding_source_runs(grant_id, started_at DESC);
45
+ CREATE INDEX idx_understanding_source_runs_status
46
+ ON understanding_source_runs(status, started_at ASC);
47
+
48
+ CREATE TABLE user_focuses (
49
+ focus_id TEXT PRIMARY KEY,
50
+ canonical_key TEXT NOT NULL UNIQUE,
51
+ title TEXT NOT NULL,
52
+ summary TEXT NOT NULL,
53
+ horizon TEXT NOT NULL CHECK (horizon IN ('current', 'ongoing', 'long_term')),
54
+ status TEXT NOT NULL CHECK (status IN ('candidate', 'active', 'paused', 'completed', 'rejected')),
55
+ confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),
56
+ project_id TEXT,
57
+ evidence_refs_json TEXT NOT NULL DEFAULT '[]',
58
+ source_run_id TEXT,
59
+ created_at INTEGER NOT NULL,
60
+ updated_at INTEGER NOT NULL,
61
+ FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE SET NULL,
62
+ FOREIGN KEY (source_run_id) REFERENCES understanding_source_runs(run_id) ON DELETE SET NULL
63
+ );
64
+
65
+ CREATE INDEX idx_user_focuses_status
66
+ ON user_focuses(status, horizon, updated_at DESC);
67
+
68
+ -- Replace the work-discovery-only grant foreign key with the unified grant model.
69
+ CREATE TABLE work_understanding_evidence_v117 (
70
+ evidence_id TEXT PRIMARY KEY,
71
+ investigation_id TEXT NOT NULL,
72
+ source_grant_id TEXT,
73
+ project_id TEXT,
74
+ source_type TEXT NOT NULL CHECK (source_type IN (
75
+ 'file', 'git', 'project_metadata', 'understanding_source', 'session', 'user_statement'
76
+ )),
77
+ source_ref TEXT NOT NULL,
78
+ observation TEXT NOT NULL,
79
+ content_hash TEXT,
80
+ observed_at INTEGER,
81
+ collected_at INTEGER NOT NULL,
82
+ sensitivity TEXT NOT NULL DEFAULT 'normal' CHECK (sensitivity IN ('normal', 'restricted')),
83
+ FOREIGN KEY (investigation_id) REFERENCES work_understanding_investigations(investigation_id) ON DELETE CASCADE,
84
+ FOREIGN KEY (source_grant_id) REFERENCES understanding_source_grants(grant_id) ON DELETE SET NULL,
85
+ FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE SET NULL
86
+ );
87
+
88
+ INSERT INTO work_understanding_evidence_v117 (
89
+ evidence_id, investigation_id, source_grant_id, project_id, source_type,
90
+ source_ref, observation, content_hash, observed_at, collected_at, sensitivity
91
+ )
92
+ SELECT
93
+ evidence_id, investigation_id, NULL, project_id,
94
+ CASE source_type
95
+ WHEN 'personal_context' THEN 'understanding_source'
96
+ ELSE source_type
97
+ END,
98
+ source_ref, observation, content_hash, observed_at, collected_at, sensitivity
99
+ FROM work_understanding_evidence;
100
+
101
+ DROP TABLE work_understanding_evidence;
102
+ ALTER TABLE work_understanding_evidence_v117 RENAME TO work_understanding_evidence;
103
+
104
+ CREATE INDEX idx_work_understanding_evidence_investigation
105
+ ON work_understanding_evidence(investigation_id, collected_at ASC);
106
+ CREATE INDEX idx_work_understanding_evidence_source
107
+ ON work_understanding_evidence(source_grant_id, source_type, collected_at DESC);
108
+
109
+ DROP TABLE work_discovery_source_refreshes;
110
+ DROP TABLE work_discovery_sources;
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
3
3
  /** Baseline schema version applied from schema.sql on first open. */
4
4
  export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
5
5
  /** Latest schema version this release supports (increment when adding migrations). */
6
- export declare const XOPC_DB_SCHEMA_VERSION = 108;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 117;
7
7
  export declare function resolveMigrationsDir(override?: string): string;
8
8
  /**
9
9
  * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
12
12
  /** Baseline schema version applied from schema.sql on first open. */
13
13
  const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
14
14
  /** Latest schema version this release supports (increment when adding migrations). */
15
- const XOPC_DB_SCHEMA_VERSION = 108;
15
+ const XOPC_DB_SCHEMA_VERSION = 117;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function backupBeforeTaskCutover(db, databasePath) {
18
18
  db.exec("PRAGMA wal_checkpoint(FULL)");
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
57
57
  * Each step runs in its own transaction and updates schema_meta on success.
58
58
  */
59
59
  function applyPendingMigrations(db, options = {}) {
60
- const targetVersion = options.targetVersion ?? 108;
60
+ const targetVersion = options.targetVersion ?? 117;
61
61
  let currentVersion = readSchemaVersion(db);
62
62
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
63
63
  if (currentVersion >= targetVersion) return currentVersion;
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
94
94
  }
95
95
  /** Inspect schema version without mutating the database. */
96
96
  function inspectSchemaMigrationStatus(db, options = {}) {
97
- const appVersion = options.targetVersion ?? 108;
97
+ const appVersion = options.targetVersion ?? 117;
98
98
  const dbVersion = readSchemaVersion(db);
99
99
  if (dbVersion > appVersion) return {
100
100
  dbVersion,
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
19
19
  export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
20
20
 
21
21
  /** Latest schema version this release supports (increment when adding migrations). */
22
- export const XOPC_DB_SCHEMA_VERSION = 108;
22
+ export const XOPC_DB_SCHEMA_VERSION = 117;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -32,7 +32,7 @@ function ensureXopcDatabaseSchema(db, options = {}) {
32
32
  currentVersion = 11;
33
33
  }
34
34
  applyPendingMigrations(db, {
35
- targetVersion: 108,
35
+ targetVersion: 117,
36
36
  databasePath: options.databasePath
37
37
  });
38
38
  }
@@ -756,26 +756,6 @@ CREATE TABLE IF NOT EXISTS goal_session_links (
756
756
  CREATE INDEX IF NOT EXISTS idx_goal_session_links_session
757
757
  ON goal_session_links(session_key, linked_at DESC);
758
758
 
759
- CREATE TABLE IF NOT EXISTS memory_reference_consents (
760
- consent_id TEXT PRIMARY KEY,
761
- record_id TEXT NOT NULL,
762
- session_key TEXT NOT NULL,
763
- purpose TEXT NOT NULL,
764
- status TEXT NOT NULL CHECK (status IN ('pending', 'granted', 'denied', 'consumed')),
765
- grant_scope TEXT CHECK (grant_scope IN ('once', 'session', 'always')),
766
- expires_at INTEGER,
767
- created_at INTEGER NOT NULL,
768
- updated_at INTEGER NOT NULL,
769
- FOREIGN KEY (record_id) REFERENCES memory_records(record_id) ON DELETE CASCADE
770
- );
771
-
772
- CREATE UNIQUE INDEX IF NOT EXISTS idx_memory_reference_consents_pending
773
- ON memory_reference_consents(record_id, session_key)
774
- WHERE status = 'pending';
775
-
776
- CREATE INDEX IF NOT EXISTS idx_memory_reference_consents_resolution
777
- ON memory_reference_consents(record_id, status, session_key, expires_at);
778
-
779
759
  CREATE TABLE IF NOT EXISTS browser_recipes (
780
760
  recipe_id TEXT PRIMARY KEY,
781
761
  revision INTEGER NOT NULL,
@@ -1,3 +1,4 @@
1
+ import { type TurnOrigin } from '@xopcai/endpoint-tools-protocol';
1
2
  export type SessionInputDelivery = 'next' | 'steer';
2
3
  export type SessionInputStatus = 'queued' | 'running' | 'injecting' | 'completed' | 'cancelled' | 'failed' | 'interrupted';
3
4
  export type SessionInput = {
@@ -10,6 +11,7 @@ export type SessionInput = {
10
11
  content: string;
11
12
  attachments?: unknown[];
12
13
  thinking?: string;
14
+ origin: TurnOrigin;
13
15
  position: number;
14
16
  targetRunId?: string;
15
17
  runId?: string;
@@ -37,6 +39,7 @@ export declare function insertSessionInput(input: {
37
39
  content: string;
38
40
  attachments?: unknown[];
39
41
  thinking?: string;
42
+ origin: TurnOrigin;
40
43
  targetRunId?: string;
41
44
  }): SessionInput;
42
45
  export declare function claimNextSessionInput(sessionKey: string, runId: string): SessionInput | undefined;
@@ -1,4 +1,5 @@
1
1
  import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
+ import { turnOriginSchema } from "../../../packages/endpoint-tools-protocol/src/index.js";
2
3
  //#region src/storage/sqlite/session-input-repository.ts
3
4
  function mapInput(row) {
4
5
  return {
@@ -12,6 +13,7 @@ function mapInput(row) {
12
13
  attachments: row.attachments_json ? JSON.parse(row.attachments_json) : void 0,
13
14
  thinking: row.thinking ?? void 0,
14
15
  position: row.position,
16
+ origin: turnOriginSchema.parse(JSON.parse(row.origin_json)),
15
17
  targetRunId: row.target_run_id ?? void 0,
16
18
  runId: row.run_id ?? void 0,
17
19
  version: row.version,
@@ -21,7 +23,7 @@ function mapInput(row) {
21
23
  };
22
24
  }
23
25
  const SELECT_INPUTS = `SELECT id, session_key, client_message_id, requested_delivery,
24
- effective_delivery, status, content, attachments_json, thinking, position,
26
+ effective_delivery, status, content, attachments_json, thinking, origin_json, position,
25
27
  target_run_id, run_id, version, error, created_at_ms, updated_at_ms
26
28
  FROM session_inputs`;
27
29
  function ensureRuntime(db, sessionKey) {
@@ -61,8 +63,8 @@ function insertSessionInput(input) {
61
63
  WHERE session_key = ? AND status IN ('queued','running','injecting','interrupted')`).get(input.sessionKey);
62
64
  db.prepare(`INSERT INTO session_inputs(id, session_key, client_message_id,
63
65
  requested_delivery, effective_delivery, status, content, attachments_json,
64
- thinking, position, target_run_id, version, created_at_ms, updated_at_ms)
65
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)`).run(input.id, input.sessionKey, input.clientMessageId, input.requestedDelivery, input.effectiveDelivery, input.status, input.content, input.attachments ? JSON.stringify(input.attachments) : null, input.thinking ?? null, max.value + 1, input.targetRunId ?? null, now, now);
66
+ thinking, origin_json, position, target_run_id, version, created_at_ms, updated_at_ms)
67
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1, ?, ?)`).run(input.id, input.sessionKey, input.clientMessageId, input.requestedDelivery, input.effectiveDelivery, input.status, input.content, input.attachments ? JSON.stringify(input.attachments) : null, input.thinking ?? null, JSON.stringify(input.origin), max.value + 1, input.targetRunId ?? null, now, now);
66
68
  bumpRevision(db, input.sessionKey);
67
69
  return mapInput(db.prepare(`${SELECT_INPUTS} WHERE id = ?`).get(input.id));
68
70
  });
@@ -0,0 +1,34 @@
1
+ export type UserUnderstandingQualityMetrics = {
2
+ windowDays: number;
3
+ since: string;
4
+ records: {
5
+ total: number;
6
+ candidate: number;
7
+ active: number;
8
+ rejected: number;
9
+ needsReview: number;
10
+ stale: number;
11
+ archived: number;
12
+ agingCandidates: number;
13
+ explicit: number;
14
+ inferred: number;
15
+ averageConfidence: number | null;
16
+ };
17
+ decisions: {
18
+ total: number;
19
+ acceptanceRate: number | null;
20
+ };
21
+ recall: {
22
+ total: number;
23
+ helpful: number;
24
+ notHelpful: number;
25
+ mixed: number;
26
+ irrelevant: number;
27
+ helpfulRate: number | null;
28
+ };
29
+ };
30
+ export declare function summarizeUserUnderstandingQuality(options?: {
31
+ windowDays?: number;
32
+ agingCandidateDays?: number;
33
+ nowMs?: number;
34
+ }): UserUnderstandingQualityMetrics;
@@ -0,0 +1,74 @@
1
+ import { getSqliteDatabase } from "./transaction.js";
2
+ import { USER_CONTEXT_PRINCIPAL_ID } from "../../user-context/domain.js";
3
+ //#region src/storage/sqlite/user-context-quality-repository.ts
4
+ function rate(numerator, denominator) {
5
+ return denominator > 0 ? Math.round(numerator / denominator * 1e4) / 1e4 : null;
6
+ }
7
+ function summarizeUserUnderstandingQuality(options = {}) {
8
+ const nowMs = options.nowMs ?? Date.now();
9
+ const windowDays = Math.max(1, Math.min(365, Math.floor(options.windowDays ?? 30)));
10
+ const sinceMs = nowMs - windowDays * 864e5;
11
+ const agingCutoff = nowMs - Math.max(1, Math.min(windowDays, Math.floor(options.agingCandidateDays ?? 7))) * 864e5;
12
+ const db = getSqliteDatabase();
13
+ const rows = db.prepare(`SELECT status, explicitness, confidence, created_at, updated_at
14
+ FROM user_understandings WHERE principal_id = ?`).all(USER_CONTEXT_PRINCIPAL_ID);
15
+ const records = {
16
+ total: rows.length,
17
+ candidate: 0,
18
+ active: 0,
19
+ rejected: 0,
20
+ needsReview: 0,
21
+ stale: 0,
22
+ archived: 0,
23
+ agingCandidates: 0,
24
+ explicit: 0,
25
+ inferred: 0,
26
+ averageConfidence: rows.length ? Math.round(rows.reduce((sum, row) => sum + row.confidence, 0) / rows.length * 1e4) / 1e4 : null
27
+ };
28
+ for (const row of rows) {
29
+ if (row.status === "candidate") records.candidate += 1;
30
+ if (row.status === "active") records.active += 1;
31
+ if (row.status === "rejected") records.rejected += 1;
32
+ if (row.status === "needs_review") records.needsReview += 1;
33
+ if (row.status === "stale") records.stale += 1;
34
+ if (row.status === "archived") records.archived += 1;
35
+ if (row.status === "candidate" && row.created_at <= agingCutoff) records.agingCandidates += 1;
36
+ if (row.explicitness === "explicit") records.explicit += 1;
37
+ if (row.explicitness === "inferred") records.inferred += 1;
38
+ }
39
+ const recentDecisions = rows.filter((row) => (row.status === "active" || row.status === "rejected") && row.updated_at >= sinceMs);
40
+ const accepted = recentDecisions.filter((row) => row.status === "active").length;
41
+ const feedback = db.prepare(`SELECT DISTINCT f.feedback_id, f.rating
42
+ FROM context_feedback f
43
+ JOIN context_runs r ON r.context_run_id = f.context_run_id
44
+ WHERE f.created_at >= ? AND EXISTS (
45
+ SELECT 1 FROM context_run_items i
46
+ WHERE i.context_run_id = r.context_run_id
47
+ AND i.object_type = 'understanding' AND i.decision = 'selected'
48
+ )`).all(sinceMs);
49
+ const recall = {
50
+ total: feedback.length,
51
+ helpful: feedback.filter((row) => row.rating === "helpful").length,
52
+ notHelpful: feedback.filter((row) => [
53
+ "wrong",
54
+ "stale",
55
+ "sensitive"
56
+ ].includes(row.rating)).length,
57
+ mixed: 0,
58
+ irrelevant: feedback.filter((row) => row.rating === "irrelevant").length,
59
+ helpfulRate: null
60
+ };
61
+ recall.helpfulRate = rate(recall.helpful, recall.total);
62
+ return {
63
+ windowDays,
64
+ since: new Date(sinceMs).toISOString(),
65
+ records,
66
+ decisions: {
67
+ total: recentDecisions.length,
68
+ acceptanceRate: rate(accepted, recentDecisions.length)
69
+ },
70
+ recall
71
+ };
72
+ }
73
+ //#endregion
74
+ export { summarizeUserUnderstandingQuality };
@@ -0,0 +1,64 @@
1
+ import { type CollaborationRule, type ContextEvidence, type PersonalizationItem, type UnderstandingStatus, type UserContextScope, type UserProfile, type UserUnderstanding } from '../../user-context/domain.js';
2
+ export declare function getUserProfile(principalId?: string): UserProfile;
3
+ export declare function updateUserProfile(patch: Partial<Pick<UserProfile, 'callName' | 'role' | 'primaryGoal' | 'pronouns' | 'timezone' | 'locale' | 'accessibility'>>, principalId?: string): UserProfile;
4
+ export type CreateUnderstandingInput = Omit<UserUnderstanding, 'id' | 'versionId' | 'createdAt' | 'updatedAt' | 'statement' | 'payload'> & {
5
+ statement: string;
6
+ payload?: Record<string, unknown>;
7
+ createdBy: 'user' | 'runtime' | 'connector' | 'consolidation';
8
+ changeReason: string;
9
+ };
10
+ export declare function createUnderstanding(input: CreateUnderstandingInput, principalId?: string): UserUnderstanding;
11
+ export declare function getUnderstanding(id: string): UserUnderstanding | undefined;
12
+ export declare function listUnderstandings(statuses?: UnderstandingStatus[], principalId?: string): UserUnderstanding[];
13
+ export declare function reviseUnderstanding(id: string, statement: string, options: {
14
+ payload?: Record<string, unknown>;
15
+ canonicalKey?: string;
16
+ explicitness?: UserUnderstanding['explicitness'];
17
+ confidence?: number;
18
+ changeReason: string;
19
+ }): UserUnderstanding;
20
+ export declare function setUnderstandingStatus(id: string, status: UnderstandingStatus, confirmation?: {
21
+ explicitness: UserUnderstanding['explicitness'];
22
+ confidence: number;
23
+ }): UserUnderstanding;
24
+ export declare function rejectUnderstanding(id: string, reason: string): UserUnderstanding;
25
+ export declare function deleteUnderstanding(id: string): boolean;
26
+ export declare function isUnderstandingSuppressed(canonicalKey: string, scope: UserContextScope, principalId?: string): boolean;
27
+ export declare function createCollaborationRule(input: Pick<CollaborationRule, 'category' | 'priority' | 'scope' | 'conditions' | 'statement'>, principalId?: string): CollaborationRule;
28
+ export declare function getCollaborationRule(id: string): CollaborationRule | undefined;
29
+ export declare function listCollaborationRules(principalId?: string): CollaborationRule[];
30
+ export declare function reviseCollaborationRule(id: string, statement: string): CollaborationRule;
31
+ export declare function setCollaborationRuleStatus(id: string, status: CollaborationRule['status']): CollaborationRule;
32
+ export declare function deleteCollaborationRule(id: string): boolean;
33
+ export declare function createContextEvidence(input: Omit<ContextEvidence, 'id' | 'createdAt'>, principalId?: string): ContextEvidence;
34
+ export declare function linkUnderstandingEvidence(versionId: string, evidenceId: string, relation: 'supports' | 'contradicts' | 'supersedes', confidence: number): void;
35
+ export declare function listUnderstandingEvidence(understandingId: string, relation?: 'supports' | 'contradicts' | 'supersedes'): ContextEvidence[];
36
+ export declare function recordContextRun(input: {
37
+ turnId: string;
38
+ sessionKey: string;
39
+ query: string;
40
+ budget: number;
41
+ durationMs: number;
42
+ items: PersonalizationItem[];
43
+ principalId?: string;
44
+ }): string;
45
+ export declare function getTurnPersonalization(turnId: string): {
46
+ runId: string;
47
+ items: PersonalizationItem[];
48
+ } | undefined;
49
+ export declare function recordContextFeedback(input: {
50
+ turnId: string;
51
+ runId: string;
52
+ objectType?: PersonalizationItem['objectType'];
53
+ objectId?: string;
54
+ rating: 'helpful' | 'irrelevant' | 'wrong' | 'stale' | 'sensitive';
55
+ reason?: string;
56
+ }): void;
57
+ export declare function hasContextConsent(understandingId: string, sessionKey: string): boolean;
58
+ export declare function consumeContextConsent(understandingId: string, sessionKey: string): 'granted' | 'denied' | 'missing';
59
+ export declare function ensureContextConsent(understandingId: string, sessionKey: string, purpose: string): {
60
+ id: string;
61
+ understandingId: string;
62
+ purpose: string;
63
+ };
64
+ export declare function decideContextConsent(id: string, decision: 'once' | 'session' | 'always' | 'deny'): boolean;