@xopcai/xopc 0.0.323 → 0.0.325

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 (572) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/extensions/weixin/src/plugin.js +1 -9
  4. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DFzmThVi.js → agent-avatar-dicebear-CxfXpPWs.js} +1 -1
  5. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CDHe8gJf.js +1 -0
  6. package/dist/gateway/static/root/assets/{agent-plugin-dialog-DYFYiuig.js → agent-plugin-dialog-DMv-udoZ.js} +1 -1
  7. package/dist/gateway/static/root/assets/{agents-BqIlB5Co.js → agents-D_xOAXgj.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-BgvMRGWe.js → app-management-settings-panel-p7fZB4dT.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-CliHU03A.js → appearance-settings-C-clVcfp.js} +1 -1
  10. package/dist/gateway/static/root/assets/apps-page-Dz2g7eAN.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-DnuPpm0u.js → archive-plugin-Xm6xChUX.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-BiwaK0ie.js → attachment-load-Di8kuG4L.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automations-page-CJSISGQH.js → automations-page-GUZgDhKj.js} +1 -1
  14. package/dist/gateway/static/root/assets/automations-workspace-BUZhG9aJ.js +7 -0
  15. package/dist/gateway/static/root/assets/{binary-plugins-KDjduQZO.js → binary-plugins-OCrDjC9O.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-bclvgove.js → block-editor-m9tqvu7x.js} +3 -3
  17. package/dist/gateway/static/root/assets/{browser-automation-inputs-CfQ2T9t6.js → browser-automation-inputs-DSWXq9lI.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-automations-page-Cxq38Nnp.js → browser-automations-page-DuOaridE.js} +2 -2
  19. package/dist/gateway/static/root/assets/browser-settings-page-D2_PgHep.js +3 -0
  20. package/dist/gateway/static/root/assets/capabilities-sAZT4brT.js +1 -0
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel-7Y_pJqyt.js +8 -0
  22. package/dist/gateway/static/root/assets/channels-settings-B-Igy1ro.js +1 -0
  23. package/dist/gateway/static/root/assets/{chat-terminal-dock-DKQC62nQ.js → chat-terminal-dock-BfnVh8oo.js} +1 -1
  24. package/dist/gateway/static/root/assets/{computer-settings-page-D1whpIqL.js → computer-settings-page-aRG2lU4w.js} +1 -1
  25. package/dist/gateway/static/root/assets/{connector-service-page-BAuYTgf5.js → connector-service-page-B5EhnfJH.js} +1 -1
  26. package/dist/gateway/static/root/assets/connectors-page-7HfRt1LW.js +2 -0
  27. package/dist/gateway/static/root/assets/date-picker-CtDyij_x.js +1 -0
  28. package/dist/gateway/static/root/assets/{dependency-picker-DOuVO2M1.js → dependency-picker-z6ouWxmz.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-D9tu6Bhu.js → desktop-pet-BsIYCAkG.js} +1 -1
  30. package/dist/gateway/static/root/assets/{desktop-pet-settings-CQPXub2f.js → desktop-pet-settings-z-0aQ5ct.js} +1 -1
  31. package/dist/gateway/static/root/assets/{device-pairing-wizard-DxkOYSut.js → device-pairing-wizard-DlmhQvY5.js} +1 -1
  32. package/dist/gateway/static/root/assets/dist-3h6cXXhT.js +1 -0
  33. package/dist/gateway/static/root/assets/{extension-debug-page-CtWClPz-.js → extension-debug-page-Ct9pABNW.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-page-BHh9HLCz.js → extension-page-BktsR4hj.js} +1 -1
  35. package/dist/gateway/static/root/assets/{extension-settings-page-BdT3v5Uh.js → extension-settings-page-BQJc-vXH.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-config-swr-1eqyz9vZ.js → gateway-config-swr-CoQVulMd.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-settings-CZas_Ekx.js → gateway-settings-BfDVlvy6.js} +1 -1
  38. package/dist/gateway/static/root/assets/{gateway-startup-retry-C4rsW6vJ.js → gateway-startup-retry-B5GJ-CQV.js} +1 -1
  39. package/dist/gateway/static/root/assets/home-page-CI_eQTPL.js +1 -0
  40. package/dist/gateway/static/root/assets/{image-generation-api-B5DXMylk.js → image-generation-api-DvWDkbk1.js} +1 -1
  41. package/dist/gateway/static/root/assets/{imports-page-B1JH0G5j.js → imports-page-DFpQfHVU.js} +1 -1
  42. package/dist/gateway/static/root/assets/index-19rMUT3d.js +121 -0
  43. package/dist/gateway/static/root/assets/{index-CNc4N4TX.css → index-BKL5tg2f.css} +1 -1
  44. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DGrLJ8Yh.js → keyboard-shortcuts-settings-ctJLm8TP.js} +1 -1
  45. package/dist/gateway/static/root/assets/local-app-workbench-page-C9kaP3Dy.js +1 -0
  46. package/dist/gateway/static/root/assets/{local-apps-page-DqjStqbL.js → local-apps-page-BxC_LTqq.js} +1 -1
  47. package/dist/gateway/static/root/assets/{locale-store-BIkcRr3t.js → locale-store-BPZR8x9b.js} +1 -1
  48. package/dist/gateway/static/root/assets/logs-page-Ok5SpG-G.js +2 -0
  49. package/dist/gateway/static/root/assets/{management-settings-gCfH4cwH.js → management-settings-aOzRaQHM.js} +1 -1
  50. package/dist/gateway/static/root/assets/{markdown-view-Ck_5MADq.js → markdown-view-Dft8ASFD.js} +1 -1
  51. package/dist/gateway/static/root/assets/{media-plugins-DTsZqgo6.js → media-plugins-ni5zJ4Ok.js} +1 -1
  52. package/dist/gateway/static/root/assets/messages-kFWhF6_t.js +3 -0
  53. package/dist/gateway/static/root/assets/note-detail-panel-C9OEltN9.js +5 -0
  54. package/dist/gateway/static/root/assets/notes-page-Dj9rMgdi.js +8 -0
  55. package/dist/gateway/static/root/assets/{page-context-capture-button-DTI_g4tz.js → page-context-capture-button-BJA3d8vU.js} +1 -1
  56. package/dist/gateway/static/root/assets/{page-tabs-CfW_Q-K5.js → page-tabs-Dyc3wKkl.js} +1 -1
  57. package/dist/gateway/static/root/assets/popover-select-DcsFzD_i.js +1 -0
  58. package/dist/gateway/static/root/assets/{preview-open-alternatives-CuPN-vAn.js → preview-open-alternatives-tIOIQbNX.js} +1 -1
  59. package/dist/gateway/static/root/assets/{product-open-page-BHjxRz1E.js → product-open-page-DQctU8z3.js} +1 -1
  60. package/dist/gateway/static/root/assets/project-detail-page-Dy-EwZcc.js +1 -0
  61. package/dist/gateway/static/root/assets/{projects-page-Bk-es4i9.js → projects-page-JaGKa6rM.js} +1 -1
  62. package/dist/gateway/static/root/assets/{registry-api-BAAZUGnU.js → registry-api-DWWO6ajd.js} +1 -1
  63. package/dist/gateway/static/root/assets/remote-access-hub-Cb8-nd60.js +1 -0
  64. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-CHJBJKL1.js → runtime-tools-settings-panel-xhOSYfiX.js} +1 -1
  65. package/dist/gateway/static/root/assets/scenes-page-ClBkFdRY.js +2 -0
  66. package/dist/gateway/static/root/assets/{schema-form-FQAit5HL.js → schema-form-z8IeSdBp.js} +1 -1
  67. package/dist/gateway/static/root/assets/sessions-page-BYW5l_nY.js +1 -0
  68. package/dist/gateway/static/root/assets/settings-advanced-gate-CDNwmXuH.js +1 -0
  69. package/dist/gateway/static/root/assets/{settings-form-section-BDc6bw1q.js → settings-form-section-BXTJAser.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-DnhxBJjV.js → settings-page-Br9no5e4.js} +1 -1
  71. package/dist/gateway/static/root/assets/{settings-page-layout-D3KNSQ5g.js → settings-page-layout-D6745w0p.js} +1 -1
  72. package/dist/gateway/static/root/assets/setup-status-panel-D2N9764S.js +1 -0
  73. package/dist/gateway/static/root/assets/{share-preview-page-DVQCRxwK.js → share-preview-page-CE0SER59.js} +1 -1
  74. package/dist/gateway/static/root/assets/shares-settings-Dk3_QOKQ.js +1 -0
  75. package/dist/gateway/static/root/assets/skill-reload-api-CPt61fEv.js +1 -0
  76. package/dist/gateway/static/root/assets/skills-page-Db6PB2C6.js +2 -0
  77. package/dist/gateway/static/root/assets/{skills-page.utils-mDwC9UJ-.js → skills-page.utils-DrtW5FBy.js} +1 -1
  78. package/dist/gateway/static/root/assets/{system-settings-panel-Bk7GrMij.js → system-settings-panel-CuY1Zh5s.js} +1 -1
  79. package/dist/gateway/static/root/assets/task-detail-page-o7RiDUMi.js +1 -0
  80. package/dist/gateway/static/root/assets/{tunnel-api-D3Aquraj.js → tunnel-api-PGHDgvWb.js} +1 -1
  81. package/dist/gateway/static/root/assets/{use-autosave-C1xQ-sHn.js → use-autosave-B55oBQUt.js} +1 -1
  82. package/dist/gateway/static/root/assets/user-model-page-DspelwAa.js +2 -0
  83. package/dist/gateway/static/root/assets/{voice-api-key-field-DCNECvcp.js → voice-api-key-field-By6Lgbse.js} +1 -1
  84. package/dist/gateway/static/root/assets/{voice-config-api-B-_niUTU.js → voice-config-api-BaxITrwZ.js} +1 -1
  85. package/dist/gateway/static/root/assets/{work-discovery-overlay-BrGx_JS_.js → work-discovery-overlay-DdhgIlyf.js} +1 -1
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CmmC2Pdr.js → workflow-run-setup-panel-BOJYQaxX.js} +2 -2
  87. package/dist/gateway/static/root/assets/workflows-page-6ObD0IQZ.js +6 -0
  88. package/dist/gateway/static/root/index.html +11 -10
  89. package/dist/package.js +1 -1
  90. package/dist/packages/gateway-contract/src/home.js +284 -55
  91. package/dist/packages/gateway-contract/src/index.js +0 -2
  92. package/dist/packages/gateway-contract/src/notifications.js +3 -10
  93. package/dist/src/activity/emitter.js +2 -1
  94. package/dist/src/activity/service.js +2 -1
  95. package/dist/src/agent/agent-manager.d.ts +3 -2
  96. package/dist/src/agent/agent-manager.js +36 -44
  97. package/dist/src/agent/agent-scope.d.ts +19 -48
  98. package/dist/src/agent/agent-scope.js +47 -169
  99. package/dist/src/agent/background-review/run-background-review.js +5 -4
  100. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  101. package/dist/src/agent/commands/command-registry.js +7 -3
  102. package/dist/src/agent/context/coordinator.js +1 -1
  103. package/dist/src/agent/context/execution-context.js +2 -1
  104. package/dist/src/agent/context/execution-scope.js +2 -1
  105. package/dist/src/agent/context/workspace-seed.d.ts +1 -2
  106. package/dist/src/agent/context/workspace-seed.js +3 -3
  107. package/dist/src/agent/context/workspace-state.js +1 -1
  108. package/dist/src/agent/embedded/run-for-session.js +2 -2
  109. package/dist/src/agent/embedded/run-turn.js +2 -1
  110. package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +2 -1
  111. package/dist/src/agent/external-tools/cliProvider.js +2 -1
  112. package/dist/src/agent/external-tools/composio-provider.js +2 -1
  113. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  114. package/dist/src/agent/external-tools/index.js +2 -3
  115. package/dist/src/agent/external-tools/mcp-provider.js +2 -2
  116. package/dist/src/agent/image/tool-model-config.js +4 -5
  117. package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
  118. package/dist/src/agent/ipc/bus.js +1 -1
  119. package/dist/src/agent/ipc/socket.js +3 -3
  120. package/dist/src/agent/media-generation/runtime-shared.d.ts +1 -1
  121. package/dist/src/agent/media-generation/runtime-shared.js +1 -1
  122. package/dist/src/agent/memory/plugin-discovery.js +1 -2
  123. package/dist/src/agent/models/manager.d.ts +1 -1
  124. package/dist/src/agent/models/manager.js +2 -2
  125. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +1 -1
  126. package/dist/src/agent/prompt/response-language.js +2 -1
  127. package/dist/src/agent/prompt/service-prompt-builder.js +6 -3
  128. package/dist/src/agent/prompt/system-prompt.js +2 -1
  129. package/dist/src/agent/reply/post-compaction-context.js +2 -2
  130. package/dist/src/agent/service/build-direct-message-content.js +1 -1
  131. package/dist/src/agent/service/direct-turn-helpers.js +2 -1
  132. package/dist/src/agent/service/parse-outbound-session-key.js +2 -1
  133. package/dist/src/agent/service/process-direct-streaming.js +3 -2
  134. package/dist/src/agent/service/webchat-tts.js +2 -1
  135. package/dist/src/agent/service.d.ts +1 -1
  136. package/dist/src/agent/service.js +12 -11
  137. package/dist/src/agent/service.types.d.ts +2 -0
  138. package/dist/src/agent/session/session-inspector.js +4 -5
  139. package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +5 -0
  140. package/dist/src/agent/starter-agents.d.ts +4 -5
  141. package/dist/src/agent/starter-agents.js +21 -20
  142. package/dist/src/agent/tasks/task-judge-service.js +2 -2
  143. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  144. package/dist/src/agent/tool-manuals/xopc-use.js +31 -1
  145. package/dist/src/agent/tools/delegation-parent-policy.js +2 -3
  146. package/dist/src/agent/tools/factory.d.ts +2 -0
  147. package/dist/src/agent/tools/factory.js +10 -9
  148. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  149. package/dist/src/agent/tools/workflow-tool.js +2 -3
  150. package/dist/src/agent/tools/xopc-use-tool.d.ts +3 -2
  151. package/dist/src/agent/tools/xopc-use-tool.js +54 -6
  152. package/dist/src/agent/workflow/workflow-child-tools.js +1 -2
  153. package/dist/src/agent/workspace-runtime/registry.d.ts +1 -1
  154. package/dist/src/agent/workspace-runtime/registry.js +2 -2
  155. package/dist/src/agent-catalog/capabilities.d.ts +3 -0
  156. package/dist/src/agent-catalog/capabilities.js +238 -0
  157. package/dist/src/agent-catalog/id.d.ts +15 -0
  158. package/dist/src/agent-catalog/id.js +101 -0
  159. package/dist/src/agent-catalog/index.d.ts +6 -0
  160. package/dist/src/agent-catalog/index.js +10 -0
  161. package/dist/src/agent-catalog/migrations/legacy-config-cutover.d.ts +11 -0
  162. package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +195 -0
  163. package/dist/src/agent-catalog/repository.d.ts +39 -0
  164. package/dist/src/agent-catalog/repository.js +319 -0
  165. package/dist/src/agent-catalog/service.d.ts +33 -0
  166. package/dist/src/agent-catalog/service.js +202 -0
  167. package/dist/src/agent-catalog/test-support.d.ts +14 -0
  168. package/dist/src/agent-catalog/test-support.js +34 -0
  169. package/dist/src/agent-catalog/types.d.ts +26 -0
  170. package/dist/src/agent-catalog/types.js +1 -0
  171. package/dist/src/agent-config/index.js +2 -2
  172. package/dist/src/agent-config/schema.d.ts +1 -172
  173. package/dist/src/agent-config/schema.js +2 -41
  174. package/dist/src/auth/credentials.js +3 -3
  175. package/dist/src/auth/oauth/xopc-cloud.js +1 -1
  176. package/dist/src/auth/sync-provider-auth.d.ts +1 -1
  177. package/dist/src/auth/sync-provider-auth.js +5 -9
  178. package/dist/src/automations/capabilities/drafts.js +8 -7
  179. package/dist/src/automations/service/action-executor.js +2 -1
  180. package/dist/src/bootstrap/application-state.d.ts +10 -0
  181. package/dist/src/bootstrap/application-state.js +26 -0
  182. package/dist/src/browser/automations/repository.js +2 -1
  183. package/dist/src/browser/automations/schema.d.ts +1 -1
  184. package/dist/src/browser/automations/service.d.ts +1 -1
  185. package/dist/src/browser/native-messaging-host.js +5 -4
  186. package/dist/src/browser/providers/extension.js +4 -2
  187. package/dist/src/browser/providers/realtime-extension.js +2 -1
  188. package/dist/src/capabilities/readiness/from-config.js +7 -4
  189. package/dist/src/capabilities/runtime/dispatcher.d.ts +1 -0
  190. package/dist/src/capabilities/runtime/dispatcher.js +10 -4
  191. package/dist/src/capabilities/runtime/product.js +2 -0
  192. package/dist/src/channels/catalog/channel-catalog-service.js +7 -13
  193. package/dist/src/chat-commands/agent-edit.js +4 -3
  194. package/dist/src/chat-commands/builtins/config.js +6 -8
  195. package/dist/src/chat-commands/builtins/review.js +1 -1
  196. package/dist/src/chat-commands/builtins/workflow.js +1 -1
  197. package/dist/src/chat-commands/config-paths.js +1 -1
  198. package/dist/src/chat-commands/context.js +2 -3
  199. package/dist/src/chat-previews/store.js +2 -1
  200. package/dist/src/cli/command-manifest.js +1 -1
  201. package/dist/src/cli/commands/agent.js +4 -4
  202. package/dist/src/cli/commands/agents.d.ts +1 -1
  203. package/dist/src/cli/commands/agents.js +36 -48
  204. package/dist/src/cli/commands/auth.js +2 -1
  205. package/dist/src/cli/commands/browser-cli-helpers.js +1 -2
  206. package/dist/src/cli/commands/channels.js +2 -4
  207. package/dist/src/cli/commands/config.js +4 -5
  208. package/dist/src/cli/commands/connectors.js +1 -2
  209. package/dist/src/cli/commands/doctor/checks/channel-config.js +2 -4
  210. package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +1 -2
  211. package/dist/src/cli/commands/doctor/checks/channel-plugins.js +1 -2
  212. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -2
  213. package/dist/src/cli/commands/doctor/checks/database-schema.js +4 -4
  214. package/dist/src/cli/commands/doctor/checks/gateway-health.js +1 -2
  215. package/dist/src/cli/commands/doctor/checks/gateway-service.js +1 -2
  216. package/dist/src/cli/commands/doctor/checks/provider-auth.js +13 -11
  217. package/dist/src/cli/commands/doctor/checks/security-audit.js +1 -2
  218. package/dist/src/cli/commands/doctor/checks/session-integrity.js +3 -3
  219. package/dist/src/cli/commands/doctor/checks/tool-runtimes.js +1 -2
  220. package/dist/src/cli/commands/doctor/checks/workspace-status.js +5 -7
  221. package/dist/src/cli/commands/extension-agent-plugin.js +1 -2
  222. package/dist/src/cli/commands/extension-dev.js +2 -4
  223. package/dist/src/cli/commands/extension-marketplace.js +1 -2
  224. package/dist/src/cli/commands/extension-pack.js +1 -2
  225. package/dist/src/cli/commands/extension.js +1 -2
  226. package/dist/src/cli/commands/gateway/run-foreground.js +3 -3
  227. package/dist/src/cli/commands/gateway/shared.js +1 -1
  228. package/dist/src/cli/commands/history.js +2 -1
  229. package/dist/src/cli/commands/image.js +2 -2
  230. package/dist/src/cli/commands/init.js +11 -30
  231. package/dist/src/cli/commands/mcp.js +1 -2
  232. package/dist/src/cli/commands/models.js +13 -11
  233. package/dist/src/cli/commands/onboard/channels/registry.js +1 -2
  234. package/dist/src/cli/commands/onboard/gateway.js +1 -2
  235. package/dist/src/cli/commands/onboard/model.d.ts +1 -1
  236. package/dist/src/cli/commands/onboard/model.js +18 -26
  237. package/dist/src/cli/commands/onboard.js +4 -2
  238. package/dist/src/cli/commands/platform.js +1 -0
  239. package/dist/src/cli/commands/project.js +3 -3
  240. package/dist/src/cli/commands/providers.js +2 -1
  241. package/dist/src/cli/commands/runtime.js +1 -2
  242. package/dist/src/cli/commands/search.js +1 -2
  243. package/dist/src/cli/commands/skills.js +1 -2
  244. package/dist/src/cli/commands/tui-runner.js +3 -2
  245. package/dist/src/cli/commands/tui.js +6 -8
  246. package/dist/src/cli/commands/tunnel.js +1 -1
  247. package/dist/src/cli/commands/voice.js +1 -2
  248. package/dist/src/cli/extension-cli-register.js +1 -1
  249. package/dist/src/cli/index.js +4 -2
  250. package/dist/src/cli/utils/gateway-client.js +1 -1
  251. package/dist/src/cli/utils/init-workspace-core.js +15 -16
  252. package/dist/src/cli/utils/session.js +1 -2
  253. package/dist/src/computer/model-config.d.ts +3 -3
  254. package/dist/src/computer/model-config.js +10 -20
  255. package/dist/src/computer/runtime.js +1 -1
  256. package/dist/src/config/agent-model-intents.js +2 -2
  257. package/dist/src/config/agent-profile.d.ts +5 -6
  258. package/dist/src/config/agent-profile.js +19 -19
  259. package/dist/src/config/config-surface.d.ts +0 -3
  260. package/dist/src/config/default-model.js +2 -6
  261. package/dist/src/config/index.js +7 -8
  262. package/dist/src/config/loader.js +12 -18
  263. package/dist/src/config/models-json.d.ts +6 -6
  264. package/dist/src/config/paths.d.ts +18 -19
  265. package/dist/src/config/paths.js +35 -35
  266. package/dist/src/config/reload.d.ts +0 -1
  267. package/dist/src/config/reload.js +1 -6
  268. package/dist/src/config/rules.js +0 -15
  269. package/dist/src/config/schema.d.ts +3 -406
  270. package/dist/src/config/schema.js +24 -86
  271. package/dist/src/config/validate-channel-configs.js +8 -14
  272. package/dist/src/config/workspace-dirs.d.ts +3 -4
  273. package/dist/src/config/workspace-dirs.js +9 -8
  274. package/dist/src/config/workspace-path-helpers.d.ts +1 -1
  275. package/dist/src/config/workspace-path-helpers.js +2 -2
  276. package/dist/src/connectors/cli/lifecycle.js +2 -1
  277. package/dist/src/connectors/composio-managed-events.js +2 -1
  278. package/dist/src/connectors/connected-source-ingestion.js +2 -1
  279. package/dist/src/connectors/connected-source-understanding.js +4 -2
  280. package/dist/src/connectors/content-enrichment.js +2 -1
  281. package/dist/src/connectors/learning-coordinator.js +2 -1
  282. package/dist/src/connectors/runtime-adapter-registry.js +2 -1
  283. package/dist/src/connectors/workflow-preflight.d.ts +8 -1
  284. package/dist/src/connectors/workflow-preflight.js +11 -3
  285. package/dist/src/discussions/analyzer.js +2 -2
  286. package/dist/src/endpoint-tools/runtime.js +2 -1
  287. package/dist/src/execution-environments/subject.js +2 -1
  288. package/dist/src/extensions/activation-context.js +3 -16
  289. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  290. package/dist/src/extensions/discover-extensions.js +9 -15
  291. package/dist/src/extensions/extension-metadata-snapshot.d.ts +1 -1
  292. package/dist/src/extensions/extension-metadata-snapshot.js +9 -16
  293. package/dist/src/extensions/index.js +4 -10
  294. package/dist/src/extensions/install.js +1 -1
  295. package/dist/src/extensions/loader.js +7 -14
  296. package/dist/src/extensions/manifest-registry.js +93 -98
  297. package/dist/src/extensions/marketplace.js +5 -2
  298. package/dist/src/extensions/normalize-manifest.js +12 -17
  299. package/dist/src/extensions/update.js +1 -2
  300. package/dist/src/files/file-service.js +7 -8
  301. package/dist/src/gateway/agents-admin.d.ts +23 -27
  302. package/dist/src/gateway/agents-admin.js +109 -130
  303. package/dist/src/gateway/file-path-classifier.js +3 -3
  304. package/dist/src/gateway/file-space-service.js +2 -1
  305. package/dist/src/gateway/global-defaults-admin.d.ts +6 -4
  306. package/dist/src/gateway/global-defaults-admin.js +21 -20
  307. package/dist/src/gateway/hono/app.js +2 -1
  308. package/dist/src/gateway/hono/lib/config-payload.js +12 -9
  309. package/dist/src/gateway/hono/middleware/auth.js +2 -1
  310. package/dist/src/gateway/hono/middleware/scopes.js +2 -1
  311. package/dist/src/gateway/hono/routes/agents.js +22 -49
  312. package/dist/src/gateway/hono/routes/browser.js +4 -2
  313. package/dist/src/gateway/hono/routes/channels.js +1 -2
  314. package/dist/src/gateway/hono/routes/cli-connectors.js +2 -1
  315. package/dist/src/gateway/hono/routes/commands-skills.js +3 -1
  316. package/dist/src/gateway/hono/routes/composer-history.js +2 -1
  317. package/dist/src/gateway/hono/routes/config-patch/index.d.ts +1 -3
  318. package/dist/src/gateway/hono/routes/config-patch/index.js +1 -2
  319. package/dist/src/gateway/hono/routes/config-patch/misc.js +18 -11
  320. package/dist/src/gateway/hono/routes/config.js +0 -2
  321. package/dist/src/gateway/hono/routes/connectors.js +8 -4
  322. package/dist/src/gateway/hono/routes/context-sources.js +4 -3
  323. package/dist/src/gateway/hono/routes/device-pairing-approval.js +2 -1
  324. package/dist/src/gateway/hono/routes/device-push.js +3 -2
  325. package/dist/src/gateway/hono/routes/devices.js +6 -3
  326. package/dist/src/gateway/hono/routes/discussions.js +2 -1
  327. package/dist/src/gateway/hono/routes/endpoint-tools.js +2 -1
  328. package/dist/src/gateway/hono/routes/global-defaults.js +8 -16
  329. package/dist/src/gateway/hono/routes/home.js +93 -4
  330. package/dist/src/gateway/hono/routes/interaction-state.js +2 -1
  331. package/dist/src/gateway/hono/routes/models.js +8 -7
  332. package/dist/src/gateway/hono/routes/notes.js +4 -5
  333. package/dist/src/gateway/hono/routes/projects.js +6 -6
  334. package/dist/src/gateway/hono/routes/public-gateway.js +2 -1
  335. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  336. package/dist/src/gateway/hono/routes/sessions.js +4 -2
  337. package/dist/src/gateway/hono/routes/shares.js +4 -3
  338. package/dist/src/gateway/hono/routes/site-shares.js +2 -2
  339. package/dist/src/gateway/hono/routes/status.js +2 -3
  340. package/dist/src/gateway/hono/routes/tasks.js +1 -2
  341. package/dist/src/gateway/hono/routes/user-model-refresh.js +2 -1
  342. package/dist/src/gateway/hono/routes/user-model.js +3 -2
  343. package/dist/src/gateway/hono/routes/work-discovery.js +1 -1
  344. package/dist/src/gateway/hono/routes/workflows.js +2 -2
  345. package/dist/src/gateway/image-generation-setup.d.ts +19 -10
  346. package/dist/src/gateway/image-generation-setup.js +59 -23
  347. package/dist/src/gateway/index.js +1 -4
  348. package/dist/src/gateway/lock.js +13 -18
  349. package/dist/src/gateway/memory-maintenance-automation-reconciler.js +4 -3
  350. package/dist/src/gateway/run-loop.js +2 -3
  351. package/dist/src/gateway/security/gateway-scopes.js +6 -2
  352. package/dist/src/gateway/security/index.js +4 -1
  353. package/dist/src/gateway/service/agent-runner.js +4 -2
  354. package/dist/src/gateway/service/app-context-access.js +2 -1
  355. package/dist/src/gateway/service/config-coordinator.d.ts +0 -1
  356. package/dist/src/gateway/service/config-coordinator.js +4 -22
  357. package/dist/src/gateway/service/marketplace-service.js +3 -1
  358. package/dist/src/gateway/service/run-gateway-agent.js +4 -2
  359. package/dist/src/gateway/service/session-input-coordinator.js +4 -2
  360. package/dist/src/gateway/service.d.ts +5 -0
  361. package/dist/src/gateway/service.js +109 -33
  362. package/dist/src/gateway/session-context-summary.js +4 -2
  363. package/dist/src/gateway/xopc-cloud-capability-setup.d.ts +2 -0
  364. package/dist/src/gateway/xopc-cloud-capability-setup.js +15 -10
  365. package/dist/src/home-intelligence/application-service.d.ts +31 -0
  366. package/dist/src/home-intelligence/application-service.js +134 -0
  367. package/dist/src/home-intelligence/capability-preflight.d.ts +32 -0
  368. package/dist/src/home-intelligence/capability-preflight.js +118 -0
  369. package/dist/src/home-intelligence/evaluation.d.ts +34 -0
  370. package/dist/src/home-intelligence/evaluation.js +49 -0
  371. package/dist/src/home-intelligence/generator.d.ts +125 -0
  372. package/dist/src/home-intelligence/generator.js +227 -0
  373. package/dist/src/home-intelligence/host.d.ts +53 -0
  374. package/dist/src/home-intelligence/host.js +257 -0
  375. package/dist/src/home-intelligence/notification.d.ts +8 -0
  376. package/dist/src/home-intelligence/notification.js +20 -0
  377. package/dist/src/home-intelligence/policy.d.ts +16 -0
  378. package/dist/src/home-intelligence/policy.js +152 -0
  379. package/dist/src/home-intelligence/repository.d.ts +81 -0
  380. package/dist/src/home-intelligence/repository.js +495 -0
  381. package/dist/src/home-intelligence/snapshot.d.ts +43 -0
  382. package/dist/src/home-intelligence/snapshot.js +133 -0
  383. package/dist/src/home-intelligence/strategy.d.ts +14 -0
  384. package/dist/src/home-intelligence/strategy.js +10 -0
  385. package/dist/src/home-intelligence/types.d.ts +13 -0
  386. package/dist/src/home-intelligence/types.js +1 -0
  387. package/dist/src/infra/update-restart.js +4 -2
  388. package/dist/src/knowledge/connected-knowledge-pipeline.js +2 -1
  389. package/dist/src/knowledge/ingestion-service.js +2 -1
  390. package/dist/src/knowledge-memory/repository.js +2 -1
  391. package/dist/src/local-apps/service.js +1 -1
  392. package/dist/src/local-apps/store.js +2 -1
  393. package/dist/src/mcp/channel-bridge.js +1 -2
  394. package/dist/src/mcp/channel-server.js +1 -2
  395. package/dist/src/mcp/gateway-http-client.js +1 -2
  396. package/dist/src/media/session-references.js +2 -1
  397. package/dist/src/memory-maintenance/service.js +2 -1
  398. package/dist/src/migrations/memory-config.js +1 -2
  399. package/dist/src/notes/agent-context.js +2 -1
  400. package/dist/src/notes/attachment-ref.js +8 -4
  401. package/dist/src/notes/note-attachment-sync.js +2 -1
  402. package/dist/src/notes/note-index-meta.js +14 -7
  403. package/dist/src/notes/note-markdown.js +13 -7
  404. package/dist/src/notes/service.js +6 -3
  405. package/dist/src/notes/store.js +4 -2
  406. package/dist/src/notifications/device-store.js +1 -1
  407. package/dist/src/notifications/planner.js +24 -0
  408. package/dist/src/notifications/service.d.ts +7 -14
  409. package/dist/src/notifications/service.js +13 -3
  410. package/dist/src/notifications/store.js +1 -1
  411. package/dist/src/notifications/types.d.ts +1 -1
  412. package/dist/src/notifications/types.js +1 -1
  413. package/dist/src/projects/capabilities/write.js +2 -1
  414. package/dist/src/projects/project-agent-suggestion.js +1 -1
  415. package/dist/src/projects/project-agent.js +4 -4
  416. package/dist/src/projects/project-service.js +2 -1
  417. package/dist/src/projects/workspace.js +3 -2
  418. package/dist/src/providers/index.js +3 -3
  419. package/dist/src/providers/model-reference-auditor.d.ts +1 -2
  420. package/dist/src/providers/model-reference-auditor.js +8 -5
  421. package/dist/src/realtime/runtime.js +2 -1
  422. package/dist/src/routing/binding-schema.d.ts +41 -0
  423. package/dist/src/routing/binding-schema.js +26 -0
  424. package/dist/src/routing/bindings.d.ts +4 -2
  425. package/dist/src/routing/bindings.js +4 -4
  426. package/dist/src/routing/index.d.ts +1 -1
  427. package/dist/src/routing/resolve-route.d.ts +7 -24
  428. package/dist/src/routing/resolve-route.js +17 -18
  429. package/dist/src/routing/resolve-tui-session-key.d.ts +1 -4
  430. package/dist/src/routing/resolve-tui-session-key.js +10 -9
  431. package/dist/src/scenes/execution.d.ts +1 -1
  432. package/dist/src/scenes/model.js +1 -1
  433. package/dist/src/scenes/taskFollowUp/contracts.d.ts +1 -1
  434. package/dist/src/scenes/taskFollowUp/service.js +6 -4
  435. package/dist/src/scenes/templates.d.ts +2 -2
  436. package/dist/src/session/config-store.js +2 -1
  437. package/dist/src/session/init-session-turn.js +2 -1
  438. package/dist/src/session/resolve-session.js +2 -1
  439. package/dist/src/session/session-workspace.js +1 -1
  440. package/dist/src/session/store.js +3 -2
  441. package/dist/src/storage/sqlite/activity-repository.js +6 -2
  442. package/dist/src/storage/sqlite/browser-tab-binding-repository.js +6 -2
  443. package/dist/src/storage/sqlite/clarification-wait-repository.js +13 -8
  444. package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +1 -1
  445. package/dist/src/storage/sqlite/collaboration-rule-repository.js +8 -3
  446. package/dist/src/storage/sqlite/composer-input-history-repository.js +8 -3
  447. package/dist/src/storage/sqlite/config-repository.js +9 -5
  448. package/dist/src/storage/sqlite/connector-learning-repository.js +6 -2
  449. package/dist/src/storage/sqlite/connector-sync-policy-repository.js +6 -2
  450. package/dist/src/storage/sqlite/context-evidence-repository.js +8 -3
  451. package/dist/src/storage/sqlite/context-extraction-repository.js +8 -3
  452. package/dist/src/storage/sqlite/device-access-repository.js +15 -9
  453. package/dist/src/storage/sqlite/device-pairing-approval.js +6 -2
  454. package/dist/src/storage/sqlite/device-pairing-repository.js +10 -5
  455. package/dist/src/storage/sqlite/endpoint-principal-repository.js +6 -2
  456. package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +6 -2
  457. package/dist/src/storage/sqlite/endpoint-tool-invocation-repository.js +6 -2
  458. package/dist/src/storage/sqlite/gateway-identity-repository.js +6 -2
  459. package/dist/src/storage/sqlite/home-attention-repository.js +6 -2
  460. package/dist/src/storage/sqlite/index.d.ts +0 -1
  461. package/dist/src/storage/sqlite/index.js +72 -42
  462. package/dist/src/storage/sqlite/interaction-state-repository.js +10 -4
  463. package/dist/src/storage/sqlite/knowledge-repository.js +6 -2
  464. package/dist/src/storage/sqlite/migrations/203_remove_retired_proactive_contracts.sql +70 -0
  465. package/dist/src/storage/sqlite/migrations/204_home_intelligence.sql +78 -0
  466. package/dist/src/storage/sqlite/migrations/205_agent_catalog.sql +66 -0
  467. package/dist/src/storage/sqlite/migrations/206_home_advice_strategy_version.sql +3 -0
  468. package/dist/src/storage/sqlite/migrations/conversation-backup.d.ts +2 -0
  469. package/dist/src/storage/sqlite/migrations/conversation-backup.js +8 -4
  470. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.d.ts +7 -1
  471. package/dist/src/storage/sqlite/migrations/conversation-windows-owners.js +2 -2
  472. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  473. package/dist/src/storage/sqlite/migrations/runner.js +4 -4
  474. package/dist/src/storage/sqlite/note-agent-context-repository.js +6 -2
  475. package/dist/src/storage/sqlite/notes-repository.js +9 -4
  476. package/dist/src/storage/sqlite/schema.js +1 -1
  477. package/dist/src/storage/sqlite/session-task-plan-repository.js +14 -9
  478. package/dist/src/storage/sqlite/session-turn-replace-repository.js +9 -5
  479. package/dist/src/storage/sqlite/sidebar-layout-repository.js +14 -9
  480. package/dist/src/storage/sqlite/transcript-repository.js +10 -6
  481. package/dist/src/storage/sqlite/user-people-repository.js +8 -3
  482. package/dist/src/storage/sqlite/user-trust-repository.js +8 -3
  483. package/dist/src/tasks/attention-governor.d.ts +0 -1
  484. package/dist/src/tasks/attention-governor.js +1 -7
  485. package/dist/src/tasks/capabilities/read.js +2 -2
  486. package/dist/src/tasks/capabilities/write.d.ts +1 -1
  487. package/dist/src/tasks/execution-context.d.ts +2 -2
  488. package/dist/src/tasks/execution-context.js +6 -5
  489. package/dist/src/tasks/home-query-service.d.ts +3 -2
  490. package/dist/src/tasks/home-query-service.js +23 -44
  491. package/dist/src/tasks/task-context-assembler.js +2 -1
  492. package/dist/src/tasks/task-context-repository.d.ts +1 -1
  493. package/dist/src/tasks/task-contract-planner.d.ts +0 -3
  494. package/dist/src/tasks/task-contract-planner.js +1 -4
  495. package/dist/src/tasks/task-handoff-service.d.ts +0 -2
  496. package/dist/src/tasks/task-handoff-service.js +3 -3
  497. package/dist/src/tasks/task-value-metrics-service.js +2 -1
  498. package/dist/src/tui/backends/embedded-backend.js +12 -14
  499. package/dist/src/tui/extension-host/load-extensions.js +1 -1
  500. package/dist/src/tui/tui-commands.js +5 -3
  501. package/dist/src/tui/tui-skills-autocomplete.js +1 -1
  502. package/dist/src/tui/tui-startup-resources.js +3 -3
  503. package/dist/src/tui/tui.js +5 -5
  504. package/dist/src/tunnel/registration-proof.js +2 -1
  505. package/dist/src/user-context/access-policy.js +2 -1
  506. package/dist/src/user-context/domain.d.ts +1 -1
  507. package/dist/src/user-context/domain.js +18 -13
  508. package/dist/src/user-context/extraction/registry.js +2 -1
  509. package/dist/src/user-context/interaction-state.js +4 -1
  510. package/dist/src/user-context/relationship-continuity.js +2 -1
  511. package/dist/src/user-context/trust-policy.js +13 -8
  512. package/dist/src/user-model/bootstrap.js +2 -1
  513. package/dist/src/user-model/capture/executor.js +4 -2
  514. package/dist/src/user-model/capture/semantic.d.ts +1 -1
  515. package/dist/src/user-model/capture/semantic.js +1 -1
  516. package/dist/src/user-model/domain.js +7 -2
  517. package/dist/src/user-model/goals.js +2 -1
  518. package/dist/src/user-model/index.js +4 -1
  519. package/dist/src/user-model/repository.js +2 -1
  520. package/dist/src/utils/helpers.js +1 -4
  521. package/dist/src/utils/index.js +2 -2
  522. package/dist/src/utils/logger/index.d.ts +1 -1
  523. package/dist/src/utils/logger/index.js +2 -2
  524. package/dist/src/utils/logger/redact.d.ts +2 -0
  525. package/dist/src/utils/logger/redact.js +11 -3
  526. package/dist/src/utils/logger.js +2 -2
  527. package/dist/src/voice/realtime/memory-context.js +2 -1
  528. package/dist/src/voice/realtime/persona-context.js +6 -6
  529. package/dist/src/voice/tts/audio.js +1 -1
  530. package/dist/src/work-discovery/analyzer.js +3 -3
  531. package/dist/src/work-discovery/investigator.js +1 -1
  532. package/dist/src/work-discovery/service.js +12 -11
  533. package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
  534. package/dist/src/workflows/service/workflow-run-service.js +4 -5
  535. package/dist/src/workflows/store/paths.js +1 -1
  536. package/package.json +5 -5
  537. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CAFHadiy.js +0 -1
  538. package/dist/gateway/static/root/assets/apps-page-Drt3Foi9.js +0 -1
  539. package/dist/gateway/static/root/assets/automations-workspace-B-Eduqwz.js +0 -7
  540. package/dist/gateway/static/root/assets/browser-settings-page-Dwgir6mu.js +0 -3
  541. package/dist/gateway/static/root/assets/capabilities-settings-panel-H5L5vynP.js +0 -8
  542. package/dist/gateway/static/root/assets/capabilities-uFKh3Hd0.js +0 -1
  543. package/dist/gateway/static/root/assets/channels-settings-RFBRYe5S.js +0 -1
  544. package/dist/gateway/static/root/assets/connectors-page-Px-v3Q6Q.js +0 -2
  545. package/dist/gateway/static/root/assets/date-picker-CfCo3lqh.js +0 -1
  546. package/dist/gateway/static/root/assets/home-page-w3_aWeNt.js +0 -1
  547. package/dist/gateway/static/root/assets/index--3c0awkr.js +0 -121
  548. package/dist/gateway/static/root/assets/local-app-workbench-page-BYKrJpFF.js +0 -1
  549. package/dist/gateway/static/root/assets/logs-page-Dl4kM4Na.js +0 -2
  550. package/dist/gateway/static/root/assets/messages-7VAhscYe.js +0 -3
  551. package/dist/gateway/static/root/assets/note-detail-panel-j6sioeL1.js +0 -5
  552. package/dist/gateway/static/root/assets/notes-page-CMvvHv0f.js +0 -8
  553. package/dist/gateway/static/root/assets/popover-select-B-GDnZO9.js +0 -1
  554. package/dist/gateway/static/root/assets/project-detail-page-C9K_e-EV.js +0 -1
  555. package/dist/gateway/static/root/assets/remote-access-hub-CLGJNA42.js +0 -1
  556. package/dist/gateway/static/root/assets/scenes-page-ClLAD1pz.js +0 -2
  557. package/dist/gateway/static/root/assets/sessions-page-Xj8MkXN1.js +0 -1
  558. package/dist/gateway/static/root/assets/settings-advanced-gate-DwALV8mi.js +0 -1
  559. package/dist/gateway/static/root/assets/setup-status-panel-F0rCQ-2a.js +0 -1
  560. package/dist/gateway/static/root/assets/shares-settings-C7hf6Cov.js +0 -1
  561. package/dist/gateway/static/root/assets/skill-reload-api-xPrFejRE.js +0 -1
  562. package/dist/gateway/static/root/assets/skills-page-RdDYu7Yj.js +0 -2
  563. package/dist/gateway/static/root/assets/task-detail-page-2A966jFY.js +0 -1
  564. package/dist/gateway/static/root/assets/user-model-page-CnBxPBVe.js +0 -2
  565. package/dist/gateway/static/root/assets/workflows-page-BZVpqw4T.js +0 -6
  566. package/dist/packages/gateway-contract/src/proactive.js +0 -136
  567. package/dist/src/commands/agents.config.d.ts +0 -31
  568. package/dist/src/commands/agents.config.js +0 -129
  569. package/dist/src/gateway/hono/routes/config-patch/agents.d.ts +0 -2
  570. package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -6
  571. package/dist/src/storage/sqlite/relationship-settings-repository.d.ts +0 -17
  572. package/dist/src/storage/sqlite/relationship-settings-repository.js +0 -65
