@xopcai/xopc 0.0.392 → 0.0.393

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 (422) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/telegram/xopc.extension.json +1 -1
  3. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CZmaQbC9.js → agent-avatar-dicebear-1AF2KGju.js} +1 -1
  4. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CPJr7NRR.js +1 -0
  5. package/dist/gateway/static/root/assets/agent-plugin-dialog-cjJXJj_3.js +1 -0
  6. package/dist/gateway/static/root/assets/agents-DW3TlnIg.js +77 -0
  7. package/dist/gateway/static/root/assets/{agents-admin-api-znm6_dW_.js → agents-admin-api-B5aykqg_.js} +1 -1
  8. package/dist/gateway/static/root/assets/app-management-settings-panel-B_MFhXXU.js +1 -0
  9. package/dist/gateway/static/root/assets/appearance-settings-TYGidVnd.js +1 -0
  10. package/dist/gateway/static/root/assets/apps-page-DOkyvOF0.js +1 -0
  11. package/dist/gateway/static/root/assets/{archive-plugin-dSkmoISk.js → archive-plugin-BrFfEp0u.js} +1 -1
  12. package/dist/gateway/static/root/assets/{automations-page-DhWRn0dZ.js → automations-page-B7OofUPF.js} +1 -1
  13. package/dist/gateway/static/root/assets/automations-workspace-DIod-bfm.js +6 -0
  14. package/dist/gateway/static/root/assets/{binary-plugins-BJlZrYym.js → binary-plugins-BfAWnYG8.js} +1 -1
  15. package/dist/gateway/static/root/assets/{block-editor-OHBssIfN.js → block-editor-_Y-QwZ-3.js} +5 -5
  16. package/dist/gateway/static/root/assets/browser-automation-inputs-DH9QHI9m.js +1 -0
  17. package/dist/gateway/static/root/assets/browser-automations-page-B_SnD9B0.js +3 -0
  18. package/dist/gateway/static/root/assets/browser-settings-page-BPlqYpMM.js +3 -0
  19. package/dist/gateway/static/root/assets/capabilities-page-BtzZvMIK.js +2 -0
  20. package/dist/gateway/static/root/assets/{capabilities-CgDteXZH.js → capabilities-pt2M56-E.js} +1 -1
  21. package/dist/gateway/static/root/assets/capabilities-settings-panel-WzoG3oBb.js +8 -0
  22. package/dist/gateway/static/root/assets/capability-header-actions-CFVx3iaZ.js +1 -0
  23. package/dist/gateway/static/root/assets/channels-BXA55GY2.js +1 -0
  24. package/dist/gateway/static/root/assets/chat-terminal-dock-D3GuiG3N.js +36 -0
  25. package/dist/gateway/static/root/assets/computer-settings-page-CIbHDlp8.js +1 -0
  26. package/dist/gateway/static/root/assets/connector-service-page-CDyCHkpK.js +1 -0
  27. package/dist/gateway/static/root/assets/connectors-page-DA2b6cJu.js +1 -0
  28. package/dist/gateway/static/root/assets/date-picker-C424c_g9.js +1 -0
  29. package/dist/gateway/static/root/assets/dependency-picker-BVJh9sYc.js +1 -0
  30. package/dist/gateway/static/root/assets/desktop-pet-Q52A8vjp.js +1 -0
  31. package/dist/gateway/static/root/assets/desktop-pet-settings-CZr1CXxu.js +1 -0
  32. package/dist/gateway/static/root/assets/desktop-pet-sprite-Bd-aOI7N.js +30 -0
  33. package/dist/gateway/static/root/assets/desktop-pet-sprite-BuB0g8zv.css +1 -0
  34. package/dist/gateway/static/root/assets/device-pairing-wizard-D_WWTsze.js +1 -0
  35. package/dist/gateway/static/root/assets/directory-picker-path-field-C6cUgrvg.js +1 -0
  36. package/dist/gateway/static/root/assets/extension-debug-page-DyyfC4gA.js +1 -0
  37. package/dist/gateway/static/root/assets/extension-page-Dho9o3ZZ.js +1 -0
  38. package/dist/gateway/static/root/assets/extension-settings-page-CdnIGyCH.js +1 -0
  39. package/dist/gateway/static/root/assets/{gateway-config-swr-BM__9Fws.js → gateway-config-swr-BEePO3Wl.js} +1 -1
  40. package/dist/gateway/static/root/assets/{gateway-realtime-DS_GDx-x.js → gateway-realtime-Dng_VOvI.js} +1 -1
  41. package/dist/gateway/static/root/assets/gateway-realtime-store-DtlBf7oH.js +1 -0
  42. package/dist/gateway/static/root/assets/gateway-settings-D0KSQRNZ.js +1 -0
  43. package/dist/gateway/static/root/assets/{gateway-startup-retry-DosoyMIH.js → gateway-startup-retry-CDCiy7Cd.js} +1 -1
  44. package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-BYHXWIfK.js → highlighted-body-KQOG7T2V-BNpj_mIM.js} +1 -1
  45. package/dist/gateway/static/root/assets/home-page-CH_A0W29.js +2 -0
  46. package/dist/gateway/static/root/assets/image-generation-api-DwkO2y46.js +1 -0
  47. package/dist/gateway/static/root/assets/imports-page-BrYvomnU.js +1 -0
  48. package/dist/gateway/static/root/assets/index-CKdOZoVu.js +260 -0
  49. package/dist/gateway/static/root/assets/index-Rxjt-jc3.css +1 -0
  50. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BveDYfYk.js +1 -0
  51. package/dist/gateway/static/root/assets/local-app-workbench-page-CcIi1BhT.js +1 -0
  52. package/dist/gateway/static/root/assets/local-apps-page-B1a69mlV.js +1 -0
  53. package/dist/gateway/static/root/assets/{local-session-drafts-Bye3ZtsW.js → local-session-drafts-CYEDUPH7.js} +1 -1
  54. package/dist/gateway/static/root/assets/{locale-store-BKyOF23r.js → locale-store-CE7L6MlS.js} +1 -1
  55. package/dist/gateway/static/root/assets/logs-page-Us1jv3C4.js +2 -0
  56. package/dist/gateway/static/root/assets/management-settings-C9RAM7-s.js +1 -0
  57. package/dist/gateway/static/root/assets/{markdown-view-D_7clISS.js → markdown-view-PrKvVpRh.js} +1 -1
  58. package/dist/gateway/static/root/assets/{media-plugins-B_4o8hac.js → media-plugins-CR1fp6IL.js} +1 -1
  59. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-DQdcaMiu.js +1 -0
  60. package/dist/gateway/static/root/assets/messages-CaeL_miw.js +3 -0
  61. package/dist/gateway/static/root/assets/note-detail-panel-Q4yRx9iZ.js +5 -0
  62. package/dist/gateway/static/root/assets/notes-page-C9qu16IN.js +8 -0
  63. package/dist/gateway/static/root/assets/page-context-capture-button-Cn_WK68Y.js +1 -0
  64. package/dist/gateway/static/root/assets/personal-page-DrP6hEcg.js +1 -0
  65. package/dist/gateway/static/root/assets/preview-open-alternatives-3NbiWGRG.js +1 -0
  66. package/dist/gateway/static/root/assets/product-open-page-KKE5-V8k.js +1 -0
  67. package/dist/gateway/static/root/assets/product-preview-content-BM0oqNxi.js +1 -0
  68. package/dist/gateway/static/root/assets/project-detail-page-CPZrwf8n.js +1 -0
  69. package/dist/gateway/static/root/assets/projects-page-Besfx_07.js +1 -0
  70. package/dist/gateway/static/root/assets/{registry-api-DLHHYP_v.js → registry-api-BO2Ck3aA.js} +1 -1
  71. package/dist/gateway/static/root/assets/remote-access-hub-CTDghL5L.js +1 -0
  72. package/dist/gateway/static/root/assets/{runtime-tools-api-Dq_50s27.js → runtime-tools-api-B1sb8nlw.js} +1 -1
  73. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-W0X_Fy7b.js +1 -0
  74. package/dist/gateway/static/root/assets/schema-form-DNM2Zdyr.js +1 -0
  75. package/dist/gateway/static/root/assets/{session-api-Br11ih_M.js → session-api-CaAUJvu1.js} +1 -1
  76. package/dist/gateway/static/root/assets/session-manager-DoFTlgNz.js +16 -0
  77. package/dist/gateway/static/root/assets/sessions-page-Dxtablvd.js +1 -0
  78. package/dist/gateway/static/root/assets/settings-advanced-gate-C7zklouD.js +1 -0
  79. package/dist/gateway/static/root/assets/settings-form-section-DCSHPFAN.js +1 -0
  80. package/dist/gateway/static/root/assets/{settings-page-4odCW0_2.js → settings-page-B18UbbaJ.js} +1 -1
  81. package/dist/gateway/static/root/assets/setup-status-panel-JoSfluza.js +1 -0
  82. package/dist/gateway/static/root/assets/share-preview-page-BLnS3hoH.js +2 -0
  83. package/dist/gateway/static/root/assets/shares-settings-DcIuPJK3.js +1 -0
  84. package/dist/gateway/static/root/assets/skill-api-CcYGkRPL.js +1 -0
  85. package/dist/gateway/static/root/assets/skill-reload-api-PnUZjoPK.js +1 -0
  86. package/dist/gateway/static/root/assets/skills-page-D3JAw62U.js +2 -0
  87. package/dist/gateway/static/root/assets/style-BQqU-1pP.js +7 -0
  88. package/dist/gateway/static/root/assets/system-settings-panel-C974myUM.js +1 -0
  89. package/dist/gateway/static/root/assets/tab-completion-input-CxtEp0aP.js +1 -0
  90. package/dist/gateway/static/root/assets/task-detail-page-CiljFekC.js +2 -0
  91. package/dist/gateway/static/root/assets/{task-expandable-content-CmQt5uxa.js → task-expandable-content-DTEVoNrM.js} +1 -1
  92. package/dist/gateway/static/root/assets/tracing-settings-page-DEE75MUn.js +1 -0
  93. package/dist/gateway/static/root/assets/tunnel-api-DWyI3uA3.js +1 -0
  94. package/dist/gateway/static/root/assets/usage-page-DJYvbxk7.js +1 -0
  95. package/dist/gateway/static/root/assets/use-autosave-CY0YuljR.js +1 -0
  96. package/dist/gateway/static/root/assets/user-model-page-eHZJD6Fw.js +2 -0
  97. package/dist/gateway/static/root/assets/voice-api-key-field-BNG4ixJE.js +1 -0
  98. package/dist/gateway/static/root/assets/{voice-config-api-CmDtDA4g.js → voice-config-api-D0Wscn9W.js} +1 -1
  99. package/dist/gateway/static/root/assets/work-discovery-overlay-CohIoAre.js +1 -0
  100. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Czfs5XFH.js → workflow-run-setup-panel-BXI8eyYh.js} +2 -2
  101. package/dist/gateway/static/root/assets/workflows-page-CVti0u-l.js +6 -0
  102. package/dist/gateway/static/root/assets/xopc-cloud-account-card-C_COnY_B.js +1 -0
  103. package/dist/gateway/static/root/index.html +19 -69
  104. package/dist/package.js +1 -1
  105. package/dist/src/agent/agent-instance-gateway.d.ts +2 -0
  106. package/dist/src/agent/agent-manager.d.ts +1 -1
  107. package/dist/src/agent/agent-manager.js +11 -20
  108. package/dist/src/agent/background-review/run-background-review.js +1 -1
  109. package/dist/src/agent/child-agent-factory.d.ts +2 -1
  110. package/dist/src/agent/child-agent-factory.js +2 -1
  111. package/dist/src/agent/coding/projectEvidence.d.ts +9 -0
  112. package/dist/src/agent/coding/projectEvidence.js +177 -0
  113. package/dist/src/agent/coding/repository-instructions.d.ts +8 -1
  114. package/dist/src/agent/coding/repository-instructions.js +9 -4
  115. package/dist/src/agent/coding/run-verification.d.ts +17 -2
  116. package/dist/src/agent/coding/run-verification.js +82 -12
  117. package/dist/src/agent/embedded/codemode-extension.js +1 -1
  118. package/dist/src/agent/embedded/execution-context.d.ts +1 -0
  119. package/dist/src/agent/embedded/execution-context.js +4 -1
  120. package/dist/src/agent/embedded/external-tool-discovery.js +1 -1
  121. package/dist/src/agent/embedded/run-for-session.js +1 -0
  122. package/dist/src/agent/embedded/run-turn.js +41 -5
  123. package/dist/src/agent/embedded/session-runner.js +1 -1
  124. package/dist/src/agent/embedded/session-tool-result-guard.js +5 -0
  125. package/dist/src/agent/embedded/types.d.ts +2 -0
  126. package/dist/src/agent/embedded/xopc-tools-bridge.js +2 -1
  127. package/dist/src/agent/external-tools/cliProvider.js +2 -2
  128. package/dist/src/agent/external-tools/composio-provider.js +2 -2
  129. package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
  130. package/dist/src/agent/external-tools/extension-provider.js +1 -1
  131. package/dist/src/agent/external-tools/gateway-tools.js +1 -1
  132. package/dist/src/agent/external-tools/memory-provider.js +1 -1
  133. package/dist/src/agent/independent-execution.d.ts +2 -0
  134. package/dist/src/agent/independent-execution.js +12 -0
  135. package/dist/src/agent/memory/compaction.js +1 -1
  136. package/dist/src/agent/orchestration/delegation-scope.d.ts +1 -0
  137. package/dist/src/agent/orchestration/delegation-scope.js +4 -1
  138. package/dist/src/agent/orchestration/loop-guard.js +6 -2
  139. package/dist/src/agent/prompt/sections/agent-identity.js +4 -6
  140. package/dist/src/agent/prompt/sections/behavior.d.ts +3 -2
  141. package/dist/src/agent/prompt/sections/behavior.js +34 -27
  142. package/dist/src/agent/prompt/sections/memory-skills.d.ts +1 -1
  143. package/dist/src/agent/prompt/sections/memory-skills.js +10 -11
  144. package/dist/src/agent/prompt/sections/messaging-runtime.d.ts +3 -2
  145. package/dist/src/agent/prompt/sections/messaging-runtime.js +21 -24
  146. package/dist/src/agent/prompt/sections/response-language.js +7 -6
  147. package/dist/src/agent/prompt/sections/tooling.js +11 -10
  148. package/dist/src/agent/prompt/service-prompt-builder.js +3 -1
  149. package/dist/src/agent/prompt/system-prompt-params.d.ts +2 -1
  150. package/dist/src/agent/prompt/system-prompt-params.js +2 -0
  151. package/dist/src/agent/prompt/system-prompt.d.ts +2 -1
  152. package/dist/src/agent/prompt/system-prompt.js +21 -18
  153. package/dist/src/agent/prompt/types.d.ts +2 -0
  154. package/dist/src/agent/service/process-direct-streaming.js +1 -1
  155. package/dist/src/agent/service.js +3 -2
  156. package/dist/src/agent/skills/format-skills-prompt.js +5 -2
  157. package/dist/src/agent/skills/index.js +1 -1
  158. package/dist/src/agent/skills/managed-store.js +1 -1
  159. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  160. package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
  161. package/dist/src/agent/tool-manuals/xopc-use.js +5 -0
  162. package/dist/src/agent/tools/dataBatch.d.ts +1 -0
  163. package/dist/src/agent/tools/dataBatch.js +4 -1
  164. package/dist/src/agent/tools/delegate-tool.d.ts +1 -0
  165. package/dist/src/agent/tools/delegate-tool.js +1 -0
  166. package/dist/src/agent/tools/error-tracker.js +4 -2
  167. package/dist/src/agent/tools/exec-command.js +4 -3
  168. package/dist/src/agent/tools/factory.d.ts +1 -0
  169. package/dist/src/agent/tools/factory.js +20 -21
  170. package/dist/src/agent/tools/{delegation-parent-policy.d.ts → noninteractive-tool-policy.d.ts} +1 -1
  171. package/dist/src/agent/tools/{delegation-parent-policy.js → noninteractive-tool-policy.js} +4 -4
  172. package/dist/src/agent/tools/personal-read-tool.js +1 -1
  173. package/dist/src/agent/tools/personal-task-tool.js +1 -1
  174. package/dist/src/agent/tools/publish-artifacts.js +1 -1
  175. package/dist/src/agent/tools/search/cache.d.ts +3 -1
  176. package/dist/src/agent/tools/search/cache.js +4 -1
  177. package/dist/src/agent/tools/search/providers/deepseek-protocol.d.ts +9 -0
  178. package/dist/src/agent/tools/search/providers/deepseek-protocol.js +84 -0
  179. package/dist/src/agent/tools/search/providers/deepseek.d.ts +9 -0
  180. package/dist/src/agent/tools/search/providers/deepseek.js +55 -0
  181. package/dist/src/agent/tools/search/providers/xopc-cloud.d.ts +2 -1
  182. package/dist/src/agent/tools/search/providers/xopc-cloud.js +36 -1
  183. package/dist/src/agent/tools/search/registry.d.ts +1 -0
  184. package/dist/src/agent/tools/search/registry.js +32 -6
  185. package/dist/src/agent/tools/search/request-gate.d.ts +13 -0
  186. package/dist/src/agent/tools/search/request-gate.js +41 -0
  187. package/dist/src/agent/tools/search/resolve-config.js +1 -1
  188. package/dist/src/agent/tools/search/search-info.d.ts +8 -0
  189. package/dist/src/agent/tools/search/search-info.js +34 -0
  190. package/dist/src/agent/tools/search/types.d.ts +19 -1
  191. package/dist/src/agent/tools/toolExposure.d.ts +3 -0
  192. package/dist/src/agent/tools/toolExposure.js +25 -0
  193. package/dist/src/agent/tools/web.js +8 -1
  194. package/dist/src/agent/tools/xopc-use-tool.js +7 -3
  195. package/dist/src/agent/workflow/subagent-runner.d.ts +1 -0
  196. package/dist/src/agent/workflow/subagent-runner.js +3 -3
  197. package/dist/src/agent/workflow/workflow-child-tools.js +13 -8
  198. package/dist/src/agent/workspace-runtime/registry.js +1 -1
  199. package/dist/src/agent-catalog/capabilities.js +2 -2
  200. package/dist/src/automations/capabilities/drafts.js +1 -1
  201. package/dist/src/automations/service/action-executor.js +2 -2
  202. package/dist/src/bootstrap/application-state.js +1 -1
  203. package/dist/src/capabilities/runtime/dispatcher.js +1 -1
  204. package/dist/src/capabilities/runtime/product.js +1 -1
  205. package/dist/src/chat-commands/agent-edit.js +1 -1
  206. package/dist/src/cli/command-manifest.js +1 -1
  207. package/dist/src/cli/commands/agent.js +1 -1
  208. package/dist/src/cli/commands/agents.js +1 -1
  209. package/dist/src/cli/commands/models.js +1 -1
  210. package/dist/src/cli/commands/onboard/model.js +1 -1
  211. package/dist/src/cli/commands/search.d.ts +2 -2
  212. package/dist/src/cli/commands/search.js +8 -6
  213. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  214. package/dist/src/computer/model-adapter.d.ts +3 -0
  215. package/dist/src/computer/model-adapter.js +120 -3
  216. package/dist/src/computer/model-policy.d.ts +1 -1
  217. package/dist/src/computer/model-policy.js +13 -6
  218. package/dist/src/computer/runtime.js +1 -0
  219. package/dist/src/config/agent-model-intents.js +1 -1
  220. package/dist/src/config/agent-profile.js +2 -2
  221. package/dist/src/config/loader.js +1 -1
  222. package/dist/src/config/models-json.d.ts +14 -8
  223. package/dist/src/config/models-json.js +3 -1
  224. package/dist/src/config/outbound-proxy.d.ts +11 -0
  225. package/dist/src/config/outbound-proxy.js +30 -0
  226. package/dist/src/config/rules.js +5 -0
  227. package/dist/src/config/schema.d.ts +29 -6
  228. package/dist/src/config/schema.js +21 -4
  229. package/dist/src/extensions/agent-plugins/validation.js +1 -1
  230. package/dist/src/gateway/agents-admin.js +2 -2
  231. package/dist/src/gateway/config-tools-web.js +15 -4
  232. package/dist/src/gateway/gateway-workflow-host.types.d.ts +3 -0
  233. package/dist/src/gateway/hono/lib/config-payload.d.ts +5 -0
  234. package/dist/src/gateway/hono/lib/config-payload.js +6 -1
  235. package/dist/src/gateway/hono/routes/config-patch/gateway.js +7 -0
  236. package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
  237. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  238. package/dist/src/gateway/hono/routes/context-sources.js +1 -1
  239. package/dist/src/gateway/hono/routes/models.js +5 -2
  240. package/dist/src/gateway/hono/routes/notes.js +2 -2
  241. package/dist/src/gateway/hono/routes/projects.js +2 -2
  242. package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
  243. package/dist/src/gateway/hono/routes/tasks.js +1 -1
  244. package/dist/src/gateway/image-generation-setup.js +1 -1
  245. package/dist/src/gateway/lock.js +1 -1
  246. package/dist/src/gateway/service/config-coordinator.d.ts +8 -3
  247. package/dist/src/gateway/service.js +5 -3
  248. package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
  249. package/dist/src/infra/http-proxy-env.d.ts +3 -0
  250. package/dist/src/infra/http-proxy-env.js +22 -2
  251. package/dist/src/local-apps/service.js +1 -1
  252. package/dist/src/personal-agent/communication.d.ts +2 -1
  253. package/dist/src/personal-agent/communication.js +11 -2
  254. package/dist/src/personal-agent/persona.d.ts +2 -1
  255. package/dist/src/personal-agent/persona.js +3 -2
  256. package/dist/src/personal-agent/proactivity/service.js +1 -1
  257. package/dist/src/personal-agent/prompts.d.ts +2 -0
  258. package/dist/src/personal-agent/prompts.js +69 -7
  259. package/dist/src/personal-agent/reply-composer.js +2 -2
  260. package/dist/src/personal-agent/reply-style.d.ts +4 -2
  261. package/dist/src/personal-agent/reply-style.js +19 -3
  262. package/dist/src/personal-agent/request-service.js +14 -9
  263. package/dist/src/personal-agent/service.js +2 -2
  264. package/dist/src/pets/loopi-artwork.d.ts +2 -0
  265. package/dist/src/pets/loopi-artwork.js +36 -0
  266. package/dist/src/pets/pointer.d.ts +6 -0
  267. package/dist/src/pets/pointer.js +16 -0
  268. package/dist/src/project-trust/trust-store.d.ts +5 -0
  269. package/dist/src/project-trust/trust-store.js +7 -1
  270. package/dist/src/providers/index.js +3 -3
  271. package/dist/src/providers/model-catalog-persistence.js +1 -1
  272. package/dist/src/providers/model-registry.js +2 -0
  273. package/dist/src/providers/model-supplements.d.ts +0 -2
  274. package/dist/src/providers/model-supplements.js +2 -18
  275. package/dist/src/providers/xopc-cloud-credit-budget.d.ts +1 -0
  276. package/dist/src/providers/xopc-cloud-credit-budget.js +4 -1
  277. package/dist/src/routing/resolve-route.js +1 -1
  278. package/dist/src/routing/resolve-tui-session-key.js +1 -1
  279. package/dist/src/tasks/capabilities/read.js +2 -2
  280. package/dist/src/tasks/capabilities/write.js +1 -1
  281. package/dist/src/tasks/task-allocation-service.js +51 -40
  282. package/dist/src/tasks/task-application-service.js +5 -1
  283. package/dist/src/tasks/task-contract-planner.js +21 -6
  284. package/dist/src/tasks/task-handoff-service.js +1 -1
  285. package/dist/src/tasks/task-language.d.ts +2 -0
  286. package/dist/src/tasks/task-language.js +13 -2
  287. package/dist/src/tasks/task-run-coordinator.js +5 -1
  288. package/dist/src/tasks/task-run-dispatcher.js +2 -1
  289. package/dist/src/tui/backends/embedded-backend.js +2 -2
  290. package/dist/src/tui/tui.js +1 -1
  291. package/dist/src/voice/realtime/persona-context.js +1 -1
  292. package/dist/src/workflows/service/workflow-run-service.js +2 -3
  293. package/package.json +8 -4
  294. package/dist/gateway/static/root/assets/activity-YogQEteU.js +0 -1
  295. package/dist/gateway/static/root/assets/activity-store-DtTSRUyF.js +0 -1
  296. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-0GXoU7WL.js +0 -1
  297. package/dist/gateway/static/root/assets/agent-plugin-dialog-BxDqL7uc.js +0 -1
  298. package/dist/gateway/static/root/assets/agents-CYmRcXr-.js +0 -77
  299. package/dist/gateway/static/root/assets/app-chrome-BeB4KgOf.js +0 -1
  300. package/dist/gateway/static/root/assets/app-management-settings-panel-FhWeowCY.js +0 -1
  301. package/dist/gateway/static/root/assets/appearance-settings-DXin262V.js +0 -1
  302. package/dist/gateway/static/root/assets/apps-page-2M_l4Naz.js +0 -1
  303. package/dist/gateway/static/root/assets/automations-workspace-CVIWgoTx.js +0 -6
  304. package/dist/gateway/static/root/assets/browser-automation-inputs-uVEhZWHz.js +0 -1
  305. package/dist/gateway/static/root/assets/browser-automations-page-CEFnpvTO.js +0 -3
  306. package/dist/gateway/static/root/assets/browser-settings-page-sQpJic5b.js +0 -3
  307. package/dist/gateway/static/root/assets/button-aIC072nz.js +0 -1
  308. package/dist/gateway/static/root/assets/capabilities-BSB93QBR.js +0 -1
  309. package/dist/gateway/static/root/assets/capabilities-page-BKkN4sTh.js +0 -2
  310. package/dist/gateway/static/root/assets/capabilities-settings-panel-DCZTR8Hu.js +0 -8
  311. package/dist/gateway/static/root/assets/capability-header-actions-D0HwmxyW.js +0 -1
  312. package/dist/gateway/static/root/assets/channels-DRraXYSd.js +0 -1
  313. package/dist/gateway/static/root/assets/chat-terminal-dock-DpM489kK.js +0 -36
  314. package/dist/gateway/static/root/assets/chevron-left-DqFhpbvK.js +0 -1
  315. package/dist/gateway/static/root/assets/chevron-right-BweFrslA.js +0 -1
  316. package/dist/gateway/static/root/assets/circle-alert-BEjgurr2.js +0 -1
  317. package/dist/gateway/static/root/assets/circle-dashed-8qMD7gHf.js +0 -1
  318. package/dist/gateway/static/root/assets/circle-dot-BAseJTrF.js +0 -1
  319. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +0 -1
  320. package/dist/gateway/static/root/assets/computer-settings-page-D0ir9aA1.js +0 -1
  321. package/dist/gateway/static/root/assets/connector-service-page-Y5SYaiJO.js +0 -1
  322. package/dist/gateway/static/root/assets/connectors-page-DRSbj4gn.js +0 -1
  323. package/dist/gateway/static/root/assets/copy-text-row-C7egVuKr.js +0 -1
  324. package/dist/gateway/static/root/assets/date-formatters-CUZAyDEg.js +0 -1
  325. package/dist/gateway/static/root/assets/date-picker-DyUP-8hR.js +0 -1
  326. package/dist/gateway/static/root/assets/dependency-picker-QF9qLWIG.js +0 -1
  327. package/dist/gateway/static/root/assets/desktop-pet-Qfns4SO-.js +0 -1
  328. package/dist/gateway/static/root/assets/desktop-pet-settings-CuITd-Xa.js +0 -1
  329. package/dist/gateway/static/root/assets/desktop-pet-sprite-BP6iMVw1.js +0 -1
  330. package/dist/gateway/static/root/assets/device-pairing-wizard-C8RPqM_F.js +0 -1
  331. package/dist/gateway/static/root/assets/directory-picker-path-field-DnD9eyoU.js +0 -1
  332. package/dist/gateway/static/root/assets/dist-C3DSFZCi.js +0 -1
  333. package/dist/gateway/static/root/assets/electron-env-Dit0bHgy.js +0 -1
  334. package/dist/gateway/static/root/assets/extension-debug-page-B5ikNsSj.js +0 -1
  335. package/dist/gateway/static/root/assets/extension-page-D-PBMAtT.js +0 -1
  336. package/dist/gateway/static/root/assets/extension-provider-CdlACvkE.js +0 -1
  337. package/dist/gateway/static/root/assets/extension-settings-page-BPUYMNb0.js +0 -1
  338. package/dist/gateway/static/root/assets/form-field-width-DJw_jULe.js +0 -1
  339. package/dist/gateway/static/root/assets/gateway-realtime-store-uEdmIROn.js +0 -1
  340. package/dist/gateway/static/root/assets/gateway-settings-BKj4PQs4.js +0 -1
  341. package/dist/gateway/static/root/assets/globe-DSSGFWFn.js +0 -1
  342. package/dist/gateway/static/root/assets/home-page-D1ZBF3me.js +0 -2
  343. package/dist/gateway/static/root/assets/image-generation-api-BB3D6OV1.js +0 -1
  344. package/dist/gateway/static/root/assets/imports-page-BCcWIxOO.js +0 -1
  345. package/dist/gateway/static/root/assets/index-Bo70AuAq.js +0 -260
  346. package/dist/gateway/static/root/assets/index-BxoR4_xr.css +0 -1
  347. package/dist/gateway/static/root/assets/index.module-Cd9ENXfk.js +0 -1
  348. package/dist/gateway/static/root/assets/interaction-BdhHBbYa.js +0 -1
  349. package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +0 -1
  350. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-Bc9UWPqr.js +0 -1
  351. package/dist/gateway/static/root/assets/loader-circle-CifKLtgG.js +0 -1
  352. package/dist/gateway/static/root/assets/local-app-workbench-page-jnK1j04U.js +0 -1
  353. package/dist/gateway/static/root/assets/local-apps-page-DpN8UN_Y.js +0 -1
  354. package/dist/gateway/static/root/assets/logs-page-DBR5mfxw.js +0 -2
  355. package/dist/gateway/static/root/assets/loopi-C09I2mNj.css +0 -1
  356. package/dist/gateway/static/root/assets/loopi-Djb8XU3l.js +0 -1
  357. package/dist/gateway/static/root/assets/management-settings-rs2cdb5f.js +0 -1
  358. package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-Bl4kOOZT.js +0 -1
  359. package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +0 -1
  360. package/dist/gateway/static/root/assets/messages-B7VtMXec.js +0 -3
  361. package/dist/gateway/static/root/assets/mic-CuUb7zc-.js +0 -1
  362. package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +0 -1
  363. package/dist/gateway/static/root/assets/models-hub-cache-D0vR7vex.js +0 -1
  364. package/dist/gateway/static/root/assets/note-detail-panel-B7R-cZWE.js +0 -5
  365. package/dist/gateway/static/root/assets/notes-api-DZkezSIy.js +0 -2
  366. package/dist/gateway/static/root/assets/notes-page-DY9MNatd.js +0 -8
  367. package/dist/gateway/static/root/assets/page-context-capture-button-C-X8J1IO.js +0 -1
  368. package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +0 -1
  369. package/dist/gateway/static/root/assets/personal-page-CIZWUoUh.js +0 -1
  370. package/dist/gateway/static/root/assets/popover-select-DGKUpVsz.js +0 -1
  371. package/dist/gateway/static/root/assets/preview-open-alternatives-BJU2fmPn.js +0 -1
  372. package/dist/gateway/static/root/assets/product-open-page-CYV_8zRl.js +0 -1
  373. package/dist/gateway/static/root/assets/product-preview-content-DfQ9h_YX.js +0 -1
  374. package/dist/gateway/static/root/assets/project-detail-page-B_fYXcAW.js +0 -1
  375. package/dist/gateway/static/root/assets/projects-page-CHdeAtpp.js +0 -1
  376. package/dist/gateway/static/root/assets/remote-access-hub-CbJWGHW_.js +0 -1
  377. package/dist/gateway/static/root/assets/rotate-ccw-JM1TBLpp.js +0 -1
  378. package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +0 -1
  379. package/dist/gateway/static/root/assets/runtime-tools-settings-panel-jqYXsCuk.js +0 -1
  380. package/dist/gateway/static/root/assets/schema-form-DNXZLVqh.js +0 -1
  381. package/dist/gateway/static/root/assets/search-DA7gz22f.js +0 -1
  382. package/dist/gateway/static/root/assets/secret-input-BxWHx6J6.js +0 -1
  383. package/dist/gateway/static/root/assets/send-session-input-NpLYu1ip.js +0 -1
  384. package/dist/gateway/static/root/assets/session-manager-Bb9pevyM.js +0 -16
  385. package/dist/gateway/static/root/assets/sessions-page-DrGCnBhV.js +0 -1
  386. package/dist/gateway/static/root/assets/settings-2-D-csvaET.js +0 -1
  387. package/dist/gateway/static/root/assets/settings-advanced-gate-B61Eh7eB.js +0 -1
  388. package/dist/gateway/static/root/assets/settings-form-draft-Dy10ldo8.js +0 -1
  389. package/dist/gateway/static/root/assets/settings-form-section-num14vSv.js +0 -1
  390. package/dist/gateway/static/root/assets/settings-shell-dialog-layer-BU3UuiJr.js +0 -1
  391. package/dist/gateway/static/root/assets/setup-status-panel-DaU9o0Ll.js +0 -1
  392. package/dist/gateway/static/root/assets/share-link-dialog-BhjQPZbF.js +0 -1
  393. package/dist/gateway/static/root/assets/share-preview-page-LERhIwgz.js +0 -2
  394. package/dist/gateway/static/root/assets/shares-api-CgsiMdCX.js +0 -1
  395. package/dist/gateway/static/root/assets/shares-settings-DmvyqIyT.js +0 -1
  396. package/dist/gateway/static/root/assets/skeleton-BI5TyibZ.js +0 -1
  397. package/dist/gateway/static/root/assets/skill-api-plToSoFo.js +0 -1
  398. package/dist/gateway/static/root/assets/skill-api-utils-C7V4JVXM.js +0 -1
  399. package/dist/gateway/static/root/assets/skill-reload-api-BFw81Ar6.js +0 -1
  400. package/dist/gateway/static/root/assets/skill-wire-pattern-BPpeIcCi.js +0 -1
  401. package/dist/gateway/static/root/assets/skills-page-BLUsxGOo.js +0 -2
  402. package/dist/gateway/static/root/assets/style-1FPsMO2E.js +0 -7
  403. package/dist/gateway/static/root/assets/system-settings-panel-DL3WXRnL.js +0 -1
  404. package/dist/gateway/static/root/assets/tab-completion-input-D64VNmiA.js +0 -1
  405. package/dist/gateway/static/root/assets/task-detail-page-DWM5xGbe.js +0 -2
  406. package/dist/gateway/static/root/assets/theme-store-CPdeCbZI.js +0 -1
  407. package/dist/gateway/static/root/assets/tracing-settings-page-m51enJFx.js +0 -1
  408. package/dist/gateway/static/root/assets/tunnel-api-B5I53jzk.js +0 -1
  409. package/dist/gateway/static/root/assets/usage-page-B7qyfnMN.js +0 -1
  410. package/dist/gateway/static/root/assets/use-async-resource-GrnWNwMZ.js +0 -1
  411. package/dist/gateway/static/root/assets/use-autosave-C2__K1-y.js +0 -1
  412. package/dist/gateway/static/root/assets/use-composer-attachments-61W-5Q6m.js +0 -2
  413. package/dist/gateway/static/root/assets/use-file-preview-expanded-DZUWxdhm.js +0 -2
  414. package/dist/gateway/static/root/assets/user-model-page-DkIuYpuf.js +0 -2
  415. package/dist/gateway/static/root/assets/voice-api-key-field-DB--pFJX.js +0 -1
  416. package/dist/gateway/static/root/assets/voice-transcribe-api-Cp2uDvFO.js +0 -1
  417. package/dist/gateway/static/root/assets/work-discovery-overlay-Blwp7T-_.js +0 -1
  418. package/dist/gateway/static/root/assets/workflows-page-RN_QXcGY.js +0 -6
  419. package/dist/gateway/static/root/assets/workspace-api-lHTRLje0.js +0 -2
  420. package/dist/gateway/static/root/assets/xopc-cloud-account-card-D31rz9OQ.js +0 -1
  421. package/dist/src/agent/bootstrap/project-agents-context.d.ts +0 -2
  422. package/dist/src/agent/bootstrap/project-agents-context.js +0 -30
