@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,58 +1,30 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { AgentModelsOverrideSchema, AgentsConfigSchema as AgentsConfigSchema$1, DEFAULT_AGENT_MODEL_REF, ImageGenerationRouteSchema, ModelRouteSchema } from "../agent-config/schema.js";
|
|
3
|
+
import { init_agent_config } from "../agent-config/index.js";
|
|
4
4
|
import { checkCacheDir, init_cache_dir_policy } from "../browser/cache-dir-policy.js";
|
|
5
5
|
import { UserContextConfigSchema, init_config } from "../user-context/config.js";
|
|
6
|
-
import {
|
|
6
|
+
import { init_default_model } from "./default-model.js";
|
|
7
7
|
import { init_public_url, validatePublicUrl } from "./public-url.js";
|
|
8
8
|
import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, init_config_schema } from "../../extensions/telegram/src/config-schema.js";
|
|
9
9
|
import { WeixinAccountConfigSchema, WeixinConfigSchema, init_config_schema as init_config_schema$1 } from "../../extensions/weixin/src/config-schema.js";
|
|
10
10
|
import { z } from "zod";
|
|
11
11
|
//#region src/config/schema.ts
|
|
12
12
|
function getAgentDefaultModelRef(config) {
|
|
13
|
-
|
|
14
|
-
const defaultId = config.agents?.default?.trim() || list.find((entry) => entry.default === true)?.id?.trim() || list[0]?.id;
|
|
15
|
-
const agent = list.find((entry) => entry.enabled !== false && entry.id === defaultId) ?? list[0];
|
|
16
|
-
if (!agent) return void 0;
|
|
17
|
-
let modelRef;
|
|
18
|
-
const applyModels = (models) => {
|
|
19
|
-
const roles = models?.roles ?? {};
|
|
20
|
-
const defaultRole = models?.defaultRole ?? Object.keys(roles)[0];
|
|
21
|
-
const next = (defaultRole ? roles[defaultRole] : void 0)?.model.trim();
|
|
22
|
-
if (next) modelRef = next;
|
|
23
|
-
};
|
|
24
|
-
const rootPresetIds = [...config.agents.capabilityPresets[config.agents.defaultPreset] ? [config.agents.defaultPreset] : [], ...(agent.extends ?? []).filter((id) => id !== config.agents.defaultPreset)];
|
|
25
|
-
for (const presetId of linearizePresetIds(rootPresetIds, config.agents.capabilityPresets)) applyModels(config.agents.capabilityPresets[presetId]?.models);
|
|
26
|
-
applyModels(agent.models);
|
|
27
|
-
return modelRef;
|
|
13
|
+
return config.agents.list.find((entry) => entry.enabled !== false && entry.id === config.agents.default)?.models?.chat?.primary ?? config.agents.defaults.models.chat.primary;
|
|
28
14
|
}
|
|
29
15
|
function getAgentDefaultModelsConfig(config, requestedAgentId) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
const agent = list.find((entry) => entry.enabled !== false && entry.id === defaultId) ?? list[0];
|
|
33
|
-
if (!agent) return void 0;
|
|
34
|
-
let modelConfig;
|
|
35
|
-
const applyModels = (models) => {
|
|
36
|
-
if (!models) return;
|
|
37
|
-
modelConfig = {
|
|
38
|
-
...modelConfig,
|
|
39
|
-
...models,
|
|
40
|
-
roles: {
|
|
41
|
-
...modelConfig?.roles ?? {},
|
|
42
|
-
...models.roles ?? {}
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
const rootPresetIds = [...config.agents.capabilityPresets[config.agents.defaultPreset] ? [config.agents.defaultPreset] : [], ...(agent.extends ?? []).filter((id) => id !== config.agents.defaultPreset)];
|
|
47
|
-
for (const presetId of linearizePresetIds(rootPresetIds, config.agents.capabilityPresets)) applyModels(config.agents.capabilityPresets[presetId]?.models);
|
|
48
|
-
applyModels(agent.models);
|
|
49
|
-
return modelConfig;
|
|
16
|
+
const id = requestedAgentId?.trim() || config.agents.default;
|
|
17
|
+
return config.agents.list.find((entry) => entry.enabled !== false && entry.id === id)?.models;
|
|
50
18
|
}
|
|
51
19
|
function getAgentDefaultImageModelConfig(config) {
|
|
52
|
-
|
|
20
|
+
const models = getAgentDefaultModelsConfig(config);
|
|
21
|
+
if (models && Object.hasOwn(models, "imageUnderstanding")) return models.imageUnderstanding ?? void 0;
|
|
22
|
+
return config.agents.defaults.models.imageUnderstanding;
|
|
53
23
|
}
|
|
54
24
|
function getAgentDefaultImageGenerationModelConfig(config, agentId) {
|
|
55
|
-
|
|
25
|
+
const models = getAgentDefaultModelsConfig(config, agentId);
|
|
26
|
+
if (models && Object.hasOwn(models, "imageGeneration")) return models.imageGeneration ?? void 0;
|
|
27
|
+
return config.agents.defaults.models.imageGeneration;
|
|
56
28
|
}
|
|
57
29
|
/** `provider/model` or null when invalid. */
|
|
58
30
|
function parseModelRef(ref) {
|
|
@@ -64,88 +36,39 @@ function parseModelRef(ref) {
|
|
|
64
36
|
model: trimmed.slice(idx + 1).trim()
|
|
65
37
|
};
|
|
66
38
|
}
|
|
67
|
-
var AgentModelRefSchema, AgentImageGenerationModelSchema,
|
|
39
|
+
var AgentModelRefSchema, AgentImageGenerationModelSchema, AgentModelsSchema, AgentsConfigSchema, BrowserCloudConfigSchema, BrowserExtensionConfigSchema, BrowserCloakConfigSchema, BrowserConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, SessionDmScopeSchema, SessionStorageConfigSchema, SessionResetModeSchema, SessionResetConfigSchema, SessionResetByTypeSchema, SessionScopeSchema, SessionConfigSchema, ChannelsConfigSchema, SearchProviderEntrySchema, WebSearchConfigSchema, WebsiteBlocklistSchema, WebToolsConfigSchema, ToolsConfigSchema, RuntimePreferenceSchema, RuntimeProvisionSchema, LanguageRuntimeSchema, DEFAULT_RUNTIME_TOOLS_CONFIG, RuntimeToolsConfigSchema, GatewayAuthRateLimitSchema, GatewaySecuritySchema, GatewayTrustedProxySchema, GatewayAuthSchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayRemoteSchema, GatewayTlsSchema, GatewayModeSchema, HeartbeatConfigSchema, GatewayChannelConnectDeferModeSchema, TunnelConsentSchema, TunnelConfigSchema, WorkspaceImportConfigSchema, WorkspaceConfigSchema, GatewayBindModeSchema, GatewayWebchatConfigSchema, GatewayConfigSchema, ModelsDevConfigSchema, ModelCatalogConfigSchema, SttProviderConfigCatchallSchema, STTProviderConfigSchema, STTFallbackConfigSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, STTConfigSchema, TtsProviderConfigCatchallSchema, TTSProviderConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSEdgeConfigSchema, TTSSummarizationConfigSchema, TTSConfigSchema, VoiceRefinementConfigSchema, VoiceConfigSchema, MessagesConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProviderAuthConfigSchema, ProvidersConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, UpdateAutoConfigSchema, UpdateConfigSchema, CommandsConfigSchema, TuiConfigSchema, McpHttpUrlSchema, ConnectorSecretReferenceSchema, McpConfigScalarSchema, McpOAuthConfigSchema, McpServerSchema, McpConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ConfigSchema;
|
|
68
40
|
var init_schema = __esmMin((() => {
|
|
69
|
-
|
|
70
|
-
init_preset_chain();
|
|
41
|
+
init_agent_config();
|
|
71
42
|
init_cache_dir_policy();
|
|
72
43
|
init_config();
|
|
73
44
|
init_default_model();
|
|
74
45
|
init_public_url();
|
|
75
46
|
init_config_schema();
|
|
76
47
|
init_config_schema$1();
|
|
77
|
-
AgentModelRefSchema =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
AgentImageGenerationModelSchema = z.object({
|
|
82
|
-
primary: z.string().min(1),
|
|
83
|
-
fallbacks: z.array(z.string()).optional(),
|
|
84
|
-
/** Hard cap for the whole generation attempt (ms). */
|
|
85
|
-
timeoutMs: z.number().int().positive().optional(),
|
|
86
|
-
/**
|
|
87
|
-
* When all `primary + fallbacks` candidates fail, sweep every other
|
|
88
|
-
* configured provider before giving up.
|
|
89
|
-
*/
|
|
90
|
-
autoProviderFallback: z.boolean().optional()
|
|
91
|
-
}).strict();
|
|
92
|
-
AgentTypedModelRoleSchema = z.object({
|
|
93
|
-
description: z.string().max(500).optional(),
|
|
94
|
-
model: z.string().min(1),
|
|
95
|
-
fallbacks: z.array(z.string().min(1)).optional()
|
|
96
|
-
}).strict().superRefine((entry, ctx) => {
|
|
97
|
-
const validateRef = (ref) => {
|
|
98
|
-
const trimmed = ref.trim();
|
|
99
|
-
const idx = trimmed.indexOf("/");
|
|
100
|
-
return idx > 0 && idx < trimmed.length - 1;
|
|
101
|
-
};
|
|
102
|
-
if (!validateRef(entry.model)) ctx.addIssue({
|
|
103
|
-
code: "custom",
|
|
104
|
-
message: `model must be provider/model format (got '${entry.model}')`,
|
|
105
|
-
path: ["model"]
|
|
106
|
-
});
|
|
107
|
-
for (const [index, fallback] of (entry.fallbacks ?? []).entries()) if (!validateRef(fallback)) ctx.addIssue({
|
|
108
|
-
code: "custom",
|
|
109
|
-
message: `fallback must be provider/model format (got '${fallback}')`,
|
|
110
|
-
path: ["fallbacks", index]
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
AgentTypedModelRolesSchema = z.record(z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/), AgentTypedModelRoleSchema).optional();
|
|
114
|
-
AgentModelsSchema = z.object({
|
|
115
|
-
defaultRole: z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/).optional(),
|
|
116
|
-
roles: AgentTypedModelRolesSchema,
|
|
117
|
-
imageModel: AgentModelRefSchema.optional(),
|
|
118
|
-
imageGenerationModel: AgentImageGenerationModelSchema.optional()
|
|
119
|
-
}).strict().optional();
|
|
120
|
-
AgentsConfigSchema = z.object({
|
|
121
|
-
/** Default agent id when not specified (routing / session creation). */
|
|
122
|
-
default: z.string().optional(),
|
|
123
|
-
/** Protected global defaults preset applied before each agent's own presets. */
|
|
124
|
-
defaultPreset: z.string().default(DEFAULT_CAPABILITY_PRESET_ID),
|
|
125
|
-
capabilityPresets: z.record(z.string(), CapabilityPresetSchema).default({}),
|
|
126
|
-
list: z.array(AgentConfigEntrySchema).default([])
|
|
127
|
-
}).strict().default({
|
|
48
|
+
AgentModelRefSchema = ModelRouteSchema;
|
|
49
|
+
AgentImageGenerationModelSchema = ImageGenerationRouteSchema;
|
|
50
|
+
AgentModelsSchema = AgentModelsOverrideSchema;
|
|
51
|
+
AgentsConfigSchema = AgentsConfigSchema$1.default({
|
|
128
52
|
default: "main",
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
53
|
+
defaults: {
|
|
54
|
+
models: {
|
|
55
|
+
chat: {
|
|
56
|
+
primary: DEFAULT_AGENT_MODEL_REF,
|
|
57
|
+
fallbacks: []
|
|
58
|
+
},
|
|
59
|
+
intents: {}
|
|
60
|
+
},
|
|
61
|
+
skills: {
|
|
62
|
+
mode: "all-enabled",
|
|
63
|
+
exclude: []
|
|
64
|
+
},
|
|
65
|
+
tools: {},
|
|
66
|
+
workflows: {},
|
|
67
|
+
runtime: {}
|
|
68
|
+
},
|
|
137
69
|
list: [{
|
|
138
70
|
id: "main",
|
|
139
|
-
enabled: true
|
|
140
|
-
identity: {
|
|
141
|
-
name: "Smart Assistant",
|
|
142
|
-
description: "General-purpose personal assistant.",
|
|
143
|
-
role: "General assistant",
|
|
144
|
-
language: "en",
|
|
145
|
-
tone: "direct"
|
|
146
|
-
},
|
|
147
|
-
responsibilities: { primary: ["Help the user complete tasks"] },
|
|
148
|
-
workspace: { root: "~/.xopc/workspace/main" }
|
|
71
|
+
enabled: true
|
|
149
72
|
}]
|
|
150
73
|
});
|
|
151
74
|
BrowserCloudConfigSchema = z.object({
|
|
@@ -1080,26 +1003,25 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
|
|
|
1080
1003
|
},
|
|
1081
1004
|
agents: {
|
|
1082
1005
|
default: "main",
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1006
|
+
defaults: {
|
|
1007
|
+
models: {
|
|
1008
|
+
chat: {
|
|
1009
|
+
primary: DEFAULT_AGENT_MODEL_REF,
|
|
1010
|
+
fallbacks: []
|
|
1011
|
+
},
|
|
1012
|
+
intents: {}
|
|
1013
|
+
},
|
|
1014
|
+
skills: {
|
|
1015
|
+
mode: "all-enabled",
|
|
1016
|
+
exclude: []
|
|
1017
|
+
},
|
|
1018
|
+
tools: {},
|
|
1019
|
+
workflows: {},
|
|
1020
|
+
runtime: {}
|
|
1021
|
+
},
|
|
1091
1022
|
list: [{
|
|
1092
1023
|
id: "main",
|
|
1093
|
-
enabled: true
|
|
1094
|
-
identity: {
|
|
1095
|
-
name: "Smart Assistant",
|
|
1096
|
-
description: "General-purpose personal assistant.",
|
|
1097
|
-
role: "General assistant",
|
|
1098
|
-
language: "en",
|
|
1099
|
-
tone: "direct"
|
|
1100
|
-
},
|
|
1101
|
-
responsibilities: { primary: ["Help the user complete tasks"] },
|
|
1102
|
-
workspace: { root: "~/.xopc/workspace/main" }
|
|
1024
|
+
enabled: true
|
|
1103
1025
|
}]
|
|
1104
1026
|
},
|
|
1105
1027
|
bindings: [],
|
|
@@ -1173,4 +1095,4 @@ workDiscoveryOnboarding: z.boolean().default(true) }).strict().default({ workDis
|
|
|
1173
1095
|
}));
|
|
1174
1096
|
//#endregion
|
|
1175
1097
|
init_schema();
|
|
1176
|
-
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema,
|
|
1098
|
+
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpOAuthConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { EndpointConnectionSnapshot } from './registry.js';
|
|
2
|
+
import { EndpointRegistry } from './registry.js';
|
|
3
|
+
export interface EndpointSessionBinding {
|
|
4
|
+
sessionKey: string;
|
|
5
|
+
endpointId: string;
|
|
6
|
+
boundAt: number;
|
|
7
|
+
}
|
|
8
|
+
export interface EndpointSessionBindingStore {
|
|
9
|
+
get(sessionKey: string): EndpointSessionBinding | undefined;
|
|
10
|
+
set(binding: EndpointSessionBinding): EndpointSessionBinding;
|
|
11
|
+
delete(sessionKey: string): boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare class EndpointBindingService {
|
|
14
|
+
private readonly registry;
|
|
15
|
+
private readonly store;
|
|
16
|
+
constructor(registry: EndpointRegistry, store?: EndpointSessionBindingStore);
|
|
17
|
+
bind(sessionKey: string, endpointId: string, now?: number): EndpointSessionBinding;
|
|
18
|
+
get(sessionKey: string): EndpointSessionBinding | undefined;
|
|
19
|
+
resolve(sessionKey: string): EndpointConnectionSnapshot | undefined;
|
|
20
|
+
unbind(sessionKey: string): boolean;
|
|
21
|
+
private normalizeSessionKey;
|
|
22
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
//#region src/endpoint-tools/binding-service.ts
|
|
2
|
+
function memoryStore() {
|
|
3
|
+
const bindings = /* @__PURE__ */ new Map();
|
|
4
|
+
return {
|
|
5
|
+
get: (sessionKey) => bindings.get(sessionKey),
|
|
6
|
+
set: (binding) => {
|
|
7
|
+
bindings.set(binding.sessionKey, binding);
|
|
8
|
+
return binding;
|
|
9
|
+
},
|
|
10
|
+
delete: (sessionKey) => bindings.delete(sessionKey)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
var EndpointBindingService = class {
|
|
14
|
+
constructor(registry, store = memoryStore()) {
|
|
15
|
+
this.registry = registry;
|
|
16
|
+
this.store = store;
|
|
17
|
+
}
|
|
18
|
+
bind(sessionKey, endpointId, now = Date.now()) {
|
|
19
|
+
const normalizedSessionKey = this.normalizeSessionKey(sessionKey);
|
|
20
|
+
if (!this.registry.get(endpointId)) throw new Error("Endpoint is offline");
|
|
21
|
+
const binding = {
|
|
22
|
+
sessionKey: normalizedSessionKey,
|
|
23
|
+
endpointId,
|
|
24
|
+
boundAt: now
|
|
25
|
+
};
|
|
26
|
+
return this.store.set(binding);
|
|
27
|
+
}
|
|
28
|
+
get(sessionKey) {
|
|
29
|
+
return this.store.get(this.normalizeSessionKey(sessionKey));
|
|
30
|
+
}
|
|
31
|
+
resolve(sessionKey) {
|
|
32
|
+
const binding = this.get(sessionKey);
|
|
33
|
+
return binding ? this.registry.get(binding.endpointId) : void 0;
|
|
34
|
+
}
|
|
35
|
+
unbind(sessionKey) {
|
|
36
|
+
return this.store.delete(this.normalizeSessionKey(sessionKey));
|
|
37
|
+
}
|
|
38
|
+
normalizeSessionKey(sessionKey) {
|
|
39
|
+
const normalized = sessionKey.trim();
|
|
40
|
+
if (!normalized || normalized.length > 500) throw new TypeError("Invalid session key");
|
|
41
|
+
return normalized;
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
//#endregion
|
|
45
|
+
export { EndpointBindingService };
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { EndpointToolRuntime } from './runtime.js';
|
|
2
|
+
export { EndpointBindingService, type EndpointSessionBinding, type EndpointSessionBindingStore, } from './binding-service.js';
|
|
2
3
|
export { EndpointInvocationService, EndpointToolExecutionError, type EndpointInvocationAuditSink, type EndpointInvocationResult, } from './invocation-service.js';
|
|
3
4
|
export { EndpointToolPolicy, EndpointToolPolicyError } from './policy.js';
|
|
4
5
|
export { EndpointRegistry, endpointToolRevision, type EndpointConnectionSnapshot, type RegisteredEndpointTool, } from './registry.js';
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { EndpointBindingService } from "./binding-service.js";
|
|
1
2
|
import { EndpointToolPolicy, EndpointToolPolicyError } from "./policy.js";
|
|
2
3
|
import { EndpointInvocationService, EndpointToolExecutionError } from "./invocation-service.js";
|
|
3
4
|
import { EndpointRegistry, endpointToolRevision } from "./registry.js";
|
|
4
5
|
import { ENDPOINT_UPLOAD_MAX_BYTES, EndpointUploadError, EndpointUploadService } from "./upload-service.js";
|
|
5
6
|
import { EndpointToolRuntime } from "./runtime.js";
|
|
6
|
-
export { ENDPOINT_UPLOAD_MAX_BYTES, EndpointInvocationService, EndpointRegistry, EndpointToolExecutionError, EndpointToolPolicy, EndpointToolPolicyError, EndpointToolRuntime, EndpointUploadError, EndpointUploadService, endpointToolRevision };
|
|
7
|
+
export { ENDPOINT_UPLOAD_MAX_BYTES, EndpointBindingService, EndpointInvocationService, EndpointRegistry, EndpointToolExecutionError, EndpointToolPolicy, EndpointToolPolicyError, EndpointToolRuntime, EndpointUploadError, EndpointUploadService, endpointToolRevision };
|
|
@@ -43,6 +43,7 @@ export declare class EndpointInvocationService {
|
|
|
43
43
|
private readonly options;
|
|
44
44
|
private readonly pending;
|
|
45
45
|
private readonly policy;
|
|
46
|
+
private readonly ajv;
|
|
46
47
|
constructor(registry: EndpointRegistry, options?: EndpointInvocationServiceOptions);
|
|
47
48
|
invoke(params: {
|
|
48
49
|
endpointId: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ENDPOINT_INVOCATION_RECEIPT_TIMEOUT_MS, canonicalJson } from "../../packages/endpoint-tools-protocol/src/index.js";
|
|
2
2
|
import { EndpointToolPolicy, EndpointToolPolicyError } from "./policy.js";
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
4
5
|
//#region src/endpoint-tools/invocation-service.ts
|
|
5
6
|
var EndpointToolExecutionError = class extends Error {
|
|
6
7
|
constructor(code, message) {
|
|
@@ -12,6 +13,10 @@ var EndpointToolExecutionError = class extends Error {
|
|
|
12
13
|
var EndpointInvocationService = class {
|
|
13
14
|
pending = /* @__PURE__ */ new Map();
|
|
14
15
|
policy;
|
|
16
|
+
ajv = new Ajv2020({
|
|
17
|
+
allErrors: true,
|
|
18
|
+
strict: true
|
|
19
|
+
});
|
|
15
20
|
constructor(registry, options = {}) {
|
|
16
21
|
this.registry = registry;
|
|
17
22
|
this.options = options;
|
|
@@ -58,6 +63,7 @@ var EndpointInvocationService = class {
|
|
|
58
63
|
id: invocationId,
|
|
59
64
|
endpointId: params.endpointId,
|
|
60
65
|
toolName: params.toolName,
|
|
66
|
+
descriptor: tool.descriptor,
|
|
61
67
|
state: "sent",
|
|
62
68
|
receiptTimer: setTimeout(() => {
|
|
63
69
|
this.fail(invocationId, this.error("TOOL_TIMEOUT", "Endpoint did not receive the invocation"));
|
|
@@ -111,6 +117,8 @@ var EndpointInvocationService = class {
|
|
|
111
117
|
case "tool.result":
|
|
112
118
|
if (pending.state !== "running") return;
|
|
113
119
|
try {
|
|
120
|
+
const validate = this.ajv.compile(pending.descriptor.outputSchema);
|
|
121
|
+
if (!validate(message.payload.content)) throw new Error(`Endpoint result does not match its contract: ${this.ajv.errorsText(validate.errors)}`);
|
|
114
122
|
this.options.uploads?.validateAndClose(invocationId, message.payload.content);
|
|
115
123
|
} catch (error) {
|
|
116
124
|
this.fail(invocationId, this.error("PROTOCOL_ERROR", error instanceof Error ? error.message : String(error)));
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type EndpointAvailability, type EndpointKind, type EndpointToolDescriptor } from '@xopcai/endpoint-tools-protocol';
|
|
2
2
|
export interface EndpointToolPolicyDecision {
|
|
3
3
|
confirmationRequired: boolean;
|
|
4
4
|
}
|
|
5
5
|
export declare class EndpointToolPolicyError extends Error {
|
|
6
6
|
}
|
|
7
7
|
export declare class EndpointToolPolicy {
|
|
8
|
+
private readonly ajv;
|
|
8
9
|
validateDescriptor(kind: EndpointKind, descriptor: EndpointToolDescriptor): void;
|
|
9
10
|
evaluate(descriptor: EndpointToolDescriptor, availability: EndpointAvailability): EndpointToolPolicyDecision;
|
|
11
|
+
private validatePolicyFields;
|
|
12
|
+
private assertFields;
|
|
10
13
|
}
|
|
@@ -1,17 +1,80 @@
|
|
|
1
|
+
import { ENDPOINT_CONTACT_LIST_OUTPUT_SCHEMA, ENDPOINT_CONTACT_OUTPUT_SCHEMA, ENDPOINT_FILE_OUTPUT_SCHEMA, ENDPOINT_TEXT_OUTPUT_SCHEMA, canonicalJson } from "../../packages/endpoint-tools-protocol/src/index.js";
|
|
2
|
+
import Ajv2020 from "ajv/dist/2020.js";
|
|
1
3
|
//#region src/endpoint-tools/policy.ts
|
|
2
4
|
var EndpointToolPolicyError = class extends Error {};
|
|
5
|
+
function contract(policyId, outputSchema, resultKinds, permissions) {
|
|
6
|
+
return {
|
|
7
|
+
policyId,
|
|
8
|
+
outputSchema,
|
|
9
|
+
resultKinds,
|
|
10
|
+
permissions
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const POLICY_BY_TOOL = {
|
|
14
|
+
"web.file.pick": contract("personal.foreground-read", ENDPOINT_FILE_OUTPUT_SCHEMA, ["file"], ["file-read"]),
|
|
15
|
+
"web.file.download": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["file-download"]),
|
|
16
|
+
"web.page.get_selection": contract("public.foreground-read", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], []),
|
|
17
|
+
"web.clipboard.write": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["clipboard-write"]),
|
|
18
|
+
"web.page.navigate": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["navigation"]),
|
|
19
|
+
"desktop.file.pick": contract("personal.foreground-read", ENDPOINT_FILE_OUTPUT_SCHEMA, ["file"], ["file-read"]),
|
|
20
|
+
"desktop.file.save": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["file-write"]),
|
|
21
|
+
"desktop.notification.show": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["notifications"]),
|
|
22
|
+
"desktop.clipboard.read": contract("personal.foreground-read", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["clipboard-read"]),
|
|
23
|
+
"desktop.clipboard.write": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["clipboard-write"]),
|
|
24
|
+
"desktop.app.open_external": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["open-external-url"]),
|
|
25
|
+
"mobile.contacts.pick": contract("personal.foreground-read", ENDPOINT_CONTACT_OUTPUT_SCHEMA, ["json"], ["contacts-read-selected"]),
|
|
26
|
+
"mobile.contacts.search": contract("personal.foreground-read", ENDPOINT_CONTACT_LIST_OUTPUT_SCHEMA, ["json"], ["contacts-read"]),
|
|
27
|
+
"mobile.contacts.get": contract("personal.foreground-read", ENDPOINT_CONTACT_OUTPUT_SCHEMA, ["json"], ["contacts-read"]),
|
|
28
|
+
"mobile.file.pick": contract("personal.foreground-read", ENDPOINT_FILE_OUTPUT_SCHEMA, ["file"], ["file-read"]),
|
|
29
|
+
"mobile.file.share": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["file-share"]),
|
|
30
|
+
"mobile.notification.show": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["notifications"]),
|
|
31
|
+
"mobile.device.get_info": contract("public.background-read", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], []),
|
|
32
|
+
"mobile.clipboard.write": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["clipboard-write"]),
|
|
33
|
+
"mobile.app.open_url": contract("user.foreground-write", ENDPOINT_TEXT_OUTPUT_SCHEMA, ["text"], ["open-external-url"])
|
|
34
|
+
};
|
|
3
35
|
var EndpointToolPolicy = class {
|
|
36
|
+
ajv = new Ajv2020({
|
|
37
|
+
allErrors: true,
|
|
38
|
+
strict: true
|
|
39
|
+
});
|
|
4
40
|
validateDescriptor(kind, descriptor) {
|
|
5
41
|
if (!descriptor.name.startsWith(`${kind}.`)) throw new EndpointToolPolicyError(`Tool ${descriptor.name} does not belong to ${kind}`);
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
42
|
+
const contract = POLICY_BY_TOOL[descriptor.name];
|
|
43
|
+
if (!contract) throw new EndpointToolPolicyError(`Tool ${descriptor.name} has no trusted server policy`);
|
|
44
|
+
if (descriptor.policyId !== contract.policyId) throw new EndpointToolPolicyError(`Tool ${descriptor.name} does not match its trusted server policy`);
|
|
45
|
+
if (canonicalJson(descriptor.outputSchema) !== canonicalJson(contract.outputSchema) || canonicalJson(descriptor.resultKinds) !== canonicalJson(contract.resultKinds) || canonicalJson([...descriptor.requiredPermissions].sort()) !== canonicalJson([...contract.permissions].sort())) throw new EndpointToolPolicyError(`Tool ${descriptor.name} does not match its trusted server contract`);
|
|
46
|
+
this.validatePolicyFields(descriptor);
|
|
47
|
+
try {
|
|
48
|
+
this.ajv.compile(descriptor.outputSchema);
|
|
49
|
+
} catch (error) {
|
|
50
|
+
throw new EndpointToolPolicyError(`Tool ${descriptor.name} has an invalid output schema: ${error instanceof Error ? error.message : String(error)}`);
|
|
10
51
|
}
|
|
11
52
|
}
|
|
12
53
|
evaluate(descriptor, availability) {
|
|
13
54
|
if (descriptor.requiresForeground && availability !== "foreground") throw new EndpointToolPolicyError("Endpoint is not in the foreground");
|
|
14
|
-
return { confirmationRequired: descriptor.confirmation === "always"
|
|
55
|
+
return { confirmationRequired: descriptor.confirmation === "always" };
|
|
56
|
+
}
|
|
57
|
+
validatePolicyFields(descriptor) {
|
|
58
|
+
switch (descriptor.policyId) {
|
|
59
|
+
case "public.background-read":
|
|
60
|
+
this.assertFields(descriptor, "read", "never", false, "public");
|
|
61
|
+
return;
|
|
62
|
+
case "public.foreground-read":
|
|
63
|
+
this.assertFields(descriptor, "read", "never", true, "public");
|
|
64
|
+
return;
|
|
65
|
+
case "personal.foreground-read":
|
|
66
|
+
this.assertFields(descriptor, "read", "always", true, "personal");
|
|
67
|
+
if (descriptor.requiredPermissions.length === 0) throw new EndpointToolPolicyError(`Personal tool ${descriptor.name} must declare a permission`);
|
|
68
|
+
return;
|
|
69
|
+
case "user.foreground-write":
|
|
70
|
+
if (descriptor.effect === "read") throw new EndpointToolPolicyError(`Mutating tool ${descriptor.name} cannot declare a read effect`);
|
|
71
|
+
if (descriptor.confirmation !== "always" || !descriptor.requiresForeground || descriptor.sensitivity !== "personal" || descriptor.requiredPermissions.length === 0) throw new EndpointToolPolicyError(`Mutating tool ${descriptor.name} violates its trusted policy`);
|
|
72
|
+
return;
|
|
73
|
+
default: throw new EndpointToolPolicyError(`Unknown endpoint policy: ${descriptor.policyId}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
assertFields(descriptor, effect, confirmation, requiresForeground, sensitivity) {
|
|
77
|
+
if (descriptor.effect !== effect || descriptor.confirmation !== confirmation || descriptor.requiresForeground !== requiresForeground || descriptor.sensitivity !== sensitivity) throw new EndpointToolPolicyError(`Tool ${descriptor.name} violates its trusted policy`);
|
|
15
78
|
}
|
|
16
79
|
};
|
|
17
80
|
//#endregion
|
|
@@ -93,7 +93,7 @@ var EndpointRegistry = class {
|
|
|
93
93
|
const connection = this.connectionByEndpointId.get(endpointId);
|
|
94
94
|
if (!connection || connection.transport.readyState !== 1) throw new Error(`Endpoint is offline: ${endpointId}`);
|
|
95
95
|
const message = {
|
|
96
|
-
protocolVersion:
|
|
96
|
+
protocolVersion: 2,
|
|
97
97
|
messageId: crypto.randomUUID(),
|
|
98
98
|
type,
|
|
99
99
|
sentAt: Date.now(),
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ClientEndpointMessage, type EndpointHelloPayload } from '@xopcai/endpoint-tools-protocol';
|
|
2
2
|
import { type EndpointAuthenticatorDeps } from './auth.js';
|
|
3
|
+
import { EndpointBindingService } from './binding-service.js';
|
|
3
4
|
import { EndpointInvocationService, type EndpointInvocationAuditSink } from './invocation-service.js';
|
|
4
5
|
import { EndpointRegistry, type EndpointRegistration, type EndpointTransport } from './registry.js';
|
|
5
6
|
import { EndpointUploadService } from './upload-service.js';
|
|
@@ -7,6 +8,7 @@ export declare class EndpointToolRuntime {
|
|
|
7
8
|
readonly registry: EndpointRegistry;
|
|
8
9
|
readonly invocations: EndpointInvocationService;
|
|
9
10
|
readonly uploads: EndpointUploadService;
|
|
11
|
+
readonly bindings: EndpointBindingService;
|
|
10
12
|
private readonly authenticator;
|
|
11
13
|
private closed;
|
|
12
14
|
constructor(options?: {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths-state.js";
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
+
import { deleteEndpointSessionBinding, getEndpointSessionBinding, setEndpointSessionBinding } from "../storage/sqlite/endpoint-session-binding-repository.js";
|
|
4
5
|
import { bindEndpointPrincipal, getEndpointPrincipal, touchEndpointPrincipal } from "../storage/sqlite/endpoint-principal-repository.js";
|
|
5
6
|
import { finishEndpointToolInvocationAudit, startEndpointToolInvocationAudit } from "../storage/sqlite/endpoint-tool-invocation-repository.js";
|
|
6
7
|
import "../storage/sqlite/index.js";
|
|
7
8
|
import { init_paths } from "../config/paths.js";
|
|
8
9
|
import { EndpointAuthenticator } from "./auth.js";
|
|
10
|
+
import { EndpointBindingService } from "./binding-service.js";
|
|
9
11
|
import { EndpointToolPolicy } from "./policy.js";
|
|
10
12
|
import { EndpointInvocationService } from "./invocation-service.js";
|
|
11
13
|
import { EndpointRegistry } from "./registry.js";
|
|
@@ -20,11 +22,17 @@ var EndpointToolRuntime = class {
|
|
|
20
22
|
registry;
|
|
21
23
|
invocations;
|
|
22
24
|
uploads;
|
|
25
|
+
bindings;
|
|
23
26
|
authenticator;
|
|
24
27
|
closed = false;
|
|
25
28
|
constructor(options = {}) {
|
|
26
29
|
const policy = new EndpointToolPolicy();
|
|
27
30
|
this.registry = new EndpointRegistry(policy);
|
|
31
|
+
this.bindings = new EndpointBindingService(this.registry, {
|
|
32
|
+
get: getEndpointSessionBinding,
|
|
33
|
+
set: setEndpointSessionBinding,
|
|
34
|
+
delete: deleteEndpointSessionBinding
|
|
35
|
+
});
|
|
28
36
|
this.authenticator = new EndpointAuthenticator(options.auth ?? {
|
|
29
37
|
getPrincipal: getEndpointPrincipal,
|
|
30
38
|
bindEndpoint: bindEndpointPrincipal,
|
|
@@ -96,17 +96,13 @@ function defaultModelId(config) {
|
|
|
96
96
|
if (!Array.isArray(list)) return void 0;
|
|
97
97
|
const defaultId = typeof agents.default === "string" ? agents.default : void 0;
|
|
98
98
|
const entry = list.find((candidate) => isRecord(candidate) && candidate.id === defaultId) ?? list.find((candidate) => isRecord(candidate) && candidate.enabled !== false);
|
|
99
|
-
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
102
|
-
const
|
|
103
|
-
const
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (isRecord(role)) {
|
|
107
|
-
const model = role.model;
|
|
108
|
-
if (typeof model === "string" && model.trim().length > 0) return model;
|
|
109
|
-
}
|
|
99
|
+
const overrideModels = isRecord(entry) && isRecord(entry.models) ? entry.models : void 0;
|
|
100
|
+
const overrideChat = overrideModels && isRecord(overrideModels.chat) ? overrideModels.chat : void 0;
|
|
101
|
+
if (typeof overrideChat?.primary === "string" && overrideChat.primary.trim()) return overrideChat.primary;
|
|
102
|
+
const defaults = isRecord(agents.defaults) ? agents.defaults : void 0;
|
|
103
|
+
const models = defaults && isRecord(defaults.models) ? defaults.models : void 0;
|
|
104
|
+
const chat = models && isRecord(models.chat) ? models.chat : void 0;
|
|
105
|
+
return typeof chat?.primary === "string" && chat.primary.trim() ? chat.primary : void 0;
|
|
110
106
|
}
|
|
111
107
|
/**
|
|
112
108
|
* Merge partial activation context over values inferred from loaded app config.
|
|
@@ -26,6 +26,7 @@ const TEXT_EXTENSIONS = new Set([
|
|
|
26
26
|
"svg",
|
|
27
27
|
"ts",
|
|
28
28
|
"tsx",
|
|
29
|
+
"tsv",
|
|
29
30
|
"txt",
|
|
30
31
|
"xml",
|
|
31
32
|
"yaml",
|
|
@@ -50,10 +51,18 @@ const MIME_TYPES = {
|
|
|
50
51
|
ts: "text/typescript",
|
|
51
52
|
tsx: "text/typescript",
|
|
52
53
|
csv: "text/csv",
|
|
54
|
+
tsv: "text/tab-separated-values",
|
|
53
55
|
xml: "application/xml",
|
|
54
56
|
yaml: "application/yaml",
|
|
55
57
|
yml: "application/yaml",
|
|
56
58
|
pdf: "application/pdf",
|
|
59
|
+
doc: "application/msword",
|
|
60
|
+
docx: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
61
|
+
xls: "application/vnd.ms-excel",
|
|
62
|
+
xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
|
|
63
|
+
ppt: "application/vnd.ms-powerpoint",
|
|
64
|
+
pptx: "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
65
|
+
zip: "application/zip",
|
|
57
66
|
mp3: "audio/mpeg",
|
|
58
67
|
wav: "audio/wav",
|
|
59
68
|
ogg: "audio/ogg",
|
|
@@ -106,13 +115,13 @@ async function resolveFilePath(root, path, mustExist = true) {
|
|
|
106
115
|
const canonicalRoot = await realpath(root).catch(() => {
|
|
107
116
|
throw new FileServiceError(404, "File space is unavailable");
|
|
108
117
|
});
|
|
109
|
-
const candidate = resolve(canonicalRoot, normalizeRelativePath(path));
|
|
110
|
-
if (!isWithin(canonicalRoot, candidate)) throw new FileServiceError(400, "Invalid file path");
|
|
118
|
+
const candidate = isAbsolute(path) ? resolve(path) : resolve(canonicalRoot, normalizeRelativePath(path));
|
|
111
119
|
if (!mustExist) {
|
|
112
|
-
|
|
120
|
+
const parent = await realpath(dirname(candidate)).catch(() => {
|
|
113
121
|
throw new FileServiceError(404, "Parent directory not found");
|
|
114
|
-
})
|
|
115
|
-
|
|
122
|
+
});
|
|
123
|
+
if (!isWithin(canonicalRoot, parent)) throw new FileServiceError(400, "Invalid file path");
|
|
124
|
+
return resolve(parent, basename(candidate));
|
|
116
125
|
}
|
|
117
126
|
const canonicalTarget = await realpath(candidate).catch(() => {
|
|
118
127
|
throw new FileServiceError(404, "File not found");
|