@xopcai/xopc 0.0.230 → 0.0.232

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 (384) hide show
  1. package/README.md +1 -0
  2. package/README.zh-CN.md +1 -0
  3. package/dist/browser-ext/manifest.json +1 -1
  4. package/dist/extensions/feishu/src/schema/config-schema.d.ts +3 -3
  5. package/dist/extensions/telegram/src/config-schema.d.ts +4 -4
  6. package/dist/extensions/telegram/xopc.extension.json +1 -1
  7. package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
  8. package/dist/gateway/static/root/assets/{activity-store-M0nAY5XB.js → activity-store-VXCWz43N.js} +1 -1
  9. package/dist/gateway/static/root/assets/agent-avatar-dicebear-BXRaZYW8.js +1 -0
  10. package/dist/gateway/static/root/assets/agent-defaults-settings-panel-dR7HMaRX.js +1 -0
  11. package/dist/gateway/static/root/assets/agents-Bileycwe.js +1 -0
  12. package/dist/gateway/static/root/assets/api-wGPgL8xY.js +1 -0
  13. package/dist/gateway/static/root/assets/{app-management-settings-panel-CwAPK4Jm.js → app-management-settings-panel-BJfClfPx.js} +1 -1
  14. package/dist/gateway/static/root/assets/{appearance-settings-DsGLvqTb.js → appearance-settings-C_R0vUAu.js} +1 -1
  15. package/dist/gateway/static/root/assets/{apps-page-Ee9qOQEx.js → apps-page-CBow8pBI.js} +1 -1
  16. package/dist/gateway/static/root/assets/{archive-plugin-7_DXaMTP.js → archive-plugin-DnFHkSHE.js} +1 -1
  17. package/dist/gateway/static/root/assets/{attachment-load-B4qqigAQ.js → attachment-load-DZrEwytM.js} +1 -1
  18. package/dist/gateway/static/root/assets/{automations-page-B8ImehSW.js → automations-page-DpkKajui.js} +1 -1
  19. package/dist/gateway/static/root/assets/automations-workspace-BBntVWgv.js +6 -0
  20. package/dist/gateway/static/root/assets/{binary-plugins-DaJbyYc2.js → binary-plugins-Ckc_Csue.js} +1 -1
  21. package/dist/gateway/static/root/assets/{block-editor-Kl25XWJc.js → block-editor-DAC6w-iV.js} +4 -4
  22. package/dist/gateway/static/root/assets/browser-settings-page-DrsMd-Po.js +8 -0
  23. package/dist/gateway/static/root/assets/browser-workflow-inputs-BGd7R8GO.js +1 -0
  24. package/dist/gateway/static/root/assets/{browser-workflows-page-DjMxs33B.js → browser-workflows-page-DUfj7ntM.js} +2 -2
  25. package/dist/gateway/static/root/assets/capabilities-settings-panel-97gkGeSV.js +7 -0
  26. package/dist/gateway/static/root/assets/channels-settings-CuBsz8UI.js +1 -0
  27. package/dist/gateway/static/root/assets/{channel-recipient-api-C5ABr73b.js → channels-status-swr-CfboECLt.js} +1 -1
  28. package/dist/gateway/static/root/assets/{chat-terminal-dock-BiU_4Rq6.js → chat-terminal-dock-CA9fndbZ.js} +2 -2
  29. package/dist/gateway/static/root/assets/cloud-C4-yfnnk.js +1 -0
  30. package/dist/gateway/static/root/assets/{code-editor-dFzqyDXS.js → code-editor-D4_k-6QN.js} +1 -1
  31. package/dist/gateway/static/root/assets/connectors-page-SuL7td7Z.js +2 -0
  32. package/dist/gateway/static/root/assets/cron-expression-CqPu7HYJ.js +2 -0
  33. package/dist/gateway/static/root/assets/date-picker-C8dJsCgk.js +1 -0
  34. package/dist/gateway/static/root/assets/dependency-picker-Iz2wYimy.js +1 -0
  35. package/dist/gateway/static/root/assets/{desktop-pet-ux9DxchT.js → desktop-pet-C3h40FmG.js} +1 -1
  36. package/dist/gateway/static/root/assets/{desktop-pet-settings-BVVCBgYK.js → desktop-pet-settings-YfeVVzLe.js} +1 -1
  37. package/dist/gateway/static/root/assets/dist-DqPZM2MH2.js +1 -0
  38. package/dist/gateway/static/root/assets/{extension-debug-page-Dh6DDuvQ.js → extension-debug-page-CChgztz_.js} +1 -1
  39. package/dist/gateway/static/root/assets/{extension-page-8OKQDEat.js → extension-page-DF6ct6_y.js} +1 -1
  40. package/dist/gateway/static/root/assets/extension-settings-page-jgBsjn0F.js +1 -0
  41. package/dist/gateway/static/root/assets/files-Dp8_uGTO.js +1 -0
  42. package/dist/gateway/static/root/assets/{gateway-config-api-Dlc6eaTG.js → gateway-config-api-CVajuIGL.js} +1 -1
  43. package/dist/gateway/static/root/assets/gateway-config-swr-BGQn8duh.js +1 -0
  44. package/dist/gateway/static/root/assets/{gateway-settings-DqQgiAUv.js → gateway-settings-BbssNGid.js} +1 -1
  45. package/dist/gateway/static/root/assets/{gateway-startup-retry-B_zrtccP.js → gateway-startup-retry-D2Rnh9fX.js} +1 -1
  46. package/dist/gateway/static/root/assets/heartbeat-settings-CJtXu8iD.js +1 -0
  47. package/dist/gateway/static/root/assets/home-page-Be1o1AXQ.js +1 -0
  48. package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +1 -0
  49. package/dist/gateway/static/root/assets/{image-generation-api-YKP2me5Z.js → image-generation-api-D7W2p5_8.js} +1 -1
  50. package/dist/gateway/static/root/assets/index-B2OJSXX9.js +70 -0
  51. package/dist/gateway/static/root/assets/index-rHjAElxG.css +2 -0
  52. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BSFNqxzY.js → keyboard-shortcuts-settings-BvHYyNus.js} +1 -1
  53. package/dist/gateway/static/root/assets/local-app-workbench-page-COfelgk7.js +2 -0
  54. package/dist/gateway/static/root/assets/{local-apps-page-DzU6yZ9-.js → local-apps-page-Cb8t2wWM.js} +1 -1
  55. package/dist/gateway/static/root/assets/locale-store-DLwVxS3V.js +1 -0
  56. package/dist/gateway/static/root/assets/logs-page-DA8oDjeB.js +2 -0
  57. package/dist/gateway/static/root/assets/management-settings-B8Jie4-J.js +1 -0
  58. package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +2 -0
  59. package/dist/gateway/static/root/assets/markdown-split-BD1r4o2i.js +1 -0
  60. package/dist/gateway/static/root/assets/{markdown-view-DvM5PWEH.js → markdown-view-B-BHEcNd.js} +1 -1
  61. package/dist/gateway/static/root/assets/markdown-view-B1bGSQqt.css +1 -0
  62. package/dist/gateway/static/root/assets/{media-plugins-B8vMe5VX.js → media-plugins-BCev8fkW.js} +1 -1
  63. package/dist/gateway/static/root/assets/messages-Dp1OxSKt.js +3 -0
  64. package/dist/gateway/static/root/assets/mobile-device-api-DACoHhhk.js +1 -0
  65. package/dist/gateway/static/root/assets/models-hub-cache-C8zjqmIv.js +1 -0
  66. package/dist/gateway/static/root/assets/{notes-api-BFsOGYkd.js → notes-api-DEdNKw0I.js} +1 -1
  67. package/dist/gateway/static/root/assets/{notes-page-B-YZ7iuK.js → notes-page-BBTLjJwa.js} +1 -1
  68. package/dist/gateway/static/root/assets/notes-workbench-DICgUGPv.js +4 -0
  69. package/dist/gateway/static/root/assets/oauth-api-BNCO2YK5.js +1 -0
  70. package/dist/gateway/static/root/assets/popover-select-3E24E65N.js +1 -0
  71. package/dist/gateway/static/root/assets/{product-open-page-DkWcyki5.js → product-open-page-fEBbRekH.js} +1 -1
  72. package/dist/gateway/static/root/assets/project-detail-page-CqdkznYJ.js +1 -0
  73. package/dist/gateway/static/root/assets/projects-page-dHDXpMCg.js +1 -0
  74. package/dist/gateway/static/root/assets/{registry-api-BFZrVYfy.js → registry-api-Cvr4Qm7N.js} +1 -1
  75. package/dist/gateway/static/root/assets/remote-access-hub-2feZudJw.js +1 -0
  76. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Bq_ETeal.js → runtime-tools-settings-panel-BT5B74IH.js} +2 -2
  77. package/dist/gateway/static/root/assets/{schema-form-BogTlrsP.js → schema-form-C4tB34S5.js} +1 -1
  78. package/dist/gateway/static/root/assets/sessions-page-CO2JCFdy.js +1 -0
  79. package/dist/gateway/static/root/assets/settings-advanced-gate-DxMVaqdn.js +1 -0
  80. package/dist/gateway/static/root/assets/{settings-form-section-Coy1Cbp6.js → settings-form-section-D1oXhkgI.js} +1 -1
  81. package/dist/gateway/static/root/assets/settings-loading-skeleton-CldfX6FJ.js +1 -0
  82. package/dist/gateway/static/root/assets/settings-page-c3LJnbvE.js +1 -0
  83. package/dist/gateway/static/root/assets/settings-shell-layer-context-DCp6ykjQ.js +1 -0
  84. package/dist/gateway/static/root/assets/setup-status-panel-DZNHb6A5.js +1 -0
  85. package/dist/gateway/static/root/assets/share-preview-page-DptCK_mk.js +2 -0
  86. package/dist/gateway/static/root/assets/shares-settings-DakZ2AGN.js +1 -0
  87. package/dist/gateway/static/root/assets/skill-reload-api-BOiNkWJC.js +1 -0
  88. package/dist/gateway/static/root/assets/{skills-page-Brxb6QnW.js → skills-page-OHBeBtSg.js} +1 -1
  89. package/dist/gateway/static/root/assets/{skills-page.utils-FB5LtEGm.js → skills-page.utils-B9WZbOLC.js} +1 -1
  90. package/dist/gateway/static/root/assets/{system-settings-panel-ChosWt8n.js → system-settings-panel-Dj_DpOGw.js} +1 -1
  91. package/dist/gateway/static/root/assets/task-detail-page-D5Nbe3C8.js +1 -0
  92. package/dist/gateway/static/root/assets/theme-store-Cpd3Gd5R.js +1 -0
  93. package/dist/gateway/static/root/assets/{use-autosave-2SqnmSKD.js → use-autosave-DCl5Yq7N.js} +1 -1
  94. package/dist/gateway/static/root/assets/user-context-page-CAPSUK8B.js +1 -0
  95. package/dist/gateway/static/root/assets/{vendor-codemirror-DRr7hFaD.js → vendor-codemirror--gTq3YAI.js} +16 -16
  96. package/dist/gateway/static/root/assets/voice-api-key-field-BB_ZQV8F.js +1 -0
  97. package/dist/gateway/static/root/assets/voice-config-api-BNiYmpl5.js +1 -0
  98. package/dist/gateway/static/root/assets/{work-discovery-overlay-CK3aZDdE.js → work-discovery-overlay-BrIdtdum.js} +1 -1
  99. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BjOuddkX.js → workflow-run-setup-panel-hKh-uCLo.js} +2 -2
  100. package/dist/gateway/static/root/assets/workflows-page-ahDvypGO.js +5 -0
  101. package/dist/gateway/static/root/index.html +19 -15
  102. package/dist/package.js +1 -1
  103. package/dist/src/agent/agent-manager.d.ts +1 -2
  104. package/dist/src/agent/agent-manager.js +29 -44
  105. package/dist/src/agent/background-review/run-background-review.js +10 -15
  106. package/dist/src/agent/embedded/run-for-session.js +1 -1
  107. package/dist/src/agent/external-tools/mcp-provider.js +3 -13
  108. package/dist/src/agent/image/generation/runtime.js +1 -1
  109. package/dist/src/agent/image/tool-model-config.js +13 -14
  110. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -9
  111. package/dist/src/agent/mcp/bundle-mcp-policy.js +1 -13
  112. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  113. package/dist/src/agent/mcp/index.js +2 -2
  114. package/dist/src/agent/media-generation/runtime-shared.d.ts +1 -1
  115. package/dist/src/agent/media-generation/runtime-shared.js +1 -1
  116. package/dist/src/agent/memory/create-memory-manager.js +1 -1
  117. package/dist/src/agent/memory/manager.d.ts +1 -1
  118. package/dist/src/{agent-runtime/memory-runtime.d.ts → agent/memory/runtime.d.ts} +1 -1
  119. package/dist/src/{agent-runtime/memory-runtime.js → agent/memory/runtime.js} +2 -3
  120. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -3
  121. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -3
  122. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -2
  123. package/dist/src/agent/service.d.ts +1 -0
  124. package/dist/src/agent/service.js +5 -3
  125. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  126. package/dist/src/agent/starter-agents.js +1 -8
  127. package/dist/src/agent/tools/executor.d.ts +1 -1
  128. package/dist/src/agent/tools/workflow-tool.js +1 -5
  129. package/dist/src/agent/tools/write.js +9 -12
  130. package/dist/src/agent/tools/xopc-use-tool.js +2 -2
  131. package/dist/src/agent-config/index.d.ts +2 -0
  132. package/dist/src/agent-config/index.js +11 -0
  133. package/dist/src/agent-config/resolver.d.ts +11 -0
  134. package/dist/src/agent-config/resolver.js +113 -0
  135. package/dist/src/agent-config/schema.d.ts +491 -0
  136. package/dist/src/agent-config/schema.js +172 -0
  137. package/dist/src/auth/oauth/index.js +2 -2
  138. package/dist/src/auth/oauth/registry.d.ts +1 -1
  139. package/dist/src/auth/oauth/registry.js +5 -1
  140. package/dist/src/auth/oauth/xopc-cloud.d.ts +1 -0
  141. package/dist/src/auth/oauth/xopc-cloud.js +8 -2
  142. package/dist/src/chat-commands/builtins/config.js +2 -2
  143. package/dist/src/chat-commands/builtins/review.js +1 -1
  144. package/dist/src/chat-commands/config-paths.js +1 -1
  145. package/dist/src/cli/commands/agents.js +2 -1
  146. package/dist/src/cli/commands/config.js +1 -1
  147. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  148. package/dist/src/cli/commands/doctor/checks/provider-auth.js +12 -4
  149. package/dist/src/cli/commands/image.js +3 -4
  150. package/dist/src/cli/commands/models.js +9 -3
  151. package/dist/src/cli/commands/onboard/model.js +12 -11
  152. package/dist/src/cli/commands/onboard.js +1 -1
  153. package/dist/src/cli/commands/tunnel.js +3 -18
  154. package/dist/src/cli/utils/init-workspace-core.d.ts +1 -1
  155. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  156. package/dist/src/commands/agents.config.d.ts +1 -3
  157. package/dist/src/commands/agents.config.js +9 -26
  158. package/dist/src/config/agent-model-intents.d.ts +10 -0
  159. package/dist/src/config/agent-model-intents.js +39 -0
  160. package/dist/src/config/agent-profile.d.ts +7 -9
  161. package/dist/src/config/agent-profile.js +30 -28
  162. package/dist/src/config/default-model.d.ts +1 -11
  163. package/dist/src/config/default-model.js +3 -11
  164. package/dist/src/config/index.js +3 -3
  165. package/dist/src/config/integration.d.ts +1 -1
  166. package/dist/src/config/reload.js +1 -1
  167. package/dist/src/config/rules.js +3 -3
  168. package/dist/src/config/schema.d.ts +187 -452
  169. package/dist/src/config/schema.js +53 -131
  170. package/dist/src/extensions/activation-context.js +7 -11
  171. package/dist/src/files/file-service.d.ts +36 -0
  172. package/dist/src/files/file-service.js +282 -0
  173. package/dist/src/gateway/agent-builtin-tools.d.ts +250 -6
  174. package/dist/src/gateway/agent-builtin-tools.js +284 -46
  175. package/dist/src/gateway/agents-admin.d.ts +20 -62
  176. package/dist/src/gateway/agents-admin.js +36 -228
  177. package/dist/src/gateway/device-routes.d.ts +3 -0
  178. package/dist/src/gateway/device-routes.js +47 -0
  179. package/dist/src/gateway/global-defaults-admin.d.ts +6 -20
  180. package/dist/src/gateway/global-defaults-admin.js +20 -120
  181. package/dist/src/gateway/heartbeat/service.js +1 -1
  182. package/dist/src/gateway/hono/app.js +6 -4
  183. package/dist/src/gateway/hono/lib/config-payload.d.ts +54 -137
  184. package/dist/src/gateway/hono/lib/config-payload.js +2 -4
  185. package/dist/src/gateway/hono/middleware/auth.js +33 -1
  186. package/dist/src/gateway/hono/middleware/scopes.d.ts +2 -12
  187. package/dist/src/gateway/hono/middleware/scopes.js +9 -18
  188. package/dist/src/gateway/hono/routes/agents.js +64 -100
  189. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  190. package/dist/src/gateway/hono/routes/device-push.d.ts +2 -0
  191. package/dist/src/gateway/hono/routes/{mobile.js → device-push.js} +40 -18
  192. package/dist/src/gateway/hono/routes/devices.d.ts +4 -0
  193. package/dist/src/gateway/hono/routes/devices.js +214 -0
  194. package/dist/src/gateway/hono/routes/files.d.ts +3 -0
  195. package/dist/src/gateway/hono/routes/files.js +176 -0
  196. package/dist/src/gateway/hono/routes/global-defaults.js +5 -9
  197. package/dist/src/gateway/hono/routes/index.js +4 -2
  198. package/dist/src/gateway/hono/routes/lazy-bundles.js +12 -20
  199. package/dist/src/gateway/hono/routes/models.js +2 -2
  200. package/dist/src/gateway/hono/routes/projects.js +0 -508
  201. package/dist/src/gateway/hono/routes/realtime.js +8 -1
  202. package/dist/src/gateway/hono/routes/shares.js +410 -21
  203. package/dist/src/gateway/hono/routes/status.js +9 -16
  204. package/dist/src/gateway/hono/routes/tunnel.d.ts +0 -2
  205. package/dist/src/gateway/hono/routes/tunnel.js +10 -199
  206. package/dist/src/gateway/hono/routes/voice.js +1 -1
  207. package/dist/src/gateway/hono/routes/workspace.js +15 -974
  208. package/dist/src/gateway/image-generation-setup.d.ts +2 -2
  209. package/dist/src/gateway/image-generation-setup.js +8 -7
  210. package/dist/src/gateway/public-url.d.ts +1 -1
  211. package/dist/src/gateway/security/gateway-principal.d.ts +11 -0
  212. package/dist/src/gateway/security/gateway-principal.js +12 -0
  213. package/dist/src/gateway/security/gateway-scopes.d.ts +7 -0
  214. package/dist/src/gateway/security/gateway-scopes.js +66 -0
  215. package/dist/src/gateway/security/index.d.ts +2 -1
  216. package/dist/src/gateway/security/index.js +3 -2
  217. package/dist/src/gateway/service.js +4 -4
  218. package/dist/src/gateway/xopc-cloud-capability-setup.js +19 -21
  219. package/dist/src/heartbeat/index.js +1 -1
  220. package/dist/src/migrations/index.d.ts +0 -1
  221. package/dist/src/migrations/index.js +1 -2
  222. package/dist/src/migrations/runner.js +1 -2
  223. package/dist/src/notifications/device-store.d.ts +1 -1
  224. package/dist/src/notifications/device-store.js +11 -11
  225. package/dist/src/notifications/store.js +3 -3
  226. package/dist/src/providers/index.js +1 -1
  227. package/dist/src/providers/model-reference-auditor.js +14 -9
  228. package/dist/src/realtime/runtime.d.ts +2 -0
  229. package/dist/src/realtime/runtime.js +27 -3
  230. package/dist/src/realtime/tickets.d.ts +6 -1
  231. package/dist/src/realtime/tickets.js +2 -1
  232. package/dist/src/remote-access/exposure-manager.js +3 -3
  233. package/dist/src/share/hosted-session-share.d.ts +104 -0
  234. package/dist/src/share/hosted-session-share.js +276 -0
  235. package/dist/src/share/note-share-service.js +4 -24
  236. package/dist/src/share/session-share-projector.d.ts +31 -0
  237. package/dist/src/share/session-share-projector.js +79 -0
  238. package/dist/src/share/session-share-service.d.ts +89 -0
  239. package/dist/src/share/session-share-service.js +325 -0
  240. package/dist/src/share/share-asset-ticket.d.ts +7 -0
  241. package/dist/src/share/share-asset-ticket.js +30 -0
  242. package/dist/src/share/share-landing.d.ts +4 -3
  243. package/dist/src/share/share-landing.js +5 -5
  244. package/dist/src/share/share-store.d.ts +27 -2
  245. package/dist/src/share/share-store.js +71 -8
  246. package/dist/src/share/share-types.d.ts +17 -2
  247. package/dist/src/share/share-url.js +2 -2
  248. package/dist/src/storage/sqlite/device-access-repository.d.ts +54 -0
  249. package/dist/src/storage/sqlite/device-access-repository.js +194 -0
  250. package/dist/src/storage/sqlite/device-pairing-repository.d.ts +22 -0
  251. package/dist/src/storage/sqlite/device-pairing-repository.js +86 -0
  252. package/dist/src/storage/sqlite/gateway-identity-repository.d.ts +10 -0
  253. package/dist/src/storage/sqlite/gateway-identity-repository.js +50 -0
  254. package/dist/src/storage/sqlite/index.d.ts +3 -0
  255. package/dist/src/storage/sqlite/index.js +4 -1
  256. package/dist/src/storage/sqlite/migrations/138_device_access.sql +96 -0
  257. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  258. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  259. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  260. package/dist/src/storage/sqlite/schema.js +1 -1
  261. package/dist/src/tui/backends/embedded-backend.js +1 -1
  262. package/dist/src/tui/backends/gateway-realtime-backend.js +11 -3
  263. package/dist/src/tunnel/consent.d.ts +1 -1
  264. package/dist/src/tunnel/consent.js +1 -1
  265. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  266. package/dist/src/tunnel/index.d.ts +1 -4
  267. package/dist/src/tunnel/index.js +3 -5
  268. package/dist/src/tunnel/tunnel-audit.d.ts +1 -1
  269. package/dist/src/tunnel/tunnel-config.js +1 -1
  270. package/dist/src/tunnel/tunnel-service.d.ts +2 -3
  271. package/dist/src/tunnel/tunnel-service.js +1 -20
  272. package/dist/src/tunnel/tunnel-types.d.ts +0 -6
  273. package/dist/src/workflows/draft/workflow-draft-service.js +2 -2
  274. package/dist/src/workflows/service/workflow-run-service.js +3 -3
  275. package/package.json +3 -3
  276. package/dist/gateway/static/root/assets/agent-avatar-dicebear-Bp_wmuGW.js +0 -1
  277. package/dist/gateway/static/root/assets/agents-CKG93dlc.js +0 -68
  278. package/dist/gateway/static/root/assets/api-BywYxpaS.js +0 -1
  279. package/dist/gateway/static/root/assets/automations-workspace-BNFAfNwC.js +0 -6
  280. package/dist/gateway/static/root/assets/browser-settings-page-Cg6NgwE_.js +0 -8
  281. package/dist/gateway/static/root/assets/browser-workflow-inputs-8NC2qDRF.js +0 -1
  282. package/dist/gateway/static/root/assets/capabilities-settings-panel-NvJKgF1u.js +0 -7
  283. package/dist/gateway/static/root/assets/capability-presets-api-o0y9WgAI.js +0 -1
  284. package/dist/gateway/static/root/assets/capability-presets-settings-panel-C2uBdALe.js +0 -3
  285. package/dist/gateway/static/root/assets/channels-settings-CIcYKMEs.js +0 -1
  286. package/dist/gateway/static/root/assets/channels-status-swr-38FsOnR0.js +0 -1
  287. package/dist/gateway/static/root/assets/connectors-page-CEEcmUiP.js +0 -2
  288. package/dist/gateway/static/root/assets/cron-expression-Cs_5pUPT.js +0 -2
  289. package/dist/gateway/static/root/assets/date-picker-y1kWrFVU.js +0 -1
  290. package/dist/gateway/static/root/assets/dependency-picker-skc62zrn.js +0 -1
  291. package/dist/gateway/static/root/assets/directory-picker-path-field-V8vZP0Dy.js +0 -1
  292. package/dist/gateway/static/root/assets/dist-J_ySZvz0.js +0 -1
  293. package/dist/gateway/static/root/assets/extension-settings-page-BgSV0Nny.js +0 -1
  294. package/dist/gateway/static/root/assets/file-code-corner-byQA1VfD.js +0 -1
  295. package/dist/gateway/static/root/assets/gateway-config-swr-BWGjnmDl.js +0 -1
  296. package/dist/gateway/static/root/assets/heartbeat-settings-Pxqk5GFH.js +0 -1
  297. package/dist/gateway/static/root/assets/home-page-1xjo6wE4.js +0 -1
  298. package/dist/gateway/static/root/assets/html-workspace-editor-bXK5tq64.js +0 -1
  299. package/dist/gateway/static/root/assets/index-Bbd_dXui.js +0 -70
  300. package/dist/gateway/static/root/assets/index-D_hrEKXM.css +0 -2
  301. package/dist/gateway/static/root/assets/local-app-workbench-page-heQ4-PJ7.js +0 -2
  302. package/dist/gateway/static/root/assets/locale-store-CXhjfe4q.js +0 -1
  303. package/dist/gateway/static/root/assets/logs-page-BblnS6Jy.js +0 -2
  304. package/dist/gateway/static/root/assets/management-settings-B8hM56HS.js +0 -1
  305. package/dist/gateway/static/root/assets/markdown-editor-TWGaF7Xa.js +0 -2
  306. package/dist/gateway/static/root/assets/markdown-split-DRbZjxMK.js +0 -1
  307. package/dist/gateway/static/root/assets/markdown-view-CLzTdVLW.css +0 -1
  308. package/dist/gateway/static/root/assets/messages-BMdD0LWk.js +0 -3
  309. package/dist/gateway/static/root/assets/notes-workbench-CAM09C8b.js +0 -4
  310. package/dist/gateway/static/root/assets/popover-select-CccGri5Y.js +0 -1
  311. package/dist/gateway/static/root/assets/project-detail-page-BIPIwgU2.js +0 -1
  312. package/dist/gateway/static/root/assets/projects-page-B_kzTn1K.js +0 -1
  313. package/dist/gateway/static/root/assets/remote-access-hub-CtD8DsD-.js +0 -1
  314. package/dist/gateway/static/root/assets/sessions-page-B8n9HI1y.js +0 -1
  315. package/dist/gateway/static/root/assets/settings-advanced-gate-xlhdRTME.js +0 -1
  316. package/dist/gateway/static/root/assets/settings-loading-skeleton-B5GU7iCG.js +0 -1
  317. package/dist/gateway/static/root/assets/settings-page-Dd-BRu12.js +0 -1
  318. package/dist/gateway/static/root/assets/setup-status-panel-CwEFAVWx.js +0 -1
  319. package/dist/gateway/static/root/assets/share-preview-page-DzXw9UQJ.js +0 -2
  320. package/dist/gateway/static/root/assets/shares-settings-Bk6UQOwS.js +0 -1
  321. package/dist/gateway/static/root/assets/skill-reload-api-DrmQZ3Au.js +0 -1
  322. package/dist/gateway/static/root/assets/task-detail-page-CW2sJbdc.js +0 -1
  323. package/dist/gateway/static/root/assets/theme-store-DOdCjyuw.js +0 -1
  324. package/dist/gateway/static/root/assets/typed-models-lib-q5-Vfqd8.js +0 -1
  325. package/dist/gateway/static/root/assets/user-context-page-Bq9KB-Oj.js +0 -1
  326. package/dist/gateway/static/root/assets/voice-api-key-field-DtTIF6M8.js +0 -1
  327. package/dist/gateway/static/root/assets/workflows-page-CcbGEQol.js +0 -5
  328. package/dist/src/agent-manifest/index.d.ts +0 -5
  329. package/dist/src/agent-manifest/index.js +0 -10
  330. package/dist/src/agent-manifest/preset-chain.d.ts +0 -10
  331. package/dist/src/agent-manifest/preset-chain.js +0 -30
  332. package/dist/src/agent-manifest/prompt.d.ts +0 -2
  333. package/dist/src/agent-manifest/prompt.js +0 -49
  334. package/dist/src/agent-manifest/resolver.d.ts +0 -32
  335. package/dist/src/agent-manifest/resolver.js +0 -114
  336. package/dist/src/agent-manifest/schema.d.ts +0 -695
  337. package/dist/src/agent-manifest/schema.js +0 -226
  338. package/dist/src/agent-manifest/validator.d.ts +0 -25
  339. package/dist/src/agent-manifest/validator.js +0 -74
  340. package/dist/src/agent-runtime/boundary-guard.d.ts +0 -12
  341. package/dist/src/agent-runtime/boundary-guard.js +0 -21
  342. package/dist/src/agent-runtime/index.d.ts +0 -7
  343. package/dist/src/agent-runtime/index.js +0 -8
  344. package/dist/src/agent-runtime/model-router.d.ts +0 -11
  345. package/dist/src/agent-runtime/model-router.js +0 -14
  346. package/dist/src/agent-runtime/run-trace.d.ts +0 -27
  347. package/dist/src/agent-runtime/run-trace.js +0 -51
  348. package/dist/src/agent-runtime/runtime-profile.d.ts +0 -26
  349. package/dist/src/agent-runtime/runtime-profile.js +0 -42
  350. package/dist/src/agent-runtime/tool-registry.d.ts +0 -28
  351. package/dist/src/agent-runtime/tool-registry.js +0 -50
  352. package/dist/src/agent-runtime/workflow-runtime.d.ts +0 -31
  353. package/dist/src/agent-runtime/workflow-runtime.js +0 -32
  354. package/dist/src/config/agent-typed-models.d.ts +0 -13
  355. package/dist/src/config/agent-typed-models.js +0 -48
  356. package/dist/src/gateway/capability-presets-admin.d.ts +0 -88
  357. package/dist/src/gateway/capability-presets-admin.js +0 -303
  358. package/dist/src/gateway/file-path-classifier.d.ts +0 -30
  359. package/dist/src/gateway/file-path-classifier.js +0 -105
  360. package/dist/src/gateway/file-reference-errors.d.ts +0 -6
  361. package/dist/src/gateway/file-reference-errors.js +0 -21
  362. package/dist/src/gateway/file-reference-registry.d.ts +0 -34
  363. package/dist/src/gateway/file-reference-registry.js +0 -45
  364. package/dist/src/gateway/hono/lib/agent-model.d.ts +0 -35
  365. package/dist/src/gateway/hono/lib/agent-model.js +0 -97
  366. package/dist/src/gateway/hono/routes/capability-presets.d.ts +0 -3
  367. package/dist/src/gateway/hono/routes/capability-presets.js +0 -187
  368. package/dist/src/gateway/hono/routes/mobile.d.ts +0 -3
  369. package/dist/src/gateway/security/operator-scopes.d.ts +0 -37
  370. package/dist/src/gateway/security/operator-scopes.js +0 -147
  371. package/dist/src/migrations/config/default-capability-preset.d.ts +0 -10
  372. package/dist/src/migrations/config/default-capability-preset.js +0 -133
  373. package/dist/src/tunnel/enable-lan-pairing.d.ts +0 -8
  374. package/dist/src/tunnel/enable-lan-pairing.js +0 -41
  375. package/dist/src/tunnel/pair-context.d.ts +0 -36
  376. package/dist/src/tunnel/pair-context.js +0 -77
  377. package/dist/src/tunnel/pair-url.d.ts +0 -43
  378. package/dist/src/tunnel/pair-url.js +0 -117
  379. package/dist/src/tunnel/pairing-rate-limit.d.ts +0 -12
  380. package/dist/src/tunnel/pairing-rate-limit.js +0 -28
  381. package/dist/src/tunnel/pairing.d.ts +0 -21
  382. package/dist/src/tunnel/pairing.js +0 -103
  383. package/dist/src/tunnel/tunnel-qr.d.ts +0 -9
  384. package/dist/src/tunnel/tunnel-qr.js +0 -29