@@ -233,6 +233,7 @@ export declare const SearchProviderEntrySchema: z.ZodObject<{
233
233
  tavily: "tavily";
234
234
  bing: "bing";
235
235
  searxng: "searxng";
236
+ deepseek: "deepseek";
236
237
  }>;
237
238
  apiKey: z.ZodOptional<z.ZodString>;
238
239
  url: z.ZodOptional<z.ZodString>;
@@ -247,6 +248,7 @@ export declare const WebSearchConfigSchema: z.ZodObject<{
247
248
  tavily: "tavily";
248
249
  bing: "bing";
249
250
  searxng: "searxng";
251
+ deepseek: "deepseek";
250
252
  }>;
251
253
  apiKey: z.ZodOptional<z.ZodString>;
252
254
  url: z.ZodOptional<z.ZodString>;
@@ -272,6 +274,7 @@ export declare const WebToolsConfigSchema: z.ZodObject<{
272
274
  tavily: "tavily";
273
275
  bing: "bing";
274
276
  searxng: "searxng";
277
+ deepseek: "deepseek";
275
278
  }>;
276
279
  apiKey: z.ZodOptional<z.ZodString>;
277
280
  url: z.ZodOptional<z.ZodString>;
@@ -298,6 +301,7 @@ export declare const ToolsConfigSchema: z.ZodDefault<z.ZodObject<{
298
301
  tavily: "tavily";
299
302
  bing: "bing";
300
303
  searxng: "searxng";
304
+ deepseek: "deepseek";
301
305
  }>;
