@xopcai/xopc 0.0.231 → 0.0.233
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.
- package/README.md +1 -0
- package/README.zh-CN.md +1 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +3 -3
- package/dist/extensions/telegram/src/config-schema.d.ts +4 -4
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/gateway/static/root/assets/{activity-store-M0nAY5XB.js → activity-store-DQ5L3PTi.js} +1 -1
- package/dist/gateway/static/root/assets/agent-avatar-dicebear-Bps8fvBp.js +1 -0
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-JrK80PvP.js +1 -0
- package/dist/gateway/static/root/assets/agents-CJYEnz94.js +1 -0
- package/dist/gateway/static/root/assets/api-DE6tZKG0.js +1 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DP7YVRPn.js → app-management-settings-panel-BryzDVod.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CVQ5n7y6.js → appearance-settings-BoweLBDm.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-Bt8_sWtU.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-7_DXaMTP.js → archive-plugin-DyujzZNu.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-mmr_mHRr.js → attachment-load-DmXGUWve.js} +1 -1
- package/dist/gateway/static/root/assets/attachment-preview-renderer-BDTD8YUe.js +12 -0
- package/dist/gateway/static/root/assets/{automations-page-DfY-T6Ga.js → automations-page-DrTVSK7o.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-86UTesz3.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-CO9QMEh2.js → binary-plugins-mFyeC74W.js} +2 -2
- package/dist/gateway/static/root/assets/{block-editor-CE14CVOy.js → block-editor-D5yMFrgH.js} +4 -4
- package/dist/gateway/static/root/assets/browser-settings-page-DfMU7yXv.js +8 -0
- package/dist/gateway/static/root/assets/browser-workflow-inputs-B6rLBtua.js +1 -0
- package/dist/gateway/static/root/assets/{browser-workflows-page-1wgXyoSO.js → browser-workflows-page-C74sg50f.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-lsHRuBlX.js +7 -0
- package/dist/gateway/static/root/assets/channels-settings-CxR_clkO.js +1 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-C5ABr73b.js → channels-status-swr-DowVNjNw.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CdRW6Euc.js → chat-terminal-dock-BO6_BgjE.js} +2 -2
- package/dist/gateway/static/root/assets/{code-editor-dFzqyDXS.js → code-editor-D4_k-6QN.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-CpNLyKB4.js +2 -0
- package/dist/gateway/static/root/assets/cron-expression-CYMXfk4M.js +2 -0
- package/dist/gateway/static/root/assets/date-picker-DIM_OkQP.js +1 -0
- package/dist/gateway/static/root/assets/dependency-picker-Cp8I6rsL.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-settings-MmOR4A3u.js → desktop-pet-settings-NjPiz3M_.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CMO-J3cG.js → desktop-pet-wzSzZ6S8.js} +1 -1
- package/dist/gateway/static/root/assets/dist-DqPZM2MH2.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DdH0dG2_.js → extension-debug-page-CoMl13ET.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Clg-KktN.js → extension-page-CXc1Lc8x.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CfEWpgjl.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-api-DEHnF4Wm.js → gateway-config-api-yH4KAEkK.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-config-swr-YyZJKvFf.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-settings-DKkEXXj9.js → gateway-settings-BmjJIiKh.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-B_zrtccP.js → gateway-startup-retry-Dnrl91pU.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-DGq9q4b6.js +1 -0
- package/dist/gateway/static/root/assets/home-page-Dj4B1wb3.js +1 -0
- package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-YKP2me5Z.js → image-generation-api-BNzAAw4Y.js} +1 -1
- package/dist/gateway/static/root/assets/index-BGf-TiZj.js +70 -0
- package/dist/gateway/static/root/assets/index-BTUuTnc9.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BvpEeHnm.js → keyboard-shortcuts-settings-CfNV1ysF.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-IJg75WaN.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-Bzvn99eH.js → local-apps-page-MPd4Fl_l.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-D_dq_0LV.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-NsfoazgK.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-DeIjN4e0.js +1 -0
- package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +2 -0
- package/dist/gateway/static/root/assets/markdown-split-BUAVv6Gu.js +1 -0
- package/dist/gateway/static/root/assets/markdown-view-CPkBOY3h.js +201 -0
- package/dist/gateway/static/root/assets/{media-plugins-D8I7OGnT.js → media-plugins-DFsVnOY-.js} +1 -1
- package/dist/gateway/static/root/assets/messages-D4qOHT4D.js +3 -0
- package/dist/gateway/static/root/assets/mobile-device-api-D9JevyCE.js +1 -0
- package/dist/gateway/static/root/assets/models-hub-cache-C5y2gzMU.js +1 -0
- package/dist/gateway/static/root/assets/{notes-api-EpgG-OQc.js → notes-api-BWSfTP1w.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-CCvjGMhN.js → notes-page-CV8UJj7g.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-DrjMVgEI.js +4 -0
- package/dist/gateway/static/root/assets/{oauth-api-BwNLwbI8.js → oauth-api-DnanEBsf.js} +1 -1
- package/dist/gateway/static/root/assets/popover-select-3E24E65N.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-MmMswmOU.js → product-open-page-zNg1KOy2.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-tfcGYL-O.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BkjnXLdJ.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-BFZrVYfy.js → registry-api-BeVzfRvs.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BXn-3n2d.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-Dx6o7sLu.js → runtime-tools-settings-panel-BxoioSvT.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-Cdd9c4vt.js → schema-form-vzbmscrE.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-MLNjrOkw.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-ByNLBY2q.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-D0YxMnhm.js → settings-form-section-x9k7MWD3.js} +1 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-BLFOD9h9.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-CwgTooar.js +1 -0
- package/dist/gateway/static/root/assets/settings-shell-layer-context-DCp6ykjQ.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-bnueBZg8.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DiqBn-oE.js → share-preview-page-COTrPAd-.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-D-v_psqL.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-DJICr4wh.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-CZwhWiRl.js → skills-page-D9wM6_Jn.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-kBGr8opZ.js → skills-page.utils-PtlQLM5a.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CPBs6lWi.js → system-settings-panel-BR74mNEK.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-B-rmeE8t.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-Qgvo0Ga7.js → theme-store-Bud54q9e.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-C4YcEiP9.js → use-autosave-DH47MH7s.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-B6eyxxOT.js +1 -0
- package/dist/gateway/static/root/assets/{vendor-codemirror-DRr7hFaD.js → vendor-codemirror--gTq3YAI.js} +16 -16
- package/dist/gateway/static/root/assets/voice-api-key-field-B59GaqRa.js +1 -0
- package/dist/gateway/static/root/assets/voice-config-api-C0ahrZ0e.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-CKIdPEen.js → work-discovery-overlay-DTn4RCcx.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BK44Vm5W.js → workflow-run-setup-panel-yDFoEX06.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BOwSbfWm.js +5 -0
- package/dist/gateway/static/root/index.html +16 -16
- package/dist/package.js +1 -1
- package/dist/packages/endpoint-tools-protocol/src/index.js +162 -2
- package/dist/packages/gateway-contract/src/product-delivery.js +6 -2
- package/dist/packages/gateway-contract/src/turn-outcome.js +77 -1
- package/dist/src/agent/agent-manager.d.ts +1 -2
- package/dist/src/agent/agent-manager.js +29 -44
- package/dist/src/agent/background-review/run-background-review.js +10 -15
- package/dist/src/agent/capabilities/definitions.d.ts +1 -1
- package/dist/src/agent/capabilities/definitions.js +2 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/external-tools/endpoint-provider.js +5 -1
- package/dist/src/agent/external-tools/mcp-provider.js +3 -13
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/tool-model-config.js +13 -14
- package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +0 -9
- package/dist/src/agent/mcp/bundle-mcp-policy.js +1 -13
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/index.js +2 -2
- package/dist/src/agent/media-generation/runtime-shared.d.ts +1 -1
- package/dist/src/agent/media-generation/runtime-shared.js +1 -1
- package/dist/src/agent/memory/create-memory-manager.js +1 -1
- package/dist/src/agent/memory/manager.d.ts +1 -1
- package/dist/src/{agent-runtime/memory-runtime.d.ts → agent/memory/runtime.d.ts} +1 -1
- package/dist/src/{agent-runtime/memory-runtime.js → agent/memory/runtime.js} +2 -3
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +0 -3
- package/dist/src/agent/orchestration/agent-orchestrator.js +1 -3
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -2
- package/dist/src/agent/prompt/sections/tooling.js +5 -0
- package/dist/src/agent/service.js +0 -1
- package/dist/src/agent/starter-agents.js +1 -8
- package/dist/src/agent/tools/create-share-tool.js +2 -1
- package/dist/src/agent/tools/exec-command.js +2 -1
- package/dist/src/agent/tools/executor.d.ts +1 -1
- package/dist/src/agent/tools/factory.js +2 -0
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/publish-artifacts.d.ts +2 -0
- package/dist/src/agent/tools/publish-artifacts.js +82 -0
- package/dist/src/agent/tools/send-media.js +2 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -5
- package/dist/src/agent-config/index.d.ts +2 -0
- package/dist/src/agent-config/index.js +11 -0
- package/dist/src/agent-config/resolver.d.ts +11 -0
- package/dist/src/agent-config/resolver.js +113 -0
- package/dist/src/agent-config/schema.d.ts +491 -0
- package/dist/src/agent-config/schema.js +172 -0
- package/dist/src/chat-commands/builtins/config.js +2 -2
- package/dist/src/chat-commands/builtins/review.js +1 -1
- package/dist/src/chat-commands/config-paths.js +1 -1
- package/dist/src/cli/command-catalog.js +4 -0
- package/dist/src/cli/command-loaders.js +1 -0
- package/dist/src/cli/command-manifest.js +4 -0
- package/dist/src/cli/commands/agents.js +2 -1
- package/dist/src/cli/commands/auth.js +1 -1
- package/dist/src/cli/commands/config.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +12 -4
- package/dist/src/cli/commands/image.js +3 -4
- package/dist/src/cli/commands/models.js +9 -3
- package/dist/src/cli/commands/onboard/model.js +13 -12
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/providers.js +1 -1
- package/dist/src/cli/commands/support.d.ts +1 -0
- package/dist/src/cli/commands/support.js +51 -0
- package/dist/src/cli/commands/tunnel.js +3 -18
- package/dist/src/cli/utils/init-workspace-core.d.ts +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/commands/agents.config.d.ts +1 -3
- package/dist/src/commands/agents.config.js +9 -26
- package/dist/src/config/agent-model-intents.d.ts +10 -0
- package/dist/src/config/agent-model-intents.js +39 -0
- package/dist/src/config/agent-profile.d.ts +7 -9
- package/dist/src/config/agent-profile.js +30 -28
- package/dist/src/config/default-model.d.ts +1 -11
- package/dist/src/config/default-model.js +3 -11
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/reload.js +1 -1
- package/dist/src/config/rules.js +3 -3
- package/dist/src/config/schema.d.ts +187 -452
- package/dist/src/config/schema.js +53 -131
- package/dist/src/endpoint-tools/binding-service.d.ts +22 -0
- package/dist/src/endpoint-tools/binding-service.js +45 -0
- package/dist/src/endpoint-tools/index.d.ts +1 -0
- package/dist/src/endpoint-tools/index.js +2 -1
- package/dist/src/endpoint-tools/invocation-service.d.ts +1 -0
- package/dist/src/endpoint-tools/invocation-service.js +8 -0
- package/dist/src/endpoint-tools/policy.d.ts +4 -1
- package/dist/src/endpoint-tools/policy.js +68 -5
- package/dist/src/endpoint-tools/registry.js +1 -1
- package/dist/src/endpoint-tools/runtime.d.ts +2 -0
- package/dist/src/endpoint-tools/runtime.js +8 -0
- package/dist/src/extensions/activation-context.js +7 -11
- package/dist/src/files/file-service.js +14 -5
- package/dist/src/gateway/agent-builtin-tools.d.ts +250 -6
- package/dist/src/gateway/agent-builtin-tools.js +284 -46
- package/dist/src/gateway/agents-admin.d.ts +20 -62
- package/dist/src/gateway/agents-admin.js +36 -228
- package/dist/src/gateway/chat-stream/turn-outcome-collector.js +41 -6
- package/dist/src/gateway/device-routes.d.ts +3 -0
- package/dist/src/gateway/device-routes.js +47 -0
- package/dist/src/gateway/global-defaults-admin.d.ts +6 -20
- package/dist/src/gateway/global-defaults-admin.js +20 -120
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/app.js +4 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +54 -137
- package/dist/src/gateway/hono/lib/config-payload.js +2 -4
- package/dist/src/gateway/hono/middleware/auth.js +36 -3
- package/dist/src/gateway/hono/middleware/scopes.d.ts +2 -12
- package/dist/src/gateway/hono/middleware/scopes.js +9 -18
- package/dist/src/gateway/hono/routes/agents.js +64 -100
- package/dist/src/gateway/hono/routes/connectors.js +1 -1
- package/dist/src/gateway/hono/routes/device-push.d.ts +2 -0
- package/dist/src/gateway/hono/routes/{mobile.js → device-push.js} +40 -18
- package/dist/src/gateway/hono/routes/devices.d.ts +4 -0
- package/dist/src/gateway/hono/routes/devices.js +214 -0
- package/dist/src/gateway/hono/routes/endpoint-tools.js +68 -1
- package/dist/src/gateway/hono/routes/files.js +12 -1
- package/dist/src/gateway/hono/routes/global-defaults.js +5 -9
- package/dist/src/gateway/hono/routes/index.js +4 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +12 -20
- package/dist/src/gateway/hono/routes/media.js +46 -2
- package/dist/src/gateway/hono/routes/models.js +2 -2
- package/dist/src/gateway/hono/routes/realtime.js +8 -1
- package/dist/src/gateway/hono/routes/status.js +9 -16
- package/dist/src/gateway/hono/routes/support.d.ts +3 -0
- package/dist/src/gateway/hono/routes/support.js +28 -0
- package/dist/src/gateway/hono/routes/tunnel.d.ts +0 -2
- package/dist/src/gateway/hono/routes/tunnel.js +10 -199
- package/dist/src/gateway/hono/routes/you.js +24 -0
- package/dist/src/gateway/image-generation-setup.d.ts +2 -2
- package/dist/src/gateway/image-generation-setup.js +8 -7
- package/dist/src/gateway/public-url.d.ts +1 -1
- package/dist/src/gateway/security/gateway-principal.d.ts +11 -0
- package/dist/src/gateway/security/gateway-principal.js +12 -0
- package/dist/src/gateway/security/gateway-scopes.d.ts +7 -0
- package/dist/src/gateway/security/gateway-scopes.js +66 -0
- package/dist/src/gateway/security/index.d.ts +2 -1
- package/dist/src/gateway/security/index.js +3 -2
- package/dist/src/gateway/service.js +7 -7
- package/dist/src/gateway/xopc-cloud-capability-setup.js +19 -21
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/media/store.js +9 -0
- package/dist/src/migrations/index.d.ts +0 -1
- package/dist/src/migrations/index.js +1 -2
- package/dist/src/migrations/runner.js +1 -2
- package/dist/src/notifications/device-store.d.ts +1 -1
- package/dist/src/notifications/device-store.js +11 -11
- package/dist/src/notifications/store.js +3 -3
- package/dist/src/providers/index.js +1 -1
- package/dist/src/providers/model-reference-auditor.js +14 -9
- package/dist/src/realtime/runtime.d.ts +2 -0
- package/dist/src/realtime/runtime.js +27 -3
- package/dist/src/realtime/tickets.d.ts +6 -1
- package/dist/src/realtime/tickets.js +2 -1
- package/dist/src/remote-access/exposure-manager.js +3 -3
- package/dist/src/share/share-url.js +2 -2
- package/dist/src/storage/sqlite/device-access-repository.d.ts +54 -0
- package/dist/src/storage/sqlite/device-access-repository.js +194 -0
- package/dist/src/storage/sqlite/device-pairing-repository.d.ts +22 -0
- package/dist/src/storage/sqlite/device-pairing-repository.js +86 -0
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.d.ts +8 -0
- package/dist/src/storage/sqlite/endpoint-session-binding-repository.js +32 -0
- package/dist/src/storage/sqlite/gateway-identity-repository.d.ts +10 -0
- package/dist/src/storage/sqlite/gateway-identity-repository.js +50 -0
- package/dist/src/storage/sqlite/index.d.ts +4 -0
- package/dist/src/storage/sqlite/index.js +5 -1
- package/dist/src/storage/sqlite/migrations/138_device_access.sql +96 -0
- package/dist/src/storage/sqlite/migrations/139_turn_outcome_artifact_backfill.sql +231 -0
- package/dist/src/storage/sqlite/migrations/140_endpoint_session_bindings.sql +8 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/support/build-support-investigation-prompt.d.ts +2 -0
- package/dist/src/support/build-support-investigation-prompt.js +29 -0
- package/dist/src/support/collect-support-report.d.ts +16 -0
- package/dist/src/support/collect-support-report.js +216 -0
- package/dist/src/support/redact-support-report.d.ts +16 -0
- package/dist/src/support/redact-support-report.js +89 -0
- package/dist/src/support/types.d.ts +76 -0
- package/dist/src/support/types.js +18 -0
- package/dist/src/tunnel/consent.d.ts +1 -1
- package/dist/src/tunnel/consent.js +1 -1
- package/dist/src/tunnel/gateway-lifecycle.js +1 -1
- package/dist/src/tunnel/index.d.ts +1 -4
- package/dist/src/tunnel/index.js +3 -5
- package/dist/src/tunnel/tunnel-audit.d.ts +1 -1
- package/dist/src/tunnel/tunnel-config.js +1 -1
- package/dist/src/tunnel/tunnel-service.d.ts +2 -3
- package/dist/src/tunnel/tunnel-service.js +1 -20
- package/dist/src/tunnel/tunnel-types.d.ts +0 -6
- package/dist/src/user-context/user-avatar.d.ts +17 -0
- package/dist/src/user-context/user-avatar.js +116 -0
- package/dist/src/workflows/draft/workflow-draft-service.js +2 -2
- package/dist/src/workflows/service/workflow-run-service.js +3 -3
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/agent-avatar-dicebear-CBqUnlvL.js +0 -1
- package/dist/gateway/static/root/assets/agents-7YO6znTT.js +0 -68
- package/dist/gateway/static/root/assets/api-BywYxpaS.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-DSCia0DT.js +0 -1
- package/dist/gateway/static/root/assets/attachment-preview-renderer-Cmo-5BP5.js +0 -11
- package/dist/gateway/static/root/assets/automations-workspace-BpvD54D6.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CeESA4Oj.js +0 -8
- package/dist/gateway/static/root/assets/browser-workflow-inputs-8NC2qDRF.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-settings-panel-B_OXTojB.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-api-o0y9WgAI.js +0 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-D5nZecxV.js +0 -3
- package/dist/gateway/static/root/assets/channels-settings-BzmnWx6X.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-38FsOnR0.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DX6OkwFQ.js +0 -2
- package/dist/gateway/static/root/assets/cron-expression-DYSMZsms.js +0 -2
- package/dist/gateway/static/root/assets/date-picker-DGCfX4tK.js +0 -1
- package/dist/gateway/static/root/assets/dependency-picker-DHDa4ht1.js +0 -1
- package/dist/gateway/static/root/assets/directory-picker-path-field-B9qoxDcn.js +0 -1
- package/dist/gateway/static/root/assets/dist-J_ySZvz0.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-eP3fJ2M6.js +0 -1
- package/dist/gateway/static/root/assets/file-code-corner-byQA1VfD.js +0 -1
- package/dist/gateway/static/root/assets/gateway-config-swr-BWGjnmDl.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-DlBPNubY.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BnOrLRfs.js +0 -1
- package/dist/gateway/static/root/assets/html-workspace-editor-bXK5tq64.js +0 -1
- package/dist/gateway/static/root/assets/index-0xQO5B_Q.js +0 -70
- package/dist/gateway/static/root/assets/index-CCyIdGuQ.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-Ch1rdUo8.js +0 -2
- package/dist/gateway/static/root/assets/locale-store-CXhjfe4q.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-zxx2ExlY.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-BQaeyOYm.js +0 -1
- package/dist/gateway/static/root/assets/markdown-editor-TWGaF7Xa.js +0 -2
- package/dist/gateway/static/root/assets/markdown-split-D9tmIiEm.js +0 -1
- package/dist/gateway/static/root/assets/markdown-view-RxNHwlNo.js +0 -201
- package/dist/gateway/static/root/assets/messages-BMdD0LWk.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-cache-0RjEwafI.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-9cgh77VH.js +0 -4
- package/dist/gateway/static/root/assets/popover-select-CccGri5Y.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-hf6pmH4p.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-By2U-Wdh.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CUcpp7CQ.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-ByI82xS1.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BCoI5IJ8.js +0 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-y53gEKsF.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-BoE_tToG.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BQmyb5KC.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-Bf3VpZ-R.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CXHlbuGS.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-Bo0KSZ2v.js +0 -1
- package/dist/gateway/static/root/assets/typed-models-lib-q5-Vfqd8.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-Cnj7gMX2.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BML8zCwZ.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-CB98MTwG.js +0 -5
- package/dist/src/agent-manifest/index.d.ts +0 -5
- package/dist/src/agent-manifest/index.js +0 -10
- package/dist/src/agent-manifest/preset-chain.d.ts +0 -10
- package/dist/src/agent-manifest/preset-chain.js +0 -30
- package/dist/src/agent-manifest/prompt.d.ts +0 -2
- package/dist/src/agent-manifest/prompt.js +0 -49
- package/dist/src/agent-manifest/resolver.d.ts +0 -32
- package/dist/src/agent-manifest/resolver.js +0 -114
- package/dist/src/agent-manifest/schema.d.ts +0 -695
- package/dist/src/agent-manifest/schema.js +0 -226
- package/dist/src/agent-manifest/validator.d.ts +0 -25
- package/dist/src/agent-manifest/validator.js +0 -74
- package/dist/src/agent-runtime/boundary-guard.d.ts +0 -12
- package/dist/src/agent-runtime/boundary-guard.js +0 -21
- package/dist/src/agent-runtime/index.d.ts +0 -7
- package/dist/src/agent-runtime/index.js +0 -8
- package/dist/src/agent-runtime/model-router.d.ts +0 -11
- package/dist/src/agent-runtime/model-router.js +0 -14
- package/dist/src/agent-runtime/run-trace.d.ts +0 -27
- package/dist/src/agent-runtime/run-trace.js +0 -51
- package/dist/src/agent-runtime/runtime-profile.d.ts +0 -26
- package/dist/src/agent-runtime/runtime-profile.js +0 -42
- package/dist/src/agent-runtime/tool-registry.d.ts +0 -28
- package/dist/src/agent-runtime/tool-registry.js +0 -50
- package/dist/src/agent-runtime/workflow-runtime.d.ts +0 -31
- package/dist/src/agent-runtime/workflow-runtime.js +0 -32
- package/dist/src/config/agent-typed-models.d.ts +0 -13
- package/dist/src/config/agent-typed-models.js +0 -48
- package/dist/src/gateway/capability-presets-admin.d.ts +0 -88
- package/dist/src/gateway/capability-presets-admin.js +0 -303
- package/dist/src/gateway/hono/lib/agent-model.d.ts +0 -35
- package/dist/src/gateway/hono/lib/agent-model.js +0 -97
- package/dist/src/gateway/hono/routes/capability-presets.d.ts +0 -3
- package/dist/src/gateway/hono/routes/capability-presets.js +0 -187
- package/dist/src/gateway/hono/routes/mobile.d.ts +0 -3
- package/dist/src/gateway/security/operator-scopes.d.ts +0 -37
- package/dist/src/gateway/security/operator-scopes.js +0 -147
- package/dist/src/migrations/config/default-capability-preset.d.ts +0 -10
- package/dist/src/migrations/config/default-capability-preset.js +0 -133
- package/dist/src/tunnel/enable-lan-pairing.d.ts +0 -8
- package/dist/src/tunnel/enable-lan-pairing.js +0 -41
- package/dist/src/tunnel/pair-context.d.ts +0 -36
- package/dist/src/tunnel/pair-context.js +0 -77
- package/dist/src/tunnel/pair-url.d.ts +0 -43
- package/dist/src/tunnel/pair-url.js +0 -117
- package/dist/src/tunnel/pairing-rate-limit.d.ts +0 -12
- package/dist/src/tunnel/pairing-rate-limit.js +0 -28
- package/dist/src/tunnel/pairing.d.ts +0 -21
- package/dist/src/tunnel/pairing.js +0 -103
- package/dist/src/tunnel/tunnel-qr.d.ts +0 -9
- 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 };
|