@@ -1,10 +1,11 @@
1
- import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentDir, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath, validateAgentIdForNewAgent } from "../agent/agent-scope.js";
2
- import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
1
+ import { normalizeAgentId, validateAgentIdForNewAgent } from "../agent-catalog/id.js";
2
+ import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
+ import { init_agent_scope, listAgentEntries, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath } from "../agent/agent-scope.js";
3
4
  import { WORKSPACE_FILES, init_paths } from "../config/paths.js";
4
5
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
6
+ import { AgentCatalogService } from "../agent-catalog/service.js";
7
+ import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
5
8
  import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
6
- import { seedAgentProfileMarkdownFiles } from "../agent/context/workspace-seed.js";
7
- import { applyAgentConfig, findAgentEntryIndex, getAgentDeleteBlocker, pruneAgentConfig, removeAgentDirsFromDisk } from "../commands/agents.config.js";
8
9
  import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
9
10
  import { join, resolve } from "node:path";
10
11
  import { mkdir, readFile, realpath, stat, unlink, writeFile } from "node:fs/promises";
@@ -13,11 +14,12 @@ import { mkdir, readFile, realpath, stat, unlink, writeFile } from "node:fs/prom
13
14
  * Gateway REST helpers for multi-agent management.
14
15
  */
15
16
  init_agent_scope();