302
306
  apiKey: z.ZodOptional<z.ZodString>;
303
307
  url: z.ZodOptional<z.ZodString>;
@@ -552,6 +556,15 @@ export declare const GatewayWebchatConfigSchema: z.ZodDefault<z.ZodObject<{
552
556
  }>>;
553
557
  }, z.core.$strip>>;
554
558
  export declare const GatewayConfigSchema: z.ZodDefault<z.ZodObject<{
559
+ outboundProxy: z.ZodOptional<z.ZodObject<{
560
+ mode: z.ZodDefault<z.ZodEnum<{
561
+ custom: "custom";
562
+ environment: "environment";
563
+ direct: "direct";
564
+ }>>;
565
+ url: z.ZodDefault<z.ZodString>;
566
+ noProxy: z.ZodDefault<z.ZodString>;
567
+ }, z.core.$strict>>;
555
568
  bind: z.ZodOptional<z.ZodEnum<{
556
569
  custom: "custom";
557
570
  auto: "auto";
@@ -1191,14 +1204,14 @@ export declare const McpServerSchema: z.ZodObject<{
1191
1204
  timeout: z.ZodOptional<z.ZodNumber>;
1192
1205
  enabled: z.ZodOptional<z.ZodBoolean>;
1193
1206
  exposure: z.ZodOptional<z.ZodEnum<{
1194
- codemode: "codemode";
1195
1207
  direct: "direct";
1208
+ codemode: "codemode";
1196
1209
  deferred: "deferred";
1197
1210
  hidden: "hidden";
1198
1211
  }>>;
1199
1212
  toolExposure: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
1200
- codemode: "codemode";
1201
1213
  direct: "direct";
1214
+ codemode: "codemode";
1202
1215
  deferred: "deferred";
1203
1216
  hidden: "hidden";
1204
1217
  }>>>;
@@ -1256,14 +1269,14 @@ export declare const McpConfigSchema: z.ZodOptional<z.ZodObject<{
1256
1269
  timeout: z.ZodOptional<z.ZodNumber>;
1257
1270
  enabled: z.ZodOptional<z.ZodBoolean>;
1258
1271
  exposure: z.ZodOptional<z.ZodEnum<{
1259
- codemode: "codemode";
1260
1272
  direct: "direct";
1273
+ codemode: "codemode";
1261
1274
  deferred: "deferred";
1262
1275
  hidden: "hidden";
1263
1276
  }>>;
1264
1277
  toolExposure: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
1265
- codemode: "codemode";
1266
1278
  direct: "direct";
1279
+ codemode: "codemode";
1267
1280
  deferred: "deferred";
1268
1281
  hidden: "hidden";
1269
1282
  }>>>;
@@ -1507,6 +1520,15 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
1507
1520
  }, z.core.$strict>>;
1508
1521
  channels: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1509
1522
  gateway: z.ZodDefault<z.ZodObject<{
1523
+ outboundProxy: z.ZodOptional<z.ZodObject<{
1524
+ mode: z.ZodDefault<z.ZodEnum<{
1525
+ custom: "custom";
1526
+ environment: "environment";
1527
+ direct: "direct";
1528
+ }>>;
1529
+ url: z.ZodDefault<z.ZodString>;
1530
+ noProxy: z.ZodDefault<z.ZodString>;
1531
+ }, z.core.$strict>>;
1510
1532
  bind: z.ZodOptional<z.ZodEnum<{
1511
1533
  custom: "custom";
1512
1534
  auto: "auto";
@@ -1740,6 +1762,7 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
1740
1762
  tavily: "tavily";
1741
1763
  bing: "bing";
1742
1764
  searxng: "searxng";
1765
+ deepseek: "deepseek";
1743
1766
  }>;
1744
1767
  apiKey: z.ZodOptional<z.ZodString>;
1745
1768
  url: z.ZodOptional<z.ZodString>;
@@ -1903,14 +1926,14 @@ export declare const ConfigSchema: z.ZodDefault<z.ZodObject<{
1903
1926
  timeout: z.ZodOptional<z.ZodNumber>;
1904
1927
  enabled: z.ZodOptional<z.ZodBoolean>;
1905
1928
  exposure: z.ZodOptional<z.ZodEnum<{
1906
- codemode: "codemode";
1907
1929
  direct: "direct";
1930
+ codemode: "codemode";
1908
1931
  deferred: "deferred";
1909
1932
  hidden: "hidden";
1910
1933
  }>>;
1911
1934
  toolExposure: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodEnum<{
1912
- codemode: "codemode";
1913
1935
  direct: "direct";
1936
+ codemode: "codemode";
1914
1937
  deferred: "deferred";
1915
1938
  hidden: "hidden";
1916
1939
  }>>>;
@@ -1,14 +1,16 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
- import { DEFAULT_CONTEXT_COMPACTION_POLICY, UserContextConfigSchema, init_config } from "../user-context/config.js";
3
- import { getModelUsageOrigin, init_model_usage } from "../providers/model-usage.js";
4
2
  import { AgentModelsOverrideSchema, ImageGenerationRouteSchema, ModelRouteSchema } from "../agent-config/schema.js";
5
3
  import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
6
4
  import { init_agent_config } from "../agent-config/index.js";
7
5
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
6
+ import { DEFAULT_CONTEXT_COMPACTION_POLICY, UserContextConfigSchema, init_config } from "../user-context/config.js";
7
+ import { getModelUsageOrigin, init_model_usage } from "../providers/model-usage.js";
8
8
  import { TracingConfigSchema, init_config as init_config$1 } from "../observability/config.js";
9
+ import { OutboundProxySchema, init_outbound_proxy } from "./outbound-proxy.js";
9
10
  import { ComputerConfigSchema, init_config as init_config$2 } from "../computer/config.js";
10
11
  import { init_public_url, validatePublicUrl } from "./public-url.js";
11
12
  import { PlatformConfigSchema, init_contracts } from "../platform/contracts.js";
13
+ import { deepseekSearchEndpoint, init_deepseek_protocol } from "../agent/tools/search/providers/deepseek-protocol.js";
12
14
  import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, init_config_schema } from "../../extensions/telegram/src/config-schema.js";
13
15
  import { WeixinAccountConfigSchema, WeixinConfigSchema, init_config_schema as init_config_schema$1 } from "../../extensions/weixin/src/config-schema.js";
14
16
  import { z } from "zod";
@@ -52,12 +54,14 @@ var AgentModelRefSchema, AgentImageGenerationModelSchema, AgentModelsSchema, Bro
52
54
  var init_schema = __esmMin((() => {
53
55
  init_model_usage();
54
56
  init_config$1();
57
+ init_outbound_proxy();
55
58
  init_config$2();
56
59
  init_agent_config();
57
60
  init_repository();
58
61
  init_config();
59
62
  init_public_url();
60
63
  init_contracts();
64
+ init_deepseek_protocol();
61
65
  init_config_schema();
62
66
  init_config_schema$1();
63
67
  AgentModelRefSchema = ModelRouteSchema;
@@ -202,12 +206,24 @@ var init_schema = __esmMin((() => {
202
206
  "brave",
203
207
  "tavily",
204
208
  "bing",
205
- "searxng"
209
+ "searxng",
210
+ "deepseek"
206
211
  ]),
207
212
  apiKey: z.string().optional(),
208
- /** SearXNG instance base URL (e.g. http://localhost:8080) */
213
+ /** SearXNG instance URL or optional DeepSeek HTTPS API base URL. */
209
214
  url: z.string().optional(),
210
215
  disabled: z.boolean().optional()
216
+ }).superRefine((entry, context) => {
217
+ if (entry.type !== "deepseek" || !entry.url) return;
218
+ try {
219
+ deepseekSearchEndpoint(entry.url);
220
+ } catch {
221
+ context.addIssue({
222
+ code: "custom",
223
+ path: ["url"],
224
+ message: "Invalid DeepSeek API base URL"
225
+ });
226
+ }
211
227
  });
212
228
  WebSearchConfigSchema = z.object({
213
229
  maxResults: z.number().default(5),
@@ -441,6 +457,7 @@ activityDetailDefault: z.enum([
441
457
  "stream"
442
458
  ]).default("on") }).default({ activityDetailDefault: "on" });
443
459
  GatewayConfigSchema = z.object({
460
+ outboundProxy: OutboundProxySchema.optional(),
444
461
  /** Semantic bind mode. */
445
462
  bind: GatewayBindModeSchema.optional(),
446
463
  /** IPv4 listen address when `bind` is `custom`. */
@@ -2,8 +2,8 @@ import { dirname, isAbsolute, join, relative, resolve } from "node:path";
2
2
  import { existsSync, lstatSync, readFileSync, readdirSync, realpathSync, statSync } from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
4
  import { z } from "zod";
5
- import { validateHeaderName, validateHeaderValue } from "node:http";
6
5
  import yaml from "js-yaml";
6
+ import { validateHeaderName, validateHeaderValue } from "node:http";
7
7
  //#region src/extensions/agent-plugins/validation.ts
8
8
  const PLUGIN_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json";
9
9
  const MCP_SCHEMA = "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json";
@@ -1,10 +1,10 @@
1
1
  import { normalizeAgentId, validateAgentIdForNewAgent } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope, listAgentEntries, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath } from "../agent/agent-scope.js";
4
- import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
5
4
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
6
- import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
7
5
  import { AgentCatalogService } from "../agent-catalog/service.js";
6
+ import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
7
+ import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
8
8
  import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
9
9
  import { resolve } from "node:path";
10
10
  import { mkdir, readFile, realpath, stat, unlink, writeFile } from "node:fs/promises";
@@ -1,5 +1,7 @@
1
+ import { deepseekSearchEndpoint, init_deepseek_protocol } from "../agent/tools/search/providers/deepseek-protocol.js";
1
2
  import { isMaskedSecretPatchValue, maskSecretLength } from "./hono/lib/mask-secret-length.js";
2
3
  //#region src/gateway/config-tools-web.ts
4
+ init_deepseek_protocol();
3
5
  function isMaskedApiKey(v) {
4
6
  return typeof v === "string" && isMaskedSecretPatchValue(v);
5
7
  }
@@ -76,13 +78,22 @@ function applyToolsWebPatch(config, body) {
76
78
  if (!rawRow || typeof rawRow !== "object") return "Invalid search provider entry";
77
79
  const row = rawRow;
78
80
  const type = row.type;
79
- if (type !== "brave" && type !== "tavily" && type !== "bing" && type !== "searxng") return `Invalid search provider type: ${String(type)}`;
80
- const prev = prevProviders?.[i];
81
+ if (type !== "brave" && type !== "tavily" && type !== "bing" && type !== "searxng" && type !== "deepseek") return `Invalid search provider type: ${String(type)}`;
82
+ const previousOfType = prevProviders?.filter((entry) => entry.type === type) ?? [];
83
+ const prev = previousOfType.length === 1 ? previousOfType[0] : prevProviders?.[i]?.type === type ? prevProviders[i] : void 0;
81
84
  let apiKey = typeof row.apiKey === "string" ? row.apiKey : "";
82
- if (isMaskedApiKey(apiKey) && prev?.apiKey) apiKey = prev.apiKey;
85
+ if (isMaskedApiKey(apiKey)) {
86
+ if (!prev?.apiKey) return "Cannot preserve an API key after changing provider type";
87
+ apiKey = prev.apiKey;
88
+ }
83
89
  const urlRaw = typeof row.url === "string" ? row.url.trim().replace(/\/+$/, "") : "";
84
90
  const entry = { type };
85
- if (type === "searxng") {
91
+ if (type === "deepseek" && urlRaw) try {
92
+ deepseekSearchEndpoint(urlRaw);
93
+ } catch {
94
+ return "Invalid DeepSeek API base URL";
95
+ }
96
+ if (type === "searxng" || type === "deepseek") {
86
97
  if (urlRaw) entry.url = urlRaw;
87
98
  if (apiKey) entry.apiKey = apiKey;
88
99
  } else if (apiKey) entry.apiKey = apiKey;
@@ -3,6 +3,9 @@ import type { EndpointToolRuntime } from '../endpoint-tools/index.js';
3
3
  import type { MessageBus } from '../infra/bus/index.js';
4
4
  import type { SessionStore } from '../session/store.js';
5
5
  export interface GatewayWorkflowAgentSurface {
6
+ getWorkspaceTrust?(workspacePath: string): {
7
+ trusted: boolean;
8
+ };
6
9
  getModelForSession(conversationId: string): string;
7
10
  getWorkflowSkillInstructions(agentId: string, names: readonly string[]): string | undefined;
8
11
  }
@@ -165,6 +165,11 @@ export declare function buildSafeWebConfigPayload(service: GatewayService, optio
165
165
  /** Masked `cfg.providers` for capability keys (image / STT / etc.). */
166
166
  providersConfig: Record<string, import("./safe-providers-config.js").SafeProviderAuthEntry>;
167
167
  gateway: {
168
+ outboundProxy: {
169
+ mode: "custom" | "environment" | "direct";
170
+ url: string;
171
+ noProxy: string;
172
+ };
168
173
  bind: "custom" | "auto" | "loopback" | "lan" | "tailnet";
169
174
  customBindHost: string;
170
175
  port: number;
@@ -1,7 +1,7 @@
1
- import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
2
1
  import { normalizeAgentId } from "../../../agent-catalog/id.js";
3
2
  import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
4
3
  import { init_agent_scope, listAgentEntries, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
4
+ import { ContextPlanningConfigSchema, KnowledgeMemoryConfigSchema, UserModelConfigSchema, init_config } from "../../../user-context/config.js";
5
5
  import { resolveModelsJsonPath } from "../../../config/paths.js";
6
6
  import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
7
7
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
@@ -99,6 +99,11 @@ async function buildSafeWebConfigPayload(service, options = {}) {
99
99
  /** Masked `cfg.providers` for capability keys (image / STT / etc.). */
100
100
  providersConfig: buildSafeProvidersConfigForWeb(config.providers),
101
101
  gateway: {
102
+ outboundProxy: config.gateway?.outboundProxy ?? {
103
+ mode: "environment",
104
+ url: "",
105
+ noProxy: ""
106
+ },
102
107
  bind: config.gateway?.bind ?? "loopback",
103
108
  customBindHost: config.gateway?.customBindHost,
104
109
  port: config.gateway?.port,
@@ -1,3 +1,4 @@
1
+ import { OutboundProxySchema, init_outbound_proxy } from "../../../../config/outbound-proxy.js";
1
2
  import { init_public_url, validatePublicUrl } from "../../../../config/public-url.js";
2
3
  import { isValidIPv4 } from "../../../../config/gateway-bind.js";
3
4
  import { mergeShareConfigPatch } from "../../../../share/share-config.js";
@@ -5,6 +6,7 @@ import { mergeSiteShareConfigPatch } from "../../../../share/site-share-config.j
5
6
  import { isMaskedSecretPatchValue } from "../../lib/mask-secret-length.js";
6
7
  import { PATCH_OK, patchError } from "./result.js";
7
8
  //#region src/gateway/hono/routes/config-patch/gateway.ts
9
+ init_outbound_proxy();
8
10
  init_public_url();
9
11
  /**
10
12
  * Shared default for "user PATCH'd a gateway subsection but `config.gateway`
@@ -26,6 +28,11 @@ function parseDeferIdList(raw) {
26
28
  return ids;
27
29
  }
28
30
  function applyGatewayPatch(config, body) {
31
+ if (body.gateway?.outboundProxy !== void 0) {
32
+ const parsed = OutboundProxySchema.safeParse(body.gateway.outboundProxy);
33
+ if (!parsed.success) return patchError("Invalid outbound proxy: use an HTTP(S) origin without credentials, with environment/custom/direct mode");
34
+ ensureGateway(config).outboundProxy = parsed.data;
35
+ }
29
36
  if (body.gateway?.webchat?.activityDetailDefault !== void 0) {
30
37
  const level = body.gateway.webchat.activityDetailDefault;
31
38
  if (level !== "off" && level !== "on" && level !== "stream") return patchError("gateway.webchat.activityDetailDefault must be off, on, or stream");
@@ -1,10 +1,10 @@
1
- import { ContextPlanningConfigSchema, HomeIntelligenceConfigSchema, KnowledgeMemoryConfigSchema, UserContextConfigSchema, UserModelConfigSchema, init_config } from "../../../../user-context/config.js";
2
1
  import { BindingsSchema, init_binding_schema } from "../../../../routing/binding-schema.js";
2
+ import { AgentCatalogService } from "../../../../agent-catalog/service.js";
3
+ import { ContextPlanningConfigSchema, HomeIntelligenceConfigSchema, KnowledgeMemoryConfigSchema, UserContextConfigSchema, UserModelConfigSchema, init_config } from "../../../../user-context/config.js";
3
4
  import { ComputerConfigSchema, init_config as init_config$1 } from "../../../../computer/config.js";
4
5
  import { BrowserConfigSchema, McpConfigSchema, VoiceConfigSchema, init_schema } from "../../../../config/schema.js";
5
6
  import { CredentialResolver, init_credentials } from "../../../../auth/credentials.js";
6
7
  import { canonicalizeConfiguredMcpServer } from "../../../../config/mcp-config-normalize.js";
7
- import { AgentCatalogService } from "../../../../agent-catalog/service.js";
8
8
  import { mergeGatewaySkillsMarketplacePatch, mergeSessionConfigPatch, mergeUpdateConfigPatch } from "../../../../config/web-patch.js";
9
9
  import { assertGatewayAuthConfigured, resolveGatewayAuth } from "../../../auth.js";
10
10
  import { isMaskedSecretPatchValue } from "../../lib/mask-secret-length.js";
@@ -6,9 +6,9 @@ import { getConnectorAccount, init_connector_account_repository, listConnectorAc
6
6
  import { decideConnectorApproval, getConnectorApproval, listConnectorApprovals, listConnectorConnections } from "../../../storage/sqlite/connector-repository.js";
7
7
  import { getConnectorSyncPolicy, upsertConnectorSyncPolicy } from "../../../storage/sqlite/connector-sync-policy-repository.js";
8
8
  import { init_sqlite } from "../../../storage/sqlite/index.js";
9
- import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
10
9
  import { AgentCatalogRepository, init_repository } from "../../../agent-catalog/repository.js";
11
10
  import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
11
+ import { listUnderstandingSourceGrants, revokeUnderstandingSourceGrant } from "../../../user-context/sources/repository.js";
12
12
  import { activateComposioBackend, addComposioBackend, ensureComposioBackend, getComposioBackend, listComposioBackends, removeComposioBackend } from "../../../connectors/composio-backends.js";
13
13
  import { getAuthorizationAttempt } from "../../../connectors/authorization-attempts.js";
14
14
  import { ComposioSessionsAdapter, resolveComposioApiKey } from "../../../connectors/composio-sessions.js";
@@ -2,9 +2,9 @@ import { getSqliteDatabase, init_transaction } from "../../../storage/sqlite/tra
2
2
  import { getConnectorAccount } from "../../../storage/sqlite/connector-account-repository.js";
3
3
  import { countKnowledgeSourceItems, deleteKnowledgeSourceItems } from "../../../storage/sqlite/knowledge-repository.js";
4
4
  import { init_sqlite } from "../../../storage/sqlite/index.js";
5
+ import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
5
6
  import { getActiveUnderstandingConsent } from "../../../user-context/sources/consent-repository.js";
6
7
  import { getUnderstandingSourceGrant, listUnderstandingSourceGrants, listUnderstandingSourceRuns, revokeUnderstandingSourceGrant, updateUnderstandingSourceGrantPolicies } from "../../../user-context/sources/repository.js";
7
- import { init_agent_scope, resolveDefaultAgentId } from "../../../agent/agent-scope.js";
8
8
  import { listUserModelObservations } from "../../../user-model/observation-repository.js";
9
9
  import "../../../user-model/index.js";
10
10
  import { listConnectedContentCandidates, readConnectedContent } from "../../../connectors/content-enrichment.js";
@@ -3,12 +3,12 @@ import { init_model_usage, withModelUsageOrigin } from "../../../providers/model
3
3
  import { resolveEffectiveAgentConfigForAgent } from "../../../config/agent-profile.js";
4
4
  import { init_resolve_config_value, testApiKeyResolution } from "../../../config/resolve-config-value.js";
5
5
  import { resolveModelsJsonPath } from "../../../config/paths.js";
6
+ import "../../../providers/constants.js";
6
7
  import { computerModelProfile, init_model_policy, isDedicatedComputerModel } from "../../../computer/model-policy.js";
7
8
  import { init_models_json, loadModelsJson, saveModelsJson, validateModelsConfig } from "../../../config/models-json.js";
8
9
  import { getModelCatalogStore, init_model_catalog_store } from "../../../providers/model-catalog-store.js";
9
10
  import { getModelRegistry } from "../../../providers/model-registry.js";
10
11
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
11
- import "../../../providers/constants.js";
12
12
  import { getProviderRegistry, init_plugin_registry } from "../../../providers/plugin-registry.js";
13
13
  import { PROVIDER_META, getAllModels, getAllProviders, getAvailableModels, getProviderAuthState, init_providers, isProviderConfigured, isProviderConfiguredSync } from "../../../providers/index.js";
14
14
  import { XopcCloudAccountError, XopcCloudAccountService } from "../../../providers/xopc-cloud-account-service.js";
@@ -324,7 +324,10 @@ function registerModelsRoutes(authenticated, deps) {
324
324
  name: m.name,
325
325
  ...catalogDisplayNames(m.provider, m.id),
326
326
  provider: m.provider,
327
- ...computerModelProfile(m) ? { computerUse: { profile: computerModelProfile(m) } } : {},
327
+ ...computerModelProfile(m) ? { computerUse: {
328
+ profile: computerModelProfile(m),
329
+ dedicated: isDedicatedComputerModel(m)
330
+ } } : {},
328
331
  contextWindow: m.contextWindow ?? 128e3,
329
332
  maxTokens: m.maxTokens ?? 4096,
330
333
  reasoning: m.reasoning ?? false,
@@ -1,9 +1,9 @@
1
1
  import { NoteDeleteOutputSchema, NoteGetOutputSchema, ProductReadContracts } from "../../../../packages/gateway-contract/src/capabilities.js";
2
2
  import { init_src } from "../../../../packages/gateway-contract/src/index.js";
3
- import { init_session_key, resolveConversationId } from "../../../routing/session-key.js";
4
- import { agentExists, getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-route.js";
5
3
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
6
4
  import "../../../capabilities/runtime/dispatcher.js";
5
+ import { init_session_key, resolveConversationId } from "../../../routing/session-key.js";
6
+ import { agentExists, getDefaultAgentId, init_resolve_route } from "../../../routing/resolve-route.js";
7
7
  import { resolveGatewayEffectiveHost } from "../../../config/gateway-bind.js";
8
8
  import { getShareStore } from "../../../share/share-store.js";
9
9
  import { resolveShareUrl } from "../../../share/share-url.js";
@@ -7,12 +7,12 @@ import { loadTranscriptRowsForSession } from "../../../storage/sqlite/transcript
7
7
  import { init_sqlite } from "../../../storage/sqlite/index.js";
8
8
  import { ActivityService } from "../../../activity/service.js";
9
9
  import "../../../activity/index.js";
10
+ import { CapabilityError } from "../../../capabilities/runtime/errors.js";
11
+ import "../../../capabilities/runtime/dispatcher.js";
10
12
  import { listKnowledgeItems, writeKnowledgeItem } from "../../../knowledge-memory/repository.js";
11
13
  import "../../../knowledge-memory/index.js";
12
14
  import { resolveEffectiveAgentProfile } from "../../../config/agent-profile.js";
13
15
  import { TaskReadModelProjector } from "../../../tasks/task-read-model-projector.js";
14
- import { CapabilityError } from "../../../capabilities/runtime/errors.js";
15
- import "../../../capabilities/runtime/dispatcher.js";
16
16
  import { ProjectWorkspaceConflictError, ProjectWorkspaceMissingError } from "../../../projects/workspace-project.js";
17
17
  import { inferProjectExecutionMode, inferProjectKind } from "../../../projects/project-kind.js";
18
18
  import { ProjectDeletionBlockedError, ProjectWorkspaceInUseError } from "../../../projects/project-service.js";
@@ -5,9 +5,9 @@ import { endpointContextSchema } from "../../../../packages/gateway-contract/src
5
5
  import { parseUserTurnDocument, userTurnDocumentRefIds } from "../../../../packages/gateway-contract/src/user-turn-document.js";
6
6
  import { init_src } from "../../../../packages/gateway-contract/src/index.js";
7
7
  import { endpointTurnClaimSchema, init_src as init_src$1 } from "../../../../packages/endpoint-tools-protocol/src/index.js";
8
- import { init_providers, resolveModel } from "../../../providers/index.js";
9
8
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
10
9
  import "../../../capabilities/runtime/dispatcher.js";
10
+ import { init_providers, resolveModel } from "../../../providers/index.js";
11
11
  import { getModelThinking } from "../../../providers/model-thinking.js";
12
12
  import { parseTurnContextRefs } from "../../../agent/source-context/types.js";
13
13
  import { validateWebchatAttachments, validateWebchatContent } from "../../chat-limits.js";
@@ -6,9 +6,9 @@ import { hasGatewayScope, init_gateway_scopes } from "../../security/gateway-sco
6
6
  import { enqueueTaskChangedEvent, init_task_change_events } from "../../../tasks/task-change-events.js";
7
7
  import { TaskRepository, init_task_repository } from "../../../tasks/task-repository.js";
8
8
  import { TaskRunRepository, init_task_run_repository } from "../../../tasks/task-run-repository.js";
9
- import { TaskConversationRepository } from "../../../tasks/task-conversation-repository.js";
10
9
  import { CapabilityError } from "../../../capabilities/runtime/errors.js";
11
10
  import "../../../capabilities/runtime/dispatcher.js";
11
+ import { TaskConversationRepository } from "../../../tasks/task-conversation-repository.js";
12
12
  import { TaskCollaborationRepository } from "../../../tasks/task-collaboration-repository.js";
13
13
  import { TaskCriterionReviewRepository } from "../../../tasks/task-criterion-review-repository.js";
14
14
  import { TaskContextMutationOutputSchema } from "../../../tasks/capabilities/relations.js";
@@ -1,11 +1,11 @@
1
1
  import { normalizeAgentId } from "../agent-catalog/id.js";
2
2
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
3
3
  import { init_agent_scope } from "../agent/agent-scope.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
4
5
  import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
5
6
  import { ConfigSchema, init_schema } from "../config/schema.js";
6
7
  import { fetchWithTimeoutGuarded } from "../media-shared/http/provider-http.js";
7
8
  import "../media-shared/http/index.js";
8
- import { AgentCatalogService } from "../agent-catalog/service.js";
9
9
  import { getImageGenerationProvider, listImageGenerationProvidersSummary } from "../agent/image/generation/provider-registry.js";
10
10
  //#region src/gateway/image-generation-setup.ts
11
11
  init_repository();
@@ -1,8 +1,8 @@
1
1
  import path from "node:path";
2
2
  import fs from "node:fs";
3
3
  import { createHash } from "node:crypto";
4
- import net from "node:net";
5
4
  import fs$1 from "node:fs/promises";
5
+ import net from "node:net";
6
6
  import { homedir } from "os";
7
7
  //#region src/gateway/lock.ts
8
8
  /**
@@ -161,6 +161,11 @@ export declare class GatewayConfigCoordinator {
161
161
  };
162
162
  channels: Record<string, unknown>;
163
163
  gateway: {
164
+ outboundProxy?: {
165
+ mode: "custom" | "environment" | "direct";
166
+ url: string;
167
+ noProxy: string;
168
+ };
164
169
  bind?: "custom" | "auto" | "loopback" | "lan" | "tailnet";
165
170
  customBindHost?: string;
166
171
  port?: number;
@@ -324,7 +329,7 @@ export declare class GatewayConfigCoordinator {
324
329
  search?: {
325
330
  maxResults: number;
326
331
  providers: {
327
- type: "brave" | "tavily" | "bing" | "searxng";
332
+ type: "brave" | "tavily" | "bing" | "searxng" | "deepseek";
328
333
  apiKey?: string;
329
334
  url?: string;
330
335
  disabled?: boolean;
@@ -536,8 +541,8 @@ export declare class GatewayConfigCoordinator {
536
541
  };
537
542
  timeout?: number;
538
543
  enabled?: boolean;
539
- exposure?: "codemode" | "direct" | "deferred" | "hidden";
540
- toolExposure?: Record<string, "codemode" | "direct" | "deferred" | "hidden">;
544
+ exposure?: "direct" | "codemode" | "deferred" | "hidden";
545
+ toolExposure?: Record<string, "direct" | "codemode" | "deferred" | "hidden">;
541
546
  description?: string;
542
547
  transport?: never;
543
548
  workingDirectory?: never;
@@ -20,13 +20,13 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
20
20
  import { init_session_repository, listSessionMetadata, patchSessionMetadata } from "../storage/sqlite/session-repository.js";
21
21
  import { getSessionConfig, init_config_repository } from "../storage/sqlite/config-repository.js";
22
22
  import { init_sqlite } from "../storage/sqlite/index.js";
23
+ import { normalizeAgentId } from "../agent-catalog/id.js";
24
+ import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
23
25
  import { listKnowledgeItems } from "../knowledge-memory/repository.js";
24
26
  import { init_config, resolveKnowledgeReadPolicy } from "../user-context/config.js";
25
27
  import { init_agent_session_key, resolveAgentMainConversationId } from "../routing/agent-session-key.js";
26
28
  import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
27
29
  import "../knowledge-memory/index.js";
28
- import { normalizeAgentId } from "../agent-catalog/id.js";
29
- import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
30
30
  import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
31
31
  import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
32
32
  import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
@@ -84,9 +84,10 @@ import { bootstrapApplicationStateSync } from "../bootstrap/application-state.js
84
84
  import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
85
85
  import { registerClarificationChannelRuntime } from "./clarify-runtime.js";
86
86
  import { ChannelManager } from "../channels/manager.js";
87
+ import { configureGatewayHttpProxy } from "../infra/http-proxy-env.js";
88
+ import "../config/index.js";
87
89
  import { ChatPreviewService } from "../chat-previews/service.js";
88
90
  import "../chat-previews/index.js";
89
- import "../config/index.js";
90
91
  import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
91
92
  import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
92
93
  import "../knowledge/index.js";
@@ -384,6 +385,7 @@ var GatewayService = class {
384
385
  markStaleAiUsageEventsUnknown(now - 360 * 60 * 1e3, now);
385
386
  pruneAiUsageEvents(now - AI_USAGE_RETENTION_MS);
386
387
  this.config = loadConfig(this.configPath);
388
+ configureGatewayHttpProxy(this.config.gateway.outboundProxy);
387
389
  let bootstrapConfigChanged = initializeVoiceDefaults(this.config, inferProductLanguageFromEnvironment());
388
390
  if (sanitizeTunnelConfig(this.config)) bootstrapConfigChanged = true;
389
391
  if (bootstrapConfigChanged) saveConfig(this.config, this.configPath).catch((err) => {
@@ -1,10 +1,10 @@
1
1
  import "../agent-config/schema.js";
2
2
  import { init_agent_config } from "../agent-config/index.js";
3
3
  import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
4
+ import { AgentCatalogService } from "../agent-catalog/service.js";
4
5
  import { ConfigSchema, init_schema } from "../config/schema.js";
5
6
  import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
6
7
  import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
7
- import { AgentCatalogService } from "../agent-catalog/service.js";
8
8
  import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
9
9
  //#region src/gateway/xopc-cloud-capability-setup.ts
10
10
  init_schema();
@@ -1,4 +1,7 @@
1
+ import type { OutboundProxyConfig } from '../config/outbound-proxy.js';
1
2
  type ProxyEnv = Record<string, string | undefined>;
2
3
  export declare function hasProxyEnv(env?: ProxyEnv): boolean;
3
4
  export declare function installGlobalProxyDispatcherFromEnv(env?: ProxyEnv): boolean;
5
+ /** Applied once at Gateway startup; saved changes require a process restart. */
6
+ export declare function configureGatewayHttpProxy(config?: OutboundProxyConfig, env?: ProxyEnv): void;
4
7
  export {};
@@ -1,4 +1,4 @@
1
- import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
1
+ import { Agent, EnvHttpProxyAgent, setGlobalDispatcher } from "undici";
2
2
  //#region src/infra/http-proxy-env.ts
3
3
  const PROXY_ENV_KEYS = [
4
4
  "http_proxy",
@@ -17,5 +17,25 @@ function installGlobalProxyDispatcherFromEnv(env = process.env) {
17
17
  return true;
18
18
  }
19
19
  installGlobalProxyDispatcherFromEnv();
20
+ /** Applied once at Gateway startup; saved changes require a process restart. */
21
+ function configureGatewayHttpProxy(config, env = process.env) {
22
+ if (config?.mode === "direct") {
23
+ setGlobalDispatcher(new Agent());
24
+ return;
25
+ }
26
+ const httpProxy = config?.mode === "custom" ? config.url : env.http_proxy ?? env.HTTP_PROXY ?? "";
27
+ const httpsProxy = config?.mode === "custom" ? config.url : env.https_proxy ?? env.HTTPS_PROXY ?? httpProxy;
28
+ const bypass = [config?.mode === "custom" ? "" : env.no_proxy ?? env.NO_PROXY ?? "", config?.noProxy ?? ""];
29
+ setGlobalDispatcher(new EnvHttpProxyAgent({
30
+ httpProxy,
31
+ httpsProxy,
32
+ noProxy: bypass.some((value) => value.split(/[,\s]+/).includes("*")) ? "*" : [
33
+ "localhost",
34
+ "127.0.0.1",
35
+ "::1",
36
+ ...bypass
37
+ ].filter(Boolean).join(",")
38
+ }));
39
+ }
20
40
  //#endregion
21
- export { hasProxyEnv, installGlobalProxyDispatcherFromEnv };
41
+ export { configureGatewayHttpProxy, hasProxyEnv, installGlobalProxyDispatcherFromEnv };
@@ -5,10 +5,10 @@ import { currentOperationId, init_operation_context } from "../infra/operation-c
5
5
  import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
6
6
  import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
7
7
  import { init_src } from "../../packages/gateway-contract/src/index.js";
8
+ import { CapabilityError } from "../capabilities/runtime/errors.js";
8
9
  import { init_paths, resolveExtensionsDir } from "../config/paths.js";
9
10
  import { slugifyProjectName } from "../projects/project-store.js";
10
11
  import { LocalAppStore } from "./store.js";
11
- import { CapabilityError } from "../capabilities/runtime/errors.js";
12
12
  import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
13
13
  import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
14
14
  import { buildLocalAppFixGuidance } from "./fix-guidance.js";