@xopcai/xopc 0.0.189 → 0.0.190

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/README.md +0 -3
  2. package/README.zh-CN.md +0 -3
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/telegram/xopc.extension.json +1 -1
  5. package/dist/gateway/static/root/assets/{activity-store-DTFKTPs8.js → activity-store-DstnJCS5.js} +1 -1
  6. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DqO25Qe5.js → agent-avatar-dicebear-9vAbkroX.js} +1 -1
  7. package/dist/gateway/static/root/assets/agents-D1t4SfMQ.js +68 -0
  8. package/dist/gateway/static/root/assets/{api-DWeXfwVU.js → api-BTL9kayv.js} +1 -1
  9. package/dist/gateway/static/root/assets/{app-management-settings-panel-BRpV8PXG.js → app-management-settings-panel-DkFeIdBf.js} +1 -1
  10. package/dist/gateway/static/root/assets/{appearance-settings-3ntKM9nQ.js → appearance-settings-Bxs8Fpaj.js} +1 -1
  11. package/dist/gateway/static/root/assets/apps-page-Cgrgu5OW.js +1 -0
  12. package/dist/gateway/static/root/assets/{archive-plugin-Df7Ycj_7.js → archive-plugin-Ch2RmLCC.js} +1 -1
  13. package/dist/gateway/static/root/assets/{attachment-load-UHgfZYtj.js → attachment-load-BhMQM_Ky.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-page-CtJxstKh.js +6 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-BJah99wE.js → binary-plugins-D6CqlymH.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-DNlY5KqF.js → block-editor-ClL6HEg9.js} +48 -48
  17. package/dist/gateway/static/root/assets/browser-settings-page-DW99iDmD.js +8 -0
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-vyUfdzAd.js → browser-workflow-inputs-BYy48VhN.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-C1cKZjx-.js → browser-workflows-page-zgLibuMH.js} +2 -2
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-CHUrT9EB.js +7 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-Cycrv0YV.js +1 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-BGG2kpJB.js → channel-recipient-api-BThDGiO3.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-V96gPUAU.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +1 -0
  26. package/dist/gateway/static/root/assets/connectors-api-DS9ED-EL.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-BhlyQoQI.js +2 -0
  28. package/dist/gateway/static/root/assets/cron-expression-CkgsvhtW.js +2 -0
  29. package/dist/gateway/static/root/assets/{desktop-pet-BUuBEJuP.js → desktop-pet-Cv8rGhYW.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-BGfVIJM3.js → desktop-pet-settings-CIeJdwfV.js} +1 -1
  31. package/dist/gateway/static/root/assets/{directory-picker-path-field-DrQFfHH_.js → directory-picker-path-field-D8jXEiAY.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-CEnIFOX-.js → extension-debug-page-CCZ9u6TZ.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-CCqHbexs.js → extension-page-CV36ILRG.js} +1 -1
  34. package/dist/gateway/static/root/assets/extension-settings-page-IyQrSILY.js +1 -0
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CgUE2Ii1.js → gateway-config-api-D4_r5iJM.js} +1 -1
  36. package/dist/gateway/static/root/assets/gateway-settings-CYlntpBH.js +1 -0
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-DxhKNiCF.js → gateway-startup-retry-EO9mKvzE.js} +1 -1
  38. package/dist/gateway/static/root/assets/heartbeat-settings-D4SyWob8.js +1 -0
  39. package/dist/gateway/static/root/assets/home-page-B2Kagoh8.js +3 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-DCFdc-HD.js → image-generation-api-Bu7PyVSh.js} +1 -1
  41. package/dist/gateway/static/root/assets/index-CYT5DOzr.js +150 -0
  42. package/dist/gateway/static/root/assets/index-D6e3tPL-.css +1 -0
  43. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Bf2VLtXW.js → keyboard-shortcuts-settings-BMhCuVBZ.js} +1 -1
  44. package/dist/gateway/static/root/assets/local-app-workbench-page-BHYbFjqy.js +2 -0
  45. package/dist/gateway/static/root/assets/{local-apps-page-Ca1RuI13.js → local-apps-page-ijIe7_y2.js} +1 -1
  46. package/dist/gateway/static/root/assets/locale-store-deR2zRaE.js +1 -0
  47. package/dist/gateway/static/root/assets/logs-page-IIn8Tess.js +2 -0
  48. package/dist/gateway/static/root/assets/{management-settings-B3Eop1zn.js → management-settings--V_fovKD.js} +1 -1
  49. package/dist/gateway/static/root/assets/{markdown-split-BGOYjgnM.js → markdown-split-Dt9-in6W.js} +1 -1
  50. package/dist/gateway/static/root/assets/{media-plugins-CT0txyM4.js → media-plugins-B3pj_iO0.js} +1 -1
  51. package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +3 -0
  52. package/dist/gateway/static/root/assets/{notes-page-DfKgAe78.js → notes-page-DZ366lIT.js} +1 -1
  53. package/dist/gateway/static/root/assets/notes-workbench-S2sBVOLw.js +4 -0
  54. package/dist/gateway/static/root/assets/{page-tabs-DNrbCgmC.js → page-tabs-C5ge434C.js} +1 -1
  55. package/dist/gateway/static/root/assets/{preview-open-alternatives-BTqViDOR.js → preview-open-alternatives-BFa9DgSV.js} +1 -1
  56. package/dist/gateway/static/root/assets/{product-open-page-C_2L4_Iu.js → product-open-page-Dc9CcWdu.js} +1 -1
  57. package/dist/gateway/static/root/assets/project-detail-page-BilzoCJ7.js +1 -0
  58. package/dist/gateway/static/root/assets/projects-page-BoQUyacP.js +1 -0
  59. package/dist/gateway/static/root/assets/remote-access-hub-DUyUaCRF.js +1 -0
  60. package/dist/gateway/static/root/assets/{schema-form-BFLfkDGG.js → schema-form-B84DckWe.js} +1 -1
  61. package/dist/gateway/static/root/assets/sessions-page-Dzxlq1F0.js +1 -0
  62. package/dist/gateway/static/root/assets/settings-advanced-gate-TzwlZxU6.js +1 -0
  63. package/dist/gateway/static/root/assets/settings-form-section-Dp9itvdy.js +1 -0
  64. package/dist/gateway/static/root/assets/{settings-loading-skeleton-C9a-EbTZ.js → settings-loading-skeleton-CCtlhoy7.js} +1 -1
  65. package/dist/gateway/static/root/assets/{settings-page-DI9qDH5x.js → settings-page-DQmMKf8r.js} +1 -1
  66. package/dist/gateway/static/root/assets/{settings-page-layout-D-LWQdI5.js → settings-page-layout-EQIOJa_L.js} +1 -1
  67. package/dist/gateway/static/root/assets/{setup-status-panel-CJwmPvgs.js → setup-status-panel-Cwi-SPja.js} +1 -1
  68. package/dist/gateway/static/root/assets/{share-preview-page-BKSMG9r5.js → share-preview-page-C4_B2jvf.js} +1 -1
  69. package/dist/gateway/static/root/assets/shares-settings-CkyuGlZK.js +1 -0
  70. package/dist/gateway/static/root/assets/skill-reload-api-BJCePQK5.js +1 -0
  71. package/dist/gateway/static/root/assets/skills-page-BYWLfmJi.js +2 -0
  72. package/dist/gateway/static/root/assets/{skills-page.utils-zsz2HIlZ.js → skills-page.utils-Jhm24i4h.js} +1 -1
  73. package/dist/gateway/static/root/assets/{system-settings-panel-IWNDBI1O.js → system-settings-panel-Dpx2ags2.js} +1 -1
  74. package/dist/gateway/static/root/assets/{task-detail-page-CgtK02kP.js → task-detail-page-DLAdxI6e.js} +1 -1
  75. package/dist/gateway/static/root/assets/{theme-store-BkJe7UDo.js → theme-store-DnBOcGXi.js} +1 -1
  76. package/dist/gateway/static/root/assets/{typed-models-lib-C07LGthO.js → typed-models-lib-DULmTHUB.js} +1 -1
  77. package/dist/gateway/static/root/assets/use-autosave-BrjVk5VH.js +1 -0
  78. package/dist/gateway/static/root/assets/user-context-page-9AAFpGAL.js +1 -0
  79. package/dist/gateway/static/root/assets/{voice-api-key-field-Boue1D46.js → voice-api-key-field-BISTPfq_.js} +1 -1
  80. package/dist/gateway/static/root/assets/{work-discovery-overlay-bbmvCmc8.js → work-discovery-overlay-Wr-uF7VA.js} +1 -1
  81. package/dist/gateway/static/root/assets/work-discovery-page-BWds95sL.js +1 -0
  82. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DlHv-GZC.js → workflow-run-setup-panel-DHqHP8_6.js} +2 -2
  83. package/dist/gateway/static/root/assets/workflows-page-0b4_DFHr.js +11 -0
  84. package/dist/gateway/static/root/index.html +7 -7
  85. package/dist/package.js +1 -1
  86. package/dist/packages/gateway-contract/src/tool-activity.js +0 -36
  87. package/dist/packages/realtime-client/src/index.js +105 -48
  88. package/dist/packages/realtime-protocol/src/index.js +6 -1
  89. package/dist/src/agent/agent-manager.d.ts +0 -1
  90. package/dist/src/agent/agent-manager.js +6 -13
  91. package/dist/src/agent/background-review/coordinator.js +1 -1
  92. package/dist/src/agent/background-review/run-background-review.js +5 -7
  93. package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +0 -1
  94. package/dist/src/agent/bootstrap/bootstrap-cache.js +3 -4
  95. package/dist/src/agent/bootstrap/bootstrap-files.d.ts +0 -4
  96. package/dist/src/agent/bootstrap/bootstrap-files.js +3 -4
  97. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -4
  98. package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +0 -1
  99. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -14
  100. package/dist/src/agent/bootstrap/types.d.ts +1 -1
  101. package/dist/src/agent/context/workspace-templates/SOUL.md +1 -1
  102. package/dist/src/agent/memory/builtin-provider.d.ts +2 -4
  103. package/dist/src/agent/memory/builtin-provider.js +35 -15
  104. package/dist/src/agent/memory/context/types.d.ts +3 -1
  105. package/dist/src/agent/memory/create-memory-manager.js +2 -0
  106. package/dist/src/agent/memory/index.d.ts +1 -1
  107. package/dist/src/agent/memory/index.js +1 -1
  108. package/dist/src/agent/memory/manager.d.ts +9 -1
  109. package/dist/src/agent/memory/manager.js +39 -9
  110. package/dist/src/agent/memory/memory-config.d.ts +1 -1
  111. package/dist/src/agent/memory/memory-config.js +1 -1
  112. package/dist/src/agent/memory/source-origin.js +0 -2
  113. package/dist/src/agent/memory/types.d.ts +5 -1
  114. package/dist/src/agent/memory/understanding/service.d.ts +10 -10
  115. package/dist/src/agent/memory/understanding/service.js +108 -176
  116. package/dist/src/agent/memory/understanding/types.d.ts +7 -8
  117. package/dist/src/agent/memory/user-context-coordinator.d.ts +2 -1
  118. package/dist/src/agent/memory/user-context-coordinator.js +27 -41
  119. package/dist/src/agent/orchestration/agent-orchestrator.js +4 -7
  120. package/dist/src/agent/prompt/sections/memory-skills.js +4 -4
  121. package/dist/src/agent/prompt/sections/tooling.js +0 -10
  122. package/dist/src/agent/prompt/service-prompt-builder.d.ts +0 -1
  123. package/dist/src/agent/prompt/service-prompt-builder.js +4 -33
  124. package/dist/src/agent/prompt/system-prompt.js +1 -2
  125. package/dist/src/agent/service/direct-turn-helpers.js +1 -1
  126. package/dist/src/agent/service.d.ts +1 -2
  127. package/dist/src/agent/service.js +4 -17
  128. package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +1 -1
  129. package/dist/src/agent/tools/dreaming-tool.d.ts +0 -2
  130. package/dist/src/agent/tools/dreaming-tool.js +13 -38
  131. package/dist/src/agent/tools/factory.d.ts +0 -3
  132. package/dist/src/agent/tools/factory.js +1 -10
  133. package/dist/src/agent/tools/index.d.ts +0 -1
  134. package/dist/src/agent/tools/index.js +1 -2
  135. package/dist/src/agent/tools/memory-tool.js +1 -1
  136. package/dist/src/agent/workspace-runtime/registry.d.ts +3 -5
  137. package/dist/src/agent/workspace-runtime/registry.js +2 -15
  138. package/dist/src/agent-manifest/schema.d.ts +17 -17
  139. package/dist/src/agent-runtime/index.js +1 -1
  140. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  141. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  142. package/dist/src/automations/domain/validation.d.ts +28 -28
  143. package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
  144. package/dist/src/chat-commands/builtins/understanding.js +2 -5
  145. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  146. package/dist/src/cli/commands/init.js +3 -22
  147. package/dist/src/cli/templates.js +1 -1
  148. package/dist/src/config/index.js +3 -3
  149. package/dist/src/config/paths.d.ts +0 -5
  150. package/dist/src/config/paths.js +2 -11
  151. package/dist/src/config/schema.d.ts +24 -117
  152. package/dist/src/config/schema.js +9 -39
  153. package/dist/src/connectors/learning-coordinator.js +75 -3
  154. package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
  155. package/dist/src/gateway/agent-builtin-tools.js +0 -5
  156. package/dist/src/gateway/agents-admin.d.ts +0 -7
  157. package/dist/src/gateway/agents-admin.js +3 -32
  158. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +3 -3
  159. package/dist/src/gateway/dreaming-automation-reconciler.js +48 -88
  160. package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
  161. package/dist/src/gateway/hono/lib/config-payload.js +3 -1
  162. package/dist/src/gateway/hono/oauth-async.d.ts +1 -0
  163. package/dist/src/gateway/hono/oauth-async.js +17 -2
  164. package/dist/src/gateway/hono/routes/agents.js +1 -33
  165. package/dist/src/gateway/hono/routes/config-patch/misc.js +17 -1
  166. package/dist/src/gateway/hono/routes/connectors.js +13 -12
  167. package/dist/src/gateway/hono/routes/index.js +2 -2
  168. package/dist/src/gateway/hono/routes/lazy-bundles.js +1 -5
  169. package/dist/src/gateway/hono/routes/status.js +0 -7
  170. package/dist/src/gateway/hono/routes/understanding-sources.d.ts +3 -0
  171. package/dist/src/gateway/hono/routes/understanding-sources.js +203 -0
  172. package/dist/src/gateway/hono/routes/work-discovery.d.ts +2 -0
  173. package/dist/src/gateway/hono/routes/work-discovery.js +3 -134
  174. package/dist/src/gateway/hono/routes/you.d.ts +0 -22
  175. package/dist/src/gateway/hono/routes/you.js +234 -1118
  176. package/dist/src/gateway/service/config-coordinator.d.ts +1 -1
  177. package/dist/src/gateway/service/run-gateway-agent.js +2 -4
  178. package/dist/src/knowledge/connected-knowledge-pipeline.js +1 -1
  179. package/dist/src/knowledge/connected-understanding-pipeline.d.ts +2 -4
  180. package/dist/src/knowledge/connected-understanding-pipeline.js +31 -81
  181. package/dist/src/knowledge/index.js +2 -2
  182. package/dist/src/knowledge/people-graph.d.ts +22 -25
  183. package/dist/src/knowledge/people-graph.js +76 -43
  184. package/dist/src/proactive/execution/context.js +8 -13
  185. package/dist/src/realtime/broker.d.ts +1 -0
  186. package/dist/src/realtime/broker.js +19 -2
  187. package/dist/src/realtime/runtime.js +6 -1
  188. package/dist/src/storage/sqlite/connector-account-repository.js +0 -1
  189. package/dist/src/storage/sqlite/context-consolidation-repository.d.ts +37 -0
  190. package/dist/src/storage/sqlite/context-consolidation-repository.js +64 -0
  191. package/dist/src/storage/sqlite/fts.d.ts +2 -0
  192. package/dist/src/storage/sqlite/fts.js +29 -1
  193. package/dist/src/storage/sqlite/index.d.ts +4 -6
  194. package/dist/src/storage/sqlite/index.js +5 -7
  195. package/dist/src/storage/sqlite/knowledge-repository.d.ts +9 -2
  196. package/dist/src/storage/sqlite/knowledge-repository.js +58 -10
  197. package/dist/src/storage/sqlite/memory-records-repository.d.ts +7 -56
  198. package/dist/src/storage/sqlite/memory-records-repository.js +68 -218
  199. package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +54 -0
  200. package/dist/src/storage/sqlite/migrations/114_user_context_domain.sql +193 -0
  201. package/dist/src/storage/sqlite/migrations/115_remove_legacy_user_context.sql +6 -0
  202. package/dist/src/storage/sqlite/migrations/116_structured_context_consolidation.sql +38 -0
  203. package/dist/src/storage/sqlite/migrations/117_unified_understanding_sources.sql +110 -0
  204. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  205. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  206. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  207. package/dist/src/storage/sqlite/schema.js +1 -1
  208. package/dist/src/storage/sqlite/schema.sql +0 -20
  209. package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +34 -0
  210. package/dist/src/storage/sqlite/user-context-quality-repository.js +74 -0
  211. package/dist/src/storage/sqlite/user-context-repository.d.ts +64 -0
  212. package/dist/src/storage/sqlite/user-context-repository.js +383 -0
  213. package/dist/src/tui/tool-summary.js +1 -7
  214. package/dist/src/tui/tui-startup-resources.js +1 -2
  215. package/dist/src/user-context/config.d.ts +17 -210
  216. package/dist/src/user-context/config.js +19 -85
  217. package/dist/src/user-context/consolidation.d.ts +26 -0
  218. package/dist/src/user-context/consolidation.js +115 -0
  219. package/dist/src/user-context/domain.d.ts +75 -0
  220. package/dist/src/user-context/domain.js +4 -0
  221. package/dist/src/user-context/manual-understanding.d.ts +7 -14
  222. package/dist/src/user-context/manual-understanding.js +19 -54
  223. package/dist/src/{agent/memory/context → user-context}/planner.d.ts +5 -6
  224. package/dist/src/user-context/planner.js +311 -0
  225. package/dist/src/user-context/relationship-continuity.d.ts +3 -6
  226. package/dist/src/user-context/relationship-continuity.js +39 -32
  227. package/dist/src/user-context/sources/catalog.d.ts +2 -0
  228. package/dist/src/user-context/sources/catalog.js +149 -0
  229. package/dist/src/user-context/sources/index.d.ts +3 -0
  230. package/dist/src/user-context/sources/index.js +3 -0
  231. package/dist/src/user-context/sources/repository.d.ts +40 -0
  232. package/dist/src/user-context/sources/repository.js +164 -0
  233. package/dist/src/user-context/sources/types.d.ts +83 -0
  234. package/dist/src/work-discovery/analyzer.d.ts +4 -3
  235. package/dist/src/work-discovery/analyzer.js +21 -16
  236. package/dist/src/work-discovery/incremental-repository.js +42 -40
  237. package/dist/src/work-discovery/index.js +3 -3
  238. package/dist/src/work-discovery/service.d.ts +7 -7
  239. package/dist/src/work-discovery/service.js +241 -190
  240. package/dist/src/work-discovery/source-repository.js +42 -53
  241. package/dist/src/work-discovery/types.d.ts +2 -14
  242. package/package.json +3 -8
  243. package/dist/gateway/static/root/assets/agents-BvdqdER9.js +0 -2
  244. package/dist/gateway/static/root/assets/apps-page-nKLsfy6C.js +0 -1
  245. package/dist/gateway/static/root/assets/automations-page-Dh5bdZiN.js +0 -6
  246. package/dist/gateway/static/root/assets/browser-settings-page-CRJ_nAuh.js +0 -8
  247. package/dist/gateway/static/root/assets/capabilities-settings-panel-DeQR5BZt.js +0 -7
  248. package/dist/gateway/static/root/assets/capability-presets-api-D7tkhDMv.js +0 -1
  249. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D7uK3q1p.js +0 -1
  250. package/dist/gateway/static/root/assets/channels-settings-Bw6Dniyq.js +0 -1
  251. package/dist/gateway/static/root/assets/channels-status-swr-BrUTz4uU.js +0 -1
  252. package/dist/gateway/static/root/assets/connector-logo-8YU53RUT.js +0 -1
  253. package/dist/gateway/static/root/assets/connectors-page-k9tMiOL5.js +0 -2
  254. package/dist/gateway/static/root/assets/cron-expression-B3B1eqnr.js +0 -2
  255. package/dist/gateway/static/root/assets/extension-settings-page-DEZw_7zN.js +0 -1
  256. package/dist/gateway/static/root/assets/gateway-settings-Dg8qCiIp.js +0 -1
  257. package/dist/gateway/static/root/assets/heartbeat-settings-27tRzDEo.js +0 -1
  258. package/dist/gateway/static/root/assets/home-page-VA511kMr.js +0 -3
  259. package/dist/gateway/static/root/assets/index-BvR-i-m6.js +0 -216
  260. package/dist/gateway/static/root/assets/index-zybP34zk.css +0 -1
  261. package/dist/gateway/static/root/assets/local-app-workbench-page-CaJq4-wV.js +0 -2
  262. package/dist/gateway/static/root/assets/locale-store-DUW5YE3R.js +0 -1
  263. package/dist/gateway/static/root/assets/logs-page-BLTCg69e.js +0 -2
  264. package/dist/gateway/static/root/assets/messages-CMjnbdbn.js +0 -3
  265. package/dist/gateway/static/root/assets/notes-workbench-Bp1w9UM1.js +0 -4
  266. package/dist/gateway/static/root/assets/project-detail-page-CZmbPDQN.js +0 -1
  267. package/dist/gateway/static/root/assets/projects-page-D5pzqfm5.js +0 -1
  268. package/dist/gateway/static/root/assets/remote-access-hub-CC-XhVGI.js +0 -1
  269. package/dist/gateway/static/root/assets/segmented-styles-BL8oLBEp.js +0 -1
  270. package/dist/gateway/static/root/assets/sessions-page-B2eTLVDV.js +0 -1
  271. package/dist/gateway/static/root/assets/settings-advanced-gate-CRuZ_bl0.js +0 -1
  272. package/dist/gateway/static/root/assets/settings-form-section-C4GXGeA4.js +0 -1
  273. package/dist/gateway/static/root/assets/shares-settings-YzSDS4G_.js +0 -1
  274. package/dist/gateway/static/root/assets/skill-reload-api-CwOo8zZk.js +0 -1
  275. package/dist/gateway/static/root/assets/skills-page-xd1cgSGN.js +0 -2
  276. package/dist/gateway/static/root/assets/time-picker-CstQ___Y.js +0 -1
  277. package/dist/gateway/static/root/assets/use-save-bar-registration-CQYE0l6z.js +0 -1
  278. package/dist/gateway/static/root/assets/user-context-page-BnQAWS_B.js +0 -1
  279. package/dist/gateway/static/root/assets/work-discovery-page-CAszL1y8.js +0 -1
  280. package/dist/gateway/static/root/assets/workflows-page-DxGzo3-x.js +0 -11
  281. package/dist/src/agent/code-intelligence/binary.d.ts +0 -15
  282. package/dist/src/agent/code-intelligence/binary.js +0 -372
  283. package/dist/src/agent/code-intelligence/index.d.ts +0 -4
  284. package/dist/src/agent/code-intelligence/index.js +0 -4
  285. package/dist/src/agent/code-intelligence/runtime.d.ts +0 -34
  286. package/dist/src/agent/code-intelligence/runtime.js +0 -280
  287. package/dist/src/agent/code-intelligence/tool-gating.d.ts +0 -5
  288. package/dist/src/agent/code-intelligence/tool-gating.js +0 -6
  289. package/dist/src/agent/code-intelligence/tools.d.ts +0 -6
  290. package/dist/src/agent/code-intelligence/tools.js +0 -266
  291. package/dist/src/agent/code-intelligence/types.d.ts +0 -22
  292. package/dist/src/agent/memory/context/planner.js +0 -286
  293. package/dist/src/agent/memory/dreaming/config.d.ts +0 -48
  294. package/dist/src/agent/memory/dreaming/config.js +0 -98
  295. package/dist/src/agent/memory/dreaming/constants.d.ts +0 -12
  296. package/dist/src/agent/memory/dreaming/constants.js +0 -18
  297. package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +0 -19
  298. package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -152
  299. package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -16
  300. package/dist/src/agent/memory/dreaming/light-sweep.js +0 -115
  301. package/dist/src/agent/memory/dreaming/preview.d.ts +0 -23
  302. package/dist/src/agent/memory/dreaming/preview.js +0 -52
  303. package/dist/src/agent/memory/dreaming/promotion-lifecycle.d.ts +0 -16
  304. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -44
  305. package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +0 -19
  306. package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -150
  307. package/dist/src/agent/memory/dreaming/runner.d.ts +0 -10
  308. package/dist/src/agent/memory/dreaming/runner.js +0 -78
  309. package/dist/src/agent/memory/dreaming/schedule.d.ts +0 -23
  310. package/dist/src/agent/memory/dreaming/schedule.js +0 -38
  311. package/dist/src/agent/memory/dreaming/scope.d.ts +0 -11
  312. package/dist/src/agent/memory/dreaming/scope.js +0 -33
  313. package/dist/src/agent/memory/dreaming/utils.d.ts +0 -3
  314. package/dist/src/agent/memory/dreaming/utils.js +0 -31
  315. package/dist/src/gateway/hono/routes/memory.d.ts +0 -3
  316. package/dist/src/gateway/hono/routes/memory.js +0 -460
  317. package/dist/src/storage/sqlite/dreaming-repository.d.ts +0 -61
  318. package/dist/src/storage/sqlite/dreaming-repository.js +0 -88
  319. package/dist/src/storage/sqlite/memory-readiness-repository.d.ts +0 -7
  320. package/dist/src/storage/sqlite/memory-readiness-repository.js +0 -30
  321. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +0 -27
  322. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -107
  323. package/dist/src/storage/sqlite/user-claims-repository.d.ts +0 -101
  324. package/dist/src/storage/sqlite/user-claims-repository.js +0 -241
  325. package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +0 -3
  326. package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -32
  327. package/dist/src/user-context/actionableInsights.d.ts +0 -14
  328. package/dist/src/user-context/actionableInsights.js +0 -34
  329. package/dist/src/user-context/context-compiler.d.ts +0 -27
  330. package/dist/src/user-context/context-compiler.js +0 -48
  331. package/dist/src/user-context/import.d.ts +0 -12
  332. package/dist/src/user-context/import.js +0 -51
  333. package/dist/src/user-context/memory-episode-evaluator.d.ts +0 -32
  334. package/dist/src/user-context/memory-episode-evaluator.js +0 -35
  335. package/dist/src/user-context/memory-readiness.d.ts +0 -33
  336. package/dist/src/user-context/memory-readiness.js +0 -41
  337. package/dist/src/user-context/memory-use-audit.d.ts +0 -10
  338. package/dist/src/user-context/memory-use-audit.js +0 -26
  339. package/dist/src/user-context/personal-playbook.d.ts +0 -11
  340. package/dist/src/user-context/personal-playbook.js +0 -41
  341. package/dist/src/user-context/profile.d.ts +0 -37
  342. package/dist/src/user-context/profile.js +0 -163
  343. package/dist/src/user-context/projection.d.ts +0 -120
  344. package/dist/src/user-context/projection.js +0 -262
  345. package/dist/src/user-context/source-recommendations.d.ts +0 -13
  346. package/dist/src/user-context/source-recommendations.js +0 -85
  347. /package/dist/src/{agent/code-intelligence → user-context/sources}/types.js +0 -0