@@ -9,7 +9,7 @@ import { init_kimi_coding, kimiCodingOAuthProvider } from "./kimi-coding.js";
9
9
  import { init_minimax_cn, minimaxCnOAuthProvider } from "./minimax-cn.js";
10
10
  import { init_minimax, minimaxOAuthProvider } from "./minimax.js";
11
11
  import { init_openai_codex, openaiCodexOAuthProvider } from "./openai-codex.js";
12
- import { init_xopc_cloud, xopcCloudOAuthProvider, xopcTunnelOAuthProvider } from "./xopc-cloud.js";
12
+ import { init_xopc_cloud, xopcCloudOAuthProvider, xopcShareOAuthProvider, xopcTunnelOAuthProvider } from "./xopc-cloud.js";
13
13
  //#region src/auth/oauth/registry.ts
14
14
  function definition(provider, purpose, displayName = provider.name) {
15
15
  return {
@@ -55,6 +55,10 @@ var init_registry = __esmMin((() => {
55
55
  ...definition(xopcTunnelOAuthProvider, "tunnel"),
56
56
  oauthOnly: true
57
57
  },
58
+ "xopc-share": {
59
+ ...definition(xopcShareOAuthProvider, "share"),
60
+ oauthOnly: true
61
+ },
58
62
  anthropic: definition(anthropicOAuthProvider, "models", "Anthropic (Claude)"),
59
63
  minimax: definition(minimaxOAuthProvider, "models", "MiniMax (幂维智能)"),
60
64
  "minimax-cn": {
@@ -1,3 +1,4 @@
1
1
  import type { OAuthProviderInterface } from './types.js';
2
2
  export declare const xopcCloudOAuthProvider: OAuthProviderInterface;
3
3
  export declare const xopcTunnelOAuthProvider: OAuthProviderInterface;
4
+ export declare const xopcShareOAuthProvider: OAuthProviderInterface;
@@ -388,13 +388,14 @@ function createXopcOAuthProvider(options) {
388
388
  getApiKey: (value) => value.access
389
389
  };
390
390
  }
391
- var CLIENT_ID, DEFAULT_CONSOLE_URL, MODEL_SERVICE_SCOPE, TUNNEL_REGISTRATION_SCOPE, CALLBACK_PATH, AUTHORIZATION_TIMEOUT_MS, xopcCloudOAuthProvider, xopcTunnelOAuthProvider;
391
+ var CLIENT_ID, DEFAULT_CONSOLE_URL, MODEL_SERVICE_SCOPE, TUNNEL_REGISTRATION_SCOPE, HOSTED_SHARE_SCOPE, CALLBACK_PATH, AUTHORIZATION_TIMEOUT_MS, xopcCloudOAuthProvider, xopcTunnelOAuthProvider, xopcShareOAuthProvider;
392
392
  var init_xopc_cloud = __esmMin((() => {
393
393
  init_pkce();
394
394
  CLIENT_ID = "xopc-native";
395
395
  DEFAULT_CONSOLE_URL = "https://console.xopc.ai";
396
396
  MODEL_SERVICE_SCOPE = "models:read models:invoke account:usage connectors:read connectors:manage connectors:execute offline_access";
397
397
  TUNNEL_REGISTRATION_SCOPE = "tunnel:register";
398
+ HOSTED_SHARE_SCOPE = "shares:read shares:write offline_access";
398
399
  CALLBACK_PATH = "/oauth/callback";
399
400
  AUTHORIZATION_TIMEOUT_MS = 5 * 6e4;
400
401
  xopcCloudOAuthProvider = createXopcOAuthProvider({
@@ -407,7 +408,12 @@ var init_xopc_cloud = __esmMin((() => {
407
408
  name: "XOPC Public Tunnel",
408
409
  scope: TUNNEL_REGISTRATION_SCOPE
409
410
  });
411
+ xopcShareOAuthProvider = createXopcOAuthProvider({
412
+ id: "xopc-share",
413
+ name: "XOPC Hosted Share",
414
+ scope: HOSTED_SHARE_SCOPE
415
+ });
410
416
  }));
411
417
  //#endregion
412
418
  init_xopc_cloud();
413
- export { init_xopc_cloud, xopcCloudOAuthProvider, xopcTunnelOAuthProvider };
419
+ export { init_xopc_cloud, xopcCloudOAuthProvider, xopcShareOAuthProvider, xopcTunnelOAuthProvider };
@@ -76,7 +76,7 @@ const configCommand = {
76
76
  "/config show",
77
77
  "/config show agents.list",
78
78
  "/config set agents.default=main",
79
- "/config show agents.capabilityPresets",
79
+ "/config show agents.defaults",
80
80
  "/config unset tts"
81
81
  ],
82
82
  handler: async (ctx, args) => {
@@ -176,7 +176,7 @@ const configCommand = {
176
176
  log.info({ path: rest }, "Config key removed via /config unset");
177
177
  return { content: `⚙️ Config updated: \`${rest}\` removed.` };
178
178
  }
179
- return { content: "⚙️ *Config Command*\n\n`/config show [path]` — view config (or a specific path)\n`/config set path=value` — update a config value\n`/config unset path` — remove a config key\n\nExamples:\n`/config show agents.list`\n`/config set agents.default=main`\n`/config show agents.capabilityPresets`\n`/config unset tts`" };
179
+ return { content: "⚙️ *Config Command*\n\n`/config show [path]` — view config (or a specific path)\n`/config set path=value` — update a config value\n`/config unset path` — remove a config key\n\nExamples:\n`/config show agents.list`\n`/config set agents.default=main`\n`/config show agents.defaults`\n`/config unset tts`" };
180
180
  }
181
181
  };
182
182
  function registerConfigCommand() {
@@ -136,7 +136,7 @@ async function reviewModelRef(ctx) {
136
136
  if (sessionOverride) return sessionOverride;
137
137
  try {
138
138
  const profile = resolveEffectiveAgentProfileForSession(ctx.config, ctx.sessionKey);
139
- return profile.manifest.models.roles.review?.model?.trim() || profile.primaryModelRef;
139
+ return profile.config.models.intents.review?.primary || profile.primaryModelRef;
140
140
  } catch {
141
141
  return;
142
142
  }
@@ -3,7 +3,7 @@ function parseConfigPath(raw) {
3
3
  const parts = raw.trim().split(".").map((p) => p.trim());
4
4
  if (parts.some((p) => !p)) return {
5
5
  ok: false,
6
- error: "Invalid path. Use dot notation (e.g. agents.list.0.models.defaultRole)."
6
+ error: "Invalid path. Use dot notation (e.g. agents.defaults.models.chat.primary)."
7
7
  };
8
8
  return {
9
9
  ok: true,
@@ -20,7 +20,7 @@ function registerAgentsCli(program) {
20
20
  id: normalizeAgentId(a.id),
21
21
  enabled: a.enabled !== false,
22
22
  workspace: a.workspace,
23
- model: a.models.roles[a.models.defaultRole]?.model
23
+ model: a.models?.chat?.primary ?? cfg.agents.defaults.models.chat.primary
24
24
  }));
25
25
  const def = resolveDefaultAgentId(cfg);
26
26
  if (opts.json) {
@@ -51,6 +51,7 @@ function registerAgentsCli(program) {
51
51
  const next = applyAgentConfig(cfg, {
52
52
  agentId,
53
53
  workspace: opts.workspace.trim(),
54
+ profile: { name: name.trim() },
54
55
  ...opts.model?.trim() ? { model: opts.model.trim() } : {}
55
56
  });
56
57
  await saveConfig(next, resolveConfigPath());
@@ -76,7 +76,7 @@ function setNestedValue(obj, path, value) {
76
76
  function createConfigCommand(ctx) {
77
77
  const cmd = new Command("config").description("View and edit configuration").option("--show", "Show full configuration (alias for `config show`)").option("--validate", "Validate configuration file (alias for `config validate`)").addHelpText("after", formatExamples([
78
78
  "xopc config get agents.list",
79
- "xopc config get agents.capabilityPresets",
79
+ "xopc config get agents.defaults",
80
80
  "xopc config set agents.default main",
81
81
  "xopc config show",
82
82
  "xopc config validate",
@@ -52,7 +52,7 @@ async function checkDatabaseSchema(ctx) {
52
52
  id: "database-schema",
53
53
  label: "Database schema",
54
54
  status: "pass",
55
- message: `SQLite schema v${status.dbVersion} (current release v137).`,
55
+ message: `SQLite schema v${status.dbVersion} (current release v138).`,
56
56
  hints: []
57
57
  };
58
58
  }
@@ -14,12 +14,20 @@ function collectProviderIdsFromConfig(cfg) {
14
14
  if (parsed) ids.add(parsed.provider.toLowerCase());
15
15
  };
16
16
  addRef(getAgentDefaultModelRef(cfg));
17
- const addRoles = (roles) => {
18
- for (const role of Object.values(roles ?? {})) addRef(role.model);
17
+ const addRoutes = (routes) => {
18
+ for (const route of Object.values(routes ?? {})) addRef(route?.primary);
19
19
  };
20
- for (const preset of Object.values(cfg.agents.capabilityPresets ?? {})) addRoles(preset.models?.roles);
20
+ addRef(cfg.agents.defaults.models.chat.primary);
21
+ addRoutes(cfg.agents.defaults.models.intents);
22
+ addRef(cfg.agents.defaults.models.imageUnderstanding?.primary);
23
+ addRef(cfg.agents.defaults.models.imageGeneration?.primary);
21
24
  const list = cfg.agents?.list;
22
- if (Array.isArray(list)) for (const e of list) addRoles(e?.models?.roles);
25
+ if (Array.isArray(list)) for (const e of list) {
26
+ addRef(e?.models?.chat?.primary);
27
+ addRoutes(e?.models?.intents);
28
+ addRef(e?.models?.imageUnderstanding?.primary);
29
+ addRef(e?.models?.imageGeneration?.primary);
30
+ }
23
31
  return ids;
24
32
  }
25
33
  function anyProviderEnvPresent() {
@@ -4,11 +4,10 @@ import "../../agent/image/index.js";
4
4
  import { Command } from "commander";
5
5
  //#region src/cli/commands/image.ts
6
6
  function createImageCommand(_ctx) {
7
- const cmd = new Command("image").description("Inspect image provider availability").addHelpText("after", formatExamples(["xopc image providers # List available image generation providers", "xopc image status # Explain current manifest-era image behavior"]));
7
+ const cmd = new Command("image").description("Inspect image provider availability").addHelpText("after", formatExamples(["xopc image providers # List available image generation providers", "xopc image status # Explain current image behavior"]));
8
8
  cmd.command("status").description("Show image runtime status").action(() => {
9
- console.log("Image model defaults were removed.");
10
- console.log("Image generation now uses configured providers discovered at runtime.");
11
- console.log("Agent-specific capability policy belongs in agent manifests or capability presets.");
9
+ console.log("Image understanding and generation inherit from agents.defaults.models.");
10
+ console.log("An agent may override either route in agents.list[].models.");
12
11
  });
13
12
  cmd.command("providers").description("List image generation providers").option("--json", "Output as JSON").action((opts) => {
14
13
  const providers = listImageGenerationProvidersSummary();
@@ -47,9 +47,15 @@ function currentModelRef(config) {
47
47
  return getAgentDefaultModelRef(config);
48
48
  }
49
49
  function setDefaultModel(config, modelRef) {
50
- const prep = prepareUpdateGlobalDefaults(config, { models: {
51
- defaultRole: "deep",
52
- roles: { deep: { model: modelRef } }
50
+ const prep = prepareUpdateGlobalDefaults(config, { defaults: {
51
+ ...config.agents.defaults,
52
+ models: {
53
+ ...config.agents.defaults.models,
54
+ chat: {
55
+ primary: modelRef,
56
+ fallbacks: []
57
+ }
58
+ }
53
59
  } });
54
60
  if (prep.ok === false) throw new Error(prep.error);
55
61
  return prep.data.nextConfig;
@@ -5,11 +5,11 @@ import { getApiKeyFromEnv } from "../../../providers/env-keys.js";
5
5
  import { getModelRegistry } from "../../../providers/model-registry.js";
6
6
  import { CredentialResolver, init_credentials } from "../../../auth/credentials.js";
7
7
  import { getAllProviders, getModelsByProvider, getProviderDisplayName, init_providers, providerSupportsApiKey, providerSupportsOAuth } from "../../../providers/index.js";
8
- import { getDomesticProviderBaseUrl, getDomesticProviderPreset, getDomesticProviderPresetIds, providerConfigFromDomesticPreset } from "../../../providers/domestic-presets.js";
9
- import { getProviderHint, getRecommendedModelsForProvider, sortModelsForPicker, sortProvidersForPicker } from "../../../providers/presentation.js";
10
8
  import { prepareUpdateGlobalDefaults } from "../../../gateway/global-defaults-admin.js";
11
9
  import { discoverProviderModels, isProviderApiDiscoverable } from "../../../providers/model-discovery.js";
12
10
  import { getXopcCloudCatalogCoordinator } from "../../../providers/xopc-cloud-catalog-coordinator.js";
11
+ import { getDomesticProviderBaseUrl, getDomesticProviderPreset, getDomesticProviderPresetIds, providerConfigFromDomesticPreset } from "../../../providers/domestic-presets.js";
12
+ import { getProviderHint, getRecommendedModelsForProvider, sortModelsForPicker, sortProvidersForPicker } from "../../../providers/presentation.js";
13
13
  import { listProfilesForProvider } from "../../../auth/profiles/profiles.js";
14
14
  import { getOAuthProvider } from "../../utils/oauth-providers.js";
15
15
  import { colors } from "../../utils/colors.js";
@@ -32,7 +32,7 @@ function setPrimaryModel(config, workspacePath, modelRef) {
32
32
  const nextList = [...config.agents.list];
33
33
  nextList[index] = {
34
34
  ...agent,
35
- workspace: { root: workspacePath }
35
+ workspace: workspacePath
36
36
  };
37
37
  nextConfig = {
38
38
  ...config,
@@ -42,14 +42,15 @@ function setPrimaryModel(config, workspacePath, modelRef) {
42
42
  }
43
43
  };
44
44
  }
45
- const presetId = nextConfig.agents.defaultPreset ?? "default";
46
- const currentModels = nextConfig.agents.capabilityPresets[presetId]?.models;
47
- const prep = prepareUpdateGlobalDefaults(nextConfig, { models: {
48
- ...currentModels,
49
- defaultRole: "deep",
50
- roles: {
51
- ...currentModels?.roles,
52
- deep: { model: modelRef }
45
+ const currentModels = nextConfig.agents.defaults.models;
46
+ const prep = prepareUpdateGlobalDefaults(nextConfig, { defaults: {
47
+ ...nextConfig.agents.defaults,
48
+ models: {
49
+ ...currentModels,
50
+ chat: {
51
+ primary: modelRef,
52
+ fallbacks: []
53
+ }
53
54
  }
54
55
  } });
55
56
  if (prep.ok === false) throw new Error(prep.error);
@@ -24,7 +24,7 @@ function printGitHubStarHint() {
24
24
  }
25
25
  async function setupNonInteractive(_configPath, existingConfig) {
26
26
  console.log("\n🤖 AI Model Configuration (Non-Interactive Mode)\n");
27
- console.log("Current agent manifests:", JSON.stringify(existingConfig.agents?.list ?? [], null, 2));
27
+ console.log("Current agent overrides:", JSON.stringify(existingConfig.agents?.list ?? [], null, 2));
28
28
  console.log("\n💡 To configure in interactive mode, run: xopc onboard");
29
29
  console.log("💡 Or set up manually in:", _configPath);
30
30
  return existingConfig;
@@ -5,10 +5,10 @@ import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
5
5
  import { loadTunnelState } from "../../tunnel/tunnel-state.js";
6
6
  import { formatExamples, register } from "../registry.js";
7
7
  import "../../config/index.js";
8
- import { TUNNEL_RISK_SUMMARY_LINES, TunnelConsentError, assertTunnelMayStart, hasValidTunnelConsent } from "../../tunnel/consent.js";
9
- import { resolveTunnelBrokerUrl, resolveTunnelRegistrationSecret } from "../../tunnel/env.js";
10
8
  import { ensureFrpcBinary } from "../../tunnel/frpc-binary.js";
9
+ import { resolveTunnelBrokerUrl, resolveTunnelRegistrationSecret } from "../../tunnel/env.js";
11
10
  import { getTunnelService } from "../../tunnel/tunnel-service.js";
11
+ import { TUNNEL_RISK_SUMMARY_LINES, TunnelConsentError, assertTunnelMayStart, hasValidTunnelConsent } from "../../tunnel/consent.js";
12
12
  import { resolveFrpSubdomainHost } from "../../tunnel/frp-subdomain-host.js";
13
13
  import { applyTunnelConsentToConfig, mergeTunnelConfigPatch, setTunnelEnabledInConfig } from "../../tunnel/tunnel-config.js";
14
14
  import "../../tunnel/index.js";
@@ -99,7 +99,6 @@ function createTunnelCommand(ctx) {
99
99
  "xopc tunnel start --accept-risk",
100
100
  "xopc tunnel stop",
101
101
  "xopc tunnel status",
102
- "xopc tunnel qr",
103
102
  "xopc tunnel consent",
104
103
  "xopc tunnel prefetch",
105
104
  "xopc tunnel secret set",
@@ -161,17 +160,13 @@ function createTunnelCommand(ctx) {
161
160
  const tunnel = getTunnelService();
162
161
  console.log("🚀 Starting tunnel...");
163
162
  try {
164
- const qr = await tunnel.start(port, token);
163
+ await tunnel.start(port, token);
165
164
  setTunnelEnabledInConfig(config, true);
166
165
  await saveConfig(config, ctx.configPath);
167
166
  const status = tunnel.getStatus();
168
167
  console.log("");
169
168
  console.log("✅ Tunnel is active");
170
169
  if (status.publicUrl) console.log(` URL: ${status.publicUrl}`);
171
- if (qr.lanUrl) console.log(` LAN: ${qr.lanUrl}`);
172
- console.log("");
173
- console.log("📱 Mobile connect QR payload:");
174
- console.log(qr.qrPayload);
175
170
  console.log("");
176
171
  console.log(`💡 Gateway must be running at ${host}:${port}. Keep frpc alive or use gateway / Web console.`);
177
172
  } catch (err) {
@@ -211,16 +206,6 @@ function createTunnelCommand(ctx) {
211
206
  consentValid: hasValidTunnelConsent(config)
212
207
  }, null, 2));
213
208
  });
214
- cmd.command("qr").description("Print mobile connect QR payload (tunnel must be active)").action(async () => {
215
- configureTunnel(ctx);
216
- const { port, host } = resolveGatewayPortHost(loadConfig(ctx.configPath));
217
- const qr = await getTunnelService().buildQr(port, host);
218
- if (!qr.qrPayload) {
219
- console.error("No active tunnel. Run: xopc tunnel start");
220
- process.exit(1);
221
- }
222
- console.log(qr.qrPayload);
223
- });
224
209
  cmd.command("broker").description("Self-hosted FRP broker helpers").addCommand(new Command("init").description("Print a starter frps + broker configuration template").option("--domain <domain>", "Public domain for frps", "tunnel.example.com").action((opts) => {
225
210
  const domain = String(opts.domain ?? "tunnel.example.com");
226
211
  console.log(`# Self-hosted FRP broker sketch for ${domain}`);
@@ -4,7 +4,7 @@ export interface InitWorkspaceCoreOptions {
4
4
  workspacePath: string;
5
5
  /** When set with a new config file, overrides schema default port (e.g. Electron). */
6
6
  gatewayPort?: number;
7
- /** When true, sets the default agent manifest workspace root to `workspacePath`. */
7
+ /** When true, sets the default agent workspace to `workspacePath`. */
8
8
  persistWorkspacePath?: boolean;
9
9
  /** Optional channel plugin validator (CLI/gateway only; Electron omits). */
10
10
  assertChannelPlugins?: (cfg: Config) => void | Promise<void>;
@@ -53,7 +53,7 @@ async function initWorkspaceCore(options) {
53
53
  const defaultAgentId = config.agents.default ?? config.agents.list[0]?.id ?? "main";
54
54
  const agentsList = persistedWorkspaceRoot === void 0 ? config.agents.list : config.agents.list.map((agent) => agent.id === defaultAgentId ? {
55
55
  ...agent,
56
- workspace: { root: persistedWorkspaceRoot }
56
+ workspace: persistedWorkspaceRoot
57
57
  } : agent);
58
58
  const nextConfig = {
59
59
  ...config,
@@ -8,12 +8,10 @@ export { listAgentEntries };
8
8
  export declare function findAgentEntryIndex(list: AgentEntry[], agentId: string): number;
9
9
  export declare function applyAgentConfig(cfg: Config, params: {
10
10
  agentId: string;
11
- /** Used only when creating a previously absent agent entry. */
12
- identity?: AgentEntry['identity'];
13
11
  workspace?: string;
12
+ profile?: AgentEntry['profile'];
14
13
  model?: string;
15
14
  models?: AgentEntry['models'];
16
- extends?: AgentEntry['extends'];
17
15
  skills?: string[];
18
16
  tools?: AgentEntry['tools'];
19
17
  }): Config;
@@ -17,33 +17,24 @@ function applyAgentConfig(cfg, params) {
17
17
  const nextTools = params.tools;
18
18
  const base = index >= 0 ? list[index] : {
19
19
  id: agentId,
20
- enabled: true,
21
- identity: params.identity ?? {
22
- name: agentId,
23
- role: "Agent",
24
- language: "en",
25
- tone: "direct"
26
- },
27
- responsibilities: { primary: ["Help the user complete tasks"] },
28
- workspace: { root: `~/.xopc/workspace/${agentId}` }
20
+ enabled: true
29
21
  };
30
22
  const nextEntry = {
31
23
  ...base,
32
24
  enabled: base.enabled ?? true,
33
- ...params.extends !== void 0 ? { extends: params.extends } : {},
34
- ...params.workspace ? { workspace: { root: params.workspace } } : {},
25
+ ...params.workspace ? { workspace: params.workspace } : {},
26
+ ...params.profile ? { profile: params.profile } : {},
35
27
  ...params.models ? { models: params.models } : {},
36
28
  ...params.model ? { models: {
37
29
  ...base.models ?? {},
38
- defaultRole: "deep",
39
- roles: {
40
- ...base.models?.roles ?? {},
41
- deep: { model: params.model }
30
+ chat: {
31
+ primary: params.model,
32
+ fallbacks: []
42
33
  }
43
34
  } } : {},
44
35
  ...params.skills ? { skills: {
45
- mode: "allowlist",
46
- allow: params.skills
36
+ mode: "replace",
37
+ include: params.skills
47
38
  } } : {},
48
39
  ...nextTools ? { tools: nextTools } : {}
49
40
  };
@@ -52,15 +43,7 @@ function applyAgentConfig(cfg, params) {
52
43
  else {
53
44
  if (nextList.length === 0 && agentId !== normalizeAgentId(resolveDefaultAgentId(cfg))) nextList.push({
54
45
  id: resolveDefaultAgentId(cfg),
55
- enabled: true,
56
- identity: {
57
- name: resolveDefaultAgentId(cfg),
58
- role: "Agent",
59
- language: "en",
60
- tone: "direct"
61
- },
62
- responsibilities: { primary: ["Help the user complete tasks"] },
63
- workspace: { root: `~/.xopc/workspace/${resolveDefaultAgentId(cfg)}` }
46
+ enabled: true
64
47
  });
65
48
  nextList.push(nextEntry);
66
49
  }
@@ -0,0 +1,10 @@
1
+ import { type ModelIntent } from '../agent-config/index.js';
2
+ import { type Config } from './schema.js';
3
+ export interface ResolvedModelIntent {
4
+ intent: ModelIntent;
5
+ model: string;
6
+ fallbacks: string[];
7
+ }
8
+ export declare function resolveEffectiveModelIntents(config: Config, agentId: string): Map<ModelIntent, ResolvedModelIntent>;
9
+ export declare function resolveModelIntentRef(config: Config, agentId: string, intent: ModelIntent): string | undefined;
10
+ export declare function resolveModelSelector(config: Config, agentId: string, selector: string): string;
@@ -0,0 +1,39 @@
1
+ import { ModelIntentSchema } from "../agent-config/schema.js";
2
+ import { init_agent_config } from "../agent-config/index.js";
3
+ import { init_schema, parseModelRef } from "./schema.js";
4
+ import { resolveEffectiveAgentConfigForAgent } from "./agent-profile.js";
5
+ //#region src/config/agent-model-intents.ts
6
+ init_agent_config();
7
+ init_schema();
8
+ function resolveEffectiveModelIntents(config, agentId) {
9
+ const intents = /* @__PURE__ */ new Map();
10
+ const effective = resolveEffectiveAgentConfigForAgent(config, agentId).config;
11
+ for (const [intent, route] of Object.entries(effective.models.intents)) {
12
+ const parsedIntent = ModelIntentSchema.safeParse(intent);
13
+ if (parsedIntent.success && route) intents.set(parsedIntent.data, {
14
+ intent: parsedIntent.data,
15
+ model: route.primary,
16
+ fallbacks: [...route.fallbacks]
17
+ });
18
+ }
19
+ return intents;
20
+ }
21
+ function resolveModelIntentRef(config, agentId, intent) {
22
+ return resolveEffectiveModelIntents(config, agentId).get(intent)?.model;
23
+ }
24
+ function resolveModelSelector(config, agentId, selector) {
25
+ const trimmed = selector.trim();
26
+ if (!trimmed) throw new Error("model selector must not be empty");
27
+ if (trimmed.includes("/")) {
28
+ if (!parseModelRef(trimmed)) throw new Error(`model ref must be provider/model format (got '${trimmed}')`);
29
+ return trimmed;
30
+ }
31
+ const intentText = trimmed.startsWith("@") ? trimmed.slice(1).trim() : trimmed;
32
+ const intent = ModelIntentSchema.safeParse(intentText);
33
+ if (!intent.success) throw new Error(`Unknown model intent '${intentText}'`);
34
+ const resolved = resolveModelIntentRef(config, agentId, intent.data);
35
+ if (resolved) return resolved;
36
+ return resolveEffectiveAgentConfigForAgent(config, agentId).config.models.chat.primary;
37
+ }
38
+ //#endregion
39
+ export { resolveEffectiveModelIntents, resolveModelIntentRef, resolveModelSelector };
@@ -1,5 +1,4 @@
1
- import { type EffectiveAgentManifest } from '../agent-manifest/index.js';
2
- import type { ThinkLevel, ReasoningLevel, VerboseLevel } from '../agent/transcript/thinking-types.js';
1
+ import { type EffectiveAgentConfig, type ResolveEffectiveAgentConfigResult } from '../agent-config/index.js';
3
2
  import type { Config } from './schema.js';
4
3
  export { resolveAgentWorkspaceDir } from '../agent/agent-scope.js';
5
4
  export interface EffectiveAgentTools {
@@ -7,20 +6,19 @@ export interface EffectiveAgentTools {
7
6
  }
8
7
  export interface EffectiveAgentProfile {
9
8
  agentId: string;
10
- manifest: EffectiveAgentManifest;
9
+ config: EffectiveAgentConfig;
10
+ sources: ResolveEffectiveAgentConfigResult['sources'];
11
11
  resolvedWorkspacePath: string;
12
- primaryModelRef: string | undefined;
12
+ primaryModelRef: string;
13
13
  fallbacks: string[];
14
- thinkingDefault?: ThinkLevel;
15
- reasoningDefault?: ReasoningLevel;
16
- verboseDefault?: VerboseLevel;
17
14
  customInstructions?: string;
18
15
  skillsAllowlist?: string[];
16
+ skillsDenylist: string[];
19
17
  tools: EffectiveAgentTools;
20
18
  params: Record<string, unknown>;
21
19
  }
22
20
  export declare function extractProfileAgentId(sessionKey: string | undefined | null, config: Config): string;
23
- export declare function resolveEffectiveAgentManifestForAgent(config: Config, agentId: string): EffectiveAgentManifest;
24
- export declare function resolveEffectiveAgentManifestForSession(config: Config, sessionKey: string | undefined | null): EffectiveAgentManifest;
21
+ export declare function resolveEffectiveAgentConfigForAgent(config: Config, agentId: string): ResolveEffectiveAgentConfigResult;
22
+ export declare function resolveEffectiveAgentConfigForSession(config: Config, sessionKey: string | undefined | null): ResolveEffectiveAgentConfigResult;
25
23
  export declare function resolveEffectiveAgentProfile(config: Config, agentId: string): EffectiveAgentProfile;
26
24
  export declare function resolveEffectiveAgentProfileForSession(config: Config, sessionKey: string | undefined | null): EffectiveAgentProfile;
@@ -1,50 +1,52 @@
1
+ import { resolveEffectiveAgentConfig } from "../agent-config/resolver.js";
2
+ import { init_agent_config } from "../agent-config/index.js";
1
3
  import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
2
- import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
3
- import "../agent-manifest/index.js";
4
4
  import { init_session_key, parseSessionKey } from "../routing/session-key.js";
5
5
  import { agentExists, getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
6
6
  //#region src/config/agent-profile.ts
7
+ init_agent_config();
7
8
  init_agent_scope();
8
9
  init_resolve_route();
9
10
  init_session_key();
10
- function findAgentManifest(config, agentId) {
11
+ function findAgent(config, agentId) {
11
12
  const id = normalizeAgentId(agentId);
12
13
  return config.agents.list.find((agent) => agent.enabled !== false && normalizeAgentId(agent.id) === id);
13
14
  }
14
15
  function extractProfileAgentId(sessionKey, config) {
15
16
  const parsed = parseSessionKey(sessionKey ?? "");
16
17
  if (!parsed) return getDefaultAgentId(config);
17
- const aid = parsed.agentId;
18
- if (aid === "subagent" || aid.startsWith("subagent:")) return getDefaultAgentId(config);
19
- if (!agentExists(aid, config)) return getDefaultAgentId(config);
20
- return aid.toLowerCase();
18
+ const id = parsed.agentId;
19
+ if (id === "subagent" || id.startsWith("subagent:") || !agentExists(id, config)) return getDefaultAgentId(config);
20
+ return id.toLowerCase();
21
21
  }
22
- function resolveEffectiveAgentManifestForAgent(config, agentId) {
23
- const agent = findAgentManifest(config, agentId) ?? findAgentManifest(config, getDefaultAgentId(config));
24
- if (!agent) throw new Error(`No enabled agent manifest found for "${agentId}"`);
25
- return resolveEffectiveAgentManifest({
22
+ function resolveEffectiveAgentConfigForAgent(config, agentId) {
23
+ const agent = findAgent(config, agentId) ?? findAgent(config, getDefaultAgentId(config));
24
+ if (!agent) throw new Error(`No enabled agent found for "${agentId}"`);
25
+ return resolveEffectiveAgentConfig({
26
26
  agent,
27
- presets: config.agents.capabilityPresets,
28
- defaultPresetId: config.agents.defaultPreset
29
- }).manifest;
27
+ defaults: config.agents.defaults,
28
+ defaultWorkspace: (id) => resolveAgentWorkspaceDir(config, id)
29
+ });
30
30
  }
31
- function resolveEffectiveAgentManifestForSession(config, sessionKey) {
32
- return resolveEffectiveAgentManifestForAgent(config, extractProfileAgentId(sessionKey, config));
31
+ function resolveEffectiveAgentConfigForSession(config, sessionKey) {
32
+ return resolveEffectiveAgentConfigForAgent(config, extractProfileAgentId(sessionKey, config));
33
33
  }
34
34
  function resolveEffectiveAgentProfile(config, agentId) {
35
- const manifest = resolveEffectiveAgentManifestForAgent(config, agentId);
36
- const defaultRoleModel = manifest.models.roles[manifest.models.defaultRole];
37
- const defaultModel = defaultRoleModel?.model;
38
- const deniedTools = Object.entries(manifest.tools.builtin).filter(([, policy]) => policy.mode === "deny").map(([name]) => name);
39
- const skillsAllowlist = manifest.skills.mode === "allowlist" ? [...manifest.skills.allow ?? []] : void 0;
35
+ const resolved = resolveEffectiveAgentConfigForAgent(config, agentId);
36
+ const effective = resolved.config;
37
+ const deniedTools = Object.entries(effective.tools).filter(([, policy]) => policy.mode === "deny").map(([name]) => name);
38
+ const skillsAllowlist = effective.skills.mode === "selected" ? [...effective.skills.include] : void 0;
39
+ const skillsDenylist = effective.skills.mode === "all-enabled" ? [...effective.skills.exclude] : [];
40
40
  return {
41
- agentId: manifest.id,
42
- manifest,
43
- resolvedWorkspacePath: resolveAgentWorkspaceDir(config, manifest.id),
44
- primaryModelRef: defaultModel?.trim() || void 0,
45
- fallbacks: (defaultRoleModel?.fallbacks ?? []).map((ref) => ref.trim()).filter(Boolean),
46
- customInstructions: manifest.prompt?.customInstructions,
41
+ agentId: effective.id,
42
+ config: effective,
43
+ sources: resolved.sources,
44
+ resolvedWorkspacePath: resolveAgentWorkspaceDir(config, effective.id),
45
+ primaryModelRef: effective.models.chat.primary,
46
+ fallbacks: [...effective.models.chat.fallbacks],
47
+ customInstructions: effective.profile?.instructions,
47
48
  skillsAllowlist,
49
+ skillsDenylist,
48
50
  tools: { denied: new Set(deniedTools) },
49
51
  params: {}
50
52
  };
@@ -53,4 +55,4 @@ function resolveEffectiveAgentProfileForSession(config, sessionKey) {
53
55
  return resolveEffectiveAgentProfile(config, extractProfileAgentId(sessionKey, config));
54
56
  }
55
57
  //#endregion
56
- export { extractProfileAgentId, resolveAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession };
58
+ export { extractProfileAgentId, resolveAgentWorkspaceDir, resolveEffectiveAgentConfigForAgent, resolveEffectiveAgentConfigForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession };
@@ -1,11 +1 @@
1
- export declare const DEFAULT_MODEL_ROLE = "deep";
2
- export declare const DEFAULT_MODEL_REF = "deepseek/deepseek-v4-flash";
3
- export declare const DEFAULT_AGENT_MODELS: {
4
- readonly defaultRole: "deep";
5
- readonly roles: {
6
- readonly deep: {
7
- readonly model: "deepseek/deepseek-v4-flash";
8
- readonly description: "Default model for general agent work.";
9
- };
10
- };
11
- };
1
+ export { DEFAULT_AGENT_MODEL_REF as DEFAULT_MODEL_REF } from '../agent-config/schema.js';
@@ -1,17 +1,9 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
+ import { DEFAULT_AGENT_MODEL_REF, init_schema } from "../agent-config/schema.js";
2
3
  //#region src/config/default-model.ts
3
- var DEFAULT_MODEL_ROLE, DEFAULT_MODEL_REF, DEFAULT_AGENT_MODELS;
4
4
  var init_default_model = __esmMin((() => {
5
- DEFAULT_MODEL_ROLE = "deep";
6
- DEFAULT_MODEL_REF = "deepseek/deepseek-v4-flash";
7
- DEFAULT_AGENT_MODELS = {
8
- defaultRole: DEFAULT_MODEL_ROLE,
9
- roles: { [DEFAULT_MODEL_ROLE]: {
10
- model: DEFAULT_MODEL_REF,
11
- description: "Default model for general agent work."
12
- } }
13
- };
5
+ init_schema();
14
6
  }));
15
7
  //#endregion
16
8
  init_default_model();
17
- export { DEFAULT_AGENT_MODELS, DEFAULT_MODEL_REF, DEFAULT_MODEL_ROLE, init_default_model };
9
+ export { DEFAULT_AGENT_MODEL_REF as DEFAULT_MODEL_REF, init_default_model };