@xopcai/xopc 0.0.231 → 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 (339) 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-DP7YVRPn.js → app-management-settings-panel-BJfClfPx.js} +1 -1
  14. package/dist/gateway/static/root/assets/{appearance-settings-CVQ5n7y6.js → appearance-settings-C_R0vUAu.js} +1 -1
  15. package/dist/gateway/static/root/assets/{apps-page-DSCia0DT.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-mmr_mHRr.js → attachment-load-DZrEwytM.js} +1 -1
  18. package/dist/gateway/static/root/assets/{automations-page-DfY-T6Ga.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-CO9QMEh2.js → binary-plugins-Ckc_Csue.js} +1 -1
  21. package/dist/gateway/static/root/assets/{block-editor-CE14CVOy.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-1wgXyoSO.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-CdRW6Euc.js → chat-terminal-dock-CA9fndbZ.js} +2 -2
  29. package/dist/gateway/static/root/assets/{code-editor-dFzqyDXS.js → code-editor-D4_k-6QN.js} +1 -1
  30. package/dist/gateway/static/root/assets/connectors-page-SuL7td7Z.js +2 -0
  31. package/dist/gateway/static/root/assets/cron-expression-CqPu7HYJ.js +2 -0
  32. package/dist/gateway/static/root/assets/date-picker-C8dJsCgk.js +1 -0
  33. package/dist/gateway/static/root/assets/dependency-picker-Iz2wYimy.js +1 -0
  34. package/dist/gateway/static/root/assets/{desktop-pet-CMO-J3cG.js → desktop-pet-C3h40FmG.js} +1 -1
  35. package/dist/gateway/static/root/assets/{desktop-pet-settings-MmOR4A3u.js → desktop-pet-settings-YfeVVzLe.js} +1 -1
  36. package/dist/gateway/static/root/assets/dist-DqPZM2MH2.js +1 -0
  37. package/dist/gateway/static/root/assets/{extension-debug-page-DdH0dG2_.js → extension-debug-page-CChgztz_.js} +1 -1
  38. package/dist/gateway/static/root/assets/{extension-page-Clg-KktN.js → extension-page-DF6ct6_y.js} +1 -1
  39. package/dist/gateway/static/root/assets/extension-settings-page-jgBsjn0F.js +1 -0
  40. package/dist/gateway/static/root/assets/{gateway-config-api-DEHnF4Wm.js → gateway-config-api-CVajuIGL.js} +1 -1
  41. package/dist/gateway/static/root/assets/gateway-config-swr-BGQn8duh.js +1 -0
  42. package/dist/gateway/static/root/assets/gateway-settings-BbssNGid.js +1 -0
  43. package/dist/gateway/static/root/assets/{gateway-startup-retry-B_zrtccP.js → gateway-startup-retry-D2Rnh9fX.js} +1 -1
  44. package/dist/gateway/static/root/assets/heartbeat-settings-CJtXu8iD.js +1 -0
  45. package/dist/gateway/static/root/assets/home-page-Be1o1AXQ.js +1 -0
  46. package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +1 -0
  47. package/dist/gateway/static/root/assets/{image-generation-api-YKP2me5Z.js → image-generation-api-D7W2p5_8.js} +1 -1
  48. package/dist/gateway/static/root/assets/index-B2OJSXX9.js +70 -0
  49. package/dist/gateway/static/root/assets/index-rHjAElxG.css +2 -0
  50. package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BvpEeHnm.js → keyboard-shortcuts-settings-BvHYyNus.js} +1 -1
  51. package/dist/gateway/static/root/assets/local-app-workbench-page-COfelgk7.js +2 -0
  52. package/dist/gateway/static/root/assets/{local-apps-page-Bzvn99eH.js → local-apps-page-Cb8t2wWM.js} +1 -1
  53. package/dist/gateway/static/root/assets/locale-store-DLwVxS3V.js +1 -0
  54. package/dist/gateway/static/root/assets/logs-page-DA8oDjeB.js +2 -0
  55. package/dist/gateway/static/root/assets/management-settings-B8Jie4-J.js +1 -0
  56. package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +2 -0
  57. package/dist/gateway/static/root/assets/markdown-split-BD1r4o2i.js +1 -0
  58. package/dist/gateway/static/root/assets/{markdown-view-RxNHwlNo.js → markdown-view-B-BHEcNd.js} +1 -1
  59. package/dist/gateway/static/root/assets/{media-plugins-D8I7OGnT.js → media-plugins-BCev8fkW.js} +1 -1
  60. package/dist/gateway/static/root/assets/messages-Dp1OxSKt.js +3 -0
  61. package/dist/gateway/static/root/assets/mobile-device-api-DACoHhhk.js +1 -0
  62. package/dist/gateway/static/root/assets/{models-hub-cache-0RjEwafI.js → models-hub-cache-C8zjqmIv.js} +1 -1
  63. package/dist/gateway/static/root/assets/{notes-api-EpgG-OQc.js → notes-api-DEdNKw0I.js} +1 -1
  64. package/dist/gateway/static/root/assets/{notes-page-CCvjGMhN.js → notes-page-BBTLjJwa.js} +1 -1
  65. package/dist/gateway/static/root/assets/notes-workbench-DICgUGPv.js +4 -0
  66. package/dist/gateway/static/root/assets/{oauth-api-BwNLwbI8.js → oauth-api-BNCO2YK5.js} +1 -1
  67. package/dist/gateway/static/root/assets/popover-select-3E24E65N.js +1 -0
  68. package/dist/gateway/static/root/assets/{product-open-page-MmMswmOU.js → product-open-page-fEBbRekH.js} +1 -1
  69. package/dist/gateway/static/root/assets/project-detail-page-CqdkznYJ.js +1 -0
  70. package/dist/gateway/static/root/assets/projects-page-dHDXpMCg.js +1 -0
  71. package/dist/gateway/static/root/assets/{registry-api-BFZrVYfy.js → registry-api-Cvr4Qm7N.js} +1 -1
  72. package/dist/gateway/static/root/assets/remote-access-hub-2feZudJw.js +1 -0
  73. package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Dx6o7sLu.js → runtime-tools-settings-panel-BT5B74IH.js} +2 -2
  74. package/dist/gateway/static/root/assets/{schema-form-Cdd9c4vt.js → schema-form-C4tB34S5.js} +1 -1
  75. package/dist/gateway/static/root/assets/sessions-page-CO2JCFdy.js +1 -0
  76. package/dist/gateway/static/root/assets/settings-advanced-gate-DxMVaqdn.js +1 -0
  77. package/dist/gateway/static/root/assets/{settings-form-section-D0YxMnhm.js → settings-form-section-D1oXhkgI.js} +1 -1
  78. package/dist/gateway/static/root/assets/settings-loading-skeleton-CldfX6FJ.js +1 -0
  79. package/dist/gateway/static/root/assets/settings-page-c3LJnbvE.js +1 -0
  80. package/dist/gateway/static/root/assets/settings-shell-layer-context-DCp6ykjQ.js +1 -0
  81. package/dist/gateway/static/root/assets/setup-status-panel-DZNHb6A5.js +1 -0
  82. package/dist/gateway/static/root/assets/{share-preview-page-DiqBn-oE.js → share-preview-page-DptCK_mk.js} +1 -1
  83. package/dist/gateway/static/root/assets/shares-settings-DakZ2AGN.js +1 -0
  84. package/dist/gateway/static/root/assets/skill-reload-api-BOiNkWJC.js +1 -0
  85. package/dist/gateway/static/root/assets/{skills-page-CZwhWiRl.js → skills-page-OHBeBtSg.js} +1 -1
  86. package/dist/gateway/static/root/assets/{skills-page.utils-kBGr8opZ.js → skills-page.utils-B9WZbOLC.js} +1 -1
  87. package/dist/gateway/static/root/assets/{system-settings-panel-CPBs6lWi.js → system-settings-panel-Dj_DpOGw.js} +1 -1
  88. package/dist/gateway/static/root/assets/task-detail-page-D5Nbe3C8.js +1 -0
  89. package/dist/gateway/static/root/assets/{theme-store-Qgvo0Ga7.js → theme-store-Cpd3Gd5R.js} +1 -1
  90. package/dist/gateway/static/root/assets/{use-autosave-C4YcEiP9.js → use-autosave-DCl5Yq7N.js} +1 -1
  91. package/dist/gateway/static/root/assets/user-context-page-CAPSUK8B.js +1 -0
  92. package/dist/gateway/static/root/assets/{vendor-codemirror-DRr7hFaD.js → vendor-codemirror--gTq3YAI.js} +16 -16
  93. package/dist/gateway/static/root/assets/voice-api-key-field-BB_ZQV8F.js +1 -0
  94. package/dist/gateway/static/root/assets/voice-config-api-BNiYmpl5.js +1 -0
  95. package/dist/gateway/static/root/assets/{work-discovery-overlay-CKIdPEen.js → work-discovery-overlay-BrIdtdum.js} +1 -1
  96. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BK44Vm5W.js → workflow-run-setup-panel-hKh-uCLo.js} +2 -2
  97. package/dist/gateway/static/root/assets/workflows-page-ahDvypGO.js +5 -0
  98. package/dist/gateway/static/root/index.html +16 -16
  99. package/dist/package.js +1 -1
  100. package/dist/src/agent/agent-manager.d.ts +1 -2
  101. package/dist/src/agent/agent-manager.js +29 -44
  102. package/dist/src/agent/background-review/run-background-review.js +10 -15
  103. package/dist/src/agent/embedded/run-for-session.js +1 -1
  104. package/dist/src/agent/external-tools/mcp-provider.js +3 -13
  105. package/dist/src/agent/image/generation/runtime.js +1 -1
  106. package/dist/src/agent/image/tool-model-config.js +13 -14
  107. package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -9
  108. package/dist/src/agent/mcp/bundle-mcp-policy.js +1 -13
  109. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  110. package/dist/src/agent/mcp/index.js +2 -2
  111. package/dist/src/agent/media-generation/runtime-shared.d.ts +1 -1
  112. package/dist/src/agent/media-generation/runtime-shared.js +1 -1
  113. package/dist/src/agent/memory/create-memory-manager.js +1 -1
  114. package/dist/src/agent/memory/manager.d.ts +1 -1
  115. package/dist/src/{agent-runtime/memory-runtime.d.ts → agent/memory/runtime.d.ts} +1 -1
  116. package/dist/src/{agent-runtime/memory-runtime.js → agent/memory/runtime.js} +2 -3
  117. package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -3
  118. package/dist/src/agent/orchestration/agent-orchestrator.js +1 -3
  119. package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -2
  120. package/dist/src/agent/service.js +0 -1
  121. package/dist/src/agent/starter-agents.js +1 -8
  122. package/dist/src/agent/tools/executor.d.ts +1 -1
  123. package/dist/src/agent/tools/workflow-tool.js +1 -5
  124. package/dist/src/agent-config/index.d.ts +2 -0
  125. package/dist/src/agent-config/index.js +11 -0
  126. package/dist/src/agent-config/resolver.d.ts +11 -0
  127. package/dist/src/agent-config/resolver.js +113 -0
  128. package/dist/src/agent-config/schema.d.ts +491 -0
  129. package/dist/src/agent-config/schema.js +172 -0
  130. package/dist/src/chat-commands/builtins/config.js +2 -2
  131. package/dist/src/chat-commands/builtins/review.js +1 -1
  132. package/dist/src/chat-commands/config-paths.js +1 -1
  133. package/dist/src/cli/commands/agents.js +2 -1
  134. package/dist/src/cli/commands/config.js +1 -1
  135. package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
  136. package/dist/src/cli/commands/doctor/checks/provider-auth.js +12 -4
  137. package/dist/src/cli/commands/image.js +3 -4
  138. package/dist/src/cli/commands/models.js +9 -3
  139. package/dist/src/cli/commands/onboard/model.js +12 -11
  140. package/dist/src/cli/commands/onboard.js +1 -1
  141. package/dist/src/cli/commands/tunnel.js +3 -18
  142. package/dist/src/cli/utils/init-workspace-core.d.ts +1 -1
  143. package/dist/src/cli/utils/init-workspace-core.js +1 -1
  144. package/dist/src/commands/agents.config.d.ts +1 -3
  145. package/dist/src/commands/agents.config.js +9 -26
  146. package/dist/src/config/agent-model-intents.d.ts +10 -0
  147. package/dist/src/config/agent-model-intents.js +39 -0
  148. package/dist/src/config/agent-profile.d.ts +7 -9
  149. package/dist/src/config/agent-profile.js +30 -28
  150. package/dist/src/config/default-model.d.ts +1 -11
  151. package/dist/src/config/default-model.js +3 -11
  152. package/dist/src/config/index.js +3 -3
  153. package/dist/src/config/integration.d.ts +1 -1
  154. package/dist/src/config/reload.js +1 -1
  155. package/dist/src/config/rules.js +3 -3
  156. package/dist/src/config/schema.d.ts +187 -452
  157. package/dist/src/config/schema.js +53 -131
  158. package/dist/src/extensions/activation-context.js +7 -11
  159. package/dist/src/gateway/agent-builtin-tools.d.ts +250 -6
  160. package/dist/src/gateway/agent-builtin-tools.js +284 -46
  161. package/dist/src/gateway/agents-admin.d.ts +20 -62
  162. package/dist/src/gateway/agents-admin.js +36 -228
  163. package/dist/src/gateway/device-routes.d.ts +3 -0
  164. package/dist/src/gateway/device-routes.js +47 -0
  165. package/dist/src/gateway/global-defaults-admin.d.ts +6 -20
  166. package/dist/src/gateway/global-defaults-admin.js +20 -120
  167. package/dist/src/gateway/hono/app.js +4 -2
  168. package/dist/src/gateway/hono/lib/config-payload.d.ts +54 -137
  169. package/dist/src/gateway/hono/lib/config-payload.js +2 -4
  170. package/dist/src/gateway/hono/middleware/auth.js +33 -1
  171. package/dist/src/gateway/hono/middleware/scopes.d.ts +2 -12
  172. package/dist/src/gateway/hono/middleware/scopes.js +9 -18
  173. package/dist/src/gateway/hono/routes/agents.js +64 -100
  174. package/dist/src/gateway/hono/routes/connectors.js +1 -1
  175. package/dist/src/gateway/hono/routes/device-push.d.ts +2 -0
  176. package/dist/src/gateway/hono/routes/{mobile.js → device-push.js} +40 -18
  177. package/dist/src/gateway/hono/routes/devices.d.ts +4 -0
  178. package/dist/src/gateway/hono/routes/devices.js +214 -0
  179. package/dist/src/gateway/hono/routes/files.js +5 -1
  180. package/dist/src/gateway/hono/routes/global-defaults.js +5 -9
  181. package/dist/src/gateway/hono/routes/index.js +4 -2
  182. package/dist/src/gateway/hono/routes/lazy-bundles.js +4 -20
  183. package/dist/src/gateway/hono/routes/models.js +2 -2
  184. package/dist/src/gateway/hono/routes/realtime.js +8 -1
  185. package/dist/src/gateway/hono/routes/status.js +9 -16
  186. package/dist/src/gateway/hono/routes/tunnel.d.ts +0 -2
  187. package/dist/src/gateway/hono/routes/tunnel.js +10 -199
  188. package/dist/src/gateway/image-generation-setup.d.ts +2 -2
  189. package/dist/src/gateway/image-generation-setup.js +8 -7
  190. package/dist/src/gateway/public-url.d.ts +1 -1
  191. package/dist/src/gateway/security/gateway-principal.d.ts +11 -0
  192. package/dist/src/gateway/security/gateway-principal.js +12 -0
  193. package/dist/src/gateway/security/gateway-scopes.d.ts +7 -0
  194. package/dist/src/gateway/security/gateway-scopes.js +66 -0
  195. package/dist/src/gateway/security/index.d.ts +2 -1
  196. package/dist/src/gateway/security/index.js +3 -2
  197. package/dist/src/gateway/service.js +7 -7
  198. package/dist/src/gateway/xopc-cloud-capability-setup.js +19 -21
  199. package/dist/src/migrations/index.d.ts +0 -1
  200. package/dist/src/migrations/index.js +1 -2
  201. package/dist/src/migrations/runner.js +1 -2
  202. package/dist/src/notifications/device-store.d.ts +1 -1
  203. package/dist/src/notifications/device-store.js +11 -11
  204. package/dist/src/notifications/store.js +3 -3
  205. package/dist/src/providers/index.js +1 -1
  206. package/dist/src/providers/model-reference-auditor.js +14 -9
  207. package/dist/src/realtime/runtime.d.ts +2 -0
  208. package/dist/src/realtime/runtime.js +27 -3
  209. package/dist/src/realtime/tickets.d.ts +6 -1
  210. package/dist/src/realtime/tickets.js +2 -1
  211. package/dist/src/remote-access/exposure-manager.js +3 -3
  212. package/dist/src/share/share-url.js +2 -2
  213. package/dist/src/storage/sqlite/device-access-repository.d.ts +54 -0
  214. package/dist/src/storage/sqlite/device-access-repository.js +194 -0
  215. package/dist/src/storage/sqlite/device-pairing-repository.d.ts +22 -0
  216. package/dist/src/storage/sqlite/device-pairing-repository.js +86 -0
  217. package/dist/src/storage/sqlite/gateway-identity-repository.d.ts +10 -0
  218. package/dist/src/storage/sqlite/gateway-identity-repository.js +50 -0
  219. package/dist/src/storage/sqlite/index.d.ts +3 -0
  220. package/dist/src/storage/sqlite/index.js +4 -1
  221. package/dist/src/storage/sqlite/migrations/138_device_access.sql +96 -0
  222. package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
  223. package/dist/src/storage/sqlite/migrations/runner.js +3 -3
  224. package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
  225. package/dist/src/storage/sqlite/schema.js +1 -1
  226. package/dist/src/tunnel/consent.d.ts +1 -1
  227. package/dist/src/tunnel/consent.js +1 -1
  228. package/dist/src/tunnel/gateway-lifecycle.js +1 -1
  229. package/dist/src/tunnel/index.d.ts +1 -4
  230. package/dist/src/tunnel/index.js +3 -5
  231. package/dist/src/tunnel/tunnel-audit.d.ts +1 -1
  232. package/dist/src/tunnel/tunnel-config.js +1 -1
  233. package/dist/src/tunnel/tunnel-service.d.ts +2 -3
  234. package/dist/src/tunnel/tunnel-service.js +1 -20
  235. package/dist/src/tunnel/tunnel-types.d.ts +0 -6
  236. package/dist/src/workflows/draft/workflow-draft-service.js +2 -2
  237. package/dist/src/workflows/service/workflow-run-service.js +3 -3
  238. package/package.json +3 -3
  239. package/dist/gateway/static/root/assets/agent-avatar-dicebear-CBqUnlvL.js +0 -1
  240. package/dist/gateway/static/root/assets/agents-7YO6znTT.js +0 -68
  241. package/dist/gateway/static/root/assets/api-BywYxpaS.js +0 -1
  242. package/dist/gateway/static/root/assets/automations-workspace-BpvD54D6.js +0 -6
  243. package/dist/gateway/static/root/assets/browser-settings-page-CeESA4Oj.js +0 -8
  244. package/dist/gateway/static/root/assets/browser-workflow-inputs-8NC2qDRF.js +0 -1
  245. package/dist/gateway/static/root/assets/capabilities-settings-panel-B_OXTojB.js +0 -7
  246. package/dist/gateway/static/root/assets/capability-presets-api-o0y9WgAI.js +0 -1
  247. package/dist/gateway/static/root/assets/capability-presets-settings-panel-D5nZecxV.js +0 -3
  248. package/dist/gateway/static/root/assets/channels-settings-BzmnWx6X.js +0 -1
  249. package/dist/gateway/static/root/assets/channels-status-swr-38FsOnR0.js +0 -1
  250. package/dist/gateway/static/root/assets/connectors-page-DX6OkwFQ.js +0 -2
  251. package/dist/gateway/static/root/assets/cron-expression-DYSMZsms.js +0 -2
  252. package/dist/gateway/static/root/assets/date-picker-DGCfX4tK.js +0 -1
  253. package/dist/gateway/static/root/assets/dependency-picker-DHDa4ht1.js +0 -1
  254. package/dist/gateway/static/root/assets/directory-picker-path-field-B9qoxDcn.js +0 -1
  255. package/dist/gateway/static/root/assets/dist-J_ySZvz0.js +0 -1
  256. package/dist/gateway/static/root/assets/extension-settings-page-eP3fJ2M6.js +0 -1
  257. package/dist/gateway/static/root/assets/file-code-corner-byQA1VfD.js +0 -1
  258. package/dist/gateway/static/root/assets/gateway-config-swr-BWGjnmDl.js +0 -1
  259. package/dist/gateway/static/root/assets/gateway-settings-DKkEXXj9.js +0 -1
  260. package/dist/gateway/static/root/assets/heartbeat-settings-DlBPNubY.js +0 -1
  261. package/dist/gateway/static/root/assets/home-page-BnOrLRfs.js +0 -1
  262. package/dist/gateway/static/root/assets/html-workspace-editor-bXK5tq64.js +0 -1
  263. package/dist/gateway/static/root/assets/index-0xQO5B_Q.js +0 -70
  264. package/dist/gateway/static/root/assets/index-CCyIdGuQ.css +0 -2
  265. package/dist/gateway/static/root/assets/local-app-workbench-page-Ch1rdUo8.js +0 -2
  266. package/dist/gateway/static/root/assets/locale-store-CXhjfe4q.js +0 -1
  267. package/dist/gateway/static/root/assets/logs-page-zxx2ExlY.js +0 -2
  268. package/dist/gateway/static/root/assets/management-settings-BQaeyOYm.js +0 -1
  269. package/dist/gateway/static/root/assets/markdown-editor-TWGaF7Xa.js +0 -2
  270. package/dist/gateway/static/root/assets/markdown-split-D9tmIiEm.js +0 -1
  271. package/dist/gateway/static/root/assets/messages-BMdD0LWk.js +0 -3
  272. package/dist/gateway/static/root/assets/notes-workbench-9cgh77VH.js +0 -4
  273. package/dist/gateway/static/root/assets/popover-select-CccGri5Y.js +0 -1
  274. package/dist/gateway/static/root/assets/project-detail-page-hf6pmH4p.js +0 -1
  275. package/dist/gateway/static/root/assets/projects-page-By2U-Wdh.js +0 -1
  276. package/dist/gateway/static/root/assets/remote-access-hub-CUcpp7CQ.js +0 -1
  277. package/dist/gateway/static/root/assets/sessions-page-ByI82xS1.js +0 -1
  278. package/dist/gateway/static/root/assets/settings-advanced-gate-BCoI5IJ8.js +0 -1
  279. package/dist/gateway/static/root/assets/settings-loading-skeleton-y53gEKsF.js +0 -1
  280. package/dist/gateway/static/root/assets/settings-page-BoE_tToG.js +0 -1
  281. package/dist/gateway/static/root/assets/setup-status-panel-BQmyb5KC.js +0 -1
  282. package/dist/gateway/static/root/assets/shares-settings-Bf3VpZ-R.js +0 -1
  283. package/dist/gateway/static/root/assets/skill-reload-api-CXHlbuGS.js +0 -1
  284. package/dist/gateway/static/root/assets/task-detail-page-Bo0KSZ2v.js +0 -1
  285. package/dist/gateway/static/root/assets/typed-models-lib-q5-Vfqd8.js +0 -1
  286. package/dist/gateway/static/root/assets/user-context-page-Cnj7gMX2.js +0 -1
  287. package/dist/gateway/static/root/assets/voice-api-key-field-BML8zCwZ.js +0 -1
  288. package/dist/gateway/static/root/assets/workflows-page-CB98MTwG.js +0 -5
  289. package/dist/src/agent-manifest/index.d.ts +0 -5
  290. package/dist/src/agent-manifest/index.js +0 -10
  291. package/dist/src/agent-manifest/preset-chain.d.ts +0 -10
  292. package/dist/src/agent-manifest/preset-chain.js +0 -30
  293. package/dist/src/agent-manifest/prompt.d.ts +0 -2
  294. package/dist/src/agent-manifest/prompt.js +0 -49
  295. package/dist/src/agent-manifest/resolver.d.ts +0 -32
  296. package/dist/src/agent-manifest/resolver.js +0 -114
  297. package/dist/src/agent-manifest/schema.d.ts +0 -695
  298. package/dist/src/agent-manifest/schema.js +0 -226
  299. package/dist/src/agent-manifest/validator.d.ts +0 -25
  300. package/dist/src/agent-manifest/validator.js +0 -74
  301. package/dist/src/agent-runtime/boundary-guard.d.ts +0 -12
  302. package/dist/src/agent-runtime/boundary-guard.js +0 -21
  303. package/dist/src/agent-runtime/index.d.ts +0 -7
  304. package/dist/src/agent-runtime/index.js +0 -8
  305. package/dist/src/agent-runtime/model-router.d.ts +0 -11
  306. package/dist/src/agent-runtime/model-router.js +0 -14
  307. package/dist/src/agent-runtime/run-trace.d.ts +0 -27
  308. package/dist/src/agent-runtime/run-trace.js +0 -51
  309. package/dist/src/agent-runtime/runtime-profile.d.ts +0 -26
  310. package/dist/src/agent-runtime/runtime-profile.js +0 -42
  311. package/dist/src/agent-runtime/tool-registry.d.ts +0 -28
  312. package/dist/src/agent-runtime/tool-registry.js +0 -50
  313. package/dist/src/agent-runtime/workflow-runtime.d.ts +0 -31
  314. package/dist/src/agent-runtime/workflow-runtime.js +0 -32
  315. package/dist/src/config/agent-typed-models.d.ts +0 -13
  316. package/dist/src/config/agent-typed-models.js +0 -48
  317. package/dist/src/gateway/capability-presets-admin.d.ts +0 -88
  318. package/dist/src/gateway/capability-presets-admin.js +0 -303
  319. package/dist/src/gateway/hono/lib/agent-model.d.ts +0 -35
  320. package/dist/src/gateway/hono/lib/agent-model.js +0 -97
  321. package/dist/src/gateway/hono/routes/capability-presets.d.ts +0 -3
  322. package/dist/src/gateway/hono/routes/capability-presets.js +0 -187
  323. package/dist/src/gateway/hono/routes/mobile.d.ts +0 -3
  324. package/dist/src/gateway/security/operator-scopes.d.ts +0 -37
  325. package/dist/src/gateway/security/operator-scopes.js +0 -147
  326. package/dist/src/migrations/config/default-capability-preset.d.ts +0 -10
  327. package/dist/src/migrations/config/default-capability-preset.js +0 -133
  328. package/dist/src/tunnel/enable-lan-pairing.d.ts +0 -8
  329. package/dist/src/tunnel/enable-lan-pairing.js +0 -41
  330. package/dist/src/tunnel/pair-context.d.ts +0 -36
  331. package/dist/src/tunnel/pair-context.js +0 -77
  332. package/dist/src/tunnel/pair-url.d.ts +0 -43
  333. package/dist/src/tunnel/pair-url.js +0 -117
  334. package/dist/src/tunnel/pairing-rate-limit.d.ts +0 -12
  335. package/dist/src/tunnel/pairing-rate-limit.js +0 -28
  336. package/dist/src/tunnel/pairing.d.ts +0 -21
  337. package/dist/src/tunnel/pairing.js +0 -103
  338. package/dist/src/tunnel/tunnel-qr.d.ts +0 -9
  339. package/dist/src/tunnel/tunnel-qr.js +0 -29
