@xopcai/xopc 0.0.191 → 0.0.192
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/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-DstnJCS5.js → activity-store-B-tzXpDD.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DvEkT222.js → agent-avatar-dicebear-xOu0qNwc.js} +1 -1
- package/dist/gateway/static/root/assets/agents-CxuwvDk0.js +68 -0
- package/dist/gateway/static/root/assets/{api-BTL9kayv.js → api-fMItZb-h.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-COpP_pKN.js → app-management-settings-panel-D6Rv3OWI.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DTVNUEDq.js → appearance-settings-CKoNCwco.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-wAb5dnHZ.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-IpX6VA0o.js → archive-plugin-BokNQBwH.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CKVFNUi1.js → attachment-load-Dx1HglsM.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-Drgazevs.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-BrfvfOS4.js → binary-plugins-CPYAflIG.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-D9sEfg32.js → block-editor-BFLgl8SS.js} +47 -47
- package/dist/gateway/static/root/assets/browser-settings-page-DmYlFJW7.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-BixZ5lCR.js → browser-workflow-inputs-CqLnqA9z.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-YEFuodJI.js → browser-workflows-page-Db5v3HtE.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-D7Z8T0o5.js +7 -0
- package/dist/gateway/static/root/assets/capability-presets-api-lov0J9A2.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-COjnwO0U.js +3 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-BThDGiO3.js → channel-recipient-api-DSJznouK.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-DcRYBNN7.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-C2UYdebT.js +1 -0
- package/dist/gateway/static/root/assets/{code-editor-D4_k-6QN.js → code-editor-dFzqyDXS.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-BMMqC0_9.js → connectors-api-3ccRyS3L.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-FVmvBG9H.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-Bm8koRoD.js → cron-expression-C9hhCiuo.js} +1 -1
- package/dist/gateway/static/root/assets/dependency-picker-CTtZFZug.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-CMG3mcaJ.js → desktop-pet-DOUeNVmC.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-D8aaPb0x.js → desktop-pet-settings-D4704vtl.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C95yW03b.js → directory-picker-path-field-DJDXeA1B.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DsG7Z9lV.js → extension-debug-page-C0n2NMF1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CUAXEbAt.js → extension-page-vG-xxRNs.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CtuY2THd.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-api-DL70Nakc.js → gateway-config-api-CZra7GuI.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BgDxQ08c.js → gateway-settings-Cz33jRkR.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-EO9mKvzE.js → gateway-startup-retry-BbVV0udv.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-BX7q55uZ.js → heartbeat-settings-D2XMlA_U.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CPrHkPN6.js +3 -0
- package/dist/gateway/static/root/assets/html-workspace-editor-bXK5tq64.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-Bu7PyVSh.js → image-generation-api-BgrOvhaJ.js} +1 -1
- package/dist/gateway/static/root/assets/index-Cg7Xnlu3.css +1 -0
- package/dist/gateway/static/root/assets/index-DzmbmOGA.js +150 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Dt6wS5zW.js → keyboard-shortcuts-settings-BfyAEG1G.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Clz47vSr.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-DcD3-N00.js → local-apps-page-BYalcRSY.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-deR2zRaE.js → locale-store-VOY1wMO9.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-Cxq9WMf5.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-B6EVkJQy.js → management-settings-BQf-6s32.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-editor-BvUebh3C.js → markdown-editor-TWGaF7Xa.js} +2 -2
- package/dist/gateway/static/root/assets/{markdown-split-CHUjCnBh.js → markdown-split-Cy_2SN1Q.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DRrtI2O0.js → media-plugins-CkDupqb2.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DMJ-6-1m.js +3 -0
- package/dist/gateway/static/root/assets/{notes-page-fermYvpI.js → notes-page-kiGRR9jo.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-DkYkPGyB.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-BO262zuu.js → page-tabs-CvzSdYVj.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-yZYTy-2e.js → preview-open-alternatives-kZ0nco7e.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Dgy8XWhR.js → product-open-page-DgoieqQC.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CeSjJd-N.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-fZ1rm4b9.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-CbYI6KC8.js +1 -0
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Bud_NTEZ.js +5 -0
- package/dist/gateway/static/root/assets/{schema-form-DdE4gtw_.js → schema-form-GlbsCBmv.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-sOJ_TnLm.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BI0u77dt.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-CiYU8AvV.js → settings-form-section-CKLns16d.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-Bv03cWib.js → settings-loading-skeleton-BDzpxgk0.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-BH0pF7QB.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-layout-t_Ox1slk.js → settings-page-layout-J793iqfm.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-HRG_lK4_.js → setup-status-panel-CGsml89P.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DF8gW6bo.js → share-preview-page-UTm_7r0l.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-BM--lgUS.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CGCOC-rV.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-iLyaOl48.js +2 -0
- package/dist/gateway/static/root/assets/skills-page.utils-Bwid1TGB.js +1 -0
- package/dist/gateway/static/root/assets/style-TIDOdKy0.js +7 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-Bv7GXFc6.js → system-settings-panel-BcB3p1e3.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-DQYEf08v.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-DnBOcGXi.js → theme-store-GVZOImyb.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-4XBsLEuv.js → typed-models-lib-CT2c85Ju.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BN2QgFGn.js → use-autosave-CcvY7DTh.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-CGI41bfO.js +1 -0
- package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-DRr7hFaD.js} +16 -16
- package/dist/gateway/static/root/assets/voice-api-key-field-Ricc3QGo.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-nmEAafFl.js → work-discovery-overlay-BoomfqhX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-C5Kwe_bc.js → work-discovery-page-mbnepbQk.js} +1 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-DSWG2xqL.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-DtV0ruyk.js +5 -0
- package/dist/gateway/static/root/index.html +7 -7
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +2 -0
- package/dist/src/agent/agent-manager.js +76 -0
- package/dist/src/agent/background-review/prompts.d.ts +1 -1
- package/dist/src/agent/background-review/prompts.js +1 -1
- package/dist/src/agent/background-review/run-background-review.js +3 -12
- package/dist/src/agent/embedded/run-for-session.js +3 -0
- package/dist/src/agent/embedded/run-turn.js +4 -1
- package/dist/src/agent/embedded/session-runner.js +3 -4
- package/dist/src/agent/embedded/types.d.ts +10 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js +3 -2
- package/dist/src/agent/external-tools/mcp-provider.d.ts +1 -0
- package/dist/src/agent/external-tools/mcp-provider.js +21 -6
- package/dist/src/agent/image/generation/provider-registry.js +1 -0
- package/dist/src/agent/image/generation/providers/dashscope.js +20 -0
- package/dist/src/agent/image/generation/providers/fal.d.ts +1 -1
- package/dist/src/agent/image/generation/providers/fal.js +12 -6
- package/dist/src/agent/image/generation/providers/google.js +8 -0
- package/dist/src/agent/image/generation/providers/minimax.js +20 -0
- package/dist/src/agent/image/generation/providers/openai.js +36 -26
- package/dist/src/agent/image/generation/types.d.ts +13 -0
- package/dist/src/agent/mcp/bundle-mcp-gateway.d.ts +1 -0
- package/dist/src/agent/mcp/bundle-mcp-gateway.js +2 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.d.ts +5 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js +11 -3
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +3 -2
- package/dist/src/agent/mcp/bundle-mcp-types.d.ts +2 -1
- package/dist/src/agent/mcp/index.js +2 -2
- package/dist/src/agent/mcp/mcp-stdio-transport.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.d.ts +2 -1
- package/dist/src/agent/mcp/mcp-transport.js +22 -4
- package/dist/src/agent/memory/compaction.js +19 -17
- package/dist/src/agent/memory/context-budget.js +2 -3
- package/dist/src/agent/memory/understanding/service.d.ts +1 -0
- package/dist/src/agent/memory/understanding/service.js +49 -20
- package/dist/src/agent/memory/understanding/types.d.ts +1 -0
- package/dist/src/agent/memory/user-context-coordinator.js +6 -0
- package/dist/src/agent/orchestration/agent-orchestrator.js +15 -1
- package/dist/src/agent/service/direct-turn-helpers.js +14 -5
- package/dist/src/agent/skills/index.d.ts +1 -1
- package/dist/src/agent/skills/index.js +2 -2
- package/dist/src/agent/skills/installer.d.ts +3 -10
- package/dist/src/agent/skills/installer.js +99 -156
- package/dist/src/agent/skills/marketplace/adapter.types.d.ts +3 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +30 -6
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +21 -4
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +7 -4
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +3 -0
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +7 -1
- package/dist/src/agent/skills/marketplace/search.d.ts +2 -2
- package/dist/src/agent/skills/marketplace/search.js +52 -21
- package/dist/src/agent/skills/skills-marketplace.d.ts +1 -1
- package/dist/src/agent/skills/skills-marketplace.js +2 -2
- package/dist/src/agent/skills/types.d.ts +0 -8
- package/dist/src/agent/tools/exec-command.d.ts +1 -0
- package/dist/src/agent/tools/exec-command.js +2 -1
- package/dist/src/agent/tools/factory.d.ts +1 -0
- package/dist/src/agent/tools/factory.js +17 -2
- package/dist/src/agent/tools/managed-job-tool.d.ts +1 -1
- package/dist/src/agent/tools/managed-job-tool.js +3 -2
- package/dist/src/agent/tools/skill-install-tool.d.ts +2 -2
- package/dist/src/agent/tools/skill-install-tool.js +8 -4
- package/dist/src/agent/tools/skills-marketplace-search-tool.js +3 -2
- package/dist/src/agent/tools/workflow-tool.d.ts +1 -0
- package/dist/src/agent/tools/workflow-tool.js +14 -4
- package/dist/src/agent-manifest/schema.d.ts +20 -0
- package/dist/src/agent-manifest/schema.js +6 -1
- package/dist/src/browser/providers/cloakbrowser.js +1 -1
- package/dist/src/cli/command-loaders.js +1 -0
- package/dist/src/cli/command-manifest.js +4 -0
- package/dist/src/cli/commands/doctor/checks/node-version.js +3 -3
- package/dist/src/cli/commands/doctor/checks/tool-runtimes.d.ts +2 -0
- package/dist/src/cli/commands/doctor/checks/tool-runtimes.js +36 -0
- package/dist/src/cli/commands/doctor/flow.js +2 -0
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/models.js +0 -1
- package/dist/src/cli/commands/onboard/model.d.ts +16 -1
- package/dist/src/cli/commands/onboard/model.js +65 -4
- package/dist/src/cli/commands/onboard.js +13 -1
- package/dist/src/cli/commands/runtime.d.ts +1 -0
- package/dist/src/cli/commands/runtime.js +77 -0
- package/dist/src/cli/commands/setup.js +15 -1
- package/dist/src/cli/commands/skills.js +7 -4
- package/dist/src/cli/commands/update.js +1 -1
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/schema.d.ts +125 -0
- package/dist/src/config/schema.js +77 -2
- package/dist/src/config/voice.d.ts +6 -0
- package/dist/src/config/voice.js +17 -0
- package/dist/src/extensions/install.js +1 -1
- package/dist/src/extensions/types/providers.d.ts +4 -0
- package/dist/src/gateway/capability-presets-admin.d.ts +9 -0
- package/dist/src/gateway/capability-presets-admin.js +24 -6
- package/dist/src/gateway/chat-stream/mapper.js +8 -4
- package/dist/src/gateway/chat-stream/protocol.d.ts +10 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +1 -0
- package/dist/src/gateway/hono/routes/commands-skills.js +2 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/local-apps.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +2 -3
- package/dist/src/gateway/hono/routes/runtime-tools.d.ts +3 -0
- package/dist/src/gateway/hono/routes/runtime-tools.js +142 -0
- package/dist/src/gateway/hono/routes/understanding-sources.js +2 -1
- package/dist/src/gateway/hono/routes/update.js +2 -2
- package/dist/src/gateway/hono/routes/voice.js +43 -2
- package/dist/src/gateway/hono/routes/workflows.js +1 -1
- package/dist/src/gateway/hono/routes/you.js +22 -25
- package/dist/src/gateway/image-generation-setup.d.ts +2 -3
- package/dist/src/gateway/image-generation-setup.js +39 -8
- package/dist/src/gateway/index.js +1 -1
- package/dist/src/gateway/run-loop.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +1 -1
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/gateway/service.js +5 -5
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/gateway-processes.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +2 -2
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/providers/extension-stream-bridge.js +8 -7
- package/dist/src/providers/model-catalog-store.d.ts +24 -4
- package/dist/src/providers/model-catalog-store.js +11 -0
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/prompt-cache-payload.d.ts +13 -0
- package/dist/src/providers/prompt-cache-payload.js +110 -0
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/providers/xopc-cloud-model-source.js +52 -6
- package/dist/src/runtime-tools/archive.d.ts +8 -0
- package/dist/src/runtime-tools/archive.js +99 -0
- package/dist/src/runtime-tools/bootstrap.d.ts +16 -0
- package/dist/src/runtime-tools/bootstrap.js +33 -0
- package/dist/src/runtime-tools/catalog.d.ts +19 -0
- package/dist/src/runtime-tools/catalog.js +59 -0
- package/dist/src/runtime-tools/command.d.ts +15 -0
- package/dist/src/runtime-tools/command.js +59 -0
- package/dist/src/runtime-tools/download-source.d.ts +24 -0
- package/dist/src/runtime-tools/download-source.js +125 -0
- package/dist/src/runtime-tools/downloader.d.ts +21 -0
- package/dist/src/runtime-tools/downloader.js +137 -0
- package/dist/src/runtime-tools/environment.d.ts +20 -0
- package/dist/src/runtime-tools/environment.js +113 -0
- package/dist/src/runtime-tools/errors.d.ts +10 -0
- package/dist/src/runtime-tools/errors.js +14 -0
- package/dist/src/runtime-tools/index.d.ts +7 -0
- package/dist/src/runtime-tools/index.js +7 -0
- package/dist/src/runtime-tools/install-lock.d.ts +1 -0
- package/dist/src/runtime-tools/install-lock.js +50 -0
- package/dist/src/runtime-tools/manager.d.ts +20 -0
- package/dist/src/runtime-tools/manager.js +641 -0
- package/dist/src/runtime-tools/manifest-store.d.ts +3 -0
- package/dist/src/runtime-tools/manifest-store.js +26 -0
- package/dist/src/runtime-tools/network.d.ts +9 -0
- package/dist/src/runtime-tools/network.js +41 -0
- package/dist/src/runtime-tools/offline-bundle.d.ts +16 -0
- package/dist/src/runtime-tools/offline-bundle.js +41 -0
- package/dist/src/runtime-tools/paths.d.ts +7 -0
- package/dist/src/runtime-tools/paths.js +22 -0
- package/dist/src/runtime-tools/probe.d.ts +7 -0
- package/dist/src/runtime-tools/probe.js +71 -0
- package/dist/src/runtime-tools/prune.d.ts +10 -0
- package/dist/src/runtime-tools/prune.js +93 -0
- package/dist/src/runtime-tools/types.d.ts +70 -0
- package/dist/src/runtime-tools/types.js +1 -0
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/storage/sqlite/migrations/113_memory_evidence_single_source.sql +42 -20
- package/dist/src/tasks/home-query-service.js +1 -5
- package/dist/src/tasks/index.js +2 -2
- package/dist/src/tasks/project-operating-view-service.d.ts +2 -1
- package/dist/src/tasks/project-operating-view-service.js +6 -4
- package/dist/src/tasks/task-dependency-service.d.ts +2 -1
- package/dist/src/tasks/task-dependency-service.js +15 -0
- package/dist/src/tui/backends/gateway-realtime-backend.js +1 -1
- package/dist/src/tunnel/frpc-binary.js +1 -1
- package/dist/src/user-context/domain.d.ts +2 -1
- package/dist/src/user-context/domain.js +12 -1
- package/dist/src/user-context/manual-understanding.js +8 -10
- package/dist/src/user-context/planner.js +1 -6
- package/dist/src/user-context/sources/activity-clustering.d.ts +5 -0
- package/dist/src/user-context/sources/activity-clustering.js +130 -0
- package/dist/src/user-context/sources/catalog.js +26 -0
- package/dist/src/user-context/sources/local-source-contract.d.ts +3 -0
- package/dist/src/user-context/sources/local-source-contract.js +15 -0
- package/dist/src/user-context/sources/repository.js +7 -1
- package/dist/src/user-context/sources/types.d.ts +7 -1
- package/dist/src/user-context/understanding.d.ts +15 -0
- package/dist/src/user-context/understanding.js +24 -0
- package/dist/src/voice/local/model-files.js +1 -1
- package/dist/src/voice/metadata/builtin.js +99 -32
- package/dist/src/voice/metadata/types.d.ts +3 -0
- package/dist/src/voice/stt/availability.js +4 -1
- package/dist/src/voice/stt/config-slice.d.ts +0 -2
- package/dist/src/voice/stt/config-slice.js +1 -6
- package/dist/src/voice/stt/factory.js +2 -2
- package/dist/src/voice/stt/index.d.ts +2 -3
- package/dist/src/voice/stt/list-providers.js +1 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.d.ts +0 -19
- package/dist/src/voice/stt/providers/alibaba-transcription.js +59 -132
- package/dist/src/voice/stt/providers/index.d.ts +1 -0
- package/dist/src/voice/stt/providers/index.js +2 -1
- package/dist/src/voice/stt/providers/openai-transcription.d.ts +2 -2
- package/dist/src/voice/stt/providers/openai-transcription.js +4 -4
- package/dist/src/voice/stt/providers/xopc-cloud-transcription.d.ts +2 -0
- package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +49 -0
- package/dist/src/voice/stt/types.js +2 -2
- package/dist/src/voice/tts/providers/index.d.ts +1 -0
- package/dist/src/voice/tts/providers/index.js +2 -1
- package/dist/src/voice/tts/providers/xopc-cloud-speech.d.ts +2 -0
- package/dist/src/voice/tts/providers/xopc-cloud-speech.js +113 -0
- package/dist/src/voice/tts/types.d.ts +1 -1
- package/dist/src/work-discovery/analyzer.js +9 -4
- package/dist/src/work-discovery/candidate-discovery.d.ts +1 -0
- package/dist/src/work-discovery/candidate-discovery.js +3 -3
- package/dist/src/work-discovery/index.js +2 -2
- package/dist/src/work-discovery/service.d.ts +2 -1
- package/dist/src/work-discovery/service.js +126 -37
- package/dist/src/work-discovery/types.d.ts +1 -0
- package/dist/src/workflows/service/workflow-run-service.js +8 -0
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -1
- package/package.json +3 -3
- package/dist/gateway/static/root/assets/agents-CXyivfqY.js +0 -68
- package/dist/gateway/static/root/assets/apps-page-DsE67BSO.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-D0TVev47.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DpZzq8j2.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-B9Cmcuff.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-api-BB8t4Ja7.js +0 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-C_EpuQtk.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-CvzD5qSv.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BKrm7tJ9.js +0 -2
- package/dist/gateway/static/root/assets/extension-settings-page-CsR7QOJo.js +0 -1
- package/dist/gateway/static/root/assets/home-page-C08Nen5T.js +0 -3
- package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
- package/dist/gateway/static/root/assets/index-B-_CEvIX.js +0 -150
- package/dist/gateway/static/root/assets/index-D6e3tPL-.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BQVC0tWq.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-D6yvW-E4.js +0 -2
- package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-BVCwabjq.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-CS4Ujor7.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-DMtPC8c4.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BpfHZT88.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BZkyrJBM.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DQlK0A4l.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-C-LdINFj.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-v_iLhxxa.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-S-bjtsXX.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BiNBfaX5.js +0 -2
- package/dist/gateway/static/root/assets/skills-page.utils-DlnGtvAH.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-BhQcOpnx.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-PtcY7BoJ.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DnhJtC5l.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BnNWBDwz.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-Z_qzaohv.js +0 -11
- /package/dist/gateway/static/root/assets/{workflows-page-DLioOiRN.css → style-DLioOiRN.css} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
3
4
|
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
4
5
|
import { resolveAgentTurnTimeoutMs } from "../orchestration/run-agent-turn-with-timeout.js";
|
|
5
6
|
import { evaluateContextBudget } from "../memory/context-budget.js";
|
|
@@ -47,6 +48,7 @@ async function runEmbeddedTurnForSession(params) {
|
|
|
47
48
|
const thinkingLevel = params.thinkingOverride ?? agent.state.thinkingLevel;
|
|
48
49
|
const workspaceDir = agentManager.getResolvedWorkspaceForSession(sessionKey);
|
|
49
50
|
const config = params.getConfig?.();
|
|
51
|
+
const cacheRetention = config ? resolveEffectiveAgentProfileForSession(config, sessionKey).manifest.runtime?.promptCacheRetention : void 0;
|
|
50
52
|
const configuredTurnTimeoutMs = resolveAgentTurnTimeoutMs(config, sessionKey);
|
|
51
53
|
const turnTimeoutMs = params.deadlineAtMs === void 0 ? configuredTurnTimeoutMs : Math.max(1, Math.min(configuredTurnTimeoutMs, params.deadlineAtMs - Date.now()));
|
|
52
54
|
let userMessageForTurn = userMessage;
|
|
@@ -113,6 +115,7 @@ async function runEmbeddedTurnForSession(params) {
|
|
|
113
115
|
tools,
|
|
114
116
|
systemPrompt,
|
|
115
117
|
thinkingLevel,
|
|
118
|
+
cacheRetention,
|
|
116
119
|
workspaceDir,
|
|
117
120
|
sessionStore,
|
|
118
121
|
timeoutMs: turnTimeoutMs,
|
|
@@ -173,7 +173,10 @@ async function runXopcEmbeddedTurn(params) {
|
|
|
173
173
|
tools: effectiveContext.tools
|
|
174
174
|
} } : {}
|
|
175
175
|
}, "Sending messages to AI");
|
|
176
|
-
return streamFnWithXopcExtensions(streamModel, effectiveContext,
|
|
176
|
+
return streamFnWithXopcExtensions(streamModel, effectiveContext, {
|
|
177
|
+
...options,
|
|
178
|
+
...params.cacheRetention ? { cacheRetention: params.cacheRetention } : {}
|
|
179
|
+
});
|
|
177
180
|
};
|
|
178
181
|
session.agent.streamFunction = loggingStreamFn;
|
|
179
182
|
if (onEvent) unsubscribe = subscribeEmbeddedSessionEvents(session, (event) => {
|
|
@@ -19,16 +19,15 @@ function providerCredentialRevision(providerId) {
|
|
|
19
19
|
}
|
|
20
20
|
function buildEmbeddedRunnerFingerprint(input) {
|
|
21
21
|
const tools = [...input.toolNames].sort().join("\0");
|
|
22
|
-
|
|
23
|
-
return [
|
|
22
|
+
return createHash("sha256").update([
|
|
24
23
|
input.sessionId,
|
|
25
24
|
input.workspaceDir,
|
|
26
25
|
input.modelRef,
|
|
27
26
|
tools,
|
|
28
|
-
|
|
27
|
+
input.systemPrompt,
|
|
29
28
|
input.thinkingLevel,
|
|
30
29
|
input.credentialRevision
|
|
31
|
-
].join("
|
|
30
|
+
].join("\0")).digest("base64url");
|
|
32
31
|
}
|
|
33
32
|
function isEmbeddedSessionRunnerEnabled() {
|
|
34
33
|
const raw = process.env.XOPC_SESSION_RUNNER?.trim().toLowerCase();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { AgentMessage, AgentToolResult, ThinkingLevel } from '@earendil-works/pi-agent-core';
|
|
2
|
-
import type { AssistantMessageEvent, Model, Api, ImageContent } from '@earendil-works/pi-ai';
|
|
2
|
+
import type { AssistantMessageEvent, Model, Api, CacheRetention, ImageContent } from '@earendil-works/pi-ai';
|
|
3
3
|
import type { SessionStore } from '../../session/store.js';
|
|
4
4
|
export type EmbeddedStreamEvent = {
|
|
5
5
|
type: 'agent_start';
|
|
@@ -62,6 +62,14 @@ export type EmbeddedStreamEvent = {
|
|
|
62
62
|
content: string;
|
|
63
63
|
kind: string;
|
|
64
64
|
}>;
|
|
65
|
+
} | {
|
|
66
|
+
type: 'memory_candidate';
|
|
67
|
+
runId?: string;
|
|
68
|
+
records: Array<{
|
|
69
|
+
id: string;
|
|
70
|
+
content: string;
|
|
71
|
+
kind: string;
|
|
72
|
+
}>;
|
|
65
73
|
} | {
|
|
66
74
|
type: 'error';
|
|
67
75
|
runId?: string;
|
|
@@ -83,6 +91,7 @@ export type RunXopcEmbeddedTurnParams = {
|
|
|
83
91
|
tools: import('@earendil-works/pi-agent-core').AgentTool[];
|
|
84
92
|
systemPrompt: string;
|
|
85
93
|
thinkingLevel?: ThinkingLevel;
|
|
94
|
+
cacheRetention?: CacheRetention;
|
|
86
95
|
workspaceDir: string;
|
|
87
96
|
sessionStore: SessionStore;
|
|
88
97
|
timeoutMs: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import "../../providers/constants.js";
|
|
2
2
|
import { init_providers } from "../../providers/index.js";
|
|
3
3
|
import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
|
|
4
|
+
import { preparePromptCacheContext, withPromptCachePayloadTransform } from "../../providers/prompt-cache-payload.js";
|
|
4
5
|
//#region src/agent/embedded/xopc-stream-bridge.ts
|
|
5
6
|
init_providers();
|
|
6
7
|
/**
|
|
@@ -15,8 +16,8 @@ init_providers();
|
|
|
15
16
|
function wrapStreamFnForXopcExtensions(originalStreamFn) {
|
|
16
17
|
const extensionStreamFn = createExtensionAwareStreamFn();
|
|
17
18
|
return ((model, context, options) => {
|
|
18
|
-
if (model.baseUrl === "extension://provider-plugin") return extensionStreamFn(model, context, options);
|
|
19
|
-
return originalStreamFn(model, context, options);
|
|
19
|
+
if (model.baseUrl === "extension://provider-plugin") return extensionStreamFn(model, preparePromptCacheContext(model, context), options);
|
|
20
|
+
return originalStreamFn(model, preparePromptCacheContext(model, context), withPromptCachePayloadTransform(model, context, options));
|
|
20
21
|
});
|
|
21
22
|
}
|
|
22
23
|
//#endregion
|
|
@@ -25,5 +25,6 @@ export declare class McpToolProvider implements ExternalToolProvider {
|
|
|
25
25
|
execute(toolRef: string, args: Record<string, unknown>, _approvalId: string | undefined, context: ExternalToolExecutionContext): Promise<AgentToolResult<Record<string, unknown>>>;
|
|
26
26
|
private resolve;
|
|
27
27
|
private isAllowed;
|
|
28
|
+
private executionSignal;
|
|
28
29
|
private withRuntime;
|
|
29
30
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
2
2
|
import { externalToolRef, parseExternalToolRef } from "./refs.js";
|
|
3
|
-
import { isMcpCatalogToolDenied, mcpToolPolicyId } from "../mcp/bundle-mcp-policy.js";
|
|
3
|
+
import { isMcpCatalogToolDenied, mcpToolPolicyId, resolveMcpToolPolicy } from "../mcp/bundle-mcp-policy.js";
|
|
4
4
|
import { getOrCreateSessionMcpRuntime } from "../mcp/bundle-mcp-runtime.js";
|
|
5
5
|
//#region src/agent/external-tools/mcp-provider.ts
|
|
6
6
|
function policyToolId(tool) {
|
|
@@ -33,9 +33,9 @@ var McpToolProvider = class {
|
|
|
33
33
|
async search(_query) {
|
|
34
34
|
return this.withRuntime(async (runtime) => {
|
|
35
35
|
return (await runtime.getCatalog()).tools.filter((tool) => this.isAllowed(tool)).map((tool) => ({
|
|
36
|
-
toolRef: externalToolRef(this.source, tool.
|
|
36
|
+
toolRef: externalToolRef(this.source, tool.safeServerName, tool.toolName),
|
|
37
37
|
source: this.source,
|
|
38
|
-
namespace: tool.
|
|
38
|
+
namespace: tool.safeServerName,
|
|
39
39
|
title: tool.title || tool.toolName,
|
|
40
40
|
summary: tool.description || tool.fallbackDescription
|
|
41
41
|
}));
|
|
@@ -71,7 +71,7 @@ var McpToolProvider = class {
|
|
|
71
71
|
if (!hook.allowed) throw new Error(hook.reason ?? "MCP tool call blocked by policy hook.");
|
|
72
72
|
executionArgs = hook.params ?? args;
|
|
73
73
|
}
|
|
74
|
-
const result = await runtime.callTool(tool.serverName, tool.toolName, executionArgs, context.signal);
|
|
74
|
+
const result = await runtime.callTool(tool.serverName, tool.toolName, executionArgs, this.executionSignal(tool, context.signal));
|
|
75
75
|
return toAgentToolResult({
|
|
76
76
|
serverName: tool.serverName,
|
|
77
77
|
toolName: tool.toolName,
|
|
@@ -82,7 +82,7 @@ var McpToolProvider = class {
|
|
|
82
82
|
async resolve(runtime, toolRef) {
|
|
83
83
|
const parsed = parseExternalToolRef(toolRef, this.source);
|
|
84
84
|
if (!parsed) return void 0;
|
|
85
|
-
const tool = (await runtime.getCatalog()).tools.find((candidate) => candidate.
|
|
85
|
+
const tool = (await runtime.getCatalog()).tools.find((candidate) => candidate.safeServerName === parsed.namespace && candidate.toolName === parsed.toolName);
|
|
86
86
|
return tool && this.isAllowed(tool) ? tool : void 0;
|
|
87
87
|
}
|
|
88
88
|
isAllowed(tool) {
|
|
@@ -90,11 +90,26 @@ var McpToolProvider = class {
|
|
|
90
90
|
const sessionKey = this.deps.getSessionKey();
|
|
91
91
|
const profile = cfg && sessionKey ? resolveEffectiveAgentProfileForSession(cfg, sessionKey) : void 0;
|
|
92
92
|
const policyName = policyToolId(tool);
|
|
93
|
-
return !
|
|
93
|
+
return !(resolveMcpToolPolicy({
|
|
94
|
+
serverId: tool.safeServerName,
|
|
95
|
+
policyToolId: policyName
|
|
96
|
+
}, profile?.manifest.tools.mcp)?.scope === "readonly" && tool.annotations?.readOnlyHint !== true) && !profile?.tools.denied.has(policyName) && !isMcpCatalogToolDenied({
|
|
94
97
|
serverId: tool.safeServerName,
|
|
95
98
|
policyToolId: policyName
|
|
96
99
|
}, profile?.manifest.tools.mcp);
|
|
97
100
|
}
|
|
101
|
+
executionSignal(tool, signal) {
|
|
102
|
+
const cfg = this.deps.getConfig();
|
|
103
|
+
const sessionKey = this.deps.getSessionKey();
|
|
104
|
+
const profile = cfg && sessionKey ? resolveEffectiveAgentProfileForSession(cfg, sessionKey) : void 0;
|
|
105
|
+
const timeoutMs = resolveMcpToolPolicy({
|
|
106
|
+
serverId: tool.safeServerName,
|
|
107
|
+
policyToolId: policyToolId(tool)
|
|
108
|
+
}, profile?.manifest.tools.mcp)?.limits?.timeoutMs;
|
|
109
|
+
if (!timeoutMs) return signal;
|
|
110
|
+
const timeoutSignal = AbortSignal.timeout(timeoutMs);
|
|
111
|
+
return signal ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
|
|
112
|
+
}
|
|
98
113
|
async withRuntime(run) {
|
|
99
114
|
const cfg = this.deps.getConfig();
|
|
100
115
|
const sessionKey = this.deps.getSessionKey();
|
|
@@ -77,6 +77,7 @@ function listImageGenerationProvidersSummary() {
|
|
|
77
77
|
credentialMode: resolveImageGenerationCredentialMode(provider),
|
|
78
78
|
...provider.documentationUrl ? { documentationUrl: provider.documentationUrl } : {},
|
|
79
79
|
...provider.apiKeyUrl ? { apiKeyUrl: provider.apiKeyUrl } : {},
|
|
80
|
+
configFields: structuredClone(provider.configFields ?? []),
|
|
80
81
|
defaultModel: provider.defaultModel,
|
|
81
82
|
models: [...provider.models],
|
|
82
83
|
capabilities: provider.capabilities,
|
|
@@ -211,6 +211,26 @@ function buildDashScopeImageGenerationProvider() {
|
|
|
211
211
|
return {
|
|
212
212
|
id: "dashscope",
|
|
213
213
|
label: "Alibaba Model Studio",
|
|
214
|
+
documentationUrl: "https://www.alibabacloud.com/help/en/model-studio/wan-image-generation-and-editing-api-reference",
|
|
215
|
+
apiKeyUrl: "https://dashscope.console.aliyun.com/apiKey",
|
|
216
|
+
configFields: [{
|
|
217
|
+
key: "region",
|
|
218
|
+
label: "Service region",
|
|
219
|
+
type: "select",
|
|
220
|
+
required: true,
|
|
221
|
+
options: [{
|
|
222
|
+
value: "cn",
|
|
223
|
+
label: "China"
|
|
224
|
+
}, {
|
|
225
|
+
value: "intl",
|
|
226
|
+
label: "International"
|
|
227
|
+
}]
|
|
228
|
+
}, {
|
|
229
|
+
key: "baseUrl",
|
|
230
|
+
label: "Base URL",
|
|
231
|
+
type: "url",
|
|
232
|
+
placeholder: "https://…"
|
|
233
|
+
}],
|
|
214
234
|
defaultModel: DASHSCOPE_DEFAULT_IMAGE_MODEL,
|
|
215
235
|
models: [...DASHSCOPE_IMAGE_MODELS],
|
|
216
236
|
capabilities: DASHSCOPE_CAPABILITIES,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ImageGenerationProvider, ImageGenerationRequest, ImageGenerationResult } from '../types.js';
|
|
2
|
-
export declare const FAL_DEFAULT_IMAGE_MODEL = "fal-ai/flux
|
|
2
|
+
export declare const FAL_DEFAULT_IMAGE_MODEL = "fal-ai/flux-2";
|
|
3
3
|
export declare const FAL_IMAGE_MODELS: readonly string[];
|
|
4
4
|
/**
|
|
5
5
|
* Resolve Fal queue base URL precedence:
|
|
@@ -28,16 +28,14 @@ import "../../../../providers/auth-runtime/index.js";
|
|
|
28
28
|
init_logger();
|
|
29
29
|
const log = createLogger("ImageGen:Fal");
|
|
30
30
|
const DEFAULT_FAL_QUEUE_BASE_URL = "https://queue.fal.run";
|
|
31
|
-
const FAL_DEFAULT_IMAGE_MODEL = "fal-ai/flux
|
|
31
|
+
const FAL_DEFAULT_IMAGE_MODEL = "fal-ai/flux-2";
|
|
32
32
|
const DEFAULT_TIMEOUT_MS = 6e5;
|
|
33
33
|
const DEFAULT_POLL_INTERVAL_MS = 1500;
|
|
34
34
|
const MAX_POLL_INTERVAL_MS = 5e3;
|
|
35
35
|
const FAL_IMAGE_MODELS = [
|
|
36
36
|
FAL_DEFAULT_IMAGE_MODEL,
|
|
37
|
-
"fal-ai/flux
|
|
38
|
-
"fal-ai/
|
|
39
|
-
"fal-ai/flux-pro/v1.1-ultra",
|
|
40
|
-
"fal-ai/nano-banana"
|
|
37
|
+
"fal-ai/flux-2-pro",
|
|
38
|
+
"fal-ai/nano-banana-2"
|
|
41
39
|
];
|
|
42
40
|
const FAL_CAPABILITIES = {
|
|
43
41
|
generate: {
|
|
@@ -240,7 +238,7 @@ async function downloadFalImages(params) {
|
|
|
240
238
|
async function generateFalImages(params) {
|
|
241
239
|
const { req, apiKey } = params;
|
|
242
240
|
const baseUrl = resolveFalBaseUrl(req);
|
|
243
|
-
const model = req.model?.trim() || "fal-ai/flux
|
|
241
|
+
const model = req.model?.trim() || "fal-ai/flux-2";
|
|
244
242
|
const submitUrl = `${baseUrl}/${model}`;
|
|
245
243
|
const httpDefaults = resolveProviderHttpRequestConfig({
|
|
246
244
|
providerId: "fal",
|
|
@@ -291,6 +289,14 @@ function buildFalImageGenerationProvider() {
|
|
|
291
289
|
return {
|
|
292
290
|
id: "fal",
|
|
293
291
|
label: "Fal.ai",
|
|
292
|
+
documentationUrl: "https://docs.fal.ai/",
|
|
293
|
+
apiKeyUrl: "https://fal.ai/dashboard/keys",
|
|
294
|
+
configFields: [{
|
|
295
|
+
key: "baseUrl",
|
|
296
|
+
label: "Base URL",
|
|
297
|
+
type: "url",
|
|
298
|
+
placeholder: "https://queue.fal.run"
|
|
299
|
+
}],
|
|
294
300
|
defaultModel: FAL_DEFAULT_IMAGE_MODEL,
|
|
295
301
|
models: [...FAL_IMAGE_MODELS],
|
|
296
302
|
capabilities: FAL_CAPABILITIES,
|
|
@@ -210,6 +210,14 @@ function buildGoogleImageGenerationProvider() {
|
|
|
210
210
|
return {
|
|
211
211
|
id: "google",
|
|
212
212
|
label: "Google Gemini",
|
|
213
|
+
documentationUrl: "https://ai.google.dev/gemini-api/docs/image-generation",
|
|
214
|
+
apiKeyUrl: "https://aistudio.google.com/app/apikey",
|
|
215
|
+
configFields: [{
|
|
216
|
+
key: "baseUrl",
|
|
217
|
+
label: "Base URL",
|
|
218
|
+
type: "url",
|
|
219
|
+
placeholder: "https://generativelanguage.googleapis.com"
|
|
220
|
+
}],
|
|
213
221
|
defaultModel: GOOGLE_DEFAULT_IMAGE_MODEL,
|
|
214
222
|
models: [...GOOGLE_IMAGE_MODELS],
|
|
215
223
|
capabilities: GOOGLE_CAPABILITIES,
|
|
@@ -169,6 +169,26 @@ function buildMinimaxImageGenerationProvider() {
|
|
|
169
169
|
return {
|
|
170
170
|
id: "minimax",
|
|
171
171
|
label: "MiniMax",
|
|
172
|
+
documentationUrl: "https://platform.minimaxi.com/document/Image%20Generation",
|
|
173
|
+
apiKeyUrl: "https://platform.minimaxi.com/user-center/basic-information/interface-key",
|
|
174
|
+
configFields: [{
|
|
175
|
+
key: "region",
|
|
176
|
+
label: "Service region",
|
|
177
|
+
type: "select",
|
|
178
|
+
required: true,
|
|
179
|
+
options: [{
|
|
180
|
+
value: "cn",
|
|
181
|
+
label: "China"
|
|
182
|
+
}, {
|
|
183
|
+
value: "intl",
|
|
184
|
+
label: "International"
|
|
185
|
+
}]
|
|
186
|
+
}, {
|
|
187
|
+
key: "baseUrl",
|
|
188
|
+
label: "Base URL",
|
|
189
|
+
type: "url",
|
|
190
|
+
placeholder: "https://…"
|
|
191
|
+
}],
|
|
172
192
|
defaultModel: MINIMAX_DEFAULT_IMAGE_MODEL,
|
|
173
193
|
models: [...MINIMAX_IMAGE_MODELS],
|
|
174
194
|
capabilities: MINIMAX_CAPABILITIES,
|
|
@@ -17,7 +17,7 @@ import { createOpenAiImagesProvider } from "../openai-images-provider.js";
|
|
|
17
17
|
*/
|
|
18
18
|
const OPENAI_DEFAULT_BASE_URL = "https://api.openai.com/v1";
|
|
19
19
|
/** Image models exposed by the OpenAI Images API. */
|
|
20
|
-
const OPENAI_IMAGE_MODELS = ["gpt-image-2"
|
|
20
|
+
const OPENAI_IMAGE_MODELS = ["gpt-image-2"];
|
|
21
21
|
const OPENAI_DEFAULT_IMAGE_MODEL = OPENAI_IMAGE_MODELS[0];
|
|
22
22
|
const OPENAI_CAPABILITIES = {
|
|
23
23
|
generate: {
|
|
@@ -93,32 +93,42 @@ function buildAzureEndpoint(azure) {
|
|
|
93
93
|
};
|
|
94
94
|
}
|
|
95
95
|
function buildOpenAIImageGenerationProvider() {
|
|
96
|
-
return
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
cfg: ctx.cfg,
|
|
105
|
-
agentId: ctx.agentId
|
|
106
|
-
}),
|
|
107
|
-
resolveApiKey: (req) => {
|
|
108
|
-
return resolveAuthProfileForProvider({
|
|
96
|
+
return {
|
|
97
|
+
...createOpenAiImagesProvider({
|
|
98
|
+
id: "openai",
|
|
99
|
+
label: "OpenAI",
|
|
100
|
+
defaultModel: OPENAI_DEFAULT_IMAGE_MODEL,
|
|
101
|
+
models: [...OPENAI_IMAGE_MODELS],
|
|
102
|
+
capabilities: OPENAI_CAPABILITIES,
|
|
103
|
+
isConfigured: (ctx) => isProviderApiKeyConfigured({
|
|
109
104
|
providerId: "openai",
|
|
110
|
-
cfg:
|
|
111
|
-
agentId:
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
105
|
+
cfg: ctx.cfg,
|
|
106
|
+
agentId: ctx.agentId
|
|
107
|
+
}),
|
|
108
|
+
resolveApiKey: (req) => {
|
|
109
|
+
return resolveAuthProfileForProvider({
|
|
110
|
+
providerId: "openai",
|
|
111
|
+
cfg: req.cfg,
|
|
112
|
+
agentId: req.agentId,
|
|
113
|
+
store: req.authStore
|
|
114
|
+
}).apiKey ?? null;
|
|
115
|
+
},
|
|
116
|
+
resolveEndpoint: (req) => {
|
|
117
|
+
const azure = resolveAzureSettings(req);
|
|
118
|
+
if (azure) return buildAzureEndpoint(azure);
|
|
119
|
+
return { baseUrl: resolveOpenAiBaseUrl(req) };
|
|
120
|
+
},
|
|
121
|
+
defaultTimeoutMs: 12e4
|
|
122
|
+
}),
|
|
123
|
+
documentationUrl: "https://platform.openai.com/docs/guides/image-generation",
|
|
124
|
+
apiKeyUrl: "https://platform.openai.com/api-keys",
|
|
125
|
+
configFields: [{
|
|
126
|
+
key: "baseUrl",
|
|
127
|
+
label: "Base URL",
|
|
128
|
+
type: "url",
|
|
129
|
+
placeholder: "https://api.openai.com/v1"
|
|
130
|
+
}]
|
|
131
|
+
};
|
|
122
132
|
}
|
|
123
133
|
//#endregion
|
|
124
134
|
export { OPENAI_DEFAULT_IMAGE_MODEL, OPENAI_IMAGE_MODELS, buildOpenAIImageGenerationProvider };
|
|
@@ -48,6 +48,17 @@ export interface ImageGenerationProviderConfiguredContext {
|
|
|
48
48
|
agentId?: string;
|
|
49
49
|
agentDir?: string;
|
|
50
50
|
}
|
|
51
|
+
export interface ImageGenerationProviderConfigField {
|
|
52
|
+
key: 'baseUrl' | 'region';
|
|
53
|
+
label: string;
|
|
54
|
+
type: 'url' | 'select';
|
|
55
|
+
required?: boolean;
|
|
56
|
+
placeholder?: string;
|
|
57
|
+
options?: Array<{
|
|
58
|
+
value: string;
|
|
59
|
+
label: string;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
51
62
|
export interface ImageGenerationProvider {
|
|
52
63
|
id: string;
|
|
53
64
|
label: string;
|
|
@@ -55,6 +66,7 @@ export interface ImageGenerationProvider {
|
|
|
55
66
|
credentialMode?: 'api-key' | 'oauth' | 'none';
|
|
56
67
|
documentationUrl?: string;
|
|
57
68
|
apiKeyUrl?: string;
|
|
69
|
+
configFields?: ImageGenerationProviderConfigField[];
|
|
58
70
|
defaultModel: string;
|
|
59
71
|
models: string[];
|
|
60
72
|
capabilities: ImageGenerationProviderCapabilities;
|
|
@@ -70,6 +82,7 @@ export interface ImageGenerationProviderSummary {
|
|
|
70
82
|
credentialMode: 'api-key' | 'oauth' | 'none';
|
|
71
83
|
documentationUrl?: string;
|
|
72
84
|
apiKeyUrl?: string;
|
|
85
|
+
configFields: ImageGenerationProviderConfigField[];
|
|
73
86
|
defaultModel: string;
|
|
74
87
|
models: string[];
|
|
75
88
|
capabilities: ImageGenerationProviderCapabilities;
|
|
@@ -6,7 +6,8 @@ function mapTools(tools, serverId) {
|
|
|
6
6
|
return tools.filter((tool) => tool.serverName === serverId).map((tool) => ({
|
|
7
7
|
name: mcpToolPolicyId(tool.safeServerName, tool.toolName),
|
|
8
8
|
shortName: tool.toolName,
|
|
9
|
-
description: tool.description || tool.title || tool.fallbackDescription
|
|
9
|
+
description: tool.description || tool.title || tool.fallbackDescription,
|
|
10
|
+
readOnly: tool.annotations?.readOnlyHint === true
|
|
10
11
|
}));
|
|
11
12
|
}
|
|
12
13
|
function mapResources(resources, serverId) {
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
import type { AgentManifest } from '../../agent-manifest/schema.js';
|
|
1
|
+
import type { AgentManifest, ToolPolicy } from '../../agent-manifest/schema.js';
|
|
2
2
|
export declare function mcpToolPolicyId(serverId: string, toolName: string): string;
|
|
3
|
+
export declare function resolveMcpToolPolicy(identity: {
|
|
4
|
+
serverId: string;
|
|
5
|
+
policyToolId: string;
|
|
6
|
+
}, policy: AgentManifest['tools']['mcp']): ToolPolicy | undefined;
|
|
3
7
|
export declare function isMcpCatalogToolDenied(identity: {
|
|
4
8
|
serverId: string;
|
|
5
9
|
policyToolId: string;
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { sanitizeServerName } from "./bundle-mcp-names.js";
|
|
1
2
|
//#region src/agent/mcp/bundle-mcp-policy.ts
|
|
2
3
|
function mcpToolPolicyId(serverId, toolName) {
|
|
3
4
|
return `mcp:${encodeURIComponent(serverId)}:${encodeURIComponent(toolName)}`;
|
|
4
5
|
}
|
|
6
|
+
function resolveMcpToolPolicy(identity, policy) {
|
|
7
|
+
const toolPolicy = policy?.tools?.[identity.policyToolId];
|
|
8
|
+
if (toolPolicy) return toolPolicy;
|
|
9
|
+
const directServerPolicy = policy?.servers?.[identity.serverId];
|
|
10
|
+
if (directServerPolicy) return directServerPolicy;
|
|
11
|
+
const usedNames = /* @__PURE__ */ new Set();
|
|
12
|
+
for (const [serverId, serverPolicy] of Object.entries(policy?.servers ?? {})) if (sanitizeServerName(serverId, usedNames) === identity.serverId) return serverPolicy;
|
|
13
|
+
}
|
|
5
14
|
function isMcpCatalogToolDenied(identity, policy) {
|
|
6
|
-
|
|
7
|
-
return policy.servers?.[identity.serverId]?.mode === "deny" || policy.tools?.[identity.policyToolId]?.mode === "deny";
|
|
15
|
+
return resolveMcpToolPolicy(identity, policy)?.mode === "deny";
|
|
8
16
|
}
|
|
9
17
|
//#endregion
|
|
10
|
-
export { isMcpCatalogToolDenied, mcpToolPolicyId };
|
|
18
|
+
export { isMcpCatalogToolDenied, mcpToolPolicyId, resolveMcpToolPolicy };
|
|
@@ -2,12 +2,12 @@ import { createLogger } from "../../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { resolveGlobalSingleton } from "../../utils/global-singleton.js";
|
|
4
4
|
import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
|
|
5
|
+
import { sanitizeServerName } from "./bundle-mcp-names.js";
|
|
5
6
|
import { redactSensitiveUrlLikeString } from "../../utils/redact-sensitive-url.js";
|
|
6
7
|
import { loadEmbeddedMcpConfig } from "./embedded-mcp.js";
|
|
7
8
|
import { resolveConnectorSecretReferences } from "../../connectors/secret-store.js";
|
|
8
9
|
import { isMcpConfigRecord } from "./mcp-config-shared.js";
|
|
9
10
|
import { resolveMcpTransport } from "./mcp-transport.js";
|
|
10
|
-
import { sanitizeServerName } from "./bundle-mcp-names.js";
|
|
11
11
|
import crypto from "node:crypto";
|
|
12
12
|
import Ajv2020 from "ajv/dist/2020.js";
|
|
13
13
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
@@ -175,7 +175,7 @@ function createSessionMcpRuntime(params) {
|
|
|
175
175
|
try {
|
|
176
176
|
for (const [serverName, rawServer] of Object.entries(loaded.mcpServers)) {
|
|
177
177
|
failIfDisposed();
|
|
178
|
-
const resolved = resolveMcpTransport(serverName, await resolveConnectorSecretReferences(rawServer));
|
|
178
|
+
const resolved = await resolveMcpTransport(serverName, await resolveConnectorSecretReferences(rawServer), params.cfg);
|
|
179
179
|
if (!resolved) continue;
|
|
180
180
|
const safeServerName = sanitizeServerName(serverName, usedServerNames);
|
|
181
181
|
if (safeServerName !== serverName) log.warn({
|
|
@@ -229,6 +229,7 @@ function createSessionMcpRuntime(params) {
|
|
|
229
229
|
title: tool.title,
|
|
230
230
|
description: normalizeOptionalString(tool.description) ?? normalizeOptionalString(tool.title),
|
|
231
231
|
inputSchema: tool.inputSchema,
|
|
232
|
+
annotations: tool.annotations,
|
|
232
233
|
fallbackDescription: `Provided by bundle MCP server "${serverName}" (${resolved.description}).`
|
|
233
234
|
});
|
|
234
235
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
1
|
+
import type { CallToolResult, ToolAnnotations } from "@modelcontextprotocol/sdk/types.js";
|
|
2
2
|
import type { JsonSchemaType } from "@modelcontextprotocol/sdk/validation/types.js";
|
|
3
3
|
import type { Config } from "../../config/schema.js";
|
|
4
4
|
export type McpServerCatalog = {
|
|
@@ -15,6 +15,7 @@ export type McpCatalogTool = {
|
|
|
15
15
|
title?: string;
|
|
16
16
|
description?: string;
|
|
17
17
|
inputSchema: JsonSchemaType;
|
|
18
|
+
annotations?: ToolAnnotations;
|
|
18
19
|
fallbackDescription: string;
|
|
19
20
|
};
|
|
20
21
|
export type McpCatalogResource = {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { isMcpCatalogToolDenied, mcpToolPolicyId } from "./bundle-mcp-policy.js";
|
|
1
|
+
import { isMcpCatalogToolDenied, mcpToolPolicyId, resolveMcpToolPolicy } from "./bundle-mcp-policy.js";
|
|
2
2
|
import { loadMergedBundleMcpConfig } from "./bundle-mcp-config.js";
|
|
3
3
|
import { loadEmbeddedMcpConfig } from "./embedded-mcp.js";
|
|
4
4
|
import { __testing, createSessionMcpRuntime, disposeAllSessionMcpRuntimes, disposeSessionMcpRuntime, getOrCreateSessionMcpRuntime, getSessionMcpRuntimeManager, retireSessionMcpRuntime, retireSessionMcpRuntimeForSessionKey } from "./bundle-mcp-runtime.js";
|
|
5
5
|
import "./bundle-mcp-tools.js";
|
|
6
|
-
export { __testing, createSessionMcpRuntime, disposeAllSessionMcpRuntimes, disposeSessionMcpRuntime, getOrCreateSessionMcpRuntime, getSessionMcpRuntimeManager, isMcpCatalogToolDenied, loadEmbeddedMcpConfig, loadMergedBundleMcpConfig, mcpToolPolicyId, retireSessionMcpRuntime, retireSessionMcpRuntimeForSessionKey };
|
|
6
|
+
export { __testing, createSessionMcpRuntime, disposeAllSessionMcpRuntimes, disposeSessionMcpRuntime, getOrCreateSessionMcpRuntime, getSessionMcpRuntimeManager, isMcpCatalogToolDenied, loadEmbeddedMcpConfig, loadMergedBundleMcpConfig, mcpToolPolicyId, resolveMcpToolPolicy, retireSessionMcpRuntime, retireSessionMcpRuntimeForSessionKey };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { killProcessTree } from "../../process/kill-tree.js";
|
|
2
2
|
import { spawn } from "node:child_process";
|
|
3
|
+
import { getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
3
4
|
import process from "node:process";
|
|
4
5
|
import { PassThrough } from "node:stream";
|
|
5
|
-
import { getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
6
6
|
import { ReadBuffer, serializeMessage } from "@modelcontextprotocol/sdk/shared/stdio.js";
|
|
7
7
|
//#region src/agent/mcp/mcp-stdio-transport.ts
|
|
8
8
|
const CLOSE_TIMEOUT_MS = 2e3;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Transport } from "@modelcontextprotocol/sdk/shared/transport.js";
|
|
2
|
+
import type { Config } from "../../config/schema.js";
|
|
2
3
|
export type ResolvedMcpTransport = {
|
|
3
4
|
transport: Transport;
|
|
4
5
|
description: string;
|
|
@@ -7,4 +8,4 @@ export type ResolvedMcpTransport = {
|
|
|
7
8
|
requestTimeoutMs: number;
|
|
8
9
|
detachStderr?: () => void;
|
|
9
10
|
};
|
|
10
|
-
export declare function resolveMcpTransport(serverName: string, rawServer: unknown): ResolvedMcpTransport | null
|
|
11
|
+
export declare function resolveMcpTransport(serverName: string, rawServer: unknown, config?: Config): Promise<ResolvedMcpTransport | null>;
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
|
|
1
2
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
3
|
import { init_logger } from "../../utils/logger.js";
|
|
3
4
|
import { init_string_coerce, normalizeOptionalString } from "../../utils/string-coerce.js";
|
|
5
|
+
import { buildRuntimeEnvironment, resolveRuntimeCommand } from "../../runtime-tools/environment.js";
|
|
4
6
|
import { XopcStdioClientTransport } from "./mcp-stdio-transport.js";
|
|
5
7
|
import { resolveMcpTransportConfig } from "./mcp-transport-config.js";
|
|
6
8
|
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
7
9
|
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
10
|
+
import { getDefaultEnvironment } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
8
11
|
import { fetch } from "undici";
|
|
9
12
|
//#region src/agent/mcp/mcp-transport.ts
|
|
13
|
+
init_paths_state();
|
|
10
14
|
init_logger();
|
|
11
15
|
init_string_coerce();
|
|
12
16
|
const log = createLogger("Mcp:Transport");
|
|
@@ -44,20 +48,34 @@ function buildSseEventSourceFetch(headers) {
|
|
|
44
48
|
});
|
|
45
49
|
};
|
|
46
50
|
}
|
|
47
|
-
function resolveMcpTransport(serverName, rawServer) {
|
|
51
|
+
async function resolveMcpTransport(serverName, rawServer, config) {
|
|
48
52
|
const resolved = resolveMcpTransportConfig(serverName, rawServer);
|
|
49
53
|
if (!resolved) return null;
|
|
50
54
|
if (resolved.kind === "stdio") {
|
|
51
|
-
const
|
|
55
|
+
const command = config ? await resolveRuntimeCommand({
|
|
52
56
|
command: resolved.command,
|
|
57
|
+
stateDir: resolveStateDir(),
|
|
58
|
+
config: config.runtimeTools,
|
|
59
|
+
allowProvision: true
|
|
60
|
+
}) : resolved.command;
|
|
61
|
+
const env = config ? (await buildRuntimeEnvironment({
|
|
62
|
+
stateDir: resolveStateDir(),
|
|
63
|
+
config: config.runtimeTools,
|
|
64
|
+
baseEnv: {
|
|
65
|
+
...getDefaultEnvironment(),
|
|
66
|
+
...resolved.env
|
|
67
|
+
}
|
|
68
|
+
})).env : resolved.env;
|
|
69
|
+
const transport = new XopcStdioClientTransport({
|
|
70
|
+
command,
|
|
53
71
|
args: resolved.args,
|
|
54
|
-
env
|
|
72
|
+
env,
|
|
55
73
|
cwd: resolved.cwd,
|
|
56
74
|
stderr: "pipe"
|
|
57
75
|
});
|
|
58
76
|
return {
|
|
59
77
|
transport,
|
|
60
|
-
description: resolved.description
|
|
78
|
+
description: command === resolved.command ? resolved.description : `${command}${resolved.args?.length ? ` ${resolved.args.join(" ")}` : ""}`,
|
|
61
79
|
transportType: "stdio",
|
|
62
80
|
connectionTimeoutMs: resolved.connectionTimeoutMs,
|
|
63
81
|
requestTimeoutMs: resolved.requestTimeoutMs,
|