@@ -0,0 +1,383 @@
1
+ import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
2
+ import { USER_CONTEXT_PRINCIPAL_ID } from "../../user-context/domain.js";
3
+ import { randomUUID } from "node:crypto";
4
+ //#region src/storage/sqlite/user-context-repository.ts
5
+ const UNDERSTANDING_SELECT = `
6
+ SELECT u.*, v.statement, v.payload_json
7
+ FROM user_understandings u
8
+ JOIN user_understanding_versions v ON v.version_id = u.current_version_id
9
+ `;
10
+ function scopeFromRow(type, id) {
11
+ return id ? {
12
+ type,
13
+ id
14
+ } : { type };
15
+ }
16
+ function understandingFromRow(row) {
17
+ return {
18
+ id: row.understanding_id,
19
+ kind: row.kind,
20
+ canonicalKey: row.canonical_key,
21
+ status: row.status,
22
+ scope: scopeFromRow(row.scope_type, row.scope_id),
23
+ explicitness: row.explicitness,
24
+ durability: row.durability,
25
+ sensitivity: row.sensitivity,
26
+ disclosurePolicy: row.disclosure_policy,
27
+ confidence: row.confidence,
28
+ statement: row.statement,
29
+ payload: JSON.parse(row.payload_json),
30
+ versionId: row.current_version_id,
31
+ ...row.valid_from === null ? {} : { validFrom: row.valid_from },
32
+ ...row.valid_to === null ? {} : { validTo: row.valid_to },
33
+ ...row.expires_at === null ? {} : { expiresAt: row.expires_at },
34
+ ...row.review_at === null ? {} : { reviewAt: row.review_at },
35
+ ...row.conflict_group_id ? { conflictGroupId: row.conflict_group_id } : {},
36
+ ...row.supersedes_id ? { supersedesId: row.supersedes_id } : {},
37
+ createdAt: row.created_at,
38
+ updatedAt: row.updated_at
39
+ };
40
+ }
41
+ function ruleFromRow(row) {
42
+ return {
43
+ id: row.rule_id,
44
+ category: row.category,
45
+ status: row.status,
46
+ priority: row.priority,
47
+ scope: scopeFromRow(row.scope_type, row.scope_id),
48
+ conditions: JSON.parse(row.conditions_json),
49
+ statement: row.statement,
50
+ revisionId: row.current_revision_id,
51
+ createdAt: row.created_at,
52
+ updatedAt: row.updated_at
53
+ };
54
+ }
55
+ function getUserProfile(principalId = USER_CONTEXT_PRINCIPAL_ID) {
56
+ const row = getSqliteDatabase().prepare("SELECT * FROM user_profiles WHERE principal_id = ?").get(principalId);
57
+ if (!row) return {
58
+ callName: "",
59
+ role: "",
60
+ primaryGoal: "",
61
+ pronouns: "",
62
+ timezone: "",
63
+ locale: "",
64
+ accessibility: {},
65
+ createdAt: 0,
66
+ updatedAt: 0
67
+ };
68
+ return {
69
+ callName: row.call_name,
70
+ role: row.role,
71
+ primaryGoal: row.primary_goal,
72
+ pronouns: row.pronouns,
73
+ timezone: row.timezone,
74
+ locale: row.locale,
75
+ accessibility: JSON.parse(row.accessibility_json),
76
+ createdAt: row.created_at,
77
+ updatedAt: row.updated_at
78
+ };
79
+ }
80
+ function updateUserProfile(patch, principalId = USER_CONTEXT_PRINCIPAL_ID) {
81
+ const current = getUserProfile(principalId);
82
+ const now = Date.now();
83
+ const next = {
84
+ ...current,
85
+ ...patch,
86
+ createdAt: current.createdAt || now,
87
+ updatedAt: now
88
+ };
89
+ runSqliteWriteTransaction((db) => {
90
+ db.prepare(`
91
+ INSERT INTO user_profiles (
92
+ principal_id, call_name, role, primary_goal, pronouns, timezone, locale, accessibility_json, created_at, updated_at
93
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
94
+ ON CONFLICT(principal_id) DO UPDATE SET
95
+ call_name = excluded.call_name,
96
+ role = excluded.role,
97
+ primary_goal = excluded.primary_goal,
98
+ pronouns = excluded.pronouns,
99
+ timezone = excluded.timezone,
100
+ locale = excluded.locale,
101
+ accessibility_json = excluded.accessibility_json,
102
+ updated_at = excluded.updated_at
103
+ `).run(principalId, next.callName, next.role, next.primaryGoal, next.pronouns, next.timezone, next.locale, JSON.stringify(next.accessibility), next.createdAt, next.updatedAt);
104
+ });
105
+ return next;
106
+ }
107
+ function createUnderstanding(input, principalId = USER_CONTEXT_PRINCIPAL_ID) {
108
+ const id = randomUUID();
109
+ const versionId = randomUUID();
110
+ const now = Date.now();
111
+ runSqliteWriteTransaction((db) => {
112
+ db.prepare(`INSERT INTO user_understandings (
113
+ understanding_id, principal_id, kind, canonical_key, status, scope_type, scope_id,
114
+ explicitness, durability, sensitivity, disclosure_policy, confidence, valid_from,
115
+ valid_to, expires_at, review_at, current_version_id, conflict_group_id, supersedes_id,
116
+ created_at, updated_at
117
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, principalId, input.kind, input.canonicalKey, input.status, input.scope.type, input.scope.id ?? null, input.explicitness, input.durability, input.sensitivity, input.disclosurePolicy, input.confidence, input.validFrom ?? null, input.validTo ?? null, input.expiresAt ?? null, input.reviewAt ?? null, versionId, input.conflictGroupId ?? null, input.supersedesId ?? null, now, now);
118
+ db.prepare(`INSERT INTO user_understanding_versions (
119
+ version_id, understanding_id, statement, payload_json, created_by, change_reason, created_at
120
+ ) VALUES (?, ?, ?, ?, ?, ?, ?)`).run(versionId, id, input.statement.trim(), JSON.stringify(input.payload ?? {}), input.createdBy, input.changeReason, now);
121
+ db.prepare("INSERT INTO user_understanding_fts (statement, understanding_id, version_id) VALUES (?, ?, ?)").run(input.statement.trim(), id, versionId);
122
+ });
123
+ return getUnderstanding(id);
124
+ }
125
+ function getUnderstanding(id) {
126
+ const row = getSqliteDatabase().prepare(`${UNDERSTANDING_SELECT} WHERE u.understanding_id = ?`).get(id);
127
+ return row ? understandingFromRow(row) : void 0;
128
+ }
129
+ function listUnderstandings(statuses, principalId = USER_CONTEXT_PRINCIPAL_ID) {
130
+ const db = getSqliteDatabase();
131
+ if (!statuses?.length) return db.prepare(`${UNDERSTANDING_SELECT} WHERE u.principal_id = ? ORDER BY u.updated_at DESC`).all(principalId).map(understandingFromRow);
132
+ const placeholders = statuses.map(() => "?").join(", ");
133
+ return db.prepare(`${UNDERSTANDING_SELECT} WHERE u.principal_id = ? AND u.status IN (${placeholders}) ORDER BY u.updated_at DESC`).all(principalId, ...statuses).map(understandingFromRow);
134
+ }
135
+ function reviseUnderstanding(id, statement, options) {
136
+ const current = getUnderstanding(id);
137
+ if (!current) throw new Error(`User understanding not found: ${id}`);
138
+ const versionId = randomUUID();
139
+ const now = Date.now();
140
+ runSqliteWriteTransaction((db) => {
141
+ db.prepare(`INSERT INTO user_understanding_versions (
142
+ version_id, understanding_id, statement, payload_json, created_by, change_reason, created_at
143
+ ) VALUES (?, ?, ?, ?, 'user', ?, ?)`).run(versionId, id, statement.trim(), JSON.stringify(options.payload ?? current.payload), options.changeReason, now);
144
+ db.prepare(`UPDATE user_understandings
145
+ SET current_version_id = ?, canonical_key = ?, explicitness = ?, confidence = ?, updated_at = ?
146
+ WHERE understanding_id = ?`).run(versionId, options.canonicalKey ?? current.canonicalKey, options.explicitness ?? current.explicitness, options.confidence ?? current.confidence, now, id);
147
+ db.prepare("DELETE FROM user_understanding_fts WHERE understanding_id = ?").run(id);
148
+ db.prepare("INSERT INTO user_understanding_fts (statement, understanding_id, version_id) VALUES (?, ?, ?)").run(statement.trim(), id, versionId);
149
+ });
150
+ return getUnderstanding(id);
151
+ }
152
+ function setUnderstandingStatus(id, status, confirmation) {
153
+ const now = Date.now();
154
+ getSqliteDatabase().prepare(`UPDATE user_understandings
155
+ SET status = ?,
156
+ explicitness = COALESCE(?, explicitness),
157
+ confidence = COALESCE(?, confidence),
158
+ updated_at = ?
159
+ WHERE understanding_id = ?`).run(status, confirmation?.explicitness ?? null, confirmation?.confidence ?? null, now, id);
160
+ const result = getUnderstanding(id);
161
+ if (!result) throw new Error(`User understanding not found: ${id}`);
162
+ return result;
163
+ }
164
+ function rejectUnderstanding(id, reason) {
165
+ const current = getUnderstanding(id);
166
+ if (!current) throw new Error(`User understanding not found: ${id}`);
167
+ const now = Date.now();
168
+ runSqliteWriteTransaction((db) => {
169
+ db.prepare("UPDATE user_understandings SET status = 'rejected', updated_at = ? WHERE understanding_id = ?").run(now, id);
170
+ db.prepare(`INSERT INTO context_suppressions (
171
+ suppression_id, principal_id, canonical_key, scope_type, scope_id, reason, expires_at, created_at
172
+ ) VALUES (?, ?, ?, ?, ?, ?, NULL, ?)
173
+ ON CONFLICT DO UPDATE SET reason = excluded.reason, expires_at = NULL`).run(randomUUID(), USER_CONTEXT_PRINCIPAL_ID, current.canonicalKey, current.scope.type, current.scope.id ?? null, reason, now);
174
+ });
175
+ return getUnderstanding(id);
176
+ }
177
+ function deleteUnderstanding(id) {
178
+ return runSqliteWriteTransaction((db) => {
179
+ db.prepare("DELETE FROM user_understanding_fts WHERE understanding_id = ?").run(id);
180
+ return Number(db.prepare("DELETE FROM user_understandings WHERE understanding_id = ?").run(id).changes) > 0;
181
+ });
182
+ }
183
+ function isUnderstandingSuppressed(canonicalKey, scope, principalId = USER_CONTEXT_PRINCIPAL_ID) {
184
+ const row = getSqliteDatabase().prepare(`SELECT 1 FROM context_suppressions
185
+ WHERE principal_id = ? AND canonical_key = ? AND scope_type = ?
186
+ AND COALESCE(scope_id, '') = COALESCE(?, '')
187
+ AND (expires_at IS NULL OR expires_at > ?)`).get(principalId, canonicalKey, scope.type, scope.id ?? null, Date.now());
188
+ return Boolean(row);
189
+ }
190
+ function createCollaborationRule(input, principalId = USER_CONTEXT_PRINCIPAL_ID) {
191
+ const id = randomUUID();
192
+ const revisionId = randomUUID();
193
+ const now = Date.now();
194
+ runSqliteWriteTransaction((db) => {
195
+ db.prepare(`INSERT INTO collaboration_rules (
196
+ rule_id, principal_id, category, status, priority, scope_type, scope_id,
197
+ conditions_json, current_revision_id, created_at, updated_at
198
+ ) VALUES (?, ?, ?, 'active', ?, ?, ?, ?, ?, ?, ?)`).run(id, principalId, input.category, input.priority, input.scope.type, input.scope.id ?? null, JSON.stringify(input.conditions), revisionId, now, now);
199
+ db.prepare(`INSERT INTO collaboration_rule_revisions (
200
+ revision_id, rule_id, statement, created_by, created_at
201
+ ) VALUES (?, ?, ?, 'user', ?)`).run(revisionId, id, input.statement.trim(), now);
202
+ });
203
+ return getCollaborationRule(id);
204
+ }
205
+ function getCollaborationRule(id) {
206
+ const row = getSqliteDatabase().prepare(`SELECT r.*, v.statement FROM collaboration_rules r
207
+ JOIN collaboration_rule_revisions v ON v.revision_id = r.current_revision_id
208
+ WHERE r.rule_id = ?`).get(id);
209
+ return row ? ruleFromRow(row) : void 0;
210
+ }
211
+ function listCollaborationRules(principalId = USER_CONTEXT_PRINCIPAL_ID) {
212
+ return getSqliteDatabase().prepare(`SELECT r.*, v.statement FROM collaboration_rules r
213
+ JOIN collaboration_rule_revisions v ON v.revision_id = r.current_revision_id
214
+ WHERE r.principal_id = ? ORDER BY r.priority ASC, r.updated_at DESC`).all(principalId).map(ruleFromRow);
215
+ }
216
+ function reviseCollaborationRule(id, statement) {
217
+ if (!getCollaborationRule(id)) throw new Error(`Collaboration rule not found: ${id}`);
218
+ const revisionId = randomUUID();
219
+ const now = Date.now();
220
+ runSqliteWriteTransaction((db) => {
221
+ db.prepare(`INSERT INTO collaboration_rule_revisions (
222
+ revision_id, rule_id, statement, created_by, created_at
223
+ ) VALUES (?, ?, ?, 'user', ?)`).run(revisionId, id, statement.trim(), now);
224
+ db.prepare("UPDATE collaboration_rules SET current_revision_id = ?, updated_at = ? WHERE rule_id = ?").run(revisionId, now, id);
225
+ });
226
+ return getCollaborationRule(id);
227
+ }
228
+ function setCollaborationRuleStatus(id, status) {
229
+ getSqliteDatabase().prepare("UPDATE collaboration_rules SET status = ?, updated_at = ? WHERE rule_id = ?").run(status, Date.now(), id);
230
+ const result = getCollaborationRule(id);
231
+ if (!result) throw new Error(`Collaboration rule not found: ${id}`);
232
+ return result;
233
+ }
234
+ function deleteCollaborationRule(id) {
235
+ return Number(getSqliteDatabase().prepare("DELETE FROM collaboration_rules WHERE rule_id = ?").run(id).changes) > 0;
236
+ }
237
+ function createContextEvidence(input, principalId = USER_CONTEXT_PRINCIPAL_ID) {
238
+ const existing = getSqliteDatabase().prepare(`SELECT * FROM context_evidence
239
+ WHERE principal_id = ? AND source_type = ?
240
+ AND COALESCE(source_instance_id, '') = COALESCE(?, '') AND source_ref = ?`).get(principalId, input.sourceType, input.sourceInstanceId ?? null, input.sourceRef);
241
+ if (existing) return {
242
+ id: existing.evidence_id,
243
+ sourceType: existing.source_type,
244
+ ...existing.source_instance_id ? { sourceInstanceId: existing.source_instance_id } : {},
245
+ sourceRef: existing.source_ref,
246
+ ...existing.redacted_excerpt ? { redactedExcerpt: existing.redacted_excerpt } : {},
247
+ trustLevel: existing.trust_level,
248
+ observedAt: existing.observed_at,
249
+ createdAt: existing.created_at
250
+ };
251
+ const evidence = {
252
+ ...input,
253
+ id: randomUUID(),
254
+ createdAt: Date.now()
255
+ };
256
+ getSqliteDatabase().prepare(`INSERT INTO context_evidence (
257
+ evidence_id, principal_id, source_type, source_instance_id, source_ref,
258
+ redacted_excerpt, trust_level, observed_at, created_at
259
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(evidence.id, principalId, evidence.sourceType, evidence.sourceInstanceId ?? null, evidence.sourceRef, evidence.redactedExcerpt ?? null, evidence.trustLevel, evidence.observedAt, evidence.createdAt);
260
+ return evidence;
261
+ }
262
+ function linkUnderstandingEvidence(versionId, evidenceId, relation, confidence) {
263
+ getSqliteDatabase().prepare(`INSERT INTO understanding_evidence_links (
264
+ version_id, evidence_id, relation, confidence
265
+ ) VALUES (?, ?, ?, ?)
266
+ ON CONFLICT(version_id, evidence_id, relation) DO UPDATE SET confidence = excluded.confidence`).run(versionId, evidenceId, relation, confidence);
267
+ }
268
+ function listUnderstandingEvidence(understandingId, relation) {
269
+ return getSqliteDatabase().prepare(`SELECT DISTINCT e.* FROM context_evidence e
270
+ JOIN understanding_evidence_links l ON l.evidence_id = e.evidence_id
271
+ JOIN user_understanding_versions v ON v.version_id = l.version_id
272
+ WHERE v.understanding_id = ? AND (? IS NULL OR l.relation = ?)
273
+ ORDER BY e.observed_at DESC`).all(understandingId, relation ?? null, relation ?? null).map((row) => ({
274
+ id: row.evidence_id,
275
+ sourceType: row.source_type,
276
+ ...row.source_instance_id ? { sourceInstanceId: row.source_instance_id } : {},
277
+ sourceRef: row.source_ref,
278
+ ...row.redacted_excerpt ? { redactedExcerpt: row.redacted_excerpt } : {},
279
+ trustLevel: row.trust_level,
280
+ observedAt: row.observed_at,
281
+ createdAt: row.created_at
282
+ }));
283
+ }
284
+ function recordContextRun(input) {
285
+ const existing = getSqliteDatabase().prepare("SELECT context_run_id FROM context_runs WHERE turn_id = ?").get(input.turnId);
286
+ const runId = existing?.context_run_id ?? randomUUID();
287
+ runSqliteWriteTransaction((db) => {
288
+ if (existing) {
289
+ db.prepare(`UPDATE context_runs SET principal_id = ?, session_key = ?, query = ?, budget = ?, duration_ms = ?
290
+ WHERE context_run_id = ?`).run(input.principalId ?? "local-owner", input.sessionKey, input.query, input.budget, input.durationMs, runId);
291
+ db.prepare("DELETE FROM context_run_items WHERE context_run_id = ?").run(runId);
292
+ } else db.prepare(`INSERT INTO context_runs (
293
+ context_run_id, principal_id, turn_id, session_key, query, budget, duration_ms, created_at
294
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)`).run(runId, input.principalId ?? "local-owner", input.turnId, input.sessionKey, input.query, input.budget, input.durationMs, Date.now());
295
+ const insert = db.prepare(`INSERT INTO context_run_items (
296
+ context_run_id, object_type, object_id, version_id, decision, reason, content_snapshot,
297
+ source_label, rank, score, injected_chars
298
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`);
299
+ for (const item of input.items) insert.run(runId, item.objectType, item.objectId, item.versionId ?? null, item.decision, item.reason, item.content, item.sourceLabel, item.rank ?? null, item.score ?? null, item.injectedChars);
300
+ });
301
+ return runId;
302
+ }
303
+ function getTurnPersonalization(turnId) {
304
+ const db = getSqliteDatabase();
305
+ const run = db.prepare("SELECT context_run_id FROM context_runs WHERE turn_id = ?").get(turnId);
306
+ if (!run) return void 0;
307
+ const rows = db.prepare("SELECT * FROM context_run_items WHERE context_run_id = ? ORDER BY rank ASC, object_type ASC").all(run.context_run_id);
308
+ return {
309
+ runId: run.context_run_id,
310
+ items: rows.map((row) => ({
311
+ objectType: row.object_type,
312
+ objectId: row.object_id,
313
+ ...row.version_id ? { versionId: row.version_id } : {},
314
+ decision: row.decision,
315
+ reason: row.reason,
316
+ content: row.content_snapshot,
317
+ sourceLabel: row.source_label,
318
+ ...row.rank === null ? {} : { rank: row.rank },
319
+ ...row.score === null ? {} : { score: row.score },
320
+ injectedChars: row.injected_chars
321
+ }))
322
+ };
323
+ }
324
+ function recordContextFeedback(input) {
325
+ if (Boolean(input.objectType) !== Boolean(input.objectId)) throw new Error("objectType and objectId must be provided together");
326
+ getSqliteDatabase().prepare(`INSERT INTO context_feedback (
327
+ feedback_id, turn_id, context_run_id, object_type, object_id, rating, reason, created_at
328
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
329
+ ON CONFLICT DO UPDATE SET rating = excluded.rating, reason = excluded.reason, created_at = excluded.created_at`).run(randomUUID(), input.turnId, input.runId, input.objectType ?? null, input.objectId ?? null, input.rating, input.reason ?? null, Date.now());
330
+ }
331
+ function hasContextConsent(understandingId, sessionKey) {
332
+ const now = Date.now();
333
+ return Boolean(getSqliteDatabase().prepare(`SELECT 1 FROM context_consents
334
+ WHERE understanding_id = ? AND status = 'granted'
335
+ AND (grant_scope = 'always' OR session_key = ?)
336
+ AND (expires_at IS NULL OR expires_at > ?)
337
+ LIMIT 1`).get(understandingId, sessionKey, now));
338
+ }
339
+ function consumeContextConsent(understandingId, sessionKey) {
340
+ const db = getSqliteDatabase();
341
+ const now = Date.now();
342
+ const granted = db.prepare(`SELECT consent_id, grant_scope FROM context_consents
343
+ WHERE understanding_id = ? AND status = 'granted'
344
+ AND (grant_scope = 'always' OR session_key = ?)
345
+ AND (expires_at IS NULL OR expires_at > ?)
346
+ ORDER BY CASE grant_scope WHEN 'once' THEN 0 WHEN 'session' THEN 1 ELSE 2 END
347
+ LIMIT 1`).get(understandingId, sessionKey, now);
348
+ if (granted) {
349
+ if (granted.grant_scope === "once") db.prepare("UPDATE context_consents SET status = 'consumed', updated_at = ? WHERE consent_id = ?").run(now, granted.consent_id);
350
+ return "granted";
351
+ }
352
+ return db.prepare(`SELECT 1 FROM context_consents
353
+ WHERE understanding_id = ? AND session_key = ? AND status = 'denied' LIMIT 1`).get(understandingId, sessionKey) ? "denied" : "missing";
354
+ }
355
+ function ensureContextConsent(understandingId, sessionKey, purpose) {
356
+ const db = getSqliteDatabase();
357
+ const existing = db.prepare(`SELECT consent_id, purpose FROM context_consents
358
+ WHERE understanding_id = ? AND session_key = ? AND status = 'pending'`).get(understandingId, sessionKey);
359
+ if (existing) return {
360
+ id: existing.consent_id,
361
+ understandingId,
362
+ purpose: existing.purpose
363
+ };
364
+ const id = randomUUID();
365
+ const now = Date.now();
366
+ db.prepare(`INSERT INTO context_consents (
367
+ consent_id, principal_id, understanding_id, session_key, purpose, status,
368
+ grant_scope, expires_at, created_at, updated_at
369
+ ) VALUES (?, ?, ?, ?, ?, 'pending', NULL, NULL, ?, ?)`).run(id, USER_CONTEXT_PRINCIPAL_ID, understandingId, sessionKey, purpose, now, now);
370
+ return {
371
+ id,
372
+ understandingId,
373
+ purpose
374
+ };
375
+ }
376
+ function decideContextConsent(id, decision) {
377
+ const expiresAt = decision === "once" ? Date.now() + 5 * 6e4 : null;
378
+ const result = getSqliteDatabase().prepare(`UPDATE context_consents
379
+ SET status = ?, grant_scope = ?, expires_at = ?, updated_at = ? WHERE consent_id = ?`).run(decision === "deny" ? "denied" : "granted", decision === "deny" ? null : decision, expiresAt, Date.now(), id);
380
+ return Number(result.changes) > 0;
381
+ }
382
+ //#endregion
383
+ export { consumeContextConsent, createCollaborationRule, createContextEvidence, createUnderstanding, decideContextConsent, deleteCollaborationRule, deleteUnderstanding, ensureContextConsent, getCollaborationRule, getTurnPersonalization, getUnderstanding, getUserProfile, hasContextConsent, isUnderstandingSuppressed, linkUnderstandingEvidence, listCollaborationRules, listUnderstandingEvidence, listUnderstandings, recordContextFeedback, recordContextRun, rejectUnderstanding, reviseCollaborationRule, reviseUnderstanding, setCollaborationRuleStatus, setUnderstandingStatus, updateUserProfile };
@@ -28,7 +28,6 @@ function isReadStyleTool(toolName) {
28
28
  "read",
29
29
  "read_file",
30
30
  "memory_get",
31
- "get_code_snippet",
32
31
  "prepare_diff"
33
32
  ].includes(base);
34
33
  }
@@ -39,13 +38,8 @@ function isSearchStyleTool(toolName) {
39
38
  "grep",
40
39
  "rg",
41
40
  "ripgrep",
42
- "search_code",
43
41
  "file_search",
44
- "list_files",
45
- "search_graph",
46
- "query_graph",
47
- "trace_path",
48
- "get_architecture"
42
+ "list_files"
49
43
  ].includes(base);
50
44
  }
51
45
  function isExecStyleTool(toolName) {
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths-state.js";
2
2
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
3
- import { init_paths, resolveAgentProfileDir, resolveBundledSkillsDir, resolveUserProfilePath } from "../config/paths.js";
3
+ import { init_paths, resolveAgentProfileDir, resolveBundledSkillsDir } from "../config/paths.js";
4
4
  import { resolveBootstrapFilesSync } from "../agent/bootstrap/bootstrap-files.js";
5
5
  import { createSkillConfigManager, isSkillEnabled } from "../agent/skills/config.js";
6
6
  import { loadSkills } from "../agent/skills/index.js";
@@ -20,7 +20,6 @@ function collectTuiStartupResources(config, sessionKey, options = {}) {
20
20
  const workspaceDir = profile.resolvedWorkspacePath || getWorkspacePath(config);
21
21
  const context = uniqueSorted(resolveBootstrapFilesSync({
22
22
  profileDir,
23
- userProfilePath: resolveUserProfilePath(),
24
23
  sessionKey
25
24
  }).filter((file) => !file.missing).map((file) => file.name || basename(file.path)));
26
25
  const skillsConfig = createSkillConfigManager(resolveStateDir()).load();