@xopcai/xopc 0.0.145 → 0.0.147

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 (380) hide show
  1. package/README.md +2 -2
  2. package/dist/browser-ext/manifest.json +1 -1
  3. package/dist/extensions/demo-memory/src/index.js +6 -4
  4. package/dist/extensions/demo-memory/src/index.js.map +1 -1
  5. package/dist/extensions/telegram/xopc.extension.json +1 -1
  6. package/dist/gateway/static/root/assets/Combination-14nmIgxH.js +41 -0
  7. package/dist/gateway/static/root/assets/activity-store-DXeSSlw1.js +1 -0
  8. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BEUxdhZx.js → agent-avatar-dicebear-CFdJKSjY.js} +1 -1
  9. package/dist/gateway/static/root/assets/agents-DKjbRpbA.js +2 -0
  10. package/dist/gateway/static/root/assets/api-Bs69B5zA.js +1 -0
  11. package/dist/gateway/static/root/assets/{app-management-settings-panel-CRHSZJWi.js → app-management-settings-panel-ag1ViXT_.js} +1 -1
  12. package/dist/gateway/static/root/assets/{appearance-settings-BunADYJb.js → appearance-settings-C6iMpwOM.js} +1 -1
  13. package/dist/gateway/static/root/assets/apps-page-CpX3lBFF.js +1 -0
  14. package/dist/gateway/static/root/assets/{archive-plugin-B6vTkH2A.js → archive-plugin-Dwi3mIBy.js} +1 -1
  15. package/dist/gateway/static/root/assets/{attachment-load-BjZXzaNv.js → attachment-load-BaCDoq40.js} +1 -1
  16. package/dist/gateway/static/root/assets/{automation-suggestion-card-ZDA-Stg1.js → automation-suggestion-card-CwqtFgnw.js} +1 -1
  17. package/dist/gateway/static/root/assets/automations-page-DlupOxFQ.js +6 -0
  18. package/dist/gateway/static/root/assets/{binary-plugins-DYZfLvPz.js → binary-plugins-DoAYhsxa.js} +1 -1
  19. package/dist/gateway/static/root/assets/{block-editor-C3MUlYC9.js → block-editor-Bw72pO7S.js} +31 -31
  20. package/dist/gateway/static/root/assets/browser-settings-page-BwLoUBcZ.js +8 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-vdbAR65Q.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-BAsKbJgm.js +2 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-fTlTnWB4.js → channel-recipient-api-rTG26jpV.js} +1 -1
  24. package/dist/gateway/static/root/assets/channels-settings-CxFWy0cE.js +1 -0
  25. package/dist/gateway/static/root/assets/channels-status-swr-OKlqTtKJ.js +1 -0
  26. package/dist/gateway/static/root/assets/{connector-logo-BVFNT2zW.js → connector-logo-DIMP4NWY.js} +1 -1
  27. package/dist/gateway/static/root/assets/connectors-page-BjQQwX62.js +2 -0
  28. package/dist/gateway/static/root/assets/{desktop-pet-_jUmoXd3.js → desktop-pet-kQq2e0BN.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-DwGOy4AQ.js → desktop-pet-settings-B6vtozMY.js} +1 -1
  30. package/dist/gateway/static/root/assets/{directory-picker-path-field-akvF0F-u.js → directory-picker-path-field-Dn5-e3v4.js} +1 -1
  31. package/dist/gateway/static/root/assets/dist-C230izr8.js +1 -0
  32. package/dist/gateway/static/root/assets/dist-CxGUk8J-.js +1 -0
  33. package/dist/gateway/static/root/assets/dreaming-settings-BzwIujPG.js +3 -0
  34. package/dist/gateway/static/root/assets/extension-debug-page-D_e_hsEy.js +1 -0
  35. package/dist/gateway/static/root/assets/{extension-page-CwWktRNz.js → extension-page-D15CWHBd.js} +1 -1
  36. package/dist/gateway/static/root/assets/{extension-settings-page-CuggWOIl.js → extension-settings-page-D4P0n1om.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-config-api-B7sxIbza.js → gateway-config-api-B4qZctjG.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-settings-DIv0eKMf.js → gateway-settings-BvndV7TP.js} +1 -1
  39. package/dist/gateway/static/root/assets/{gateway-startup-retry-DtoLihQE.js → gateway-startup-retry-BpgMunEb.js} +1 -1
  40. package/dist/gateway/static/root/assets/{goal-create-dialog-C4Kw0mfS.js → goal-create-dialog-DrVHKXHq.js} +1 -1
  41. package/dist/gateway/static/root/assets/goal-detail-page-PHlCwv68.js +4 -0
  42. package/dist/gateway/static/root/assets/{goals-config-api-B0jm5JaA.js → goals-config-api-B6YJB_ct.js} +1 -1
  43. package/dist/gateway/static/root/assets/goals-page-Hg9uyO6e.js +2 -0
  44. package/dist/gateway/static/root/assets/{goals-settings-N5_iL7es.js → goals-settings-BROWCIcL.js} +1 -1
  45. package/dist/gateway/static/root/assets/{heartbeat-settings-XzH3lbRR.js → heartbeat-settings-CoCwIOIg.js} +1 -1
  46. package/dist/gateway/static/root/assets/index-CxkNzw3e.js +259 -0
  47. package/dist/gateway/static/root/assets/index-DjCSOyaN.css +1 -0
  48. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-Bm_AIYQ7.js +1 -0
  49. package/dist/gateway/static/root/assets/local-app-workbench-page-BJWFcxwG.js +2 -0
  50. package/dist/gateway/static/root/assets/local-apps-page-BsiZMrEf.js +1 -0
  51. package/dist/gateway/static/root/assets/{locale-store-CiM-D9jA.js → locale-store-Bp8joZck.js} +1 -1
  52. package/dist/gateway/static/root/assets/logs-page-DOmK61ey.js +7 -0
  53. package/dist/gateway/static/root/assets/{markdown-split-5rJx5flj.js → markdown-split-Dy7QpaAz.js} +1 -1
  54. package/dist/gateway/static/root/assets/{media-plugins-DYXccwAd.js → media-plugins-3Lxliy9D.js} +1 -1
  55. package/dist/gateway/static/root/assets/messages-CQGpD-dC.js +5 -0
  56. package/dist/gateway/static/root/assets/models-hub-panel-DGCZom4o.js +2 -0
  57. package/dist/gateway/static/root/assets/{notes-page-BgLyndCO.js → notes-page-BJtT4vSf.js} +1 -1
  58. package/dist/gateway/static/root/assets/notes-workbench-B_bN7cOR.js +4 -0
  59. package/dist/gateway/static/root/assets/{page-tabs-6Al9_sGz.js → page-tabs-DKB6RDre.js} +1 -1
  60. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cm3G72Hv.js → preview-open-alternatives-Br_YhYHp.js} +1 -1
  61. package/dist/gateway/static/root/assets/project-detail-page-Dq8JouJj.js +1 -0
  62. package/dist/gateway/static/root/assets/projects-page-DvfL7fSe.js +1 -0
  63. package/dist/gateway/static/root/assets/remote-access-hub-DqwMXSXP.js +1 -0
  64. package/dist/gateway/static/root/assets/{save-bar-controls-BYtfzu_F.js → save-bar-controls-BgIE9BBh.js} +1 -1
  65. package/dist/gateway/static/root/assets/{schedule-field-CvIRc6yK.js → schedule-field-BXDP-oMz.js} +1 -1
  66. package/dist/gateway/static/root/assets/{schema-form-CQuKx0n7.js → schema-form-Dhv-SmjG.js} +1 -1
  67. package/dist/gateway/static/root/assets/sessions-page-B_mOZkQk.js +1 -0
  68. package/dist/gateway/static/root/assets/settings-advanced-gate-BHGmH6YS.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-collapsible-section-CF3HHM-t.js → settings-collapsible-section-CUTExnlK.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-form-section-CwWjoRN6.js → settings-form-section-CmnDhsf0.js} +1 -1
  71. package/dist/gateway/static/root/assets/{settings-loading-skeleton-aUFmJa13.js → settings-loading-skeleton-B79dq-XY.js} +1 -1
  72. package/dist/gateway/static/root/assets/{settings-page-B2UUU9TF.js → settings-page-Db8uAv3X.js} +1 -1
  73. package/dist/gateway/static/root/assets/{settings-page-layout-DqpbTWqI.js → settings-page-layout-DaFwstQw.js} +1 -1
  74. package/dist/gateway/static/root/assets/setup-status-panel-BUSEj0KK.js +1 -0
  75. package/dist/gateway/static/root/assets/{share-preview-page-BOhlPsS1.js → share-preview-page-Bi00uXzV.js} +1 -1
  76. package/dist/gateway/static/root/assets/shares-settings-DzsTYfuX.js +1 -0
  77. package/dist/gateway/static/root/assets/skill-reload-api-DSsdU081.js +1 -0
  78. package/dist/gateway/static/root/assets/skills-page-DeB1tQZL.js +2 -0
  79. package/dist/gateway/static/root/assets/{system-settings-panel-CWxSvuwD.js → system-settings-panel-Cxaph7hW.js} +1 -1
  80. package/dist/gateway/static/root/assets/{theme-store-C9Dxcppm.js → theme-store-eCTN1RpG.js} +1 -1
  81. package/dist/gateway/static/root/assets/{typed-models-lib-qROAvqTw.js → typed-models-lib-CcZ_tyFY.js} +1 -1
  82. package/dist/gateway/static/root/assets/{use-channel-catalog-DE9cpn4G.js → use-channel-catalog-C4PWbNoi.js} +1 -1
  83. package/dist/gateway/static/root/assets/user-context-page-QTVMx_hG.js +1 -0
  84. package/dist/gateway/static/root/assets/{user-profile-fields-editor-CWxc0ghP.js → user-profile-fields-editor-CPOO9Jz5.js} +1 -1
  85. package/dist/gateway/static/root/assets/{user-profile-settings-panel-DW-Up6vt.js → user-profile-settings-panel-C8cgtSF7.js} +1 -1
  86. package/dist/gateway/static/root/assets/{utils-D53uRXVr.js → utils-CiZK2KwH.js} +1 -1
  87. package/dist/gateway/static/root/assets/voice-api-key-field-b-YZtvUu.js +1 -0
  88. package/dist/gateway/static/root/assets/work-discovery-page-4zVDOl2G.js +1 -0
  89. package/dist/gateway/static/root/assets/work-item-detail-page-CHe2tfkc.js +1 -0
  90. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D_x9ELJp.js → workflow-run-setup-panel-8SLCYeXE.js} +2 -2
  91. package/dist/gateway/static/root/assets/workflows-page-DEOFqiWn.js +11 -0
  92. package/dist/gateway/static/root/index.html +10 -9
  93. package/dist/package.js +1 -1
  94. package/dist/src/activity/types.d.ts +1 -1
  95. package/dist/src/agent/agent-instance-gateway.d.ts +1 -1
  96. package/dist/src/agent/agent-manager.d.ts +1 -1
  97. package/dist/src/agent/agent-manager.js +5 -4
  98. package/dist/src/agent/agent-manager.js.map +1 -1
  99. package/dist/src/agent/background-review/coordinator.js +0 -1
  100. package/dist/src/agent/background-review/coordinator.js.map +1 -1
  101. package/dist/src/agent/background-review/settings.d.ts +1 -1
  102. package/dist/src/agent/background-review/settings.js +10 -17
  103. package/dist/src/agent/background-review/settings.js.map +1 -1
  104. package/dist/src/agent/bootstrap/filter-bootstrap-files.d.ts +1 -1
  105. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  106. package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +1 -1
  107. package/dist/src/agent/bootstrap/load-bootstrap-files.js +2 -3
  108. package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +1 -1
  109. package/dist/src/agent/code-intelligence/binary.js +1 -1
  110. package/dist/src/agent/context/project-context.d.ts +14 -0
  111. package/dist/src/agent/context/project-context.js +23 -1
  112. package/dist/src/agent/context/project-context.js.map +1 -1
  113. package/dist/src/agent/context/workspace-templates/AGENTS.md +1 -1
  114. package/dist/src/agent/context/workspace.d.ts +1 -2
  115. package/dist/src/agent/context/workspace.js +2 -4
  116. package/dist/src/agent/context/workspace.js.map +1 -1
  117. package/dist/src/agent/embedded/run-for-session.js +1 -2
  118. package/dist/src/agent/embedded/run-for-session.js.map +1 -1
  119. package/dist/src/agent/embedded/run-turn.js +6 -1
  120. package/dist/src/agent/embedded/run-turn.js.map +1 -1
  121. package/dist/src/agent/embedded/types.d.ts +17 -0
  122. package/dist/src/agent/memory/builtin-memory-store.d.ts +2 -2
  123. package/dist/src/agent/memory/builtin-memory-store.js +2 -2
  124. package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
  125. package/dist/src/agent/memory/builtin-provider.d.ts +1 -3
  126. package/dist/src/agent/memory/builtin-provider.js +21 -48
  127. package/dist/src/agent/memory/builtin-provider.js.map +1 -1
  128. package/dist/src/agent/memory/context/planner.js +48 -9
  129. package/dist/src/agent/memory/context/planner.js.map +1 -1
  130. package/dist/src/agent/memory/context/types.d.ts +7 -1
  131. package/dist/src/agent/memory/context-fence.js +1 -1
  132. package/dist/src/agent/memory/context-fence.js.map +1 -1
  133. package/dist/src/agent/memory/create-memory-manager.js +2 -9
  134. package/dist/src/agent/memory/create-memory-manager.js.map +1 -1
  135. package/dist/src/agent/memory/dreaming/config.js +5 -10
  136. package/dist/src/agent/memory/dreaming/config.js.map +1 -1
  137. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +2 -2
  138. package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +1 -1
  139. package/dist/src/agent/memory/dreaming/scope.d.ts +2 -3
  140. package/dist/src/agent/memory/dreaming/scope.js +8 -8
  141. package/dist/src/agent/memory/dreaming/scope.js.map +1 -1
  142. package/dist/src/agent/memory/manager.d.ts +1 -5
  143. package/dist/src/agent/memory/manager.js +2 -23
  144. package/dist/src/agent/memory/manager.js.map +1 -1
  145. package/dist/src/agent/memory/memory-config.d.ts +3 -3
  146. package/dist/src/agent/memory/memory-config.js +9 -14
  147. package/dist/src/agent/memory/memory-config.js.map +1 -1
  148. package/dist/src/agent/memory/types.d.ts +9 -5
  149. package/dist/src/agent/memory/understanding/service.js +21 -8
  150. package/dist/src/agent/memory/understanding/service.js.map +1 -1
  151. package/dist/src/agent/memory/understanding/types.d.ts +5 -0
  152. package/dist/src/agent/memory/user-context-coordinator.d.ts +1 -1
  153. package/dist/src/agent/memory/user-context-coordinator.js +6 -2
  154. package/dist/src/agent/memory/user-context-coordinator.js.map +1 -1
  155. package/dist/src/agent/orchestration/agent-orchestrator.js +2 -2
  156. package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
  157. package/dist/src/agent/prompt/memory/index.d.ts +1 -2
  158. package/dist/src/agent/prompt/memory/index.js +6 -7
  159. package/dist/src/agent/prompt/memory/index.js.map +1 -1
  160. package/dist/src/agent/prompt/sections/tooling.js +1 -1
  161. package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
  162. package/dist/src/agent/service/direct-turn-helpers.js +13 -2
  163. package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
  164. package/dist/src/agent/tools/curated-memory-tool.js +4 -4
  165. package/dist/src/agent/tools/curated-memory-tool.js.map +1 -1
  166. package/dist/src/agent/tools/factory.d.ts +1 -1
  167. package/dist/src/agent/tools/factory.js +2 -2
  168. package/dist/src/agent/tools/factory.js.map +1 -1
  169. package/dist/src/agent/tools/memory-tool.js +1 -1
  170. package/dist/src/agent/tools/memory-tool.js.map +1 -1
  171. package/dist/src/agent/workflow/workflow-child-tools.js +2 -3
  172. package/dist/src/agent/workflow/workflow-child-tools.js.map +1 -1
  173. package/dist/src/agent/workspace-runtime/registry.d.ts +5 -5
  174. package/dist/src/agent/workspace-runtime/registry.js +6 -11
  175. package/dist/src/agent/workspace-runtime/registry.js.map +1 -1
  176. package/dist/src/agent-manifest/index.js +2 -2
  177. package/dist/src/agent-manifest/prompt.js +1 -7
  178. package/dist/src/agent-manifest/prompt.js.map +1 -1
  179. package/dist/src/agent-manifest/schema.d.ts +0 -598
  180. package/dist/src/agent-manifest/schema.js +2 -143
  181. package/dist/src/agent-manifest/schema.js.map +1 -1
  182. package/dist/src/agent-manifest/validator.js +0 -12
  183. package/dist/src/agent-manifest/validator.js.map +1 -1
  184. package/dist/src/agent-runtime/index.js +1 -1
  185. package/dist/src/agent-runtime/memory-runtime.d.ts +2 -2
  186. package/dist/src/agent-runtime/memory-runtime.js +8 -7
  187. package/dist/src/agent-runtime/memory-runtime.js.map +1 -1
  188. package/dist/src/agent-runtime/runtime-profile.d.ts +2 -0
  189. package/dist/src/agent-runtime/runtime-profile.js +2 -2
  190. package/dist/src/agent-runtime/runtime-profile.js.map +1 -1
  191. package/dist/src/chat-commands/agent-edit.js +1 -2
  192. package/dist/src/chat-commands/agent-edit.js.map +1 -1
  193. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  194. package/dist/src/cli/commands/init.js +0 -22
  195. package/dist/src/cli/commands/init.js.map +1 -1
  196. package/dist/src/cli/templates.d.ts +1 -1
  197. package/dist/src/cli/templates.js +1 -16
  198. package/dist/src/cli/templates.js.map +1 -1
  199. package/dist/src/commands/agents.config.js +0 -10
  200. package/dist/src/commands/agents.config.js.map +1 -1
  201. package/dist/src/config/agent-profile.js +1 -1
  202. package/dist/src/config/index.js +2 -2
  203. package/dist/src/config/paths.d.ts +0 -1
  204. package/dist/src/config/paths.js +1 -2
  205. package/dist/src/config/paths.js.map +1 -1
  206. package/dist/src/config/schema.d.ts +118 -532
  207. package/dist/src/config/schema.js +32 -26
  208. package/dist/src/config/schema.js.map +1 -1
  209. package/dist/src/extensions/loader.js +2 -1
  210. package/dist/src/extensions/loader.js.map +1 -1
  211. package/dist/src/gateway/agents-admin.d.ts +0 -2
  212. package/dist/src/gateway/agents-admin.js +1 -7
  213. package/dist/src/gateway/agents-admin.js.map +1 -1
  214. package/dist/src/gateway/capability-presets-admin.d.ts +0 -2
  215. package/dist/src/gateway/capability-presets-admin.js.map +1 -1
  216. package/dist/src/gateway/chat-stream/mapper.js +26 -0
  217. package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
  218. package/dist/src/gateway/chat-stream/protocol.d.ts +16 -1
  219. package/dist/src/gateway/dreaming-automation-reconciler.d.ts +0 -1
  220. package/dist/src/gateway/dreaming-automation-reconciler.js +41 -63
  221. package/dist/src/gateway/dreaming-automation-reconciler.js.map +1 -1
  222. package/dist/src/gateway/heartbeat/service.js +1 -1
  223. package/dist/src/gateway/hono/app.js +3 -1
  224. package/dist/src/gateway/hono/app.js.map +1 -1
  225. package/dist/src/gateway/hono/lib/config-payload.d.ts +0 -130
  226. package/dist/src/gateway/hono/lib/config-payload.js +0 -1
  227. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  228. package/dist/src/gateway/hono/routes/agents.js +6 -12
  229. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  230. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +6 -0
  231. package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +1 -1
  232. package/dist/src/gateway/hono/routes/capability-presets.js +2 -2
  233. package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -1
  234. package/dist/src/gateway/hono/routes/dreaming.js +9 -20
  235. package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
  236. package/dist/src/gateway/hono/routes/index.js +4 -0
  237. package/dist/src/gateway/hono/routes/index.js.map +1 -1
  238. package/dist/src/gateway/hono/routes/local-apps.d.ts +5 -0
  239. package/dist/src/gateway/hono/routes/local-apps.js +99 -0
  240. package/dist/src/gateway/hono/routes/local-apps.js.map +1 -0
  241. package/dist/src/gateway/hono/routes/memory.js +48 -65
  242. package/dist/src/gateway/hono/routes/memory.js.map +1 -1
  243. package/dist/src/gateway/hono/routes/projects.js +2 -2
  244. package/dist/src/gateway/hono/routes/projects.js.map +1 -1
  245. package/dist/src/gateway/hono/routes/work-discovery.d.ts +3 -0
  246. package/dist/src/gateway/hono/routes/work-discovery.js +150 -0
  247. package/dist/src/gateway/hono/routes/work-discovery.js.map +1 -0
  248. package/dist/src/gateway/hono/routes/you.d.ts +3 -0
  249. package/dist/src/gateway/hono/routes/you.js +358 -91
  250. package/dist/src/gateway/hono/routes/you.js.map +1 -1
  251. package/dist/src/gateway/service.d.ts +3 -0
  252. package/dist/src/gateway/service.js +12 -0
  253. package/dist/src/gateway/service.js.map +1 -1
  254. package/dist/src/heartbeat/index.js +1 -1
  255. package/dist/src/knowledge/connected-knowledge-pipeline.js +9 -5
  256. package/dist/src/knowledge/connected-knowledge-pipeline.js.map +1 -1
  257. package/dist/src/local-apps/acceptance.d.ts +30 -0
  258. package/dist/src/local-apps/acceptance.js +93 -0
  259. package/dist/src/local-apps/acceptance.js.map +1 -0
  260. package/dist/src/local-apps/index.d.ts +5 -0
  261. package/dist/src/local-apps/index.js +4 -0
  262. package/dist/src/local-apps/preview-runtime-bridge.d.ts +4 -0
  263. package/dist/src/local-apps/preview-runtime-bridge.js +171 -0
  264. package/dist/src/local-apps/preview-runtime-bridge.js.map +1 -0
  265. package/dist/src/local-apps/runtime-entry.d.ts +8 -0
  266. package/dist/src/local-apps/runtime-entry.js +25 -0
  267. package/dist/src/local-apps/runtime-entry.js.map +1 -0
  268. package/dist/src/local-apps/scaffold.d.ts +8 -0
  269. package/dist/src/local-apps/scaffold.js +122 -0
  270. package/dist/src/local-apps/scaffold.js.map +1 -0
  271. package/dist/src/local-apps/service.d.ts +37 -0
  272. package/dist/src/local-apps/service.js +553 -0
  273. package/dist/src/local-apps/service.js.map +1 -0
  274. package/dist/src/local-apps/store.d.ts +44 -0
  275. package/dist/src/local-apps/store.js +195 -0
  276. package/dist/src/local-apps/store.js.map +1 -0
  277. package/dist/src/local-apps/types.d.ts +105 -0
  278. package/dist/src/local-apps/types.js +1 -0
  279. package/dist/src/storage/sqlite/index.d.ts +3 -2
  280. package/dist/src/storage/sqlite/index.js +4 -3
  281. package/dist/src/storage/sqlite/memory-index-repository.d.ts +2 -3
  282. package/dist/src/storage/sqlite/memory-index-repository.js +16 -20
  283. package/dist/src/storage/sqlite/memory-index-repository.js.map +1 -1
  284. package/dist/src/storage/sqlite/memory-records-repository.d.ts +18 -10
  285. package/dist/src/storage/sqlite/memory-records-repository.js +79 -34
  286. package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -1
  287. package/dist/src/storage/sqlite/memory-reference-consent-repository.d.ts +27 -0
  288. package/dist/src/storage/sqlite/memory-reference-consent-repository.js +109 -0
  289. package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +1 -0
  290. package/dist/src/storage/sqlite/migrations/038_user_owned_memory.sql +68 -0
  291. package/dist/src/storage/sqlite/migrations/039_memory_reference_consents.sql +19 -0
  292. package/dist/src/storage/sqlite/migrations/040_local_apps.sql +32 -0
  293. package/dist/src/storage/sqlite/migrations/041_local_app_release_lifecycle.sql +17 -0
  294. package/dist/src/storage/sqlite/migrations/042_work_discovery.sql +41 -0
  295. package/dist/src/storage/sqlite/migrations/043_local_app_acceptance_runs.sql +16 -0
  296. package/dist/src/storage/sqlite/migrations/044_repair_work_discovery_foreign_keys.sql +75 -0
  297. package/dist/src/storage/sqlite/migrations/045_extension_ui_grants.sql +13 -0
  298. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  299. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  300. package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
  301. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  302. package/dist/src/storage/sqlite/schema.js +1 -1
  303. package/dist/src/storage/sqlite/schema.sql +20 -0
  304. package/dist/src/user-context/config.d.ts +227 -0
  305. package/dist/src/user-context/config.js +158 -0
  306. package/dist/src/user-context/config.js.map +1 -0
  307. package/dist/src/user-context/import.d.ts +1 -1
  308. package/dist/src/user-context/import.js +6 -1
  309. package/dist/src/user-context/import.js.map +1 -1
  310. package/dist/src/user-context/owner.d.ts +5 -0
  311. package/dist/src/user-context/owner.js +9 -0
  312. package/dist/src/user-context/owner.js.map +1 -0
  313. package/dist/src/user-context/projection.d.ts +11 -9
  314. package/dist/src/user-context/projection.js +74 -47
  315. package/dist/src/user-context/projection.js.map +1 -1
  316. package/dist/src/user-context/runtime.d.ts +13 -0
  317. package/dist/src/user-context/runtime.js +36 -0
  318. package/dist/src/user-context/runtime.js.map +1 -0
  319. package/dist/src/work-discovery/analyzer.d.ts +11 -0
  320. package/dist/src/work-discovery/analyzer.js +171 -0
  321. package/dist/src/work-discovery/analyzer.js.map +1 -0
  322. package/dist/src/work-discovery/index.d.ts +5 -0
  323. package/dist/src/work-discovery/index.js +5 -0
  324. package/dist/src/work-discovery/probe.d.ts +12 -0
  325. package/dist/src/work-discovery/probe.js +335 -0
  326. package/dist/src/work-discovery/probe.js.map +1 -0
  327. package/dist/src/work-discovery/repository.d.ts +11 -0
  328. package/dist/src/work-discovery/repository.js +100 -0
  329. package/dist/src/work-discovery/repository.js.map +1 -0
  330. package/dist/src/work-discovery/service.d.ts +30 -0
  331. package/dist/src/work-discovery/service.js +387 -0
  332. package/dist/src/work-discovery/service.js.map +1 -0
  333. package/dist/src/work-discovery/types.d.ts +114 -0
  334. package/dist/src/work-discovery/types.js +1 -0
  335. package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
  336. package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
  337. package/package.json +5 -3
  338. package/skills/engineering/build-xopc-local-app/SKILL.md +45 -0
  339. package/skills/engineering/build-xopc-local-app/references/app-contract.md +33 -0
  340. package/skills/engineering/build-xopc-local-app/scripts/validate-local-app.mjs +72 -0
  341. package/dist/gateway/static/root/assets/Combination-DolwnuKi.js +0 -41
  342. package/dist/gateway/static/root/assets/activity-center-store-3l9ahUqb.js +0 -1
  343. package/dist/gateway/static/root/assets/agents-1bpT0xRO.js +0 -2
  344. package/dist/gateway/static/root/assets/apps-page-Cc4JgVUQ.js +0 -1
  345. package/dist/gateway/static/root/assets/automations-page-mb0fdVpq.js +0 -6
  346. package/dist/gateway/static/root/assets/browser-settings-page-Bb0xhaMN.js +0 -8
  347. package/dist/gateway/static/root/assets/capability-presets-api-BV76yN9a.js +0 -1
  348. package/dist/gateway/static/root/assets/capability-presets-settings-panel-CUcGKZqC.js +0 -2
  349. package/dist/gateway/static/root/assets/channels-settings-BlSDMGdy.js +0 -1
  350. package/dist/gateway/static/root/assets/channels-status-swr-CJauF1CW.js +0 -1
  351. package/dist/gateway/static/root/assets/connectors-page-CMgAFGvb.js +0 -2
  352. package/dist/gateway/static/root/assets/dist-C99RGfAH.js +0 -1
  353. package/dist/gateway/static/root/assets/dreaming-settings-BLetQiYY.js +0 -3
  354. package/dist/gateway/static/root/assets/extension-debug-page-Cof2ncxE.js +0 -1
  355. package/dist/gateway/static/root/assets/goal-detail-page-BMmzYpZL.js +0 -4
  356. package/dist/gateway/static/root/assets/goals-page-CGeT77PC.js +0 -2
  357. package/dist/gateway/static/root/assets/index-CSLF84-Q.css +0 -1
  358. package/dist/gateway/static/root/assets/index-I-ZCenVw.js +0 -259
  359. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-x_v0nrIi.js +0 -1
  360. package/dist/gateway/static/root/assets/logs-page-BSh1t8cD.js +0 -7
  361. package/dist/gateway/static/root/assets/messages-Cb1VMeqP.js +0 -5
  362. package/dist/gateway/static/root/assets/models-hub-panel-BNpTenAI.js +0 -2
  363. package/dist/gateway/static/root/assets/notes-workbench-teklkhcE.js +0 -4
  364. package/dist/gateway/static/root/assets/project-detail-page-CCB_dKoh.js +0 -1
  365. package/dist/gateway/static/root/assets/projects-page-VOAFAHYj.js +0 -1
  366. package/dist/gateway/static/root/assets/remote-access-hub-USYu64Ru.js +0 -1
  367. package/dist/gateway/static/root/assets/sessions-page-oGC8O5h_.js +0 -1
  368. package/dist/gateway/static/root/assets/settings-advanced-gate-D4rP66R1.js +0 -1
  369. package/dist/gateway/static/root/assets/setup-status-panel-Ck9keROI.js +0 -1
  370. package/dist/gateway/static/root/assets/shares-settings-BYLsCuqj.js +0 -1
  371. package/dist/gateway/static/root/assets/skill-reload-api-BNHUyVML.js +0 -1
  372. package/dist/gateway/static/root/assets/skills-page-CpXbQH4n.js +0 -2
  373. package/dist/gateway/static/root/assets/user-context-page-DbNEK4Yp.js +0 -1
  374. package/dist/gateway/static/root/assets/voice-api-key-field-Cs7MOrg0.js +0 -1
  375. package/dist/gateway/static/root/assets/work-item-detail-page-D1ziG1Pp.js +0 -1
  376. package/dist/gateway/static/root/assets/workflows-page-DHGV_n6i.js +0 -11
  377. package/dist/src/agent/context/workspace-templates/MEMORY.md +0 -33
  378. package/dist/src/agent/memory/access-policy.d.ts +0 -12
  379. package/dist/src/agent/memory/access-policy.js +0 -44
  380. package/dist/src/agent/memory/access-policy.js.map +0 -1