17
+ init_repository();
16
18
  init_paths();
17
19
  const EDITABLE_PROFILE_MARKDOWN_NAMES = new Set([...AGENT_PROFILE_MARKDOWN_SYSTEM_FILES]);
18
- function collectAgentIdsForList(cfg) {
19
- const entries = listAgentEntries(cfg).filter((e) => e.enabled !== false);
20
- const defaultId = resolveDefaultAgentId(cfg);
20
+ function collectAgentIdsForList() {
21
+ const entries = listAgentEntries().filter((e) => e.enabled !== false);
22
+ const defaultId = resolveDefaultAgentId();
21
23
  if (entries.length === 0) return [defaultId];
22
24
  const ids = /* @__PURE__ */ new Set();
23
25
  for (const e of entries) ids.add(normalizeAgentId(e.id));
@@ -44,16 +46,16 @@ function parseIdentityMarkdown(content) {
44
46
  }
45
47
  return out;
46
48
  }
47
- async function listGatewayAgents(cfg, _options = {}) {
48
- const defaultId = resolveDefaultAgentId(cfg);
49
+ async function listGatewayAgents(_options = {}) {
50
+ const defaultId = resolveDefaultAgentId();
49
51
  const agents = [];
50
- for (const id of collectAgentIdsForList(cfg)) {
51
- const profile = resolveEffectiveAgentProfile(cfg, id);
52
- const entry = listAgentEntries(cfg).find((e) => normalizeAgentId(e.id) === id);
52
+ for (const id of collectAgentIdsForList()) {
53
+ const profile = resolveEffectiveAgentProfile(id);
54
+ const entry = listAgentEntries().find((e) => normalizeAgentId(e.id) === id);
53
55
  if (!entry) continue;
54
56
  let identity = {};
55
57
  try {
56
- identity = parseIdentityMarkdown(await readFile(join(resolveAgentProfileDir(cfg, id), WORKSPACE_FILES.IDENTITY), "utf-8"));
58
+ identity = parseIdentityMarkdown(await readFile(join(resolveAgentProfileDir(id), WORKSPACE_FILES.IDENTITY), "utf-8"));
57
59
  } catch {}
58
60
  agents.push({
59
61
  id,
@@ -62,7 +64,7 @@ async function listGatewayAgents(cfg, _options = {}) {
62
64
  ...identity.language ? { language: identity.language } : {},
63
65
  ...identity.avatar ? { avatar: identity.avatar } : {},
64
66
  workspace: profile.resolvedWorkspacePath,
65
- profileDir: resolveAgentProfileDir(cfg, id),
67
+ profileDir: resolveAgentProfileDir(id),
66
68
  override: structuredClone(entry),
67
69
  effective: structuredClone(profile.config),
68
70
  sources: { ...profile.sources },
@@ -76,9 +78,9 @@ async function listGatewayAgents(cfg, _options = {}) {
76
78
  builtinToolIds: [...GATEWAY_BUILTIN_TOOL_IDS]
77
79
  };
78
80
  }
79
- function getGatewayAgentEffectiveConfig(cfg, agentIdRaw) {
81
+ function getGatewayAgentEffectiveConfig(agentIdRaw) {
80
82
  const agentId = normalizeAgentId(agentIdRaw);
81
- if (!listAgentEntries(cfg).find((e) => normalizeAgentId(e.id) === agentId)) return {
83
+ if (!listAgentEntries().find((e) => normalizeAgentId(e.id) === agentId)) return {
82
84
  ok: false,
83
85
  error: `agent "${agentId}" not found`,
84
86
  status: 404
@@ -87,7 +89,7 @@ function getGatewayAgentEffectiveConfig(cfg, agentIdRaw) {
87
89
  return {
88
90
  ok: true,
89
91
  data: (() => {
90
- const profile = resolveEffectiveAgentProfile(cfg, agentId);
92
+ const profile = resolveEffectiveAgentProfile(agentId);
91
93
  return {
92
94
  config: profile.config,
93
95
  sources: profile.sources
@@ -102,7 +104,7 @@ function getGatewayAgentEffectiveConfig(cfg, agentIdRaw) {
102
104
  };
103
105
  }
104
106
  }
105
- function prepareCreateAgent(cfg, body) {
107
+ async function createGatewayAgent(body) {
106
108
  const idRes = validateAgentIdForNewAgent(body.id, body.profile.name);
107
109
  if (idRes.ok === false) return {
108
110
  ok: false,
@@ -110,113 +112,90 @@ function prepareCreateAgent(cfg, body) {
110
112
  status: 400
111
113
  };
112
114
  const agentId = idRes.agentId;
113
- if (findAgentEntryIndex(listAgentEntries(cfg), agentId) >= 0) return {
115
+ if (new AgentCatalogRepository().get(agentId, { includeDeleted: true })) return {
114
116
  ok: false,
115
117
  error: `agent "${agentId}" already exists`,
116
118
  status: 409
117
119
  };
118
- const wsAbs = resolveUserPath(body.workspace?.trim() || `~/.xopc/workspace/${agentId}`);
119
- return {
120
- ok: true,
121
- data: {
122
- nextConfig: applyAgentConfig(cfg, {
120
+ const workspace = body.workspace?.trim() ? resolveUserPath(body.workspace) : void 0;
121
+ try {
122
+ await new AgentCatalogService().create({
123
+ id: agentId,
124
+ enabled: true,
125
+ ...workspace ? { workspace } : {},
126
+ profile: structuredClone(body.profile)
127
+ });
128
+ return {
129
+ ok: true,
130
+ data: {
123
131
  agentId,
124
- ...body.workspace?.trim() ? { workspace: wsAbs } : {},
125
- profile: structuredClone(body.profile)
126
- }),
127
- agentId,
128
- workspace: wsAbs
129
- }
130
- };
131
- }
132
- async function finalizeCreateAgentDirs(cfg, agentId) {
133
- const wsPath = resolveAgentWorkspaceDir(cfg, agentId);
134
- const profilePath = resolveAgentProfileDir(cfg, agentId);
135
- const adPath = resolveAgentDir(cfg, agentId);
136
- await mkdir(wsPath, { recursive: true });
137
- await mkdir(profilePath, { recursive: true });
138
- await mkdir(adPath, { recursive: true });
139
- const id = normalizeAgentId(agentId);
140
- seedAgentProfileMarkdownFiles(profilePath, wsPath, { displayName: listAgentEntries(cfg).find((candidate) => normalizeAgentId(candidate.id) === id)?.profile?.name ?? id });
141
- return {
142
- ok: true,
143
- data: void 0
144
- };
132
+ workspace: resolveAgentWorkspaceDir(agentId)
133
+ }
134
+ };
135
+ } catch (error) {
136
+ return {
137
+ ok: false,
138
+ error: error instanceof Error ? error.message : String(error),
139
+ status: 400
140
+ };
141
+ }
145
142
  }
146
- function prepareUpdateAgent(cfg, agentIdRaw, body) {
143
+ async function updateGatewayAgent(agentIdRaw, body) {
147
144
  const agentId = normalizeAgentId(agentIdRaw);
148
- const list = [...listAgentEntries(cfg)];
149
- const idx = findAgentEntryIndex(list, agentId);
150
- if (idx < 0) return {
145
+ if (!new AgentCatalogRepository().get(agentId)) return {
151
146
  ok: false,
152
147
  error: `agent "${agentId}" not found`,
153
148
  status: 404
154
149
  };
155
- const entry = { ...list[idx] };
156
- if (body.workspace !== void 0) {
157
- const workspace = body.workspace?.trim();
158
- if (workspace) entry.workspace = resolveUserPath(workspace);
159
- else delete entry.workspace;
150
+ const patch = {};
151
+ if (body.workspace !== void 0) patch.workspace = body.workspace?.trim() ? resolveUserPath(body.workspace) : void 0;
152
+ if (body.profile !== void 0) patch.profile = body.profile ?? void 0;
153
+ if (body.models !== void 0) patch.models = body.models ?? void 0;
154
+ if (body.skills !== void 0) patch.skills = body.skills ?? void 0;
155
+ if (body.tools !== void 0) patch.tools = body.tools ?? void 0;
156
+ if (body.workflows !== void 0) patch.workflows = body.workflows ?? void 0;
157
+ if (body.runtime !== void 0) patch.runtime = body.runtime ?? void 0;
158
+ try {
159
+ const service = new AgentCatalogService();
160
+ await service.update(agentId, patch);
161
+ if (body.setDefault === true) service.setDefault(agentId);
162
+ return {
163
+ ok: true,
164
+ data: void 0
165
+ };
166
+ } catch (error) {
167
+ return {
168
+ ok: false,
169
+ error: error instanceof Error ? error.message : String(error),
170
+ status: 400
171
+ };
160
172
  }
161
- if (body.profile !== void 0) if (body.profile === null) delete entry.profile;
162
- else entry.profile = structuredClone(body.profile);
163
- if (body.models !== void 0) if (body.models === null) delete entry.models;
164
- else entry.models = structuredClone(body.models);
165
- if (body.skills !== void 0) if (body.skills === null) delete entry.skills;
166
- else entry.skills = structuredClone(body.skills);
167
- if (body.tools !== void 0) if (body.tools === null) delete entry.tools;
168
- else entry.tools = body.tools;
169
- if (body.workflows !== void 0) if (body.workflows === null) delete entry.workflows;
170
- else entry.workflows = structuredClone(body.workflows);
171
- if (body.runtime !== void 0) if (body.runtime === null) delete entry.runtime;
172
- else entry.runtime = structuredClone(body.runtime);
173
- list[idx] = entry;
174
- let next = {
175
- ...cfg,
176
- agents: {
177
- ...cfg.agents,
178
- list
179
- }
180
- };
181
- if (body.setDefault === true) next = {
182
- ...next,
183
- agents: {
184
- ...next.agents,
185
- default: agentId
186
- }
187
- };
188
- return {
189
- ok: true,
190
- data: { nextConfig: next }
191
- };
192
173
  }
193
- function prepareDeleteAgent(cfg, agentIdRaw) {
174
+ async function deleteGatewayAgent(agentIdRaw, options = {}) {
194
175
  const agentId = normalizeAgentId(agentIdRaw);
195
- const blocker = getAgentDeleteBlocker(cfg, agentId);
196
- if (blocker) return {
197
- ok: false,
198
- error: blocker,
199
- status: 400
200
- };
201
- if (findAgentEntryIndex(listAgentEntries(cfg), agentId) < 0) return {
176
+ if (!new AgentCatalogRepository().get(agentId)) return {
202
177
  ok: false,
203
178
  error: `agent "${agentId}" not found`,
204
179
  status: 404
205
180
  };
206
- const { config: pruned } = pruneAgentConfig(cfg, agentId);
207
- return {
208
- ok: true,
209
- data: {
210
- nextConfig: pruned,
211
- agentId
212
- }
213
- };
214
- }
215
- async function runAfterDeletePurge(cfg, agentId) {
216
- await removeAgentDirsFromDisk(cfg, agentId);
181
+ try {
182
+ return {
183
+ ok: true,
184
+ data: {
185
+ agentId,
186
+ removedBindings: (await new AgentCatalogService().delete(agentId, options)).removedBindings
187
+ }
188
+ };
189
+ } catch (error) {
190
+ return {
191
+ ok: false,
192
+ error: error instanceof Error ? error.message : String(error),
193
+ status: 400
194
+ };
195
+ }
217
196
  }
218
- async function profileMarkdownRootReal(cfg, agentId) {
219
- const dir = resolveAgentProfileDir(cfg, agentId);
197
+ async function profileMarkdownRootReal(agentId) {
198
+ const dir = resolveAgentProfileDir(agentId);
220
199
  await mkdir(dir, { recursive: true });
221
200
  try {
222
201
  return await realpath(dir);
@@ -232,14 +211,14 @@ function assertAllowedFile(name) {
232
211
  };
233
212
  return null;
234
213
  }
235
- async function listAgentProfileFiles(cfg, agentId) {
214
+ async function listAgentProfileFiles(agentId) {
236
215
  const id = normalizeAgentId(agentId);
237
- if (collectAgentIdsForList(cfg).every((x) => x !== id)) return {
216
+ if (collectAgentIdsForList().every((x) => x !== id)) return {
238
217
  ok: false,
239
218
  error: `agent "${id}" not found`,
240
219
  status: 404
241
220
  };
242
- const root = await profileMarkdownRootReal(cfg, id);
221
+ const root = await profileMarkdownRootReal(id);
243
222
  const names = [...EDITABLE_PROFILE_MARKDOWN_NAMES];
244
223
  const files = [];
245
224
  for (const name of names.sort((a, b) => a.localeCompare(b))) {
@@ -272,16 +251,16 @@ async function listAgentProfileFiles(cfg, agentId) {
272
251
  }
273
252
  };
274
253
  }
275
- async function readAgentProfileFile(cfg, agentId, name) {
254
+ async function readAgentProfileFile(agentId, name) {
276
255
  const bad = assertAllowedFile(name);
277
256
  if (bad) return bad;
278
257
  const id = normalizeAgentId(agentId);
279
- if (collectAgentIdsForList(cfg).every((x) => x !== id)) return {
258
+ if (collectAgentIdsForList().every((x) => x !== id)) return {
280
259
  ok: false,
281
260
  error: `agent "${id}" not found`,
282
261
  status: 404
283
262
  };
284
- const abs = resolveWorkspaceSafePath(await profileMarkdownRootReal(cfg, id), name);
263
+ const abs = resolveWorkspaceSafePath(await profileMarkdownRootReal(id), name);
285
264
  if (!abs) return {
286
265
  ok: false,
287
266
  error: "invalid path",
@@ -304,22 +283,22 @@ async function readAgentProfileFile(cfg, agentId, name) {
304
283
  };
305
284
  }
306
285
  }
307
- async function writeAgentProfileFile(cfg, agentId, name, content) {
286
+ async function writeAgentProfileFile(agentId, name, content) {
308
287
  const bad = assertAllowedFile(name);
309
288
  if (bad) return bad;
310
289
  const id = normalizeAgentId(agentId);
311
- if (collectAgentIdsForList(cfg).every((x) => x !== id)) return {
290
+ if (collectAgentIdsForList().every((x) => x !== id)) return {
312
291
  ok: false,
313
292
  error: `agent "${id}" not found`,
314
293
  status: 404
315
294
  };
316
- const abs = resolveWorkspaceSafePath(await profileMarkdownRootReal(cfg, id), name);
295
+ const abs = resolveWorkspaceSafePath(await profileMarkdownRootReal(id), name);
317
296
  if (!abs) return {
318
297
  ok: false,
319
298
  error: "invalid path",
320
299
  status: 400
321
300
  };
322
- if (!isPathUnderWorkspace(await profileMarkdownRootReal(cfg, id), abs)) return {
301
+ if (!isPathUnderWorkspace(await profileMarkdownRootReal(id), abs)) return {
323
302
  ok: false,
324
303
  error: "path escapes profile markdown root",
325
304
  status: 400
@@ -357,19 +336,19 @@ function detectImageMimeFromBytes(buf) {
357
336
  if (buf.length >= 12 && buf[0] === 82 && buf[1] === 73 && buf[2] === 70 && buf[3] === 70 && buf[8] === 87 && buf[9] === 69 && buf[10] === 66 && buf[11] === 80) return "image/webp";
358
337
  return null;
359
338
  }
360
- function assertAgentExistsForAvatar(cfg, id) {
361
- if (collectAgentIdsForList(cfg).every((x) => x !== id)) return {
339
+ function assertAgentExistsForAvatar(id) {
340
+ if (collectAgentIdsForList().every((x) => x !== id)) return {
362
341
  ok: false,
363
342
  error: `agent "${id}" not found`,
364
343
  status: 404
365
344
  };
366
345
  return null;
367
346
  }
368
- async function readAgentAvatarFile(cfg, agentId) {
369
- const missingAgent = assertAgentExistsForAvatar(cfg, agentId);
347
+ async function readAgentAvatarFile(agentId) {
348
+ const missingAgent = assertAgentExistsForAvatar(agentId);
370
349
  if (missingAgent) return missingAgent;
371
350
  const id = normalizeAgentId(agentId);
372
- const root = await profileMarkdownRootReal(cfg, id);
351
+ const root = await profileMarkdownRootReal(id);
373
352
  for (const name of agentAvatarFilenames()) {
374
353
  const abs = resolveWorkspaceSafePath(root, name);
375
354
  if (!abs) continue;
@@ -396,8 +375,8 @@ async function readAgentAvatarFile(cfg, agentId) {
396
375
  status: 404
397
376
  };
398
377
  }
399
- async function writeAgentAvatarFromBase64(cfg, agentId, base64, mimeType) {
400
- const missingAgent = assertAgentExistsForAvatar(cfg, agentId);
378
+ async function writeAgentAvatarFromBase64(agentId, base64, mimeType) {
379
+ const missingAgent = assertAgentExistsForAvatar(agentId);
401
380
  if (missingAgent) return missingAgent;
402
381
  const id = normalizeAgentId(agentId);
403
382
  const ext = mimeToExt(mimeType);
@@ -427,8 +406,8 @@ async function writeAgentAvatarFromBase64(cfg, agentId, base64, mimeType) {
427
406
  error: "file content does not match declared image type",
428
407
  status: 400
429
408
  };
430
- const root = await profileMarkdownRootReal(cfg, id);
431
- const rootReal = await profileMarkdownRootReal(cfg, id);
409
+ const root = await profileMarkdownRootReal(id);
410
+ const rootReal = await profileMarkdownRootReal(id);
432
411
  const targetName = `${AGENT_AVATAR_BASENAME}${ext}`;
433
412
  const abs = resolveWorkspaceSafePath(root, targetName);
434
413
  if (!abs || !isPathUnderWorkspace(rootReal, abs)) return {
@@ -461,12 +440,12 @@ function extMatchesDetectedMime(ext, detected) {
461
440
  return detected === mimeToExtToMime(ext);
462
441
  }
463
442
  /** Remove any `agent-avatar.*` in the agent profile markdown root. Idempotent: ok even when no file existed. */
464
- async function deleteAgentAvatarFile(cfg, agentId) {
465
- const missingAgent = assertAgentExistsForAvatar(cfg, agentId);
443
+ async function deleteAgentAvatarFile(agentId) {
444
+ const missingAgent = assertAgentExistsForAvatar(agentId);
466
445
  if (missingAgent) return missingAgent;
467
446
  const id = normalizeAgentId(agentId);
468
- const root = await profileMarkdownRootReal(cfg, id);
469
- const rootReal = await profileMarkdownRootReal(cfg, id);
447
+ const root = await profileMarkdownRootReal(id);
448
+ const rootReal = await profileMarkdownRootReal(id);
470
449
  for (const name of agentAvatarFilenames()) {
471
450
  const abs = resolveWorkspaceSafePath(root, name);
472
451
  if (!abs || !isPathUnderWorkspace(rootReal, abs)) continue;
@@ -480,4 +459,4 @@ async function deleteAgentAvatarFile(cfg, agentId) {
480
459
  };
481
460
  }
482
461
  //#endregion
483
- export { deleteAgentAvatarFile, extractAvatarFromIdentityMarkdown, finalizeCreateAgentDirs, getGatewayAgentEffectiveConfig, listAgentProfileFiles, listGatewayAgents, parseIdentityMarkdown, prepareCreateAgent, prepareDeleteAgent, prepareUpdateAgent, readAgentAvatarFile, readAgentProfileFile, runAfterDeletePurge, writeAgentAvatarFromBase64, writeAgentProfileFile };
462
+ export { createGatewayAgent, deleteAgentAvatarFile, deleteGatewayAgent, extractAvatarFromIdentityMarkdown, getGatewayAgentEffectiveConfig, listAgentProfileFiles, listGatewayAgents, parseIdentityMarkdown, readAgentAvatarFile, readAgentProfileFile, updateGatewayAgent, writeAgentAvatarFromBase64, writeAgentProfileFile };
@@ -1,7 +1,7 @@
1
1
  import { init_paths_state, resolveStateDir } from "../config/paths-state.js";
2
2
  import { init_agent_scope, resolveAgentProfileDir } from "../agent/agent-scope.js";
3
- import { extractProfileAgentId } from "../config/agent-profile.js";
4
3
  import { init_paths, resolveConfigPath, resolveSkillsDir } from "../config/paths.js";
4
+ import { extractProfileAgentId } from "../config/agent-profile.js";
5
5
  import { isBareProfileMarkdownFileName, resolveProfileMarkdownPathIfBareName } from "../agent/tools/tool-paths.js";
6
6
  import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
7
7
  import { basename, isAbsolute, resolve } from "node:path";
@@ -11,11 +11,11 @@ init_agent_scope();
11
11
  init_paths();
12
12
  init_paths_state();
13
13
  function buildFilePathClassifierContext(cfg, conversationIdRaw, explicitAgentId) {
14
- const agentId = explicitAgentId ?? extractProfileAgentId(conversationIdRaw, cfg);
14
+ const agentId = explicitAgentId ?? extractProfileAgentId(conversationIdRaw);
15
15
  const stateDir = resolveStateDir();
16
16
  return {
17
17
  workspaceRoot: "",
18
- profileMarkdownRoot: resolveAgentProfileDir(cfg, agentId),
18
+ profileMarkdownRoot: resolveAgentProfileDir(agentId),
19
19
  stateDir,
20
20
  skillsDir: resolveSkillsDir(),
21
21
  configFilePath: resolveConfigPath(),
@@ -1,8 +1,9 @@
1
- import { listSessionWorkspaceOverrides } from "../storage/sqlite/config-repository.js";
1
+ import { init_config_repository, listSessionWorkspaceOverrides } from "../storage/sqlite/config-repository.js";
2
2
  import { effectiveWorkspacePathForSession } from "../session/session-workspace.js";
3
3
  import { getProjectForSession } from "../projects/workspace.js";
4
4
  import { FileSpaceService } from "../files/file-service.js";
5
5
  //#region src/gateway/file-space-service.ts
6
+ init_config_repository();
6
7
  const services = /* @__PURE__ */ new WeakMap();
7
8
  /** Share the file registry, including session-specific spaces, across gateway routes. */
8
9
  function getGatewayFileSpaceService(service) {
@@ -1,5 +1,4 @@
1
1
  import { type AgentDefaults } from '../agent-config/index.js';
2
- import type { Config } from '../config/schema.js';
3
2
  import { type GatewayBuiltinToolSummary } from './agent-builtin-tools.js';
4
3
  export type GlobalDefaultsPayload = {
5
4
  defaults: AgentDefaults;
@@ -16,8 +15,11 @@ export type GlobalDefaultsAdminResult<T> = {
16
15
  error: string;
17
16
  status?: 400 | 404 | 500;
18
17
  };
19
- export declare function listGlobalDefaults(cfg: Config): GlobalDefaultsPayload;
20
- export declare function prepareUpdateGlobalDefaults(cfg: Config, body: UpdateGlobalDefaultsBody): GlobalDefaultsAdminResult<{
21
- nextConfig: Config;
18
+ export declare function listGlobalDefaults(): GlobalDefaultsPayload;
19
+ export declare function prepareUpdateGlobalDefaults(body: UpdateGlobalDefaultsBody): GlobalDefaultsAdminResult<{
20
+ defaults: AgentDefaults;
21
+ changed: boolean;
22
+ }>;
23
+ export declare function updateGlobalDefaults(body: UpdateGlobalDefaultsBody): GlobalDefaultsAdminResult<{
22
24
  changed: boolean;
23
25
  }>;
@@ -1,34 +1,32 @@
1
1
  import { AgentDefaultsSchema } from "../agent-config/schema.js";
2
2
  import { init_agent_config } from "../agent-config/index.js";
3
+ import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
3
5
  import { GATEWAY_BUILTIN_TOOLS } from "./agent-builtin-tools.js";
4
- import { validateComputerModelChanges } from "../computer/model-config.js";
6
+ import { validateComputerModelChange } from "../computer/model-config.js";
5
7
  import { isDeepStrictEqual } from "node:util";
6
8
  //#region src/gateway/global-defaults-admin.ts
7
9
  init_agent_config();
8
- function listGlobalDefaults(cfg) {
10
+ init_repository();
11
+ function listGlobalDefaults() {
9
12
  return {
10
- defaults: structuredClone(cfg.agents.defaults),
13
+ defaults: structuredClone(new AgentCatalogRepository().getSettings().defaults),
11
14
  builtinTools: GATEWAY_BUILTIN_TOOLS.map((tool) => ({
12
15
  id: tool.id,
13
16
  description: { ...tool.description }
14
17
  }))
15
18
  };
16
19
  }
17
- function prepareUpdateGlobalDefaults(cfg, body) {
20
+ function prepareUpdateGlobalDefaults(body) {
18
21
  const parsed = AgentDefaultsSchema.safeParse(body.defaults);
19
22
  if (!parsed.success) return {
20
23
  ok: false,
21
24
  error: `defaults ${parsed.error.issues[0]?.message ?? "is invalid"}`,
22
25
  status: 400
23
26
  };
27
+ const current = new AgentCatalogRepository().getSettings().defaults;
24
28
  try {
25
- validateComputerModelChanges({
26
- ...cfg,
27
- agents: {
28
- ...cfg.agents,
29
- defaults: parsed.data
30
- }
31
- }, cfg);
29
+ validateComputerModelChange(parsed.data.models.computerUse, current.models.computerUse);
32
30
  } catch (error) {
33
31
  return {
34
32
  ok: false,
@@ -39,16 +37,19 @@ function prepareUpdateGlobalDefaults(cfg, body) {
39
37
  return {
40
38
  ok: true,
41
39
  data: {
42
- changed: !isDeepStrictEqual(cfg.agents.defaults, parsed.data),
43
- nextConfig: {
44
- ...cfg,
45
- agents: {
46
- ...cfg.agents,
47
- defaults: parsed.data
48
- }
49
- }
40
+ changed: !isDeepStrictEqual(current, parsed.data),
41
+ defaults: parsed.data
50
42
  }
51
43
  };
52
44
  }
45
+ function updateGlobalDefaults(body) {
46
+ const prepared = prepareUpdateGlobalDefaults(body);
47
+ if (!prepared.ok) return prepared;
48
+ if (prepared.data.changed) new AgentCatalogService().updateDefaults(prepared.data.defaults);
49
+ return {
50
+ ok: true,
51
+ data: { changed: prepared.data.changed }
52
+ };
53
+ }
53
54
  //#endregion
54
- export { listGlobalDefaults, prepareUpdateGlobalDefaults };
55
+ export { listGlobalDefaults, prepareUpdateGlobalDefaults, updateGlobalDefaults };
@@ -1,6 +1,6 @@
1
1
  import { createLogger } from "../../utils/logger/index.js";
2
2
  import { init_logger } from "../../utils/logger.js";
3
- import { listDevices } from "../../storage/sqlite/device-access-repository.js";
3
+ import { init_device_access_repository, listDevices } from "../../storage/sqlite/device-access-repository.js";
4
4
  import { ENDPOINT_MAX_FILE_BYTES, init_src } from "../../../packages/endpoint-tools-protocol/src/index.js";
5
5
  import { resolveAllowedBrowserOrigins, resolveGatewayServiceListenPort } from "../host.js";
6
6
  import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
@@ -34,6 +34,7 @@ import { getConnInfo } from "@hono/node-server/conninfo";
34
34
  //#region src/gateway/hono/app.ts
35
35
  init_src();
36
36
  init_logger();
37
+ init_device_access_repository();
37
38
  const log = createLogger("Gateway:App");
38
39
  /**
39
40
  * Extension sandbox HTML under `/api/extensions/:id/assets/*` ships its own CSP
@@ -1,7 +1,8 @@
1
- import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
2
- import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
1
+ import { normalizeAgentId } from "../../../agent-catalog/id.js";
2
+ import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
3
+ import { init_agent_scope, listAgentEntries, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
3
4
  import { resolveModelsJsonPath } from "../../../config/paths.js";
4
- import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, getChannelSetupStatus, init_channel_catalog_service } from "../../../channels/catalog/channel-catalog-service.js";
5
+ import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
5
6
  import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
6
7
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
7
8
  import { getProviderRegistry, init_plugin_registry } from "../../../providers/plugin-registry.js";
@@ -9,6 +10,7 @@ import { getAllProviders, init_providers, isProviderConfigured } from "../../../
9
10
  import { normalizeConfiguredMcpServers } from "../../../config/mcp-config-normalize.js";
10
11
  import { resolveShareConfig } from "../../../share/share-config.js";
11
12
  import { maskTunnelSecretForWeb } from "../../../tunnel/env.js";
13
+ import { buildChannelCatalogForConfig, buildChannelCatalogFromSnapshot, getChannelSetupStatus } from "../../../channels/catalog/channel-catalog-service.js";
12
14
  import { resolveSessionConfigForWeb, resolveUpdateConfigForWeb } from "../../../config/web-patch.js";
13
15
  import { GENERIC_MASKED_SECRET, maskSecretLength } from "./mask-secret-length.js";
14
16
  import { safeToolsWebForGet } from "../../config-tools-web.js";
@@ -16,7 +18,7 @@ import { buildSafeProvidersConfigForWeb } from "./safe-providers-config.js";
16
18
  import { maskRealtimeVoiceConfigForWeb, maskSttConfigForWeb, maskTtsConfigForWeb } from "./safe-voice-config.js";
17
19
  //#region src/gateway/hono/lib/config-payload.ts
18
20
  init_agent_scope();
19
- init_channel_catalog_service();
21
+ init_repository();
20
22
  init_credentials();
21
23
  init_models_json();
22
24
  init_providers();
@@ -63,6 +65,7 @@ function buildSafeBrowserConfigForWeb(browser) {
63
65
  /** Sanitized config snapshot for GET/PATCH `/api/config` (matches persisted `service.currentConfig`). */
64
66
  async function buildSafeWebConfigPayload(service, options = {}) {
65
67
  const config = service.currentConfig;
68
+ const agentCatalog = new AgentCatalogRepository().snapshot();
66
69
  const snapshot = (typeof service.getExtensionLoader === "function" ? service.getExtensionLoader() : void 0)?.getManifestSnapshot();
67
70
  const catalog = snapshot ? buildChannelCatalogFromSnapshot(snapshot, { locale: options.locale }) : buildChannelCatalogForConfig(config, { locale: options.locale });
68
71
  const channelsPayload = Object.fromEntries(catalog.entries.map((entry) => {
@@ -81,8 +84,8 @@ async function buildSafeWebConfigPayload(service, options = {}) {
81
84
  }));
82
85
  return {
83
86
  agents: {
84
- defaultId: resolveDefaultAgentId(config),
85
- list: listAgentEntries(config).filter((e) => e.enabled !== false).map((e) => ({
87
+ defaultId: resolveDefaultAgentId(),
88
+ list: listAgentEntries().filter((e) => e.enabled !== false).map((e) => ({
86
89
  id: normalizeAgentId(e.id),
87
90
  workspace: e.workspace,
88
91
  models: e.models,
@@ -90,7 +93,7 @@ async function buildSafeWebConfigPayload(service, options = {}) {
90
93
  skills: e.skills,
91
94
  workflows: e.workflows
92
95
  })),
93
- defaults: config.agents.defaults
96
+ defaults: agentCatalog.defaults
94
97
  },
95
98
  computer: config.computer,
96
99
  channels: channelsPayload,
@@ -142,7 +145,7 @@ async function buildSafeWebConfigPayload(service, options = {}) {
142
145
  knowledgeMemory: KnowledgeMemoryConfigSchema.parse(config.userContext?.knowledgeMemory),
143
146
  contextPlanning: ContextPlanningConfigSchema.parse(config.userContext?.contextPlanning)
144
147
  },
145
- tui: { defaultAgent: config.tui?.defaultAgent ?? "coder" },
148
+ tui: { defaultAgent: agentCatalog.surfaceDefaults.tui ?? agentCatalog.defaultAgentId },
146
149
  tunnel: {
147
150
  enabled: config.tunnel?.enabled === true,
148
151
  autoStart: config.tunnel?.autoStart === true,
@@ -159,7 +162,7 @@ async function buildSafeWebConfigPayload(service, options = {}) {
159
162
  tts: maskTtsConfigForWeb(config.messages?.tts),
160
163
  voice: maskRealtimeVoiceConfigForWeb(config.voice),
161
164
  tools: safeToolsWebForGet(config),
162
- bindings: Array.isArray(config.bindings) ? config.bindings : [],
165
+ bindings: agentCatalog.bindings,
163
166
  mcp: buildSafeMcpConfigForWeb(config)
164
167
  };
165
168
  }
@@ -1,7 +1,7 @@
1
1
  import { logAuthEvent } from "../../../utils/logger/audit.js";
2
2
  import { createLogger } from "../../../utils/logger/index.js";
3
3
  import { init_logger } from "../../../utils/logger.js";
4
- import { authenticateDeviceAccessToken, getDevice } from "../../../storage/sqlite/device-access-repository.js";
4
+ import { authenticateDeviceAccessToken, getDevice, init_device_access_repository } from "../../../storage/sqlite/device-access-repository.js";
5
5
  import { safeEqualSecret } from "../../security/secret-equal.js";
6
6
  import { resolveClientIpFromRequest } from "../../client-ip.js";
7
7
  import { authPolicyConfig, buckets, resolveAuthRateLimit } from "../../rate-limit/buckets.js";
@@ -16,6 +16,7 @@ import { setGatewayPrincipal } from "../../security/gateway-principal.js";
16
16
  import { createMiddleware } from "hono/factory";
17
17
  import { getConnInfo } from "@hono/node-server/conninfo";
18
18
  //#region src/gateway/hono/middleware/auth.ts
19
+ init_device_access_repository();
19
20
  init_logger();
20
21
  const log = createLogger("Gateway:Auth");
21
22
  function resolveExpectedCredential(auth) {
@@ -1,9 +1,10 @@
1
1
  import { createLogger } from "../../../utils/logger/index.js";
2
2
  import { init_logger } from "../../../utils/logger.js";
3
- import { hasGatewayScope, requiredGatewayScope } from "../../security/gateway-scopes.js";
3
+ import { hasGatewayScope, init_gateway_scopes, requiredGatewayScope } from "../../security/gateway-scopes.js";
4
4
  import { getGatewayPrincipal } from "../../security/gateway-principal.js";
5
5
  import { createMiddleware } from "hono/factory";
6
6
  //#region src/gateway/hono/middleware/scopes.ts
7
+ init_gateway_scopes();
7
8
  init_logger();
8
9
  const log = createLogger("Hono:Scopes");
9
10
  /** Enforces fail-closed route scopes after authentication establishes a principal. */