@xopcai/xopc 0.0.190 → 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-9vAbkroX.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-DkFeIdBf.js → app-management-settings-panel-D6Rv3OWI.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-Bxs8Fpaj.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-Ch2RmLCC.js → archive-plugin-BokNQBwH.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BhMQM_Ky.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-D6CqlymH.js → binary-plugins-CPYAflIG.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-ClL6HEg9.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-BYy48VhN.js → browser-workflow-inputs-CqLnqA9z.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-zgLibuMH.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-DS9ED-EL.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-CkgsvhtW.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-Cv8rGhYW.js → desktop-pet-DOUeNVmC.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CIeJdwfV.js → desktop-pet-settings-D4704vtl.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-D8jXEiAY.js → directory-picker-path-field-DJDXeA1B.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CCZ9u6TZ.js → extension-debug-page-C0n2NMF1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CV36ILRG.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-D4_r5iJM.js → gateway-config-api-CZra7GuI.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CYlntpBH.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-D4SyWob8.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-BMhCuVBZ.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-ijIe7_y2.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--V_fovKD.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-Dt9-in6W.js → markdown-split-Cy_2SN1Q.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-B3pj_iO0.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-DZ366lIT.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-C5ge434C.js → page-tabs-CvzSdYVj.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BFa9DgSV.js → preview-open-alternatives-kZ0nco7e.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Dc9CcWdu.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-B84DckWe.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-Dp9itvdy.js → settings-form-section-CKLns16d.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-CCtlhoy7.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-EQIOJa_L.js → settings-page-layout-J793iqfm.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-Cwi-SPja.js → setup-status-panel-CGsml89P.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-C4_B2jvf.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-Dpx2ags2.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-DULmTHUB.js → typed-models-lib-CT2c85Ju.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-BrjVk5VH.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-Wr-uF7VA.js → work-discovery-overlay-BoomfqhX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-BWds95sL.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/openai-images-provider.d.ts +1 -1
- package/dist/src/agent/image/generation/openai-images-provider.js +1 -1
- package/dist/src/agent/image/generation/provider-registry.d.ts +2 -0
- package/dist/src/agent/image/generation/provider-registry.js +21 -10
- 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/providers/xopc-cloud.d.ts +2 -0
- package/dist/src/agent/image/generation/providers/xopc-cloud.js +74 -0
- package/dist/src/agent/image/generation/types.d.ts +15 -2
- 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/models.js +0 -1
- package/dist/src/cli/commands/onboard/model.d.ts +18 -0
- package/dist/src/cli/commands/onboard/model.js +81 -5
- 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/config/agent-profile.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/agents-admin.js +1 -1
- 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/models.js +11 -11
- 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/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/service/marketplace-service.d.ts +1 -1
- package/dist/src/gateway/service/marketplace-service.js +2 -2
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/providers/extension-stream-bridge.js +8 -7
- package/dist/src/providers/model-catalog-store.d.ts +35 -0
- package/dist/src/providers/model-catalog-store.js +25 -1
- package/dist/src/providers/model-catalog-sync-service.js +6 -0
- package/dist/src/providers/model-registry.js +4 -4
- 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 +4 -4
- package/dist/src/providers/xopc-cloud-model-source.js +101 -8
- 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/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 +1 -1
- package/dist/gateway/static/root/assets/agents-D1t4SfMQ.js +0 -68
- package/dist/gateway/static/root/assets/apps-page-Cgrgu5OW.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-CtJxstKh.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DW99iDmD.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CHUrT9EB.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-Cycrv0YV.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-V96gPUAU.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-Cz7SAAkm.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BhlyQoQI.js +0 -2
- package/dist/gateway/static/root/assets/extension-settings-page-IyQrSILY.js +0 -1
- package/dist/gateway/static/root/assets/home-page-B2Kagoh8.js +0 -3
- package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
- package/dist/gateway/static/root/assets/index-CYT5DOzr.js +0 -150
- package/dist/gateway/static/root/assets/index-D6e3tPL-.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BHYbFjqy.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-IIn8Tess.js +0 -2
- package/dist/gateway/static/root/assets/messages-B4XqB8I6.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-S2sBVOLw.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-BilzoCJ7.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BoQUyacP.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DUyUaCRF.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-Dzxlq1F0.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-TzwlZxU6.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-DQmMKf8r.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-CkyuGlZK.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BJCePQK5.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BYWLfmJi.js +0 -2
- package/dist/gateway/static/root/assets/skills-page.utils-Jhm24i4h.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-DLAdxI6e.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-9AAFpGAL.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BISTPfq_.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-DHqHP8_6.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-0b4_DFHr.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();
|
|
@@ -43,7 +43,7 @@ export interface OpenAiImagesProviderOptions {
|
|
|
43
43
|
/** Sync env / cfg lookup that decides if the provider has any usable credential. */
|
|
44
44
|
isConfigured: (ctx: ImageGenerationProviderConfiguredContext) => boolean;
|
|
45
45
|
/** Resolve API key for one request. May return null when using OAuth/header auth. */
|
|
46
|
-
resolveApiKey: (req: ImageGenerationRequest) => string | null | undefined
|
|
46
|
+
resolveApiKey: (req: ImageGenerationRequest) => string | null | undefined | Promise<string | null | undefined>;
|
|
47
47
|
/** Resolve endpoint info per-request (region, baseUrl override, Azure deployment, …). */
|
|
48
48
|
resolveEndpoint: (req: ImageGenerationRequest) => OpenAiImagesEndpointResolution;
|
|
49
49
|
/** Default per-call timeout. Combined with provider-level config in provider-http. */
|
|
@@ -26,7 +26,7 @@ function createOpenAiImagesProvider(options) {
|
|
|
26
26
|
capabilities: options.capabilities,
|
|
27
27
|
isConfigured: options.isConfigured,
|
|
28
28
|
async generateImage(req) {
|
|
29
|
-
const apiKey = options.resolveApiKey(req) ?? null;
|
|
29
|
+
const apiKey = await options.resolveApiKey(req) ?? null;
|
|
30
30
|
const endpoint = options.resolveEndpoint(req);
|
|
31
31
|
const httpDefaults = resolveProviderHttpRequestConfig({
|
|
32
32
|
providerId: options.id,
|
|
@@ -2,6 +2,8 @@ import type { ModelsJsonConfig } from '../../../config/models-json.js';
|
|
|
2
2
|
import type { ImageGenerationProvider, ImageGenerationProviderSummary } from './types.js';
|
|
3
3
|
export declare function reloadImageGenerationProviders(config?: ModelsJsonConfig): void;
|
|
4
4
|
export declare function getImageGenerationProvider(providerId: string): ImageGenerationProvider | undefined;
|
|
5
|
+
/** Resolve the auth mode consistently for provider objects and catalog summaries. */
|
|
6
|
+
export declare function resolveImageGenerationCredentialMode(provider: Pick<ImageGenerationProvider, 'credentialMode'>): NonNullable<ImageGenerationProvider['credentialMode']>;
|
|
5
7
|
export declare function listImageGenerationProviders(): ImageGenerationProvider[];
|
|
6
8
|
export declare function listImageGenerationProvidersSummary(): ImageGenerationProviderSummary[];
|
|
7
9
|
export type { ImageGenerationProvider, ImageGenerationProviderSummary } from './types.js';
|
|
@@ -7,24 +7,30 @@ import { buildFalImageGenerationProvider } from "./providers/fal.js";
|
|
|
7
7
|
import { buildGoogleImageGenerationProvider } from "./providers/google.js";
|
|
8
8
|
import { buildMinimaxImageGenerationProvider } from "./providers/minimax.js";
|
|
9
9
|
import { buildOpenAIImageGenerationProvider } from "./providers/openai.js";
|
|
10
|
+
import { buildXopcCloudImageGenerationProvider } from "./providers/xopc-cloud.js";
|
|
10
11
|
//#region src/agent/image/generation/provider-registry.ts
|
|
11
12
|
init_models_json();
|
|
12
13
|
init_logger();
|
|
13
14
|
const log = createLogger("ImageGenerationRegistry");
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
15
|
+
function buildBuiltInProviders() {
|
|
16
|
+
const cloud = buildXopcCloudImageGenerationProvider();
|
|
17
|
+
return [
|
|
18
|
+
...cloud ? [cloud] : [],
|
|
19
|
+
buildOpenAIImageGenerationProvider(),
|
|
20
|
+
buildDashScopeImageGenerationProvider(),
|
|
21
|
+
buildMinimaxImageGenerationProvider(),
|
|
22
|
+
buildGoogleImageGenerationProvider(),
|
|
23
|
+
buildFalImageGenerationProvider()
|
|
24
|
+
];
|
|
25
|
+
}
|
|
26
|
+
let providers = buildBuiltInProviders();
|
|
22
27
|
let providersById = new Map(providers.map((provider) => [provider.id, provider]));
|
|
23
28
|
let customProvidersLoaded = false;
|
|
24
29
|
function ensureCustomProvidersLoaded() {
|
|
25
30
|
if (!customProvidersLoaded) reloadImageGenerationProviders();
|
|
26
31
|
}
|
|
27
32
|
function reloadImageGenerationProviders(config) {
|
|
33
|
+
const builtInProviders = buildBuiltInProviders();
|
|
28
34
|
let resolved = config;
|
|
29
35
|
if (!resolved) {
|
|
30
36
|
const loaded = loadModelsJson();
|
|
@@ -54,6 +60,10 @@ function getImageGenerationProvider(providerId) {
|
|
|
54
60
|
ensureCustomProvidersLoaded();
|
|
55
61
|
return providersById.get(providerId);
|
|
56
62
|
}
|
|
63
|
+
/** Resolve the auth mode consistently for provider objects and catalog summaries. */
|
|
64
|
+
function resolveImageGenerationCredentialMode(provider) {
|
|
65
|
+
return provider.credentialMode ?? "api-key";
|
|
66
|
+
}
|
|
57
67
|
function listImageGenerationProviders() {
|
|
58
68
|
ensureCustomProvidersLoaded();
|
|
59
69
|
return [...providers];
|
|
@@ -64,9 +74,10 @@ function listImageGenerationProvidersSummary() {
|
|
|
64
74
|
id: provider.id,
|
|
65
75
|
label: provider.label,
|
|
66
76
|
source: provider.source ?? "builtin",
|
|
67
|
-
credentialMode: provider
|
|
77
|
+
credentialMode: resolveImageGenerationCredentialMode(provider),
|
|
68
78
|
...provider.documentationUrl ? { documentationUrl: provider.documentationUrl } : {},
|
|
69
79
|
...provider.apiKeyUrl ? { apiKeyUrl: provider.apiKeyUrl } : {},
|
|
80
|
+
configFields: structuredClone(provider.configFields ?? []),
|
|
70
81
|
defaultModel: provider.defaultModel,
|
|
71
82
|
models: [...provider.models],
|
|
72
83
|
capabilities: provider.capabilities,
|
|
@@ -74,4 +85,4 @@ function listImageGenerationProvidersSummary() {
|
|
|
74
85
|
}));
|
|
75
86
|
}
|
|
76
87
|
//#endregion
|
|
77
|
-
export { getImageGenerationProvider, listImageGenerationProviders, listImageGenerationProvidersSummary, reloadImageGenerationProviders };
|
|
88
|
+
export { getImageGenerationProvider, listImageGenerationProviders, listImageGenerationProvidersSummary, reloadImageGenerationProviders, resolveImageGenerationCredentialMode };
|
|
@@ -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 };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { getModelCatalogStore, init_model_catalog_store } from "../../../../providers/model-catalog-store.js";
|
|
2
|
+
import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "../../../../providers/xopc-cloud-config.js";
|
|
3
|
+
import { getProviderAuthService, init_provider_auth_service } from "../../../../providers/provider-auth-service.js";
|
|
4
|
+
import { createOpenAiImagesProvider } from "../openai-images-provider.js";
|
|
5
|
+
//#region src/agent/image/generation/providers/xopc-cloud.ts
|
|
6
|
+
init_model_catalog_store();
|
|
7
|
+
init_provider_auth_service();
|
|
8
|
+
init_xopc_cloud_config();
|
|
9
|
+
function buildXopcCloudImageGenerationProvider() {
|
|
10
|
+
const source = getModelCatalogStore().getSource("xopc-cloud");
|
|
11
|
+
const models = source?.models.filter((model) => model.availability === "available" && model.kind === "image" && model.operations.includes("images.generate")) ?? [];
|
|
12
|
+
if (models.length === 0) return void 0;
|
|
13
|
+
const modelCapabilities = Object.fromEntries(models.map((model) => [model.id, toProviderCapabilities(model)]));
|
|
14
|
+
const defaultModel = models[0].id;
|
|
15
|
+
const baseUrl = source?.baseUrl ?? resolveXopcModelRouterUrl();
|
|
16
|
+
const executors = new Map(models.map((model) => [model.id, createOpenAiImagesProvider({
|
|
17
|
+
id: "xopc-cloud",
|
|
18
|
+
label: "XOPC Model Service",
|
|
19
|
+
defaultModel: model.id,
|
|
20
|
+
models: [model.id],
|
|
21
|
+
capabilities: modelCapabilities[model.id],
|
|
22
|
+
isConfigured: () => true,
|
|
23
|
+
resolveApiKey: (request) => getProviderAuthService().resolveApiKey("xopc-cloud", request.signal),
|
|
24
|
+
resolveEndpoint: () => ({ baseUrl }),
|
|
25
|
+
...model.imageGeneration?.sizes[0] ? { defaultSize: model.imageGeneration.sizes[0] } : {}
|
|
26
|
+
})]));
|
|
27
|
+
return {
|
|
28
|
+
id: "xopc-cloud",
|
|
29
|
+
label: "XOPC Model Service",
|
|
30
|
+
credentialMode: "oauth",
|
|
31
|
+
defaultModel,
|
|
32
|
+
models: models.map((model) => model.id),
|
|
33
|
+
capabilities: modelCapabilities[defaultModel],
|
|
34
|
+
modelCapabilities,
|
|
35
|
+
isConfigured: () => true,
|
|
36
|
+
async generateImage(request) {
|
|
37
|
+
const executor = executors.get(request.model);
|
|
38
|
+
if (!executor) throw new Error(`Image model is not available from XOPC Model Service: ${request.model}`);
|
|
39
|
+
const geometry = modelCapabilities[request.model]?.geometry;
|
|
40
|
+
const size = request.size ?? (request.aspectRatio && geometry?.aspectRatios?.includes(request.aspectRatio) ? request.aspectRatio : void 0) ?? (request.resolution && geometry?.resolutions?.includes(request.resolution) ? request.resolution : void 0);
|
|
41
|
+
return executor.generateImage({
|
|
42
|
+
...request,
|
|
43
|
+
...size ? { size } : {}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
function toProviderCapabilities(model) {
|
|
49
|
+
const image = model.imageGeneration;
|
|
50
|
+
return {
|
|
51
|
+
generate: {
|
|
52
|
+
maxCount: image?.maxCount ?? 1,
|
|
53
|
+
supportsSize: Boolean(image?.sizes.length),
|
|
54
|
+
supportsAspectRatio: Boolean(image?.aspectRatios?.length)
|
|
55
|
+
},
|
|
56
|
+
edit: {
|
|
57
|
+
enabled: model.operations.includes("images.edit"),
|
|
58
|
+
maxInputImages: image?.maxInputImages ?? 0,
|
|
59
|
+
supportsSize: Boolean(image?.sizes.length),
|
|
60
|
+
supportsAspectRatio: Boolean(image?.aspectRatios?.length)
|
|
61
|
+
},
|
|
62
|
+
geometry: {
|
|
63
|
+
sizes: image?.sizes ?? [],
|
|
64
|
+
aspectRatios: image?.aspectRatios ?? []
|
|
65
|
+
},
|
|
66
|
+
output: {
|
|
67
|
+
qualities: image?.qualities ?? [],
|
|
68
|
+
formats: image?.formats ?? [],
|
|
69
|
+
backgrounds: image?.backgrounds ?? []
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//#endregion
|
|
74
|
+
export { buildXopcCloudImageGenerationProvider };
|
|
@@ -48,13 +48,25 @@ 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;
|
|
54
65
|
source?: 'builtin' | 'custom';
|
|
55
|
-
credentialMode?: 'api-key' | 'none';
|
|
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;
|
|
@@ -67,9 +79,10 @@ export interface ImageGenerationProviderSummary {
|
|
|
67
79
|
id: string;
|
|
68
80
|
label: string;
|
|
69
81
|
source: 'builtin' | 'custom';
|
|
70
|
-
credentialMode: 'api-key' | 'none';
|
|
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 };
|