@@ -0,0 +1,41 @@
1
+ CREATE TABLE IF NOT EXISTS work_discovery_onboarding (
2
+ singleton_id INTEGER PRIMARY KEY CHECK (singleton_id = 1),
3
+ status TEXT NOT NULL CHECK (status IN ('not_started', 'in_progress', 'completed', 'dismissed')),
4
+ active_run_id TEXT,
5
+ completed_at INTEGER,
6
+ dismissed_at INTEGER,
7
+ updated_at INTEGER NOT NULL
8
+ );
9
+
10
+ INSERT OR IGNORE INTO work_discovery_onboarding (singleton_id, status, updated_at)
11
+ VALUES (1, 'not_started', 0);
12
+
13
+ CREATE TABLE IF NOT EXISTS work_discovery_runs (
14
+ id TEXT PRIMARY KEY,
15
+ idempotency_key TEXT NOT NULL UNIQUE,
16
+ source TEXT NOT NULL CHECK (source IN ('onboarding_selected_directory', 'manual_selected_directory')),
17
+ status TEXT NOT NULL CHECK (status IN ('queued', 'probing', 'analyzing', 'completed', 'failed', 'canceled')),
18
+ stage TEXT CHECK (stage IS NULL OR stage IN ('folder_structure', 'recent_progress', 'next_steps')),
19
+ root_path TEXT NOT NULL,
20
+ project_id TEXT NOT NULL,
21
+ session_key TEXT NOT NULL,
22
+ agent_id TEXT NOT NULL,
23
+ model_ref TEXT NOT NULL,
24
+ scan_policy_version INTEGER NOT NULL,
25
+ snapshot_summary_json TEXT,
26
+ result_json TEXT,
27
+ error_code TEXT,
28
+ error_message TEXT,
29
+ created_at INTEGER NOT NULL,
30
+ started_at INTEGER,
31
+ completed_at INTEGER,
32
+ canceled_at INTEGER,
33
+ FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE,
34
+ FOREIGN KEY (session_key) REFERENCES sessions(session_key) ON DELETE CASCADE
35
+ );
36
+
37
+ CREATE INDEX IF NOT EXISTS idx_work_discovery_runs_status_created
38
+ ON work_discovery_runs(status, created_at DESC);
39
+
40
+ CREATE INDEX IF NOT EXISTS idx_work_discovery_runs_project
41
+ ON work_discovery_runs(project_id, created_at DESC);
@@ -0,0 +1,16 @@
1
+ CREATE TABLE IF NOT EXISTS local_app_acceptance_runs (
2
+ run_id TEXT PRIMARY KEY,
3
+ app_id TEXT NOT NULL,
4
+ source_hash TEXT NOT NULL,
5
+ status TEXT NOT NULL CHECK (status IN ('passed', 'failed')),
6
+ checks_json TEXT NOT NULL,
7
+ interactive_count INTEGER NOT NULL DEFAULT 0 CHECK (interactive_count >= 0),
8
+ created_at INTEGER NOT NULL,
9
+ FOREIGN KEY (app_id) REFERENCES local_apps(app_id) ON DELETE CASCADE
10
+ );
11
+
12
+ CREATE INDEX IF NOT EXISTS idx_local_app_acceptance_runs_app_created
13
+ ON local_app_acceptance_runs(app_id, created_at DESC);
14
+
15
+ CREATE INDEX IF NOT EXISTS idx_local_app_acceptance_runs_source
16
+ ON local_app_acceptance_runs(app_id, source_hash, created_at DESC);
@@ -0,0 +1,75 @@
1
+ CREATE TABLE work_discovery_runs_v44 (
2
+ id TEXT PRIMARY KEY,
3
+ idempotency_key TEXT NOT NULL UNIQUE,
4
+ source TEXT NOT NULL CHECK (source IN ('onboarding_selected_directory', 'manual_selected_directory')),
5
+ status TEXT NOT NULL CHECK (status IN ('queued', 'probing', 'analyzing', 'completed', 'failed', 'canceled')),
6
+ stage TEXT CHECK (stage IS NULL OR stage IN ('folder_structure', 'recent_progress', 'next_steps')),
7
+ root_path TEXT NOT NULL,
8
+ project_id TEXT NOT NULL,
9
+ session_key TEXT NOT NULL,
10
+ agent_id TEXT NOT NULL,
11
+ model_ref TEXT NOT NULL,
12
+ scan_policy_version INTEGER NOT NULL,
13
+ snapshot_summary_json TEXT,
14
+ result_json TEXT,
15
+ error_code TEXT,
16
+ error_message TEXT,
17
+ created_at INTEGER NOT NULL,
18
+ started_at INTEGER,
19
+ completed_at INTEGER,
20
+ canceled_at INTEGER,
21
+ FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE,
22
+ FOREIGN KEY (session_key) REFERENCES sessions(session_key) ON DELETE CASCADE
23
+ );
24
+
25
+ INSERT INTO work_discovery_runs_v44 (
26
+ id,
27
+ idempotency_key,
28
+ source,
29
+ status,
30
+ stage,
31
+ root_path,
32
+ project_id,
33
+ session_key,
34
+ agent_id,
35
+ model_ref,
36
+ scan_policy_version,
37
+ snapshot_summary_json,
38
+ result_json,
39
+ error_code,
40
+ error_message,
41
+ created_at,
42
+ started_at,
43
+ completed_at,
44
+ canceled_at
45
+ )
46
+ SELECT
47
+ id,
48
+ idempotency_key,
49
+ source,
50
+ status,
51
+ stage,
52
+ root_path,
53
+ project_id,
54
+ session_key,
55
+ agent_id,
56
+ model_ref,
57
+ scan_policy_version,
58
+ snapshot_summary_json,
59
+ result_json,
60
+ error_code,
61
+ error_message,
62
+ created_at,
63
+ started_at,
64
+ completed_at,
65
+ canceled_at
66
+ FROM work_discovery_runs;
67
+
68
+ DROP TABLE work_discovery_runs;
69
+ ALTER TABLE work_discovery_runs_v44 RENAME TO work_discovery_runs;
70
+
71
+ CREATE INDEX idx_work_discovery_runs_status_created
72
+ ON work_discovery_runs(status, created_at DESC);
73
+
74
+ CREATE INDEX idx_work_discovery_runs_project
75
+ ON work_discovery_runs(project_id, created_at DESC);
@@ -0,0 +1,13 @@
1
+ CREATE TABLE IF NOT EXISTS extension_ui_grants (
2
+ extension_id TEXT NOT NULL,
3
+ app_id TEXT,
4
+ manifest_digest TEXT NOT NULL,
5
+ permissions_json TEXT NOT NULL,
6
+ granted_at INTEGER NOT NULL,
7
+ revoked_at INTEGER,
8
+ PRIMARY KEY (extension_id, manifest_digest),
9
+ FOREIGN KEY (app_id) REFERENCES local_apps(app_id) ON DELETE CASCADE
10
+ );
11
+
12
+ CREATE INDEX IF NOT EXISTS idx_extension_ui_grants_app_granted
13
+ ON extension_ui_grants(app_id, granted_at DESC);
@@ -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 = 37;
6
+ export declare const XOPC_DB_SCHEMA_VERSION = 45;
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 = 37;
15
+ const XOPC_DB_SCHEMA_VERSION = 45;
16
16
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
17
17
  function resolveMigrationsDir(override) {
18
18
  if (override) return override;
@@ -46,7 +46,7 @@ function applySingleMigration(db, migration) {
46
46
  * Each step runs in its own transaction and updates schema_meta on success.
47
47
  */
48
48
  function applyPendingMigrations(db, options = {}) {
49
- const targetVersion = options.targetVersion ?? 37;
49
+ const targetVersion = options.targetVersion ?? 45;
50
50
  let currentVersion = readSchemaVersion(db);
51
51
  if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
52
52
  if (currentVersion >= targetVersion) return currentVersion;
@@ -62,7 +62,7 @@ function applyPendingMigrations(db, options = {}) {
62
62
  }
63
63
  /** Inspect schema version without mutating the database. */
64
64
  function inspectSchemaMigrationStatus(db, options = {}) {
65
- const appVersion = options.targetVersion ?? 37;
65
+ const appVersion = options.targetVersion ?? 45;
66
66
  const dbVersion = readSchemaVersion(db);
67
67
  if (dbVersion > appVersion) return {
68
68
  dbVersion,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","names":[],"sources":["../../../../../src/storage/sqlite/migrations/runner.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport type { DatabaseSync } from 'node:sqlite';\n\nimport { createLogger } from '../../../utils/logger.js';\nimport { readSchemaVersion, setSchemaVersion } from '../schema-version.js';\nimport { discoverSqlMigrations } from './discover.js';\nimport {\n DatabaseSchemaMigrationGapError,\n DatabaseSchemaTooNewError,\n} from './errors.js';\nimport type { ApplyMigrationsOptions, SqlMigration } from './types.js';\n\nconst log = createLogger('Sqlite:Migrations');\n\n/** Baseline schema version applied from schema.sql on first open. */\nexport const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;\n\n/** Latest schema version this release supports (increment when adding migrations). */\nexport const XOPC_DB_SCHEMA_VERSION = 37;\n\nconst MODULE_DIR = dirname(fileURLToPath(import.meta.url));\n\nexport function resolveMigrationsDir(override?: string): string {\n if (override) {\n return override;\n }\n // Packaged Electron gateway bundle: `out/server/index.js` + `out/server/migrations/`.\n const siblingDir = join(MODULE_DIR, 'migrations');\n if (existsSync(siblingDir)) {\n return siblingDir;\n }\n // Dev / dist: SQL files live next to `migrations/runner.js`.\n return MODULE_DIR;\n}\n\nfunction migrationByTarget(\n migrations: SqlMigration[],\n targetVersion: number,\n): SqlMigration | undefined {\n return migrations.find((migration) => migration.targetVersion === targetVersion);\n}\n\nfunction applySingleMigration(db: DatabaseSync, migration: SqlMigration): void {\n log.info({ targetVersion: migration.targetVersion, file: migration.filename }, 'Applying SQLite migration');\n db.exec('BEGIN IMMEDIATE');\n try {\n db.exec(migration.sql);\n setSchemaVersion(db, migration.targetVersion);\n db.exec('COMMIT');\n } catch (error) {\n try {\n db.exec('ROLLBACK');\n } catch {\n /* preserve original error */\n }\n const em = error instanceof Error ? error.message : String(error);\n throw new Error(\n `SQLite migration to v${migration.targetVersion} (${migration.filename}) failed: ${em}`,\n { cause: error },\n );\n }\n}\n\n/**\n * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.\n * Each step runs in its own transaction and updates schema_meta on success.\n */\nexport function applyPendingMigrations(\n db: DatabaseSync,\n options: ApplyMigrationsOptions = {},\n): number {\n const targetVersion = options.targetVersion ?? XOPC_DB_SCHEMA_VERSION;\n let currentVersion = readSchemaVersion(db);\n\n if (currentVersion > targetVersion) {\n throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);\n }\n\n if (currentVersion >= targetVersion) {\n return currentVersion;\n }\n\n const migrations = discoverSqlMigrations(resolveMigrationsDir(options.migrationsDir));\n\n while (currentVersion < targetVersion) {\n const nextVersion = currentVersion + 1;\n const migration = migrationByTarget(migrations, nextVersion);\n if (!migration) {\n throw new DatabaseSchemaMigrationGapError(currentVersion, targetVersion, nextVersion);\n }\n applySingleMigration(db, migration);\n currentVersion = nextVersion;\n }\n\n return currentVersion;\n}\n\nexport type SchemaMigrationStatus = {\n dbVersion: number;\n appVersion: number;\n pendingVersions: number[];\n isTooNew: boolean;\n hasMigrationGap: boolean;\n missingVersion: number | null;\n};\n\n/** Inspect schema version without mutating the database. */\nexport function inspectSchemaMigrationStatus(\n db: DatabaseSync,\n options: Pick<ApplyMigrationsOptions, 'migrationsDir' | 'targetVersion'> = {},\n): SchemaMigrationStatus {\n const appVersion = options.targetVersion ?? XOPC_DB_SCHEMA_VERSION;\n const dbVersion = readSchemaVersion(db);\n const isTooNew = dbVersion > appVersion;\n\n if (isTooNew) {\n return {\n dbVersion,\n appVersion,\n pendingVersions: [],\n isTooNew: true,\n hasMigrationGap: false,\n missingVersion: null,\n };\n }\n\n const migrations = discoverSqlMigrations(resolveMigrationsDir(options.migrationsDir));\n const pendingVersions: number[] = [];\n let hasMigrationGap = false;\n let missingVersion: number | null = null;\n\n for (let version = dbVersion + 1; version <= appVersion; version++) {\n if (migrationByTarget(migrations, version)) {\n pendingVersions.push(version);\n } else {\n hasMigrationGap = true;\n missingVersion = version;\n break;\n }\n }\n\n return {\n dbVersion,\n appVersion,\n pendingVersions,\n isTooNew: false,\n hasMigrationGap,\n missingVersion,\n };\n}\n"],"mappings":";;;;;;;;;aAMwD;AASxD,MAAM,MAAM,aAAa,oBAAoB;;AAG7C,MAAa,kCAAkC;;AAG/C,MAAa,yBAAyB;AAEtC,MAAM,aAAa,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AAE1D,SAAgB,qBAAqB,UAA2B;AAC9D,KAAI,SACF,QAAO;CAGT,MAAM,aAAa,KAAK,YAAY,aAAa;AACjD,KAAI,WAAW,WAAW,CACxB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBACP,YACA,eAC0B;AAC1B,QAAO,WAAW,MAAM,cAAc,UAAU,kBAAkB,cAAc;;AAGlF,SAAS,qBAAqB,IAAkB,WAA+B;AAC7E,KAAI,KAAK;EAAE,eAAe,UAAU;EAAe,MAAM,UAAU;EAAU,EAAE,4BAA4B;AAC3G,IAAG,KAAK,kBAAkB;AAC1B,KAAI;AACF,KAAG,KAAK,UAAU,IAAI;AACtB,mBAAiB,IAAI,UAAU,cAAc;AAC7C,KAAG,KAAK,SAAS;UACV,OAAO;AACd,MAAI;AACF,MAAG,KAAK,WAAW;UACb;EAGR,MAAM,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACjE,QAAM,IAAI,MACR,wBAAwB,UAAU,cAAc,IAAI,UAAU,SAAS,YAAY,MACnF,EAAE,OAAO,OAAO,CACjB;;;;;;;AAQL,SAAgB,uBACd,IACA,UAAkC,EAAE,EAC5B;CACR,MAAM,gBAAgB,QAAQ,iBAAA;CAC9B,IAAI,iBAAiB,kBAAkB,GAAG;AAE1C,KAAI,iBAAiB,cACnB,OAAM,IAAI,0BAA0B,gBAAgB,cAAc;AAGpE,KAAI,kBAAkB,cACpB,QAAO;CAGT,MAAM,aAAa,sBAAsB,qBAAqB,QAAQ,cAAc,CAAC;AAErF,QAAO,iBAAiB,eAAe;EACrC,MAAM,cAAc,iBAAiB;EACrC,MAAM,YAAY,kBAAkB,YAAY,YAAY;AAC5D,MAAI,CAAC,UACH,OAAM,IAAI,gCAAgC,gBAAgB,eAAe,YAAY;AAEvF,uBAAqB,IAAI,UAAU;AACnC,mBAAiB;;AAGnB,QAAO;;;AAaT,SAAgB,6BACd,IACA,UAA2E,EAAE,EACtD;CACvB,MAAM,aAAa,QAAQ,iBAAA;CAC3B,MAAM,YAAY,kBAAkB,GAAG;AAGvC,KAFiB,YAAY,WAG3B,QAAO;EACL;EACA;EACA,iBAAiB,EAAE;EACnB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EACjB;CAGH,MAAM,aAAa,sBAAsB,qBAAqB,QAAQ,cAAc,CAAC;CACrF,MAAM,kBAA4B,EAAE;CACpC,IAAI,kBAAkB;CACtB,IAAI,iBAAgC;AAEpC,MAAK,IAAI,UAAU,YAAY,GAAG,WAAW,YAAY,UACvD,KAAI,kBAAkB,YAAY,QAAQ,CACxC,iBAAgB,KAAK,QAAQ;MACxB;AACL,oBAAkB;AAClB,mBAAiB;AACjB;;AAIJ,QAAO;EACL;EACA;EACA;EACA,UAAU;EACV;EACA;EACD"}
1
+ {"version":3,"file":"runner.js","names":[],"sources":["../../../../../src/storage/sqlite/migrations/runner.ts"],"sourcesContent":["import { existsSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nimport type { DatabaseSync } from 'node:sqlite';\n\nimport { createLogger } from '../../../utils/logger.js';\nimport { readSchemaVersion, setSchemaVersion } from '../schema-version.js';\nimport { discoverSqlMigrations } from './discover.js';\nimport {\n DatabaseSchemaMigrationGapError,\n DatabaseSchemaTooNewError,\n} from './errors.js';\nimport type { ApplyMigrationsOptions, SqlMigration } from './types.js';\n\nconst log = createLogger('Sqlite:Migrations');\n\n/** Baseline schema version applied from schema.sql on first open. */\nexport const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;\n\n/** Latest schema version this release supports (increment when adding migrations). */\nexport const XOPC_DB_SCHEMA_VERSION = 45;\n\nconst MODULE_DIR = dirname(fileURLToPath(import.meta.url));\n\nexport function resolveMigrationsDir(override?: string): string {\n if (override) {\n return override;\n }\n // Packaged Electron gateway bundle: `out/server/index.js` + `out/server/migrations/`.\n const siblingDir = join(MODULE_DIR, 'migrations');\n if (existsSync(siblingDir)) {\n return siblingDir;\n }\n // Dev / dist: SQL files live next to `migrations/runner.js`.\n return MODULE_DIR;\n}\n\nfunction migrationByTarget(\n migrations: SqlMigration[],\n targetVersion: number,\n): SqlMigration | undefined {\n return migrations.find((migration) => migration.targetVersion === targetVersion);\n}\n\nfunction applySingleMigration(db: DatabaseSync, migration: SqlMigration): void {\n log.info({ targetVersion: migration.targetVersion, file: migration.filename }, 'Applying SQLite migration');\n db.exec('BEGIN IMMEDIATE');\n try {\n db.exec(migration.sql);\n setSchemaVersion(db, migration.targetVersion);\n db.exec('COMMIT');\n } catch (error) {\n try {\n db.exec('ROLLBACK');\n } catch {\n /* preserve original error */\n }\n const em = error instanceof Error ? error.message : String(error);\n throw new Error(\n `SQLite migration to v${migration.targetVersion} (${migration.filename}) failed: ${em}`,\n { cause: error },\n );\n }\n}\n\n/**\n * Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.\n * Each step runs in its own transaction and updates schema_meta on success.\n */\nexport function applyPendingMigrations(\n db: DatabaseSync,\n options: ApplyMigrationsOptions = {},\n): number {\n const targetVersion = options.targetVersion ?? XOPC_DB_SCHEMA_VERSION;\n let currentVersion = readSchemaVersion(db);\n\n if (currentVersion > targetVersion) {\n throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);\n }\n\n if (currentVersion >= targetVersion) {\n return currentVersion;\n }\n\n const migrations = discoverSqlMigrations(resolveMigrationsDir(options.migrationsDir));\n\n while (currentVersion < targetVersion) {\n const nextVersion = currentVersion + 1;\n const migration = migrationByTarget(migrations, nextVersion);\n if (!migration) {\n throw new DatabaseSchemaMigrationGapError(currentVersion, targetVersion, nextVersion);\n }\n applySingleMigration(db, migration);\n currentVersion = nextVersion;\n }\n\n return currentVersion;\n}\n\nexport type SchemaMigrationStatus = {\n dbVersion: number;\n appVersion: number;\n pendingVersions: number[];\n isTooNew: boolean;\n hasMigrationGap: boolean;\n missingVersion: number | null;\n};\n\n/** Inspect schema version without mutating the database. */\nexport function inspectSchemaMigrationStatus(\n db: DatabaseSync,\n options: Pick<ApplyMigrationsOptions, 'migrationsDir' | 'targetVersion'> = {},\n): SchemaMigrationStatus {\n const appVersion = options.targetVersion ?? XOPC_DB_SCHEMA_VERSION;\n const dbVersion = readSchemaVersion(db);\n const isTooNew = dbVersion > appVersion;\n\n if (isTooNew) {\n return {\n dbVersion,\n appVersion,\n pendingVersions: [],\n isTooNew: true,\n hasMigrationGap: false,\n missingVersion: null,\n };\n }\n\n const migrations = discoverSqlMigrations(resolveMigrationsDir(options.migrationsDir));\n const pendingVersions: number[] = [];\n let hasMigrationGap = false;\n let missingVersion: number | null = null;\n\n for (let version = dbVersion + 1; version <= appVersion; version++) {\n if (migrationByTarget(migrations, version)) {\n pendingVersions.push(version);\n } else {\n hasMigrationGap = true;\n missingVersion = version;\n break;\n }\n }\n\n return {\n dbVersion,\n appVersion,\n pendingVersions,\n isTooNew: false,\n hasMigrationGap,\n missingVersion,\n };\n}\n"],"mappings":";;;;;;;;;aAMwD;AASxD,MAAM,MAAM,aAAa,oBAAoB;;AAG7C,MAAa,kCAAkC;;AAG/C,MAAa,yBAAyB;AAEtC,MAAM,aAAa,QAAQ,cAAc,OAAO,KAAK,IAAI,CAAC;AAE1D,SAAgB,qBAAqB,UAA2B;AAC9D,KAAI,SACF,QAAO;CAGT,MAAM,aAAa,KAAK,YAAY,aAAa;AACjD,KAAI,WAAW,WAAW,CACxB,QAAO;AAGT,QAAO;;AAGT,SAAS,kBACP,YACA,eAC0B;AAC1B,QAAO,WAAW,MAAM,cAAc,UAAU,kBAAkB,cAAc;;AAGlF,SAAS,qBAAqB,IAAkB,WAA+B;AAC7E,KAAI,KAAK;EAAE,eAAe,UAAU;EAAe,MAAM,UAAU;EAAU,EAAE,4BAA4B;AAC3G,IAAG,KAAK,kBAAkB;AAC1B,KAAI;AACF,KAAG,KAAK,UAAU,IAAI;AACtB,mBAAiB,IAAI,UAAU,cAAc;AAC7C,KAAG,KAAK,SAAS;UACV,OAAO;AACd,MAAI;AACF,MAAG,KAAK,WAAW;UACb;EAGR,MAAM,KAAK,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AACjE,QAAM,IAAI,MACR,wBAAwB,UAAU,cAAc,IAAI,UAAU,SAAS,YAAY,MACnF,EAAE,OAAO,OAAO,CACjB;;;;;;;AAQL,SAAgB,uBACd,IACA,UAAkC,EAAE,EAC5B;CACR,MAAM,gBAAgB,QAAQ,iBAAA;CAC9B,IAAI,iBAAiB,kBAAkB,GAAG;AAE1C,KAAI,iBAAiB,cACnB,OAAM,IAAI,0BAA0B,gBAAgB,cAAc;AAGpE,KAAI,kBAAkB,cACpB,QAAO;CAGT,MAAM,aAAa,sBAAsB,qBAAqB,QAAQ,cAAc,CAAC;AAErF,QAAO,iBAAiB,eAAe;EACrC,MAAM,cAAc,iBAAiB;EACrC,MAAM,YAAY,kBAAkB,YAAY,YAAY;AAC5D,MAAI,CAAC,UACH,OAAM,IAAI,gCAAgC,gBAAgB,eAAe,YAAY;AAEvF,uBAAqB,IAAI,UAAU;AACnC,mBAAiB;;AAGnB,QAAO;;;AAaT,SAAgB,6BACd,IACA,UAA2E,EAAE,EACtD;CACvB,MAAM,aAAa,QAAQ,iBAAA;CAC3B,MAAM,YAAY,kBAAkB,GAAG;AAGvC,KAFiB,YAAY,WAG3B,QAAO;EACL;EACA;EACA,iBAAiB,EAAE;EACnB,UAAU;EACV,iBAAiB;EACjB,gBAAgB;EACjB;CAGH,MAAM,aAAa,sBAAsB,qBAAqB,QAAQ,cAAc,CAAC;CACrF,MAAM,kBAA4B,EAAE;CACpC,IAAI,kBAAkB;CACtB,IAAI,iBAAgC;AAEpC,MAAK,IAAI,UAAU,YAAY,GAAG,WAAW,YAAY,UACvD,KAAI,kBAAkB,YAAY,QAAQ,CACxC,iBAAgB,KAAK,QAAQ;MACxB;AACL,oBAAkB;AAClB,mBAAiB;AACjB;;AAIJ,QAAO;EACL;EACA;EACA;EACA,UAAU;EACV;EACA;EACD"}
@@ -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 = 37;
22
+ export const XOPC_DB_SCHEMA_VERSION = 45;
23
23
 
24
24
  const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
25
25
 
@@ -31,7 +31,7 @@ function ensureXopcDatabaseSchema(db) {
31
31
  bootstrapFreshDatabase(db);
32
32
  currentVersion = 11;
33
33
  }
34
- applyPendingMigrations(db, { targetVersion: 37 });
34
+ applyPendingMigrations(db, { targetVersion: 45 });
35
35
  }
36
36
  //#endregion
37
37
  export { SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, ensureSchemaMetaTable, ensureXopcDatabaseSchema, readSchemaVersion, readSchemaVersionForTest, setSchemaVersion };
@@ -704,3 +704,23 @@ CREATE TABLE IF NOT EXISTS goal_session_links (
704
704
 
705
705
  CREATE INDEX IF NOT EXISTS idx_goal_session_links_session
706
706
  ON goal_session_links(session_key, linked_at DESC);
707
+
708
+ CREATE TABLE IF NOT EXISTS memory_reference_consents (
709
+ consent_id TEXT PRIMARY KEY,
710
+ record_id TEXT NOT NULL,
711
+ session_key TEXT NOT NULL,
712
+ purpose TEXT NOT NULL,
713
+ status TEXT NOT NULL CHECK (status IN ('pending', 'granted', 'denied', 'consumed')),
714
+ grant_scope TEXT CHECK (grant_scope IN ('once', 'session', 'always')),
715
+ expires_at INTEGER,
716
+ created_at INTEGER NOT NULL,
717
+ updated_at INTEGER NOT NULL,
718
+ FOREIGN KEY (record_id) REFERENCES memory_records(record_id) ON DELETE CASCADE
719
+ );
720
+
721
+ CREATE UNIQUE INDEX IF NOT EXISTS idx_memory_reference_consents_pending
722
+ ON memory_reference_consents(record_id, session_key)
723
+ WHERE status = 'pending';
724
+
725
+ CREATE INDEX IF NOT EXISTS idx_memory_reference_consents_resolution
726
+ ON memory_reference_consents(record_id, status, session_key, expires_at);
@@ -0,0 +1,227 @@
1
+ import { z } from 'zod';
2
+ export declare const UserMemoryModeSchema: z.ZodEnum<{
3
+ off: "off";
4
+ auto: "auto";
5
+ readOnly: "readOnly";
6
+ confirmWrite: "confirmWrite";
7
+ }>;
8
+ export declare const UserMemoryConfigSchema: z.ZodDefault<z.ZodObject<{
9
+ mode: z.ZodDefault<z.ZodEnum<{
10
+ off: "off";
11
+ auto: "auto";
12
+ readOnly: "readOnly";
13
+ confirmWrite: "confirmWrite";
14
+ }>>;
15
+ sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
16
+ session: "session";
17
+ workspace: "workspace";
18
+ curated: "curated";
19
+ userProfile: "userProfile";
20
+ agentProfile: "agentProfile";
21
+ connectedSources: "connectedSources";
22
+ }>>>;
23
+ writePolicy: z.ZodOptional<z.ZodObject<{
24
+ userProfile: z.ZodOptional<z.ZodEnum<{
25
+ allow: "allow";
26
+ confirm: "confirm";
27
+ deny: "deny";
28
+ }>>;
29
+ agentProfile: z.ZodOptional<z.ZodEnum<{
30
+ allow: "allow";
31
+ confirm: "confirm";
32
+ deny: "deny";
33
+ }>>;
34
+ curated: z.ZodOptional<z.ZodEnum<{
35
+ allow: "allow";
36
+ confirm: "confirm";
37
+ deny: "deny";
38
+ }>>;
39
+ workspace: z.ZodOptional<z.ZodEnum<{
40
+ allow: "allow";
41
+ confirm: "confirm";
42
+ deny: "deny";
43
+ }>>;
44
+ }, z.core.$strict>>;
45
+ retention: z.ZodOptional<z.ZodObject<{
46
+ compaction: z.ZodDefault<z.ZodBoolean>;
47
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
48
+ maxItems: z.ZodOptional<z.ZodNumber>;
49
+ maxChars: z.ZodOptional<z.ZodNumber>;
50
+ }, z.core.$strict>>;
51
+ }, z.core.$strict>>;
52
+ export declare const UserUnderstandingConfigSchema: z.ZodDefault<z.ZodObject<{
53
+ enabled: z.ZodDefault<z.ZodBoolean>;
54
+ adaptiveCadence: z.ZodDefault<z.ZodBoolean>;
55
+ reviewIntervalTurns: z.ZodDefault<z.ZodNumber>;
56
+ maxHistoryMessages: z.ZodDefault<z.ZodNumber>;
57
+ maxDurationMs: z.ZodDefault<z.ZodNumber>;
58
+ }, z.core.$strict>>;
59
+ export declare const UserContextPrivacySchema: z.ZodDefault<z.ZodObject<{
60
+ sensitiveWritePolicy: z.ZodDefault<z.ZodEnum<{
61
+ allow: "allow";
62
+ confirm: "confirm";
63
+ deny: "deny";
64
+ }>>;
65
+ }, z.core.$strict>>;
66
+ export declare const UserContextProviderRoutingSchema: z.ZodDefault<z.ZodObject<{
67
+ searchStrategy: z.ZodDefault<z.ZodEnum<{
68
+ "local-first": "local-first";
69
+ "external-first": "external-first";
70
+ fanout: "fanout";
71
+ "local-only": "local-only";
72
+ "external-only": "external-only";
73
+ }>>;
74
+ writeStrategy: z.ZodDefault<z.ZodEnum<{
75
+ "local-first": "local-first";
76
+ "external-first": "external-first";
77
+ "local-only": "local-only";
78
+ "external-only": "external-only";
79
+ "write-through": "write-through";
80
+ }>>;
81
+ allowExternalWrites: z.ZodDefault<z.ZodBoolean>;
82
+ allowedProviderIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
83
+ autoWriteKinds: z.ZodOptional<z.ZodArray<z.ZodString>>;
84
+ }, z.core.$strict>>;
85
+ export declare const UserContextDreamingSchema: z.ZodDefault<z.ZodObject<{
86
+ enabled: z.ZodDefault<z.ZodBoolean>;
87
+ frequency: z.ZodOptional<z.ZodString>;
88
+ timezone: z.ZodOptional<z.ZodString>;
89
+ phases: z.ZodOptional<z.ZodObject<{
90
+ light: z.ZodOptional<z.ZodObject<{
91
+ enabled: z.ZodOptional<z.ZodBoolean>;
92
+ cron: z.ZodOptional<z.ZodString>;
93
+ lookbackDays: z.ZodOptional<z.ZodNumber>;
94
+ limit: z.ZodOptional<z.ZodNumber>;
95
+ dedupeSimilarity: z.ZodOptional<z.ZodNumber>;
96
+ }, z.core.$strict>>;
97
+ deep: z.ZodOptional<z.ZodObject<{
98
+ enabled: z.ZodOptional<z.ZodBoolean>;
99
+ cron: z.ZodOptional<z.ZodString>;
100
+ minScore: z.ZodOptional<z.ZodNumber>;
101
+ minRecallCount: z.ZodOptional<z.ZodNumber>;
102
+ minUniqueQueries: z.ZodOptional<z.ZodNumber>;
103
+ limit: z.ZodOptional<z.ZodNumber>;
104
+ recencyHalfLifeDays: z.ZodOptional<z.ZodNumber>;
105
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
106
+ }, z.core.$strict>>;
107
+ rem: z.ZodOptional<z.ZodObject<{
108
+ enabled: z.ZodOptional<z.ZodBoolean>;
109
+ cron: z.ZodOptional<z.ZodString>;
110
+ lookbackDays: z.ZodOptional<z.ZodNumber>;
111
+ limit: z.ZodOptional<z.ZodNumber>;
112
+ minPatternStrength: z.ZodOptional<z.ZodNumber>;
113
+ }, z.core.$strict>>;
114
+ }, z.core.$strict>>;
115
+ }, z.core.$strict>>;
116
+ export declare const UserContextConfigSchema: z.ZodDefault<z.ZodObject<{
117
+ enabled: z.ZodDefault<z.ZodBoolean>;
118
+ memory: z.ZodDefault<z.ZodObject<{
119
+ mode: z.ZodDefault<z.ZodEnum<{
120
+ off: "off";
121
+ auto: "auto";
122
+ readOnly: "readOnly";
123
+ confirmWrite: "confirmWrite";
124
+ }>>;
125
+ sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
126
+ session: "session";
127
+ workspace: "workspace";
128
+ curated: "curated";
129
+ userProfile: "userProfile";
130
+ agentProfile: "agentProfile";
131
+ connectedSources: "connectedSources";
132
+ }>>>;
133
+ writePolicy: z.ZodOptional<z.ZodObject<{
134
+ userProfile: z.ZodOptional<z.ZodEnum<{
135
+ allow: "allow";
136
+ confirm: "confirm";
137
+ deny: "deny";
138
+ }>>;
139
+ agentProfile: z.ZodOptional<z.ZodEnum<{
140
+ allow: "allow";
141
+ confirm: "confirm";
142
+ deny: "deny";
143
+ }>>;
144
+ curated: z.ZodOptional<z.ZodEnum<{
145
+ allow: "allow";
146
+ confirm: "confirm";
147
+ deny: "deny";
148
+ }>>;
149
+ workspace: z.ZodOptional<z.ZodEnum<{
150
+ allow: "allow";
151
+ confirm: "confirm";
152
+ deny: "deny";
153
+ }>>;
154
+ }, z.core.$strict>>;
155
+ retention: z.ZodOptional<z.ZodObject<{
156
+ compaction: z.ZodDefault<z.ZodBoolean>;
157
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
158
+ maxItems: z.ZodOptional<z.ZodNumber>;
159
+ maxChars: z.ZodOptional<z.ZodNumber>;
160
+ }, z.core.$strict>>;
161
+ }, z.core.$strict>>;
162
+ understanding: z.ZodDefault<z.ZodObject<{
163
+ enabled: z.ZodDefault<z.ZodBoolean>;
164
+ adaptiveCadence: z.ZodDefault<z.ZodBoolean>;
165
+ reviewIntervalTurns: z.ZodDefault<z.ZodNumber>;
166
+ maxHistoryMessages: z.ZodDefault<z.ZodNumber>;
167
+ maxDurationMs: z.ZodDefault<z.ZodNumber>;
168
+ }, z.core.$strict>>;
169
+ privacy: z.ZodDefault<z.ZodObject<{
170
+ sensitiveWritePolicy: z.ZodDefault<z.ZodEnum<{
171
+ allow: "allow";
172
+ confirm: "confirm";
173
+ deny: "deny";
174
+ }>>;
175
+ }, z.core.$strict>>;
176
+ providerRouting: z.ZodDefault<z.ZodObject<{
177
+ searchStrategy: z.ZodDefault<z.ZodEnum<{
178
+ "local-first": "local-first";
179
+ "external-first": "external-first";
180
+ fanout: "fanout";
181
+ "local-only": "local-only";
182
+ "external-only": "external-only";
183
+ }>>;
184
+ writeStrategy: z.ZodDefault<z.ZodEnum<{
185
+ "local-first": "local-first";
186
+ "external-first": "external-first";
187
+ "local-only": "local-only";
188
+ "external-only": "external-only";
189
+ "write-through": "write-through";
190
+ }>>;
191
+ allowExternalWrites: z.ZodDefault<z.ZodBoolean>;
192
+ allowedProviderIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
193
+ autoWriteKinds: z.ZodOptional<z.ZodArray<z.ZodString>>;
194
+ }, z.core.$strict>>;
195
+ dreaming: z.ZodDefault<z.ZodObject<{
196
+ enabled: z.ZodDefault<z.ZodBoolean>;
197
+ frequency: z.ZodOptional<z.ZodString>;
198
+ timezone: z.ZodOptional<z.ZodString>;
199
+ phases: z.ZodOptional<z.ZodObject<{
200
+ light: z.ZodOptional<z.ZodObject<{
201
+ enabled: z.ZodOptional<z.ZodBoolean>;
202
+ cron: z.ZodOptional<z.ZodString>;
203
+ lookbackDays: z.ZodOptional<z.ZodNumber>;
204
+ limit: z.ZodOptional<z.ZodNumber>;
205
+ dedupeSimilarity: z.ZodOptional<z.ZodNumber>;
206
+ }, z.core.$strict>>;
207
+ deep: z.ZodOptional<z.ZodObject<{
208
+ enabled: z.ZodOptional<z.ZodBoolean>;
209
+ cron: z.ZodOptional<z.ZodString>;
210
+ minScore: z.ZodOptional<z.ZodNumber>;
211
+ minRecallCount: z.ZodOptional<z.ZodNumber>;
212
+ minUniqueQueries: z.ZodOptional<z.ZodNumber>;
213
+ limit: z.ZodOptional<z.ZodNumber>;
214
+ recencyHalfLifeDays: z.ZodOptional<z.ZodNumber>;
215
+ maxAgeDays: z.ZodOptional<z.ZodNumber>;
216
+ }, z.core.$strict>>;
217
+ rem: z.ZodOptional<z.ZodObject<{
218
+ enabled: z.ZodOptional<z.ZodBoolean>;
219
+ cron: z.ZodOptional<z.ZodString>;
220
+ lookbackDays: z.ZodOptional<z.ZodNumber>;
221
+ limit: z.ZodOptional<z.ZodNumber>;
222
+ minPatternStrength: z.ZodOptional<z.ZodNumber>;
223
+ }, z.core.$strict>>;
224
+ }, z.core.$strict>>;
225
+ }, z.core.$strict>>;
226
+ }, z.core.$strict>>;
227
+ export type UserContextConfig = z.infer<typeof UserContextConfigSchema>;
@@ -0,0 +1,158 @@
1
+ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { z } from "zod";
3
+ //#region src/user-context/config.ts
4
+ var UserMemoryModeSchema, UserMemoryConfigSchema, UserUnderstandingConfigSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, DreamingPhaseSchema, UserContextDreamingSchema, UserContextConfigSchema;
5
+ var init_config = __esmMin((() => {
6
+ UserMemoryModeSchema = z.enum([
7
+ "off",
8
+ "readOnly",
9
+ "confirmWrite",
10
+ "auto"
11
+ ]);
12
+ UserMemoryConfigSchema = z.object({
13
+ mode: UserMemoryModeSchema.default("off"),
14
+ sources: z.array(z.enum([
15
+ "session",
16
+ "userProfile",
17
+ "agentProfile",
18
+ "curated",
19
+ "workspace",
20
+ "connectedSources"
21
+ ])).default(["session"]),
22
+ writePolicy: z.object({
23
+ userProfile: z.enum([
24
+ "deny",
25
+ "confirm",
26
+ "allow"
27
+ ]).optional(),
28
+ agentProfile: z.enum([
29
+ "deny",
30
+ "confirm",
31
+ "allow"
32
+ ]).optional(),
33
+ curated: z.enum([
34
+ "deny",
35
+ "confirm",
36
+ "allow"
37
+ ]).optional(),
38
+ workspace: z.enum([
39
+ "deny",
40
+ "confirm",
41
+ "allow"
42
+ ]).optional()
43
+ }).strict().optional(),
44
+ retention: z.object({
45
+ compaction: z.boolean().default(true),
46
+ maxAgeDays: z.number().int().positive().optional(),
47
+ maxItems: z.number().int().positive().optional(),
48
+ maxChars: z.number().int().positive().optional()
49
+ }).strict().optional()
50
+ }).strict().default({
51
+ mode: "off",
52
+ sources: ["session"]
53
+ });
54
+ UserUnderstandingConfigSchema = z.object({
55
+ enabled: z.boolean().default(true),
56
+ adaptiveCadence: z.boolean().default(true),
57
+ reviewIntervalTurns: z.number().int().min(1).max(1e3).default(10),
58
+ maxHistoryMessages: z.number().int().min(1).max(200).default(80),
59
+ maxDurationMs: z.number().int().min(1e3).max(6e5).default(12e4)
60
+ }).strict().default({
61
+ enabled: true,
62
+ adaptiveCadence: true,
63
+ reviewIntervalTurns: 10,
64
+ maxHistoryMessages: 80,
65
+ maxDurationMs: 12e4
66
+ });
67
+ UserContextPrivacySchema = z.object({ sensitiveWritePolicy: z.enum([
68
+ "deny",
69
+ "confirm",
70
+ "allow"
71
+ ]).default("confirm") }).strict().default({ sensitiveWritePolicy: "confirm" });
72
+ UserContextProviderRoutingSchema = z.object({
73
+ searchStrategy: z.enum([
74
+ "local-first",
75
+ "external-first",
76
+ "fanout",
77
+ "local-only",
78
+ "external-only"
79
+ ]).default("fanout"),
80
+ writeStrategy: z.enum([
81
+ "local-first",
82
+ "external-first",
83
+ "write-through",
84
+ "local-only",
85
+ "external-only"
86
+ ]).default("local-first"),
87
+ allowExternalWrites: z.boolean().default(false),
88
+ allowedProviderIds: z.array(z.string().min(1)).optional(),
89
+ autoWriteKinds: z.array(z.string().min(1)).optional()
90
+ }).strict().default({
91
+ searchStrategy: "fanout",
92
+ writeStrategy: "local-first",
93
+ allowExternalWrites: false
94
+ });
95
+ DreamingPhaseSchema = z.object({
96
+ enabled: z.boolean().optional(),
97
+ cron: z.string().min(1).optional()
98
+ }).strict();
99
+ UserContextDreamingSchema = z.object({
100
+ enabled: z.boolean().default(false),
101
+ frequency: z.string().min(1).optional(),
102
+ timezone: z.string().optional(),
103
+ phases: z.object({
104
+ light: DreamingPhaseSchema.extend({
105
+ lookbackDays: z.number().int().positive().optional(),
106
+ limit: z.number().int().nonnegative().optional(),
107
+ dedupeSimilarity: z.number().min(0).max(1).optional()
108
+ }).strict().optional(),
109
+ deep: DreamingPhaseSchema.extend({
110
+ minScore: z.number().min(0).max(1).optional(),
111
+ minRecallCount: z.number().int().positive().optional(),
112
+ minUniqueQueries: z.number().int().positive().optional(),
113
+ limit: z.number().int().nonnegative().optional(),
114
+ recencyHalfLifeDays: z.number().positive().optional(),
115
+ maxAgeDays: z.number().positive().optional()
116
+ }).strict().optional(),
117
+ rem: DreamingPhaseSchema.extend({
118
+ lookbackDays: z.number().int().positive().optional(),
119
+ limit: z.number().int().nonnegative().optional(),
120
+ minPatternStrength: z.number().min(0).max(1).optional()
121
+ }).strict().optional()
122
+ }).strict().optional()
123
+ }).strict().default({ enabled: false });
124
+ UserContextConfigSchema = z.object({
125
+ enabled: z.boolean().default(true),
126
+ memory: UserMemoryConfigSchema,
127
+ understanding: UserUnderstandingConfigSchema,
128
+ privacy: UserContextPrivacySchema,
129
+ providerRouting: UserContextProviderRoutingSchema,
130
+ dreaming: UserContextDreamingSchema
131
+ }).strict().default({
132
+ enabled: true,
133
+ memory: {
134
+ mode: "confirmWrite",
135
+ sources: ["session", "curated"],
136
+ writePolicy: { curated: "confirm" }
137
+ },
138
+ understanding: {
139
+ enabled: true,
140
+ adaptiveCadence: true,
141
+ reviewIntervalTurns: 10,
142
+ maxHistoryMessages: 80,
143
+ maxDurationMs: 12e4
144
+ },
145
+ privacy: { sensitiveWritePolicy: "confirm" },
146
+ providerRouting: {
147
+ searchStrategy: "fanout",
148
+ writeStrategy: "local-first",
149
+ allowExternalWrites: false
150
+ },
151
+ dreaming: { enabled: false }
152
+ });
153
+ }));
154
+ //#endregion
155
+ init_config();
156
+ export { UserContextConfigSchema, UserContextDreamingSchema, UserContextPrivacySchema, UserContextProviderRoutingSchema, UserMemoryConfigSchema, UserMemoryModeSchema, UserUnderstandingConfigSchema, init_config };
157
+
158
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","names":[],"sources":["../../../src/user-context/config.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport const UserMemoryModeSchema = z.enum(['off', 'readOnly', 'confirmWrite', 'auto']);\n\nexport const UserMemoryConfigSchema = z\n .object({\n mode: UserMemoryModeSchema.default('off'),\n sources: z\n .array(z.enum(['session', 'userProfile', 'agentProfile', 'curated', 'workspace', 'connectedSources']))\n .default(['session']),\n writePolicy: z\n .object({\n userProfile: z.enum(['deny', 'confirm', 'allow']).optional(),\n agentProfile: z.enum(['deny', 'confirm', 'allow']).optional(),\n curated: z.enum(['deny', 'confirm', 'allow']).optional(),\n workspace: z.enum(['deny', 'confirm', 'allow']).optional(),\n })\n .strict()\n .optional(),\n retention: z\n .object({\n compaction: z.boolean().default(true),\n maxAgeDays: z.number().int().positive().optional(),\n maxItems: z.number().int().positive().optional(),\n maxChars: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .default({ mode: 'off', sources: ['session'] });\n\nexport const UserUnderstandingConfigSchema = z\n .object({\n enabled: z.boolean().default(true),\n adaptiveCadence: z.boolean().default(true),\n reviewIntervalTurns: z.number().int().min(1).max(1_000).default(10),\n maxHistoryMessages: z.number().int().min(1).max(200).default(80),\n maxDurationMs: z.number().int().min(1_000).max(600_000).default(120_000),\n })\n .strict()\n .default({\n enabled: true,\n adaptiveCadence: true,\n reviewIntervalTurns: 10,\n maxHistoryMessages: 80,\n maxDurationMs: 120_000,\n });\n\nexport const UserContextPrivacySchema = z\n .object({\n sensitiveWritePolicy: z.enum(['deny', 'confirm', 'allow']).default('confirm'),\n })\n .strict()\n .default({ sensitiveWritePolicy: 'confirm' });\n\nexport const UserContextProviderRoutingSchema = z\n .object({\n searchStrategy: z\n .enum(['local-first', 'external-first', 'fanout', 'local-only', 'external-only'])\n .default('fanout'),\n writeStrategy: z\n .enum(['local-first', 'external-first', 'write-through', 'local-only', 'external-only'])\n .default('local-first'),\n allowExternalWrites: z.boolean().default(false),\n allowedProviderIds: z.array(z.string().min(1)).optional(),\n autoWriteKinds: z.array(z.string().min(1)).optional(),\n })\n .strict()\n .default({\n searchStrategy: 'fanout',\n writeStrategy: 'local-first',\n allowExternalWrites: false,\n });\n\nconst DreamingPhaseSchema = z\n .object({\n enabled: z.boolean().optional(),\n cron: z.string().min(1).optional(),\n })\n .strict();\n\nexport const UserContextDreamingSchema = z\n .object({\n enabled: z.boolean().default(false),\n frequency: z.string().min(1).optional(),\n timezone: z.string().optional(),\n phases: z\n .object({\n light: DreamingPhaseSchema.extend({\n lookbackDays: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n dedupeSimilarity: z.number().min(0).max(1).optional(),\n }).strict().optional(),\n deep: DreamingPhaseSchema.extend({\n minScore: z.number().min(0).max(1).optional(),\n minRecallCount: z.number().int().positive().optional(),\n minUniqueQueries: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n recencyHalfLifeDays: z.number().positive().optional(),\n maxAgeDays: z.number().positive().optional(),\n }).strict().optional(),\n rem: DreamingPhaseSchema.extend({\n lookbackDays: z.number().int().positive().optional(),\n limit: z.number().int().nonnegative().optional(),\n minPatternStrength: z.number().min(0).max(1).optional(),\n }).strict().optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .default({ enabled: false });\n\nexport const UserContextConfigSchema = z\n .object({\n enabled: z.boolean().default(true),\n memory: UserMemoryConfigSchema,\n understanding: UserUnderstandingConfigSchema,\n privacy: UserContextPrivacySchema,\n providerRouting: UserContextProviderRoutingSchema,\n dreaming: UserContextDreamingSchema,\n })\n .strict()\n .default({\n enabled: true,\n memory: { mode: 'confirmWrite', sources: ['session', 'curated'], writePolicy: { curated: 'confirm' } },\n understanding: {\n enabled: true,\n adaptiveCadence: true,\n reviewIntervalTurns: 10,\n maxHistoryMessages: 80,\n maxDurationMs: 120_000,\n },\n privacy: { sensitiveWritePolicy: 'confirm' },\n providerRouting: {\n searchStrategy: 'fanout',\n writeStrategy: 'local-first',\n allowExternalWrites: false,\n },\n dreaming: { enabled: false },\n });\n\nexport type UserContextConfig = z.infer<typeof UserContextConfigSchema>;\n"],"mappings":";;;;;AAEa,wBAAuB,EAAE,KAAK;EAAC;EAAO;EAAY;EAAgB;EAAO,CAAC;AAE1E,0BAAyB,EACnC,OAAO;EACN,MAAM,qBAAqB,QAAQ,MAAM;EACzC,SAAS,EACN,MAAM,EAAE,KAAK;GAAC;GAAW;GAAe;GAAgB;GAAW;GAAa;GAAmB,CAAC,CAAC,CACrG,QAAQ,CAAC,UAAU,CAAC;EACvB,aAAa,EACV,OAAO;GACN,aAAa,EAAE,KAAK;IAAC;IAAQ;IAAW;IAAQ,CAAC,CAAC,UAAU;GAC5D,cAAc,EAAE,KAAK;IAAC;IAAQ;IAAW;IAAQ,CAAC,CAAC,UAAU;GAC7D,SAAS,EAAE,KAAK;IAAC;IAAQ;IAAW;IAAQ,CAAC,CAAC,UAAU;GACxD,WAAW,EAAE,KAAK;IAAC;IAAQ;IAAW;IAAQ,CAAC,CAAC,UAAU;GAC3D,CAAC,CACD,QAAQ,CACR,UAAU;EACb,WAAW,EACR,OAAO;GACN,YAAY,EAAE,SAAS,CAAC,QAAQ,KAAK;GACrC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;GAClD,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;GAChD,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;GACjD,CAAC,CACD,QAAQ,CACR,UAAU;EACd,CAAC,CACD,QAAQ,CACR,QAAQ;EAAE,MAAM;EAAO,SAAS,CAAC,UAAU;EAAE,CAAC;AAEpC,iCAAgC,EAC1C,OAAO;EACN,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;EAClC,iBAAiB,EAAE,SAAS,CAAC,QAAQ,KAAK;EAC1C,qBAAqB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAM,CAAC,QAAQ,GAAG;EACnE,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG;EAChE,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAM,CAAC,IAAI,IAAQ,CAAC,QAAQ,KAAQ;EACzE,CAAC,CACD,QAAQ,CACR,QAAQ;EACP,SAAS;EACT,iBAAiB;EACjB,qBAAqB;EACrB,oBAAoB;EACpB,eAAe;EAChB,CAAC;AAES,4BAA2B,EACrC,OAAO,EACN,sBAAsB,EAAE,KAAK;EAAC;EAAQ;EAAW;EAAQ,CAAC,CAAC,QAAQ,UAAU,EAC9E,CAAC,CACD,QAAQ,CACR,QAAQ,EAAE,sBAAsB,WAAW,CAAC;AAElC,oCAAmC,EAC7C,OAAO;EACN,gBAAgB,EACb,KAAK;GAAC;GAAe;GAAkB;GAAU;GAAc;GAAgB,CAAC,CAChF,QAAQ,SAAS;EACpB,eAAe,EACZ,KAAK;GAAC;GAAe;GAAkB;GAAiB;GAAc;GAAgB,CAAC,CACvF,QAAQ,cAAc;EACzB,qBAAqB,EAAE,SAAS,CAAC,QAAQ,MAAM;EAC/C,oBAAoB,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU;EACzD,gBAAgB,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU;EACtD,CAAC,CACD,QAAQ,CACR,QAAQ;EACP,gBAAgB;EAChB,eAAe;EACf,qBAAqB;EACtB,CAAC;AAEE,uBAAsB,EACzB,OAAO;EACN,SAAS,EAAE,SAAS,CAAC,UAAU;EAC/B,MAAM,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACnC,CAAC,CACD,QAAQ;AAEE,6BAA4B,EACtC,OAAO;EACN,SAAS,EAAE,SAAS,CAAC,QAAQ,MAAM;EACnC,WAAW,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU;EACvC,UAAU,EAAE,QAAQ,CAAC,UAAU;EAC/B,QAAQ,EACL,OAAO;GACN,OAAO,oBAAoB,OAAO;IAChC,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;IACpD,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU;IAChD,kBAAkB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;IACtD,CAAC,CAAC,QAAQ,CAAC,UAAU;GACtB,MAAM,oBAAoB,OAAO;IAC/B,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;IAC7C,gBAAgB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;IACtD,kBAAkB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;IACxD,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU;IAChD,qBAAqB,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;IACrD,YAAY,EAAE,QAAQ,CAAC,UAAU,CAAC,UAAU;IAC7C,CAAC,CAAC,QAAQ,CAAC,UAAU;GACtB,KAAK,oBAAoB,OAAO;IAC9B,cAAc,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU;IACpD,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU;IAChD,oBAAoB,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,UAAU;IACxD,CAAC,CAAC,QAAQ,CAAC,UAAU;GACvB,CAAC,CACD,QAAQ,CACR,UAAU;EACd,CAAC,CACD,QAAQ,CACR,QAAQ,EAAE,SAAS,OAAO,CAAC;AAEjB,2BAA0B,EACpC,OAAO;EACN,SAAS,EAAE,SAAS,CAAC,QAAQ,KAAK;EAClC,QAAQ;EACR,eAAe;EACf,SAAS;EACT,iBAAiB;EACjB,UAAU;EACX,CAAC,CACD,QAAQ,CACR,QAAQ;EACP,SAAS;EACT,QAAQ;GAAE,MAAM;GAAgB,SAAS,CAAC,WAAW,UAAU;GAAE,aAAa,EAAE,SAAS,WAAW;GAAE;EACtG,eAAe;GACb,SAAS;GACT,iBAAiB;GACjB,qBAAqB;GACrB,oBAAoB;GACpB,eAAe;GAChB;EACD,SAAS,EAAE,sBAAsB,WAAW;EAC5C,iBAAiB;GACf,gBAAgB;GAChB,eAAe;GACf,qBAAqB;GACtB;EACD,UAAU,EAAE,SAAS,OAAO;EAC7B,CAAC"}