@@ -1,32 +0,0 @@
1
- //#region src/agent-runtime/workflow-runtime.ts
2
- function resolveWorkflow(params) {
3
- const catalog = new Map([...params.catalog].map((workflow) => [workflow.id, workflow]));
4
- const intent = params.intent?.trim().toLowerCase();
5
- const suggested = intent ? params.manifest.workflows.suggested?.find((entry) => entry.intent.toLowerCase() === intent) : void 0;
6
- const id = suggested?.workflow ?? params.manifest.workflows.default;
7
- if (!id) return { reason: "no workflow configured" };
8
- if (params.manifest.workflows.allowed && !params.manifest.workflows.allowed.includes(id)) return { reason: `workflow "${id}" is not allowed by manifest` };
9
- const workflow = catalog.get(id);
10
- if (!workflow) return { reason: `workflow "${id}" is not in the workflow catalog` };
11
- return {
12
- workflow,
13
- reason: suggested ? `matched intent "${suggested.intent}"` : "using default workflow"
14
- };
15
- }
16
- function validateWorkflowForRuntime(params) {
17
- const issues = [];
18
- const availableTools = new Set(params.tools.tools.map((entry) => entry.name));
19
- for (const [phaseIndex, phase] of params.workflow.phases.entries()) {
20
- if (phase.modelRole && !params.manifest.models.roles[phase.modelRole]) issues.push({
21
- path: `phases.${phaseIndex}.modelRole`,
22
- message: `model role "${phase.modelRole}" is not configured`
23
- });
24
- for (const toolName of phase.requiredTools ?? []) if (!availableTools.has(toolName)) issues.push({
25
- path: `phases.${phaseIndex}.requiredTools`,
26
- message: `required tool "${toolName}" is not available at runtime`
27
- });
28
- }
29
- return issues;
30
- }
31
- //#endregion
32
- export { resolveWorkflow, validateWorkflowForRuntime };
@@ -1,13 +0,0 @@
1
- /**
2
- * Named model roles from the selected agent manifest.
3
- */
4
- import type { AgentTypedModel, Config } from './schema.js';
5
- export type { AgentTypedModel };
6
- export declare function resolveEffectiveTypedModels(config: Config, agentId: string): Map<string, AgentTypedModel>;
7
- /** Resolve a typed model id to `provider/model`, or undefined when not configured. */
8
- export declare function resolveTypedModelRef(config: Config, agentId: string, typeId: string): string | undefined;
9
- /**
10
- * Resolve a model reference: `provider/model`, typed id (`small`), or `@small`.
11
- * Throws when the ref is invalid or the typed id is unknown.
12
- */
13
- export declare function resolveModelRef(config: Config, agentId: string, ref: string): string;
@@ -1,48 +0,0 @@
1
- import { init_schema, parseModelRef } from "./schema.js";
2
- import { resolveEffectiveAgentManifestForAgent } from "./agent-profile.js";
3
- //#region src/config/agent-typed-models.ts
4
- init_schema();
5
- function rolesToEntries(roles) {
6
- return Object.entries(roles ?? {}).map(([id, role]) => ({
7
- id,
8
- ...role
9
- }));
10
- }
11
- function resolveEffectiveTypedModels(config, agentId) {
12
- const out = /* @__PURE__ */ new Map();
13
- const manifest = resolveEffectiveAgentManifestForAgent(config, agentId);
14
- for (const modelRole of rolesToEntries(manifest.models.roles)) out.set(modelRole.id, modelRole);
15
- return out;
16
- }
17
- /** Resolve a typed model id to `provider/model`, or undefined when not configured. */
18
- function resolveTypedModelRef(config, agentId, typeId) {
19
- return resolveEffectiveTypedModels(config, agentId).get(typeId)?.model?.trim() || void 0;
20
- }
21
- function parseModelRefInput(ref) {
22
- const trimmed = ref.trim();
23
- if (!trimmed) return {};
24
- if (trimmed.includes("/")) return { directRef: trimmed };
25
- const typeId = trimmed.startsWith("@") ? trimmed.slice(1).trim() : trimmed;
26
- return typeId ? { typeId } : {};
27
- }
28
- /**
29
- * Resolve a model reference: `provider/model`, typed id (`small`), or `@small`.
30
- * Throws when the ref is invalid or the typed id is unknown.
31
- */
32
- function resolveModelRef(config, agentId, ref) {
33
- const { directRef, typeId } = parseModelRefInput(ref);
34
- if (directRef) {
35
- if (!parseModelRef(directRef)) throw new Error(`model ref must be provider/model format (got '${directRef}')`);
36
- return directRef;
37
- }
38
- if (typeId) {
39
- const resolved = resolveTypedModelRef(config, agentId, typeId);
40
- if (resolved) return resolved;
41
- const available = [...resolveEffectiveTypedModels(config, agentId).keys()];
42
- const hint = available.length > 0 ? ` (available: ${available.join(", ")})` : " (none configured)";
43
- throw new Error(`Unknown typed model id '${typeId}' for agent '${agentId}'${hint}`);
44
- }
45
- throw new Error("model ref must not be empty");
46
- }
47
- //#endregion
48
- export { resolveEffectiveTypedModels, resolveModelRef, resolveTypedModelRef };
@@ -1,88 +0,0 @@
1
- import { type CapabilityPreset } from '../agent-manifest/schema.js';
2
- import { resolveCapabilityPresetLayer } from '../agent-manifest/resolver.js';
3
- import type { Config } from '../config/schema.js';
4
- export type CapabilityPresetAdminResult<T> = {
5
- ok: true;
6
- data: T;
7
- } | {
8
- ok: false;
9
- error: string;
10
- status?: 400 | 404 | 409 | 500;
11
- };
12
- export type CapabilityPresetAgentUsage = {
13
- agentId: string;
14
- agentName?: string;
15
- direct: boolean;
16
- };
17
- export type CapabilityPresetRow = CapabilityPreset & {
18
- usage: CapabilityPresetAgentUsage[];
19
- inherited: ReturnType<typeof resolveCapabilityPresetLayer>['patch'];
20
- inheritedSources: Record<string, string>;
21
- };
22
- export type CapabilityPresetsListResponse = {
23
- defaultPresetId: string;
24
- presets: CapabilityPresetRow[];
25
- agents: Array<{
26
- id: string;
27
- name?: string;
28
- extends: string[];
29
- }>;
30
- builtinToolIds: string[];
31
- mcpServerIds: string[];
32
- workflows: Array<{
33
- id: string;
34
- title: string;
35
- description: string;
36
- }>;
37
- };
38
- export type CapabilityPresetPreviewDiff = {
39
- path: string;
40
- before?: unknown;
41
- after?: unknown;
42
- };
43
- export type CapabilityPresetPreviewAgent = {
44
- agentId: string;
45
- agentName?: string;
46
- diffs: CapabilityPresetPreviewDiff[];
47
- };
48
- export type CreateCapabilityPresetBody = {
49
- id?: string;
50
- name?: string;
51
- description?: string;
52
- version?: number;
53
- extends?: CapabilityPreset['extends'];
54
- models?: CapabilityPreset['models'];
55
- tools?: CapabilityPreset['tools'];
56
- skills?: CapabilityPreset['skills'];
57
- workflows?: CapabilityPreset['workflows'];
58
- boundaries?: CapabilityPreset['boundaries'];
59
- runtime?: CapabilityPreset['runtime'];
60
- locks?: CapabilityPreset['locks'];
61
- };
62
- export type UpdateCapabilityPresetBody = {
63
- name?: string;
64
- description?: string | null;
65
- version?: number;
66
- extends?: string[] | null;
67
- models?: CapabilityPreset['models'] | null;
68
- tools?: CapabilityPreset['tools'] | null;
69
- skills?: CapabilityPreset['skills'] | null;
70
- workflows?: CapabilityPreset['workflows'] | null;
71
- boundaries?: CapabilityPreset['boundaries'] | null;
72
- runtime?: CapabilityPreset['runtime'] | null;
73
- locks?: string[] | null;
74
- };
75
- export declare function listCapabilityPresets(cfg: Config): CapabilityPresetsListResponse;
76
- export declare function prepareCreateCapabilityPreset(cfg: Config, body: CreateCapabilityPresetBody): CapabilityPresetAdminResult<{
77
- nextConfig: Config;
78
- presetId: string;
79
- }>;
80
- export declare function prepareUpdateCapabilityPreset(cfg: Config, presetIdRaw: string, body: UpdateCapabilityPresetBody): CapabilityPresetAdminResult<{
81
- nextConfig: Config;
82
- }>;
83
- export declare function previewCapabilityPresetUpdate(cfg: Config, presetIdRaw: string, body: UpdateCapabilityPresetBody): CapabilityPresetAdminResult<{
84
- agents: CapabilityPresetPreviewAgent[];
85
- }>;
86
- export declare function prepareDeleteCapabilityPreset(cfg: Config, presetIdRaw: string): CapabilityPresetAdminResult<{
87
- nextConfig: Config;
88
- }>;
@@ -1,303 +0,0 @@
1
- import { CapabilityPresetSchema, init_schema } from "../agent-manifest/schema.js";
2
- import { init_preset_chain, linearizePresetIds } from "../agent-manifest/preset-chain.js";
3
- import { resolveCapabilityPresetLayer, resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
4
- import { normalizeConfiguredMcpServers } from "../config/mcp-config-normalize.js";
5
- import { GATEWAY_BUILTIN_TOOL_IDS } from "./agent-builtin-tools.js";
6
- import { createWorkflowCatalog } from "../agent/workflow/catalog.js";
7
- //#region src/gateway/capability-presets-admin.ts
8
- init_schema();
9
- init_preset_chain();
10
- function presetMap(cfg) {
11
- return cfg.agents.capabilityPresets ?? {};
12
- }
13
- function normalizePresetId(id) {
14
- return id.trim().toLowerCase();
15
- }
16
- function flattenPolicy(value, path = "", out = /* @__PURE__ */ new Map()) {
17
- if (Array.isArray(value) || value === null || typeof value !== "object") {
18
- if (path) out.set(path, value);
19
- return out;
20
- }
21
- for (const [key, child] of Object.entries(value)) flattenPolicy(child, path ? `${path}.${key}` : key, out);
22
- return out;
23
- }
24
- function manifestDiff(before, after) {
25
- const beforeFlat = flattenPolicy(before);
26
- const afterFlat = flattenPolicy(after);
27
- return [...new Set([...beforeFlat.keys(), ...afterFlat.keys()])].filter((path) => JSON.stringify(beforeFlat.get(path)) !== JSON.stringify(afterFlat.get(path))).sort((a, b) => a.localeCompare(b)).map((path) => ({
28
- path,
29
- ...beforeFlat.has(path) ? { before: beforeFlat.get(path) } : {},
30
- ...afterFlat.has(path) ? { after: afterFlat.get(path) } : {}
31
- }));
32
- }
33
- function agentUsage(cfg, presetId) {
34
- const defaultPresetId = cfg.agents.defaultPreset || "default";
35
- return cfg.agents.list.filter((agent) => {
36
- return linearizePresetIds([...cfg.agents.capabilityPresets[defaultPresetId] ? [defaultPresetId] : [], ...(agent.extends ?? []).filter((id) => id !== defaultPresetId)], cfg.agents.capabilityPresets).includes(presetId);
37
- }).map((agent) => ({
38
- agentId: agent.id,
39
- ...agent.identity.name ? { agentName: agent.identity.name } : {},
40
- direct: presetId === defaultPresetId || (agent.extends ?? []).includes(presetId)
41
- })).sort((a, b) => a.agentId.localeCompare(b.agentId));
42
- }
43
- function validatePresetReferences(presets) {
44
- for (const [id, preset] of Object.entries(presets)) for (const parent of preset.extends ?? []) if (!presets[parent]) return {
45
- ok: false,
46
- error: `capability preset "${id}" extends missing preset "${parent}"`,
47
- status: 400
48
- };
49
- const visiting = /* @__PURE__ */ new Set();
50
- const visited = /* @__PURE__ */ new Set();
51
- const visit = (id, stack) => {
52
- if (visiting.has(id)) return {
53
- ok: false,
54
- error: `capability preset cycle detected: ${[...stack, id].join(" -> ")}`,
55
- status: 400
56
- };
57
- if (visited.has(id)) return {
58
- ok: true,
59
- data: void 0
60
- };
61
- visiting.add(id);
62
- for (const parent of presets[id]?.extends ?? []) {
63
- const res = visit(parent, [...stack, id]);
64
- if (!res.ok) return res;
65
- }
66
- visiting.delete(id);
67
- visited.add(id);
68
- return {
69
- ok: true,
70
- data: void 0
71
- };
72
- };
73
- for (const id of Object.keys(presets)) {
74
- const res = visit(id, []);
75
- if (!res.ok) return res;
76
- }
77
- return {
78
- ok: true,
79
- data: void 0
80
- };
81
- }
82
- function validateAgentPresetReferences(cfg) {
83
- const presets = presetMap(cfg);
84
- for (const agent of cfg.agents.list) for (const presetId of agent.extends ?? []) if (!presets[presetId]) return {
85
- ok: false,
86
- error: `agent "${agent.id}" extends missing preset "${presetId}"`,
87
- status: 400
88
- };
89
- return {
90
- ok: true,
91
- data: void 0
92
- };
93
- }
94
- function nextConfigWithPresets(cfg, presets) {
95
- const refs = validatePresetReferences(presets);
96
- if (refs.ok === false) return {
97
- ok: false,
98
- error: refs.error,
99
- status: refs.status
100
- };
101
- const nextConfig = {
102
- ...cfg,
103
- agents: {
104
- ...cfg.agents,
105
- capabilityPresets: presets
106
- }
107
- };
108
- const agentRefs = validateAgentPresetReferences(nextConfig);
109
- if (agentRefs.ok === false) return {
110
- ok: false,
111
- error: agentRefs.error,
112
- status: agentRefs.status
113
- };
114
- for (const agent of nextConfig.agents.list) try {
115
- resolveEffectiveAgentManifest({
116
- agent,
117
- presets,
118
- defaultPresetId: nextConfig.agents.defaultPreset
119
- });
120
- } catch (error) {
121
- const message = error instanceof Error ? error.message : String(error);
122
- return {
123
- ok: false,
124
- error: `agent "${agent.id}" effective manifest is invalid: ${message}`,
125
- status: 400
126
- };
127
- }
128
- return {
129
- ok: true,
130
- data: { nextConfig }
131
- };
132
- }
133
- function listCapabilityPresets(cfg) {
134
- const presets = Object.values(presetMap(cfg)).map((preset) => {
135
- const inherited = resolveCapabilityPresetLayer({
136
- presetIds: preset.extends,
137
- presets: cfg.agents.capabilityPresets,
138
- defaultPresetId: preset.id === cfg.agents.defaultPreset ? "__none__" : cfg.agents.defaultPreset
139
- });
140
- return {
141
- ...preset,
142
- usage: agentUsage(cfg, preset.id),
143
- inherited: inherited.patch,
144
- inheritedSources: inherited.sources
145
- };
146
- }).sort((a, b) => a.id.localeCompare(b.id));
147
- const agents = cfg.agents.list.map((agent) => ({
148
- id: agent.id,
149
- ...agent.identity.name ? { name: agent.identity.name } : {},
150
- extends: [...agent.extends ?? []]
151
- })).sort((a, b) => a.id.localeCompare(b.id));
152
- const workflows = createWorkflowCatalog().list().map((entry) => ({
153
- id: entry.name,
154
- title: entry.title,
155
- description: entry.description
156
- }));
157
- return {
158
- defaultPresetId: cfg.agents.defaultPreset,
159
- presets,
160
- agents,
161
- builtinToolIds: [...GATEWAY_BUILTIN_TOOL_IDS],
162
- mcpServerIds: Object.keys(normalizeConfiguredMcpServers(cfg.mcp?.servers)).sort(),
163
- workflows
164
- };
165
- }
166
- function prepareCreateCapabilityPreset(cfg, body) {
167
- const id = normalizePresetId(body.id ?? "");
168
- const name = body.name?.trim() || id;
169
- const description = body.description?.trim();
170
- const { id: _id, name: _name, description: _description, ...policy } = body;
171
- const parsed = CapabilityPresetSchema.safeParse({
172
- ...policy,
173
- id,
174
- name,
175
- version: body.version ?? 1,
176
- ...description ? { description } : {}
177
- });
178
- if (!parsed.success) return {
179
- ok: false,
180
- error: parsed.error.issues[0]?.message ?? "capability preset is invalid",
181
- status: 400
182
- };
183
- const presets = presetMap(cfg);
184
- if (presets[id]) return {
185
- ok: false,
186
- error: `capability preset "${id}" already exists`,
187
- status: 409
188
- };
189
- const next = nextConfigWithPresets(cfg, {
190
- ...presets,
191
- [id]: parsed.data
192
- });
193
- if (next.ok === false) return {
194
- ok: false,
195
- error: next.error,
196
- status: next.status
197
- };
198
- return {
199
- ok: true,
200
- data: {
201
- ...next.data,
202
- presetId: id
203
- }
204
- };
205
- }
206
- function prepareUpdateCapabilityPreset(cfg, presetIdRaw, body) {
207
- const presetId = normalizePresetId(presetIdRaw);
208
- const presets = presetMap(cfg);
209
- const current = presets[presetId];
210
- if (!current) return {
211
- ok: false,
212
- error: `capability preset "${presetId}" not found`,
213
- status: 404
214
- };
215
- const nextPreset = { ...current };
216
- if (body.name !== void 0) {
217
- const name = body.name.trim();
218
- if (!name) return {
219
- ok: false,
220
- error: "name must be a non-empty string",
221
- status: 400
222
- };
223
- nextPreset.name = name;
224
- }
225
- if (body.description !== void 0) if (body.description === null || !body.description.trim()) delete nextPreset.description;
226
- else nextPreset.description = body.description.trim();
227
- nextPreset.version = body.version ?? current.version + 1;
228
- for (const key of [
229
- "extends",
230
- "models",
231
- "tools",
232
- "skills",
233
- "workflows",
234
- "boundaries",
235
- "runtime",
236
- "locks"
237
- ]) {
238
- if (body[key] === void 0) continue;
239
- if (body[key] === null) delete nextPreset[key];
240
- else nextPreset[key] = body[key];
241
- }
242
- const parsed = CapabilityPresetSchema.safeParse(nextPreset);
243
- if (!parsed.success) return {
244
- ok: false,
245
- error: parsed.error.issues[0]?.message ?? "capability preset is invalid",
246
- status: 400
247
- };
248
- return nextConfigWithPresets(cfg, {
249
- ...presets,
250
- [presetId]: parsed.data
251
- });
252
- }
253
- function previewCapabilityPresetUpdate(cfg, presetIdRaw, body) {
254
- const prepared = prepareUpdateCapabilityPreset(cfg, presetIdRaw, body);
255
- if (prepared.ok === false) return prepared;
256
- return {
257
- ok: true,
258
- data: { agents: cfg.agents.list.flatMap((agent) => {
259
- const before = resolveEffectiveAgentManifest({
260
- agent,
261
- presets: cfg.agents.capabilityPresets,
262
- defaultPresetId: cfg.agents.defaultPreset
263
- }).manifest;
264
- const after = resolveEffectiveAgentManifest({
265
- agent,
266
- presets: prepared.data.nextConfig.agents.capabilityPresets,
267
- defaultPresetId: prepared.data.nextConfig.agents.defaultPreset
268
- }).manifest;
269
- const diffs = manifestDiff(before, after);
270
- if (diffs.length === 0) return [];
271
- return [{
272
- agentId: agent.id,
273
- ...agent.identity.name ? { agentName: agent.identity.name } : {},
274
- diffs
275
- }];
276
- }) }
277
- };
278
- }
279
- function prepareDeleteCapabilityPreset(cfg, presetIdRaw) {
280
- const presetId = normalizePresetId(presetIdRaw);
281
- const presets = presetMap(cfg);
282
- if (!presets[presetId]) return {
283
- ok: false,
284
- error: `capability preset "${presetId}" not found`,
285
- status: 404
286
- };
287
- if (presetId === cfg.agents.defaultPreset) return {
288
- ok: false,
289
- error: `capability preset "${presetId}" is the global default and cannot be deleted`,
290
- status: 409
291
- };
292
- const usage = agentUsage(cfg, presetId);
293
- if (usage.length > 0) return {
294
- ok: false,
295
- error: `capability preset "${presetId}" is used by agents: ${usage.map((u) => u.agentId).join(", ")}`,
296
- status: 409
297
- };
298
- const nextPresets = { ...presets };
299
- delete nextPresets[presetId];
300
- return nextConfigWithPresets(cfg, nextPresets);
301
- }
302
- //#endregion
303
- export { listCapabilityPresets, prepareCreateCapabilityPreset, prepareDeleteCapabilityPreset, prepareUpdateCapabilityPreset, previewCapabilityPresetUpdate };
@@ -1,35 +0,0 @@
1
- import type { AgentTypedModel } from '../../../config/schema.js';
2
- /**
3
- * Coerce PATCH body `{ roles: Record<id, role> }` into validated typed model roles.
4
- * Returns `null` to clear, `undefined` when input should be skipped, or cleaned roles.
5
- * Empty roles after filtering → `null` (same as clear).
6
- */
7
- export declare function normalizePatchTypedModels(v: unknown): Record<string, Omit<AgentTypedModel, 'id'>> | null | undefined;
8
- /** Read `primary` from an `AgentModelConfig` object. */
9
- export declare function agentModelRefToString(ref: unknown): string | undefined;
10
- export declare function agentModelFallbacksToArray(ref: unknown): string[];
11
- /**
12
- * Coerce a PATCH body `model` value into the canonical `{ primary, fallbacks? }`
13
- * object form. Returns `undefined` when the input has no usable primary so the
14
- * caller can skip the assignment.
15
- */
16
- export declare function normalizePatchAgentModel(v: unknown): {
17
- primary: string;
18
- fallbacks?: string[];
19
- } | undefined;
20
- /** Read `timeoutMs` from an image-generation model ref (only set when ref is an object). */
21
- export declare function agentImageGenerationModelTimeoutMs(ref: unknown): number | null;
22
- /** Read `autoProviderFallback` from an image-generation model ref. Defaults to false. */
23
- export declare function agentImageGenerationModelAutoProviderFallback(ref: unknown): boolean;
24
- /**
25
- * PATCH body normalizer for image-generation model refs. Always
26
- * emits `{ primary, fallbacks?, timeoutMs?, autoProviderFallback? }`. Returns
27
- * `undefined` when the input has no usable primary so the caller can skip the
28
- * assignment.
29
- */
30
- export declare function normalizePatchAgentImageGenerationModel(v: unknown): {
31
- primary: string;
32
- fallbacks?: string[];
33
- timeoutMs?: number;
34
- autoProviderFallback?: true;
35
- } | undefined;
@@ -1,97 +0,0 @@
1
- //#region src/gateway/hono/lib/agent-model.ts
2
- const TYPED_MODEL_ID_RE = /^[a-z][a-z0-9_-]{0,63}$/;
3
- function isValidProviderModelRef(ref) {
4
- const trimmed = ref.trim();
5
- const idx = trimmed.indexOf("/");
6
- return idx > 0 && idx < trimmed.length - 1;
7
- }
8
- /**
9
- * Coerce PATCH body `{ roles: Record<id, role> }` into validated typed model roles.
10
- * Returns `null` to clear, `undefined` when input should be skipped, or cleaned roles.
11
- * Empty roles after filtering → `null` (same as clear).
12
- */
13
- function normalizePatchTypedModels(v) {
14
- if (v === void 0) return void 0;
15
- if (v === null) return null;
16
- if (!v || typeof v !== "object" || Array.isArray(v) || !("roles" in v)) return void 0;
17
- const rawRoles = v.roles;
18
- if (!rawRoles || typeof rawRoles !== "object" || Array.isArray(rawRoles)) return void 0;
19
- const rows = Object.entries(rawRoles).map(([id, role]) => ({
20
- id,
21
- ...role
22
- }));
23
- const byId = /* @__PURE__ */ new Map();
24
- for (const raw of rows) {
25
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) continue;
26
- const o = raw;
27
- const id = typeof o.id === "string" ? o.id.trim() : "";
28
- const model = typeof o.model === "string" ? o.model.trim() : "";
29
- if (!id || !TYPED_MODEL_ID_RE.test(id) || !model || !isValidProviderModelRef(model)) continue;
30
- const description = typeof o.description === "string" && o.description.trim() ? o.description.trim().slice(0, 500) : void 0;
31
- byId.set(id, description ? {
32
- description,
33
- model
34
- } : { model });
35
- }
36
- if (byId.size === 0) return null;
37
- return Object.fromEntries(byId.entries());
38
- }
39
- /** Read `primary` from an `AgentModelConfig` object. */
40
- function agentModelRefToString(ref) {
41
- if (!ref || typeof ref !== "object" || Array.isArray(ref)) return void 0;
42
- const p = ref.primary;
43
- return typeof p === "string" && p.trim() ? p : void 0;
44
- }
45
- function agentModelFallbacksToArray(ref) {
46
- if (!ref || typeof ref !== "object" || Array.isArray(ref)) return [];
47
- const f = ref.fallbacks;
48
- if (!Array.isArray(f)) return [];
49
- return f.filter((x) => typeof x === "string" && x.trim().length > 0);
50
- }
51
- /**
52
- * Coerce a PATCH body `model` value into the canonical `{ primary, fallbacks? }`
53
- * object form. Returns `undefined` when the input has no usable primary so the
54
- * caller can skip the assignment.
55
- */
56
- function normalizePatchAgentModel(v) {
57
- if (!v || typeof v !== "object" || Array.isArray(v)) return void 0;
58
- const o = v;
59
- const primary = typeof o.primary === "string" ? o.primary.trim() : "";
60
- if (!primary) return void 0;
61
- const fallbacks = Array.isArray(o.fallbacks) ? o.fallbacks.filter((x) => typeof x === "string" && x.trim().length > 0) : [];
62
- return fallbacks.length > 0 ? {
63
- primary,
64
- fallbacks
65
- } : { primary };
66
- }
67
- /** Read `timeoutMs` from an image-generation model ref (only set when ref is an object). */
68
- function agentImageGenerationModelTimeoutMs(ref) {
69
- if (!ref || typeof ref !== "object" || Array.isArray(ref)) return null;
70
- const v = ref.timeoutMs;
71
- return typeof v === "number" && Number.isFinite(v) && v > 0 ? v : null;
72
- }
73
- /** Read `autoProviderFallback` from an image-generation model ref. Defaults to false. */
74
- function agentImageGenerationModelAutoProviderFallback(ref) {
75
- if (!ref || typeof ref !== "object" || Array.isArray(ref)) return false;
76
- return ref.autoProviderFallback === true;
77
- }
78
- /**
79
- * PATCH body normalizer for image-generation model refs. Always
80
- * emits `{ primary, fallbacks?, timeoutMs?, autoProviderFallback? }`. Returns
81
- * `undefined` when the input has no usable primary so the caller can skip the
82
- * assignment.
83
- */
84
- function normalizePatchAgentImageGenerationModel(v) {
85
- if (!v || typeof v !== "object" || Array.isArray(v)) return void 0;
86
- const o = v;
87
- const primary = typeof o.primary === "string" ? o.primary.trim() : "";
88
- if (!primary) return void 0;
89
- const out = { primary };
90
- const fallbacks = Array.isArray(o.fallbacks) ? o.fallbacks.filter((x) => typeof x === "string" && x.trim().length > 0).map((x) => x.trim()) : [];
91
- if (fallbacks.length > 0) out.fallbacks = fallbacks;
92
- if (typeof o.timeoutMs === "number" && Number.isFinite(o.timeoutMs) && o.timeoutMs > 0) out.timeoutMs = Math.floor(o.timeoutMs);
93
- if (o.autoProviderFallback === true) out.autoProviderFallback = true;
94
- return out;
95
- }
96
- //#endregion
97
- export { agentImageGenerationModelAutoProviderFallback, agentImageGenerationModelTimeoutMs, agentModelFallbacksToArray, agentModelRefToString, normalizePatchAgentImageGenerationModel, normalizePatchAgentModel, normalizePatchTypedModels };
@@ -1,3 +0,0 @@
1
- import type { Hono } from 'hono';
2
- import type { AuthenticatedRouteDeps } from './deps.js';
3
- export declare function registerCapabilityPresetsRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void;